diff --git a/ui/src/pages/OrderEntry.vue b/ui/src/pages/OrderEntry.vue index c8eba1e..a6cd714 100644 --- a/ui/src/pages/OrderEntry.vue +++ b/ui/src/pages/OrderEntry.vue @@ -2228,6 +2228,55 @@ async function hydrateEditorFromRow(row, opts = {}) { orderStore.editingKey = key orderStore.selected = { ...row } + const ensureModelDetail = async (modelCode) => { + const code = String(modelCode || '').trim() + if (!code) return null + + if (productCache?.[code]) { + return productCache[code] + } + + try { + const d = (await api.get('/product-detail', { params: { code } }))?.data || {} + const normalized = { + ...d, + UrunAnaGrubu: d.UrunAnaGrubu || d.ProductGroup || d.ProductAtt01Desc || '', + UrunAltGrubu: d.UrunAltGrubu || d.ProductSubGroup || d.ProductAtt02Desc || '', + Kategori: d.Kategori || '', + AskiliYan: d.AskiliYan || '', + YETISKIN_GARSON: d.YETISKIN_GARSON || d.YetiskinGarson || d.AskiliYan || '', + YetiskinGarson: d.YetiskinGarson || d.YETISKIN_GARSON || d.AskiliYan || '', + Fit: d.Fit || d.Fit1 || '', + UrunIcerik: d.UrunIcerik || d.Fabric || '', + Drop: d.Drop || '' + } + productCache[code] = normalized + orderStore.productCache[code] = normalized + return normalized + } catch (e) { + console.warn(`⚠ model detail alınamadı (${code})`, e) + return null + } + } + + const modelMeta = await ensureModelDetail(row.model) + const rowUrunAna = row.urunAnaGrubu || row.UrunAnaGrubu || modelMeta?.UrunAnaGrubu || '' + const rowUrunAlt = row.urunAltGrubu || row.UrunAltGrubu || modelMeta?.UrunAltGrubu || '' + const rowAskili = row.askiliyan || row.AskiliYan || modelMeta?.AskiliYan || '' + const rowYetiskinGarson = + row.yetiskinGarson || + row.YETISKIN_GARSON || + row.YetiskinGarson || + modelMeta?.YETISKIN_GARSON || + modelMeta?.YetiskinGarson || + rowAskili || + '' + const rowKategori = + row.kategori || + row.Kategori || + modelMeta?.Kategori || + '' + /* ------------------------------------------------------- 🧩 FORM BASIC ------------------------------------------------------- */ @@ -2240,11 +2289,11 @@ async function hydrateEditorFromRow(row, opts = {}) { const rowGrpKey = row.grpKey || detectBedenGroup( - Object.keys(firstGroupedMap || {}), - row.urunAnaGrubu || '', - row.kategori || '', - row.yetiskinGarson || row.YETISKIN_GARSON || row.askiliyan || '', - row.urunAltGrubu || '' + null, + rowUrunAna, + rowKategori, + rowYetiskinGarson, + rowUrunAlt ) if (!rowGrpKey) { @@ -2259,9 +2308,14 @@ async function hydrateEditorFromRow(row, opts = {}) { model: row.model, renk: row.renk, renk2: row.renk2, - urunAnaGrubu: row.urunAnaGrubu, - urunAltGrubu: row.urunAltGrubu, - kategori: row.kategori, + urunAnaGrubu: rowUrunAna, + urunAltGrubu: rowUrunAlt, + fit: row.fit || row.Fit || row.Fit1 || modelMeta?.Fit || '', + urunIcerik: row.urunIcerik || row.UrunIcerik || modelMeta?.UrunIcerik || '', + drop: row.drop || row.Drop || modelMeta?.Drop || '', + askiliyan: rowAskili, + yetiskinGarson: rowYetiskinGarson, + kategori: rowKategori, aciklama: row.aciklama, fiyat: Number(row.fiyat || 0), pb: row.pb || aktifPB.value || 'USD',