diff --git a/ui/src/pages/OrderEntry.vue b/ui/src/pages/OrderEntry.vue index 57cb9ec..a5ec451 100644 --- a/ui/src/pages/OrderEntry.vue +++ b/ui/src/pages/OrderEntry.vue @@ -1088,6 +1088,7 @@ const form = reactive({ drop: '', kategori: '', askiliyan: '', + yetiskinGarson: '', seri: '', bedenLabels: [], bedenler: [], @@ -1233,6 +1234,7 @@ async function resetEditor(force = false) { urunIcerik: '', drop: '', askiliyan: '', + yetiskinGarson: '', adet: 0, fiyat: 0, @@ -2661,6 +2663,7 @@ async function onModelChange(modelCode) { drop: d.Drop || '', kategori: d.Kategori || '', askiliyan: d.AskiliYan || '', + yetiskinGarson: d.YETISKIN_GARSON || d.YetiskinGarson || d.AskiliYan || '', aciklama: keep.aciklama, fiyat: keep.fiyat, adet: keep.adet, @@ -2678,7 +2681,7 @@ async function onModelChange(modelCode) { null, form.urunAnaGrubu, form.kategori || form.urunAltGrubu, - form.askiliyan + form.yetiskinGarson || form.askiliyan ) } catch (e) { console.warn('⚠️ detectBedenGroup hata:', e) @@ -2696,7 +2699,7 @@ async function onModelChange(modelCode) { .replace(/[\u0300-\u036f]/g, '') .toLowerCase() .trim() - const ygN = String(form.askiliyan || '') + const ygN = String(form.yetiskinGarson || form.askiliyan || '') .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .toLowerCase() @@ -2975,8 +2978,8 @@ async function loadOrderInventory(merge = false) { // 2️⃣ Form bedenlerine göre map oluştur const newMap = {} for (const lbl of form.bedenLabels || []) { - const key = lbl?.trim() === '' ? ' ' : lbl.trim() - newMap[lbl] = invMap[key] ?? 0 + const key = lbl?.trim() === '' ? ' ' : normalizeBedenLabel(lbl) + newMap[lbl] = invMap[key] ?? invMap[lbl] ?? 0 } // 3️⃣ Merge veya replace diff --git a/ui/src/stores/orderentryStore.js b/ui/src/stores/orderentryStore.js index 11ee3aa..972edf0 100644 --- a/ui/src/stores/orderentryStore.js +++ b/ui/src/stores/orderentryStore.js @@ -2562,8 +2562,12 @@ export const useOrderEntryStore = defineStore('orderentry', { } const finalStockMap = {} - for (const lbl of form.bedenLabels) { - finalStockMap[lbl] = apiStockMap[lbl] ?? 0 + for (const lbl of (form.bedenLabels || [])) { + const normalizedLbl = + lbl == null || String(lbl).trim() === '' + ? ' ' + : normalizeBedenLabel(String(lbl)) + finalStockMap[lbl] = apiStockMap[normalizedLbl] ?? apiStockMap[lbl] ?? 0 } stockMap.value = { ...finalStockMap } @@ -3138,6 +3142,16 @@ export const useOrderEntryStore = defineStore('orderentry', { return s } + // UI'de yas grubu 2/4/6... gösterilir; payload'a 2Y/4Y/6... yazılır. + const toPayloadBeden = (grpKey, v) => { + const base = normBeden(v) + if (!base) return '' + if (grpKey === 'yas' && /^\d+$/.test(base)) { + return `${base}Y` + } + return base + } + /* ========================= USER META ========================== */ @@ -3383,16 +3397,19 @@ export const useOrderEntryStore = defineStore('orderentry', { const qty = toNum(qtyRaw) - // ✅ payload beden: '' / 'S' / 'M' ... - const bedenPayload = normBeden(bedenRaw) + // ✅ UI/combokey için kanonik beden (yas'ta 2/4/6...) + const bedenCanonical = normBeden(bedenRaw) + // ✅ payload beden: yas grubunda 2Y/4Y/6..., diğerlerinde normal + const bedenPayload = toPayloadBeden(grpKey, bedenRaw) // ✅ combokey beden: boşsa '_' ile stabil kalsın - const bedenKey = bedenPayload || '_' + const bedenKey = bedenCanonical || '_' let orderLineId = '' if (this.mode === 'edit') { // lineIdMap anahtarı sizde hangi bedenle tutuluyorsa ikisini de dene orderLineId = safeStr(lineIdMap?.[bedenKey]) || + safeStr(lineIdMap?.[bedenCanonical]) || safeStr(lineIdMap?.[bedenPayload]) || safeStr(lineIdMap?.[' ']) || (Object.keys(map).length === 1