feat(constructeur) : update composant edit flow with supplier references

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-03-31 16:52:50 +02:00
parent c5988ec7a6
commit 80739a4528
6 changed files with 143 additions and 33 deletions

View File

@@ -26,7 +26,9 @@ import {
requiredCustomFieldsFilled as _requiredCustomFieldsFilled,
saveCustomFieldValues as _saveCustomFieldValues,
} from '~/shared/utils/customFieldFormUtils'
import { uniqueConstructeurIds } from '~/shared/constructeurUtils'
import { useConstructeurLinks } from '~/composables/useConstructeurLinks'
import { uniqueConstructeurIds, constructeurIdsFromLinks } from '~/shared/constructeurUtils'
import type { ConstructeurLinkEntry } from '~/shared/constructeurUtils'
import {
getStructurePieces,
resolvePieceLabel as _resolvePieceLabel,
@@ -77,6 +79,7 @@ export function useComponentCreate() {
const toast = useToast()
const { upsertCustomFieldValue, updateCustomFieldValue } = useCustomFields()
const { uploadDocuments } = useDocuments()
const { syncLinks } = useConstructeurLinks()
const { canEdit } = usePermissions()
// -------------------------------------------------------------------------
@@ -92,6 +95,8 @@ export function useComponentCreate() {
constructeurIds: [] as string[],
prix: '' as string,
})
const constructeurLinks = ref<ConstructeurLinkEntry[]>([])
const constructeurIdsFromForm = computed(() => constructeurIdsFromLinks(constructeurLinks.value))
const lastSuggestedName = ref('')
const customFieldInputs = ref<CustomFieldInput[]>([])
const structureAssignments = ref<StructureAssignmentNode | null>(null)
@@ -276,9 +281,7 @@ export function useComponentCreate() {
payload.reference = reference
}
if (creationForm.constructeurIds.length) {
payload.constructeurIds = uniqueConstructeurIds(creationForm.constructeurIds)
}
// constructeurIds are handled via link entities, not in the main payload
const rawPrice = typeof creationForm.prix === 'string'
? creationForm.prix.trim()
@@ -343,6 +346,10 @@ export function useComponentCreate() {
}
selectedDocuments.value = []
}
// Sync constructeur links after creation
if (constructeurLinks.value.length) {
await syncLinks('composant', createdComponent.id, [], constructeurLinks.value)
}
toast.showSuccess('Composant créé avec succès')
await router.replace(`/component/${createdComponent.id}?edit=true`)
}
@@ -380,6 +387,8 @@ export function useComponentCreate() {
selectedTypeId,
submitting,
creationForm,
constructeurLinks,
constructeurIdsFromForm,
customFieldInputs,
structureAssignments,
selectedDocuments,