diff --git a/rsconcept/backend/apps/oss/views/oss.py b/rsconcept/backend/apps/oss/views/oss.py
index e436ec9b..0a07471b 100644
--- a/rsconcept/backend/apps/oss/views/oss.py
+++ b/rsconcept/backend/apps/oss/views/oss.py
@@ -253,7 +253,7 @@ class OssViewSet(viewsets.GenericViewSet, generics.ListAPIView, generics.Retriev
if operation.result is not None:
can_edit = permissions.can_edit_item(request.user, operation.result)
- if can_edit:
+ if can_edit or operation.operation_type == m.OperationType.SYNTHESIS:
operation.result.alias = operation.alias
operation.result.title = operation.title
operation.result.comment = operation.comment
diff --git a/rsconcept/frontend/src/components/Icons.tsx b/rsconcept/frontend/src/components/Icons.tsx
index c9a507d1..f35f6252 100644
--- a/rsconcept/frontend/src/components/Icons.tsx
+++ b/rsconcept/frontend/src/components/Icons.tsx
@@ -63,6 +63,8 @@ export { IoLibrary as IconLibrary2 } from 'react-icons/io5';
export { BiDiamond as IconTemplates } from 'react-icons/bi';
export { GiHoneycomb as IconOSS } from 'react-icons/gi';
export { LuBaby as IconChild } from 'react-icons/lu';
+export { RiParentLine as IconParent } from 'react-icons/ri';
+export { TbOld as IconPredecessor } from 'react-icons/tb';
export { RiHexagonLine as IconRSForm } from 'react-icons/ri';
export { LuArchive as IconArchive } from 'react-icons/lu';
export { LuDatabase as IconDatabase } from 'react-icons/lu';
diff --git a/rsconcept/frontend/src/components/select/PickSubstitutions.tsx b/rsconcept/frontend/src/components/select/PickSubstitutions.tsx
index 46fa9a2d..3fc50fe4 100644
--- a/rsconcept/frontend/src/components/select/PickSubstitutions.tsx
+++ b/rsconcept/frontend/src/components/select/PickSubstitutions.tsx
@@ -110,6 +110,12 @@ function PickSubstitutions({
toast.error(errors.reuseOriginal);
return;
}
+ if (leftArgument === rightArgument) {
+ if ((deleteRight && rightCst?.is_inherited) || (!deleteRight && leftCst?.is_inherited)) {
+ toast.error(errors.substituteInherited);
+ return;
+ }
+ }
setSubstitutions(prev => [...prev, newSubstitution]);
setLeftCst(undefined);
setRightCst(undefined);
diff --git a/rsconcept/frontend/src/components/select/SelectConstituenta.tsx b/rsconcept/frontend/src/components/select/SelectConstituenta.tsx
index a1bd6631..9d7f99f0 100644
--- a/rsconcept/frontend/src/components/select/SelectConstituenta.tsx
+++ b/rsconcept/frontend/src/components/select/SelectConstituenta.tsx
@@ -32,7 +32,7 @@ function SelectConstituenta({
return (
items?.map(cst => ({
value: cst.id,
- label: `${cst.alias}: ${describeConstituenta(cst)}`
+ label: `${cst.alias}${cst.is_inherited ? '*' : ''}: ${describeConstituenta(cst)}`
})) ?? []
);
}, [items]);
diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstAttributes.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstAttributes.tsx
index a5ce1b41..34fbc591 100644
--- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstAttributes.tsx
+++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstAttributes.tsx
@@ -1,6 +1,6 @@
import { HelpTopic } from '@/models/miscellaneous';
-import LinkTopic from '../../../components/ui/LinkTopic';
+import LinkTopic from '@/components/ui/LinkTopic';
function HelpCstAttributes() {
return (
diff --git a/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstEditor.tsx b/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstEditor.tsx
index 3b066e7e..a2a45cbb 100644
--- a/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstEditor.tsx
+++ b/rsconcept/frontend/src/pages/ManualsPage/items/HelpCstEditor.tsx
@@ -74,7 +74,6 @@ function HelpCstEditor() {
+