Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-03-23 10:27:34 +03:00
parent e6e79f8ef4
commit 436d25e2fb
2 changed files with 61 additions and 52 deletions

View File

@@ -795,7 +795,7 @@
import { ref, reactive, computed, watch, onMounted, onUnmounted, nextTick, toRaw } from 'vue'
import { useQuasar } from 'quasar'
import { useRoute, useRouter, onBeforeRouteLeave} from 'vue-router'
import { useOrderEntryStore,schemaByKey as storeSchemaByKey,detectBedenGroup} from 'src/stores/orderentryStore'
import { useOrderEntryStore,schemaByKey as storeSchemaByKey,detectBedenGroup,normalizeBedenLabel} from 'src/stores/orderentryStore'
import dayjs from 'dayjs'
import api from 'src/services/api.js'
import { useAuthStore } from 'src/stores/authStore'
@@ -2668,61 +2668,51 @@ async function onModelChange(modelCode) {
})
/* =======================================================
🔑 BEDEN GRUBU — TEK VE KESİN KARAR (FIXED)
- detectBedenGroup içine "[]" verip 'tak' düşmesini engeller
- Önce urunAnaGrubu/kategori üzerinden hard-match
- Sonra detectBedenGroup (ürün bilgisiyle)
- En sonda güvenli fallback: 'tak'
🔑 BEDEN GRUBU — TEK VE KESİN KARAR
- ÖNCE detectBedenGroup (accent/garson/yas kurallarını içerir)
- Sonra güvenli fallback
======================================================= */
const ana = String(form.urunAnaGrubu || '').toLowerCase().trim()
const kat = String(form.kategori || form.urunAltGrubu || '').toLowerCase().trim()
const yg = String(form.askiliyan || '').toLowerCase().trim()
const hasGarsonMeta =
ana.includes('garson') ||
kat.includes('garson') ||
kat.includes('yetiskin/garson') ||
yg.includes('garson') ||
yg.includes('yetiskin/garson')
let bedenGrpKey = null
// ✅ Hard-match (senin ana gruplarına göre genişletebilirsin)
if (
hasGarsonMeta &&
(
ana.includes('gomlek atayaka') ||
ana.includes('gomlek ata yaka') ||
ana.includes('gomlek klasik')
try {
bedenGrpKey = detectBedenGroup(
null,
form.urunAnaGrubu,
form.kategori || form.urunAltGrubu,
form.askiliyan
)
) {
bedenGrpKey = 'yas'
} else if (hasGarsonMeta &&
(ana.includes('ayakkabı') || ana.includes('ayakkabi') || kat.includes('ayakkabı') || kat.includes('ayakkabi'))) {
bedenGrpKey = 'ayk_garson'
} else if (ana.includes('pantolon') || kat.includes('pantolon')) {
bedenGrpKey = 'pan'
} else if (ana.includes('gömlek') || ana.includes('gomlek') || kat.includes('gömlek') || kat.includes('gomlek')) {
bedenGrpKey = 'gom'
} else if (ana.includes('ayakkabı') || ana.includes('ayakkabi') || kat.includes('ayakkabı') || kat.includes('ayakkabi')) {
bedenGrpKey = 'ayk'
} else if (ana.includes('yaş') || ana.includes('yas') || kat.includes('yaş') || kat.includes('yas')) {
bedenGrpKey = 'yas'
} catch (e) {
console.warn('⚠️ detectBedenGroup hata:', e)
bedenGrpKey = null
}
// ✅ Hard-match bulamadıysa mevcut helper ile belirle
if (!bedenGrpKey) {
try {
// ⚠️ Boş array verme; ürün bilgisini kullanarak belirle
bedenGrpKey = detectBedenGroup(
null,
form.urunAnaGrubu,
form.kategori || form.urunAltGrubu,
form.askiliyan
)
} catch (e) {
console.warn('⚠️ detectBedenGroup hata:', e)
bedenGrpKey = null
}
const anaN = String(form.urunAnaGrubu || '')
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase()
.trim()
const katN = String(form.kategori || form.urunAltGrubu || '')
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase()
.trim()
const ygN = String(form.askiliyan || '')
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase()
.trim()
const hasGarsonMeta =
anaN.includes('garson') ||
katN.includes('garson') ||
katN.includes('yetiskin/garson') ||
ygN.includes('garson') ||
ygN.includes('yetiskin/garson')
if (hasGarsonMeta) bedenGrpKey = 'yas'
else if (anaN.includes('pantolon') || katN.includes('pantolon')) bedenGrpKey = 'pan'
else if (anaN.includes('gomlek') || katN.includes('gomlek')) bedenGrpKey = 'gom'
else if (anaN.includes('ayakkabi') || katN.includes('ayakkabi')) bedenGrpKey = 'ayk'
}
// ✅ Son fallback
@@ -2977,7 +2967,7 @@ async function loadOrderInventory(merge = false) {
// 1⃣ Normalize (gelen büyük harfli)
const invMap = {}
for (const x of data) {
const beden = String(x.Beden || '').trim() || ' '
const beden = normalizeBedenLabel(String(x.Beden || '').trim())
const stokDeger = Number(x.KullanilabilirAdet ?? 0)
invMap[beden] = stokDeger
}