WIP: corrections multiples formulaires et sérialisation

- Fix constructeurUtils: réordonner delete/add pour sauvegarder les fournisseurs
- Fix prix/supplierPrice: envoyer en string pour DECIMAL Doctrine
- Fix useMachineTypesApi: normaliser les requirements et forceRefresh
- Fix SearchSelect: watch deep sur baseOptions
- Debug logs temporaires pour pieceRequirements

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-23 12:28:40 +01:00
parent 2f3d4c5260
commit 9cc7ac10f0
14 changed files with 276 additions and 89 deletions

View File

@@ -10,18 +10,28 @@ const normalizeRequirementList = (value, relationKey) => {
if (!Array.isArray(value)) {
return []
}
return value.map((entry) => {
return value.map((entry, index) => {
if (!entry || typeof entry !== 'object') {
return entry
}
const normalized = { ...entry }
const relationField = relationKey.replace('Id', '')
const relationValue = normalized[relationField]
console.log(`[normalizeRequirementList] Entry ${index}:`, {
relationKey,
relationField,
hasRelationKey: !!normalized[relationKey],
relationValue,
relationValueType: typeof relationValue
})
if (relationKey && !normalized[relationKey]) {
const relationValue = normalized[relationKey.replace('Id', '')]
const relationId = extractRelationId(relationValue)
console.log(`[normalizeRequirementList] Extracted ID:`, relationId)
if (relationId) {
normalized[relationKey] = relationId
}
}
console.log(`[normalizeRequirementList] Normalized entry:`, normalized)
return normalized
})
}
@@ -56,7 +66,7 @@ const extractCollection = (payload) => {
export function useMachineTypesApi () {
const { showSuccess, showError, showInfo } = useToast()
const { get, post, patch, delete: del } = useApi()
const { get, post, put, delete: del } = useApi()
const loadMachineTypes = async () => {
loading.value = true
@@ -94,7 +104,7 @@ export function useMachineTypesApi () {
const updateMachineType = async (id, typeData) => {
loading.value = true
try {
const result = await patch(`/type_machines/${id}`, typeData)
const result = await put(`/type_machines/${id}`, typeData)
if (result.success) {
const normalized = normalizeMachineType(result.data)
const index = machineTypes.value.findIndex(type => type.id === id)
@@ -130,19 +140,28 @@ export function useMachineTypesApi () {
}
}
const getMachineTypeById = async (id) => {
// D'abord chercher dans le cache local
const localType = machineTypes.value.find(type => type.id === id)
if (localType) {
return { success: true, data: localType }
const getMachineTypeById = async (id, forceRefresh = false) => {
// D'abord chercher dans le cache local (sauf si forceRefresh)
if (!forceRefresh) {
const localType = machineTypes.value.find(type => type.id === id)
if (localType) {
return { success: true, data: localType }
}
}
// Si pas trouvé localement, récupérer depuis l'API
// Récupérer depuis l'API
try {
const result = await get(`/type_machines/${id}`)
if (result.success) {
// Ajouter au cache local
machineTypes.value.push(normalizeMachineType(result.data))
const normalized = normalizeMachineType(result.data)
// Mettre à jour le cache local
const index = machineTypes.value.findIndex(type => type.id === id)
if (index !== -1) {
machineTypes.value[index] = normalized
} else {
machineTypes.value.push(normalized)
}
return { success: true, data: normalized }
}
return result
} catch (error) {