"use strict";(globalThis["webpackChunkbaggisowtfaresystem"]=globalThis["webpackChunkbaggisowtfaresystem"]||[]).push([[996],{588:(e,r,t)=>{t.d(r,{J:()=>s});var o=t(1347),a=t(2584);function s(){const e=(0,a.o)();return{canRead:r=>(0,o.EW)(()=>e.hasPermission(r,"read")),canWrite:r=>(0,o.EW)(()=>e.hasPermission(r,"write")),canUpdate:r=>(0,o.EW)(()=>e.hasPermission(r,"update")),canDelete:r=>(0,o.EW)(()=>e.hasPermission(r,"delete")),canExport:r=>(0,o.EW)(()=>e.hasPermission(r,"export")),canApi:r=>(0,o.EW)(()=>e.hasApiPermission(r)),hasModule:r=>(0,o.EW)(()=>e.hasModule(r))}}},742:(e,r,t)=>{t.d(r,{E:()=>s});t(939),t(7049);var o=t(705),a=t(2986);const s=(0,o.nY)("account",{state:()=>({accountOptions:[],loading:!1,error:null}),actions:{async fetchAccounts(){this.loading=!0,this.error=null;try{const{data:e}=await a.Ay.get("/accounts");this.accountOptions=(Array.isArray(e)?e:[]).map(e=>({label:`${e.display_code||""} ${e.account_name||""}`.trim(),value:e.account_code}))}catch(e){console.error("❌ Error fetching accounts:",e),this.error=401===e?.response?.status?"Cari hesapları görüntüleme yetkiniz yok.":e?.response?.data?.message||e?.message||"Cari hesaplar yüklenemedi"}finally{this.loading=!1}}}})},4887:(e,r,t)=>{t.d(r,{x:()=>i});t(939),t(4520),t(3142),t(8832),t(8825),t(2528),t(4207),t(9188),t(1118);var o=t(705),a=t(2986),s=t(367);t(6795);const i=(0,o.nY)("statementheader",{state:()=>({headers:[],details:{},loading:!1,groupOpen:{}}),getters:{currencies(e){const r=new Set;for(const t of e.headers)r.add(t.para_birimi||"—");return Array.from(r).sort()},totalsByCurrency(e){const r={};for(const t of e.headers){const e=t.para_birimi||"—";r[e]||(r[e]={borc:0,alacak:0,bakiye:0,count:0}),r[e].borc+=Number(t.borc)||0,r[e].alacak+=Number(t.alacak)||0,r[e].bakiye+=Number(t.bakiye)||0,r[e].count+=1}return r},groupedRows:e=>{const r={};for(const t of e.headers){const e=t.para_birimi||"—";r[e]||(r[e]=[]),r[e].push(t)}const t=[];for(const[o,a]of Object.entries(r)){if(!a.length)continue;const r=[...a].sort((e,r)=>new Date(e.belge_tarihi)-new Date(r.belge_tarihi)),s=r.at(-1),i=s&&null!=s.bakiye?Number(s.bakiye):0;t.push({_type:"group",para_birimi:o,sonBakiye:i}),!1!==e.groupOpen[o]&&r.forEach(e=>{t.push({...e,_type:"data"})})}return t}},actions:{async loadStatements(e={}){this.loading=!0;try{const{data:r}=await a.Ay.get("/statements",{params:e,paramsSerializer:e=>s.stringify(e,{arrayFormat:"repeat"})});this.headers=Array.isArray(r)?r:[];for(const e of this.currencies)e in this.groupOpen||(this.groupOpen[e]=!0)}catch(e){console.error("❌ Statements yüklenemedi:",e),this.headers=[]}finally{this.loading=!1}},async loadDetails(e){if(e&&!this.details[e])try{const{data:r}=await a.Ay.get(`/statements/${e}/details`);this.details[e]=Array.isArray(r)?r:[]}catch(r){console.error("❌ Details yüklenemedi:",r),this.details[e]=[]}},toggleGroup(e){const r=e||"—";this.groupOpen[r]=!this.groupOpen[r]},openAllGroups(){for(const e of this.currencies)this.groupOpen[e]=!0},closeAllGroups(){for(const e of this.currencies)this.groupOpen[e]=!1}}})},5390:(e,r,t)=>{t.d(r,{w:()=>s});t(939),t(6461);var o=t(705),a=t(2986);const s=(0,o.nY)("downloadstpdf",{actions:{async downloadPDF(e,r,t,o=[]){try{const s={accountcode:e,startdate:r,enddate:t};Array.isArray(o)&&o.length>0&&(s.parislemler=o.filter(e=>void 0!==e&&null!==e&&""!==e));const i=await(0,a.RG)("/export-pdf",s),n=window.URL.createObjectURL(new Blob([i],{type:"application/pdf"}));return window.open(n,"_blank"),console.log("✅ PDF yeni sekmede açıldı"),{ok:!0,message:"📄 PDF hazırlandı"}}catch(e){return console.error("❌ PDF açma hatası:",e),{ok:!1,message:e?.message||"❌ PDF alınamadı"}}}}})},5599:(e,r,t)=>{t.d(r,{l:()=>s});t(939),t(6461);var o=t(705),a=t(2986);const s=(0,o.nY)("statementdetail",{state:()=>({details:[],loading:!1,error:null}),actions:{async loadDetails({accountCode:e,startDate:r,endDate:t,parislemler:o}){if(e){this.loading=!0,this.error=null;try{const s={startdate:r,enddate:t};Array.isArray(o)&&o.length>0&&(s.parislemler=o.filter(e=>void 0!==e&&null!==e&&""!==e));const i=await a.Ay.get(`/statements/${e}/details`,{params:s});this.details=i.data||[]}catch(e){console.error("❌ Details yüklenemedi:",e),this.error=e?.data?.message||e?.message||"Detaylar yüklenemedi"}finally{this.loading=!1}}else this.error="Geçerli bir cari kod seçilmedi."},getDetailsByBelge(e){return this.details.filter(r=>r.belge_ref_numarasi===e)},reset(){this.details=[],this.loading=!1,this.error=null}}})},8338:(e,r,t)=>{t.d(r,{i:()=>s});t(939),t(6461);var o=t(705),a=t(2986);const s=(0,o.nY)("downloadstHead",{actions:{async handlestHeadDownload(e,r,t,o){try{const s={accountcode:e,startdate:r,enddate:t};Array.isArray(o)&&o.length>0&&(s.parislemler=o.filter(e=>void 0!==e&&null!==e&&""!==e));const i=await(0,a.RG)("/exportstamentheaderreport-pdf",s),n=window.URL.createObjectURL(i);return window.open(n,"_blank"),{ok:!0,message:"📄 PDF hazırlandı"}}catch(e){return console.error("❌ PDF açma hatası:",e),{ok:!1,message:e?.message||"❌ PDF açma hatası"}}}}})},8557:(e,r,t)=>{t.d(r,{Bm:()=>D,Cz:()=>h,Tf:()=>C});t(939),t(3872),t(6461),t(7008),t(4520),t(7049),t(6593),t(4151);var o=t(705),a=t(2986),s=t(6795),i=t(4187),n=t(5767);const d="_",l=e=>(null==e?"":String(e)).trim(),c=e=>l(e).toUpperCase();function u(e,r){const t=c(e?.model||e?.ItemCode),o=c(e?.renk||e?.ColorCode),a=c(e?.renk2||e?.ItemDim2Code),s=c(r),i=""===s?d:s;return`${t}||${o}||${a}||${i}`}const m=[{key:"ayk",title:"AYAKKABI",values:["39","40","41","42","43","44","45"]},{key:"yas",title:"YAŞ",values:["2","4","6","8","10","12","14"]},{key:"pan",title:"PANTOLON",values:["38","40","42","44","46","48","50","52","54","56","58","60","62","64","66","68"]},{key:"gom",title:"GÖMLEK",values:["XS","S","M","L","XL","2XL","3XL","4XL","5XL","6XL","7XL"]},{key:"tak",title:"TAKIM ELBİSE",values:["44","46","48","50","52","54","56","58","60","62","64","66","68","70","72","74"]},{key:"aksbir",title:"AKSESUAR",values:[" ","44","STD","110CM","115CM","120CM","125CM","130CM","135CM"]}],h=m.reduce((e,r)=>(e[r.key]=r,e),{}),y=(0,i.KR)({}),p=(0,i.KR)([]),g=(0,i.KR)({});function b(){return crypto.randomUUID()}function f(e,r,t){const o=e.clientRowKey||e.clientKey||e.id||e._id||e.tmpId||`${e.model||""}|${e.renk||""}|${e.renk2||""}`;return`${o}::${r}::${t}`}const D=(0,o.nY)("orderentry",{state:()=>({isControlledSubmit:!1,allowRouteLeaveOnce:!1,schemaMap:{},productCache:{},_lastSavedFingerprint:null,activeNewHeaderId:localStorage.getItem("bss_active_new_header")||null,loading:!1,selected:null,error:null,customers:[],selectedCustomer:null,products:[],colors:[],secondColors:[],inventory:[],selectedProduct:null,selectedColor:null,selectedColor2:null,OrderHeaderID:null,persistKey:"bss_orderentry_data",lastSnapshotKey:"bss_orderentry_snapshot",editingKey:null,currentOrderId:null,mode:"new",orders:[],header:{},summaryRows:[],lastSavedAt:null,preventPersist:!1,_uiBusy:!1,_unsavedChanges:!1}),getters:{getDraftKey(){return"bss_orderentry_new_draft"},getEditKey(){const e=this.header?.OrderHeaderID;return e?`bss_orderentry_edit:${e}`:null},hasUnsavedChanges(e){try{return e._lastSavedFingerprint!==e._persistFingerprint?.()}catch{return!1}},getPersistKey:e=>e.header?.OrderHeaderID?`${e.persistKey}:${e.header.OrderHeaderID}`:e.persistKey,getSnapshotKey:e=>e.header?.OrderHeaderID?`${e.lastSnapshotKey}:${e.header.OrderHeaderID}`:e.lastSnapshotKey,totalQty:e=>(e.orders||[]).reduce((e,r)=>e+(Number(r?.adet)||0),0),hasAnyClosedLine(e){return Array.isArray(e.summaryRows)&&e.summaryRows.some(e=>!0===e?.isClosed)},totalAmount(e){return Array.isArray(e.summaryRows)?e.summaryRows.reduce((e,r)=>e+Number(r?.tutar||0),0):0}},actions:{normalizeComboUI(e){return u(e,d)},initSchemaMap(){if(this.schemaMap&&Object.keys(this.schemaMap).length>0)return;const e={};for(const r of m)e[r.key]={key:r.key,title:r.title,values:[...r.values]};this.schemaMap=e,console.log("🧩 schemaMap INIT edildi:",Object.keys(this.schemaMap))},getRowKey(e){return e&&(e.OrderLineID||e.id)||null},updateHeaderTotals(){try{if(!Array.isArray(this.summaryRows))return 0;const e=this.summaryRows.reduce((e,r)=>e+Number(r?.tutar||0),0);return this.header&&(this.header.TotalAmount=Number(e.toFixed(2))),e}catch(e){return console.error("❌ updateHeaderTotals hata:",e),0}},async showInvalidVariantDialog(e,r=[]){if(Array.isArray(r)&&0!==r.length)return new Promise(t=>{e.dialog({title:"🚨 Tanımsız Ürün Kombinasyonları",message:`\n
\n ${r.map((e,r)=>`\n
\n
\n #${r+1} | Item: ${e.itemCode}\n
\n
\n Beden: ${e.dim1||"(boş)"} |\n Renk: ${e.colorCode||"-"} |\n Qty: ${e.qty1}\n
\n
\n Sebep: ${e.reason||"Tanımsız ürün kombinasyonu"}\n
\n
\n `).join("")}\n
\n `,html:!0,ok:{label:"Düzelt",color:"negative"},cancel:!1,persistent:!0}).onOk(()=>t()).onDismiss(()=>t()).onShown(()=>{const e=document.querySelectorAll(".invalid-row");e.forEach(e=>{e.addEventListener("click",()=>{const r=e.getAttribute("data-clientkey");this.scrollToInvalidRow?.(r)})})})})},scrollToInvalidRow(e){if(!e)return;const r=this.summaryRows?.findIndex(r=>r.clientKey===e);if(-1===r)return void console.warn("❌ Satır bulunamadı:",e);const t=document.querySelector(`[data-clientkey="${e}"]`);t?(t.scrollIntoView({behavior:"smooth",block:"center"}),t.classList.add("invalid-highlight"),setTimeout(()=>{t.classList.remove("invalid-highlight")},2500)):console.warn("❌ DOM satırı bulunamadı:",e)},async checkHeaderExists(e){try{if(!e)return!1;const r=await a.Ay.get(`/orders/check/${e}`);return!0===r?.data?.exists}catch(e){return console.warn("⚠ checkHeaderExists hata:",e),!1}},async fetchOrderPdf(e){try{const r=await a.Ay.get(`/order/pdf/${e}`,{responseType:"blob"});return r.data}catch(e){throw console.error("❌ fetchOrderPdf hata:",e),e}},async downloadOrderPdf(e=null){try{const r=e||this.header?.OrderHeaderID;if(!r)return void console.error("❌ PDF ID bulunamadı");const t=await a.Ay.get(`/order/pdf/${r}`,{responseType:"blob"}),o=new Blob([t.data],{type:"application/pdf"}),s=URL.createObjectURL(o);window.open(s,"_blank"),setTimeout(()=>URL.revokeObjectURL(s),6e4)}catch(e){throw console.error("❌ PDF açma hatası:",e),e}},setActiveNewHeader(e){this.activeNewHeaderId=e||null,e?localStorage.setItem("bss_active_new_header",e):localStorage.removeItem("bss_active_new_header")},getActiveNewHeaderId(){return this.activeNewHeaderId||localStorage.getItem("bss_active_new_header")},async initFromRoute(e,r=null){if("new"===this.mode){const e=localStorage.getItem(this.getDraftKey);if(e)try{const r=JSON.parse(e);return this.header=r.header||{},this.orders=r.orders||[],this.summaryRows=r.summaryRows||this.orders,void console.log("♻️ NEW draft restore edildi (global)")}catch{}return void console.log("⚪ NEW draft yok, boş başlatılıyor")}this.schemaMap&&Object.keys(this.schemaMap).length||this.initSchemaMap();try{console.log("🧩 [initFromRoute] orderId:",e);const t=localStorage.getItem("bss_last_txn")||null,o=e=>{if(!e)return null;const r=localStorage.getItem(`bss_orderentry_data:${e}`);if(!r)return null;try{return JSON.parse(r)}catch{return null}},a=o(e),s=o(t),i=e=>!!e&&(Array.isArray(e.orders)&&e.orders.length>0||Array.isArray(e.summaryRows)&&e.summaryRows.length>0);let n=null,d=null;if(i(a)?(n=e,d=a,console.log("✅ [initFromRoute] Route ID snapshot seçildi:",n)):i(s)&&(n=t,d=s,console.log("✅ [initFromRoute] lastTxn snapshot seçildi:",n)),!n||!d)return console.log("⚪ [initFromRoute] Snapshot yok, boş başlatılıyor"),this.header={...this.header||{},OrderHeaderID:e||t||crypto.randomUUID()},this.orders=[],void(this.summaryRows=[]);this.header={...d.header||{},OrderHeaderID:n};const l=Array.isArray(d.orders)?[...d.orders]:[],c=Array.isArray(d.summaryRows)?[...d.summaryRows]:l;this.orders=l,this.summaryRows=c;try{localStorage.setItem("bss_last_txn",n)}catch(e){console.warn("⚠️ bss_last_txn yazılamadı:",e)}r&&e&&e!==n&&(console.log("🔁 [initFromRoute] Route ID düzeltiliyor →",n),await r.replace({name:"order-entry",params:{orderHeaderID:n}})),console.log("✅ [initFromRoute] Restore tamam. Satır sayısı:",this.summaryRows.length)}catch(e){console.error("❌ [initFromRoute] hata:",e)}},async startNewOrder({$q:e}){this.schemaMap&&Object.keys(this.schemaMap).length||this.initSchemaMap();const r=crypto.randomUUID();let t=`LOCAL-${(0,s["default"])().format("YYMMDD-HHmmss")}`;try{const e=await a.Ay.get("/order/new-number");e?.data?.OrderNumber&&(t=e.data.OrderNumber)}catch{console.info("ℹ️ Backend order number yok, LOCAL kullanıldı")}return this.mode="new",this.isControlledSubmit=!1,this.allowRouteLeaveOnce=!1,this.header={OrderHeaderID:r,OrderNumber:t,OrderDate:(new Date).toISOString().slice(0,10),CurrAccCode:null,DocCurrencyCode:"USD",PriceCurrencyCode:"USD",PriceExchangeRate:1},this.orders=[],this.summaryRows=[],this._lastSavedFingerprint=null,this.persistLocalStorage?.(),this.header},dedupeActiveLinesByCombo(e){const r=new Map;for(const t of e){const e=u({model:t.ItemCode,renk:t.ColorCode,renk2:t.ItemDim2Code},t.ItemDim1Code);if(!r.has(e)){t.ComboKey=e,r.set(e,t);continue}const o=r.get(e);o.Qty1=(Number(o.Qty1)||0)+(Number(t.Qty1)||0),!o.OrderLineID&&t.OrderLineID&&(o.OrderLineID=t.OrderLineID)}return Array.from(r.values())},resetCoreState(){this.orders=[],this.summaryRows=[],this.groupedRows=[],this.header={},this.editingKey=null,this.currentOrderId=null},resetForNewOrder(){this.header={OrderHeaderID:this.header?.OrderHeaderID||null,OrderDate:(new Date).toISOString().slice(0,10),CurrAccCode:null,DocCurrencyCode:"TRY",PriceCurrencyCode:"TRY"},this.orders=[],this.summaryRows=[],this.productCache={},this.stockMap={},this.setMode("new")},resetForEdit(){this.editingKey=null,this.groupedRows=[],this.mode="edit"},markAsSaved(){try{this._lastSavedFingerprint=this._persistFingerprint(),console.log("✅ markAsSaved → fingerprint senkron")}catch(e){console.warn("⚠️ markAsSaved hata:",e)}},clearLocalSnapshot(){try{const e=this.header?.OrderHeaderID;if(!e)return;localStorage.removeItem(`bss_orderentry_data:${e}`),console.log("🧹 Local snapshot temizlendi:",e)}catch(e){console.warn("⚠️ clearLocalSnapshot hata:",e)}},clearAllOrderSnapshots(){Object.keys(localStorage).filter(e=>e.startsWith("bss_orderentry_data:")||e.startsWith("bss_orderentry_edit:")).forEach(e=>{console.log("🧹 snapshot silindi:",e),localStorage.removeItem(e)}),localStorage.removeItem("bss_last_txn")},hardResetAfterSubmit(){try{const e=this.header?.OrderHeaderID||null;this.orders=[],this.summaryRows=[],this.groupedRows=[],this.header={},this.mode="new",this.editingKey=null,this.currentOrderId=null,this.activeTransactionId=null,this.submitted=!1,this._lastSavedFingerprint=null,this._lastPersistFingerprint=null,this._persistTimeout&&(clearTimeout(this._persistTimeout),this._persistTimeout=null);try{e&&(localStorage.removeItem(`bss_orderentry_data:${e}`),localStorage.removeItem(`bss_orderentry_snapshot:${e}`)),localStorage.removeItem("bss_last_txn"),localStorage.removeItem("bss_active_new_header")}catch(e){console.warn("⚠️ hardResetAfterSubmit localStorage temizliği hata:",e)}console.log("🧹 Store resetlendi (submit sonrası).")}catch(e){console.error("❌ hardResetAfterSubmit hata:",e)}},async openExistingForEdit(e,{$q:r=null,form:t=null,productCache:o=null}={}){if(this.schemaMap&&Object.keys(this.schemaMap).length||this.initSchemaMap?.(),!e)return!1;if("new"===this.mode)return console.log("⚪ openExistingForEdit skip (mode=new)"),!1;const s=o?.value?o.value:o&&"object"===typeof o?o:{};try{this.setMode?.("edit");const r=await a.Ay.get(`/order/get/${e}`),o=r?.data;if(!o?.header)throw new Error("Backend header yok");this.header={...o.header,OrderHeaderID:o.header.OrderHeaderID||e};const i=this.normalizeOrderLines(o.lines||[],this.header.DocCurrencyCode||"USD",s);this.orders=Array.isArray(i)?i:[],this.summaryRows=[...this.orders];const n=(this.summaryRows||[]).some(e=>!0===e?.isClosed);this.setMode?.(n?"view":"edit"),t&&Object.assign(t,this.header),this.persistLocalStorage?.();try{localStorage.setItem("bss_last_txn",String(e))}catch{}return console.log("✅ openExistingForEdit OK:",{id:e,rows:this.summaryRows.length,mode:this.mode,hasClosedLine:n}),!0}catch(e){return console.error("❌ openExistingForEdit hata:",e),"new"!==this.mode&&r?.notify?.({type:"negative",message:"Sipariş yüklenemedi"}),!1}},async hydrateFromLocalStorage(e,r=!1){if("new"===this.mode)return this.hydrateFromLocalStorageIfExists();try{const t=`bss_orderentry_data:${e}`,o=JSON.parse(localStorage.getItem(t)||"null");if(!o)return r&&console.log("ℹ️ hydrate → snapshot yok:",e),null;this.source=o.source||"local";const a=e=>{if(!e)return null;const r=(0,s["default"])(e);return r.isValid()?r.format("YYYY-MM-DD HH:mm:ss"):null},i=e=>{if(!e)return null;const r=(0,s["default"])(e);return r.isValid()?r.format("YYYY-MM-DD"):null},n=e=>{if(!e)return null;const r=(0,s["default"])(e);return r.isValid()?r.format("HH:mm:ss"):null};this.header={...o.header||{},OrderHeaderID:o.header?.OrderHeaderID??e,OrderNumber:o.header?.OrderNumber??null};const d=this.header;d.CreatedDate=a(d.CreatedDate),d.LastUpdatedDate=a(d.LastUpdatedDate),d.CreditableConfirmedDate=a(d.CreditableConfirmedDate),d.OrderDate=i(d.OrderDate),d.OrderTime=n(d.OrderTime),this.header=d;const l=Array.isArray(o.orders)?o.orders:[];this.orders=l,this.summaryRows=Array.isArray(o.summaryRows)?o.summaryRows:l,this.groupedRows=[];const c={type:!0===o.submitted?"submitted":"draft",source:this.source,headerId:e,orderNumber:this.header?.OrderNumber??null,rows:this.summaryRows.length,submitted:!0===o.submitted||!0===o.header?.IsSubmitted};return r&&console.log("♻️ hydrate sonuc (FIXED):",c),c}catch(e){return console.warn("⚠️ hydrateFromLocalStorage hata:",e),null}},hydrateFromLocalStorageIfExists(){try{let e=null;if("new"===this.mode&&(e=localStorage.getItem(this.getDraftKey)),"edit"===this.mode){const r=this.getEditKey;r&&(e=localStorage.getItem(r))}if(!e)return!1;const r=JSON.parse(e);return this.header=r.header||{},this.orders=r.orders||[],this.summaryRows=r.summaryRows||this.orders,console.log("♻️ hydrate OK:",this.mode),!0}catch(e){return console.warn("hydrateFromLocalStorageIfExists hata:",e),!1}},mergeOrders(e,r,t=!0){if(!r&&!e)return{header:{},orders:[]};const o=(e={},r={})=>{const t={...e};for(const[e,o]of Object.entries(r||{}))void 0!==o&&null!==o&&("string"===typeof o&&""===o.trim()||(t[e]=o));return t},a=o(r?.header||{},e?.header||{});a.OrderHeaderID=r?.header?.OrderHeaderID||e?.header?.OrderHeaderID||a.OrderHeaderID||null;const i=e=>(e.OrderLineID||`${e.model||e.ItemCode}_${e.renk||e.ColorCode}_${e.renk2||e.ColorCode2}`).toString().toUpperCase(),n=new Map;for(const e of r?.lines||r?.orders||[])n.set(i(e),{...e,_src:"backend"});for(const r of e?.orders||[]){const e=i(r);if(n.has(e)){const a=o(n.get(e),r);a._src=t?"local":"backend",n.set(e,a)}else n.set(e,{...r,_src:"local-only"})}const d=Array.from(n.values());console.log(`🧩 mergeOrders → ${d.length} satır birleşti (ID:${a.OrderHeaderID})`);const l=e=>{if(!e)return null;const r=(0,s["default"])(e);return r.isValid()?r.format("YYYY-MM-DD HH:mm:ss"):null},c=e=>{if(!e)return null;const r=(0,s["default"])(e);return r.isValid()?r.format("YYYY-MM-DD"):null},u=e=>{if(!e)return null;const r=(0,s["default"])(e);return r.isValid()?r.format("HH:mm:ss"):null};return a.CreatedDate=l(a.CreatedDate),a.LastUpdatedDate=l(a.LastUpdatedDate),a.CreditableConfirmedDate=l(a.CreditableConfirmedDate),a.OrderDate=c(a.OrderDate),a.OrderTime=u(a.OrderTime),{header:a,orders:d}},markRowSource(e){return"local-only"===e._src?"🟠 Offline":"local"===e._src?"🔵 Local":"⚪ Backend"},mergeAndPersistBackendOrder(e,r){const t=`bss_orderentry_data:${e}`,o=JSON.parse(localStorage.getItem(t)||"null"),a=this.mergeOrders(o,r,!0);localStorage.setItem(t,JSON.stringify({...a,source:"db",mode:"edit",updatedAt:(new Date).toISOString()})),console.log(`💾 mergeAndPersistBackendOrder → ${e} localStorage’a yazıldı`)},persistLocalStorage(){try{if(this.preventPersist||this._uiBusy)return;const e={mode:this.mode,header:(0,i.ux)(this.header||{}),orders:(0,i.ux)(this.orders||[]),summaryRows:(0,i.ux)(this.summaryRows||[]),updatedAt:(new Date).toISOString()};if("new"===this.mode)return localStorage.setItem(this.getDraftKey,JSON.stringify(e)),void this.setActiveNewHeader?.(this.header?.OrderHeaderID);if("edit"===this.mode){const r=this.getEditKey;if(!r)return;localStorage.setItem(r,JSON.stringify(e))}}catch(e){console.warn("persistLocalStorage error:",e)}},clearEditSnapshotIfExists(){if("edit"!==this.mode)return;const e=this.getEditKey;e&&(localStorage.removeItem(e),console.log("🧹 EDIT snapshot silindi:",e))},_persistFingerprint(){const e=JSON.stringify(this.orders||[]),r=this.header||{},t=JSON.stringify({OrderHeaderID:r.OrderHeaderID||"",OrderNumber:r.OrderNumber||"",CurrAccCode:r.CurrAccCode||"",DocCurrencyCode:r.DocCurrencyCode||"",ExchangeRate:r.ExchangeRate??null}),o=Array.isArray(this.summaryRows)?this.summaryRows:[],a=JSON.stringify({len:o.length,keys:o.map(e=>this.getRowKey?.(e)||e?.key||e?.id||"").filter(Boolean)}),s=JSON.stringify({lineIdMap:this.lineIdMap||null,comboLineIds:this.comboLineIds||null,comboLineIdMap:this.comboLineIdMap||null,comboLineIdSet:this.comboLineIdSet?Array.from(this.comboLineIdSet):null}),i=String(this.mode||"new");return`${i}|${t}|${a}|${s}|${e}`},_safePersistDebounced(e=1200){clearTimeout(this._persistTimeout),this._persistTimeout=setTimeout(()=>{try{if(this.preventPersist)return;if(this._uiBusy)return;const e=this._persistFingerprint();if(e===this._lastPersistFingerprint)return;this._lastPersistFingerprint=e,this.persistLocalStorage(),console.log(`🕒 Otomatik LocalStorage senkron (${this.orders?.length||0} satır).`)}catch(e){console.warn("⚠️ Debounce persist hata:",e)}},e)},async fetchMinPrice(e,r,t){try{const t=await a.Ay.get("/min-price",{params:{model:e,currency:r}}),o=t?.data||{};return console.log("💰 [store.fetchMinPrice] yanıt:",o),{price:Number(o.price||0),rateToTRY:Number(o.rateToTRY||1),priceTRY:Number(o.priceTRY||0)}}catch(e){return console.error("❌ [store.fetchMinPrice] Min fiyat alınamadı:",e),t?.notify?.({type:"warning",message:"Min. fiyat bilgisi alınamadı, kontrol atlandı ⚠️",position:"top-right"}),{price:0,rateToTRY:1,priceTRY:0}}},applyCurrencyToLines(e){e&&(this.header&&(this.header.DocCurrencyCode=e,this.header.PriceCurrencyCode=e),Array.isArray(this.orders)&&(this.orders=this.orders.map(r=>({...r,pb:e,DocCurrencyCode:e,PriceCurrencyCode:e}))),Array.isArray(this.summaryRows)&&(this.summaryRows=this.summaryRows.map(r=>({...r,pb:e,DocCurrencyCode:e,PriceCurrencyCode:e}))),this.updateHeaderTotals?.())},setHeaderFields(e,r={}){const{applyCurrencyToLines:t=!1,immediatePersist:o=!1}=r;this.header={...this.header||{},...e},t&&Array.isArray(this.summaryRows)&&(this.summaryRows=this.summaryRows.map(r=>({...r,pb:e.DocCurrencyCode??r.pb,DocCurrencyCode:e.DocCurrencyCode??r.DocCurrencyCode,PriceCurrencyCode:e.PriceCurrencyCode??e.DocCurrencyCode??r.PriceCurrencyCode}))),this.orders=[...this.summaryRows],o&&this.persistLocalStorage("header-change")},applyHeaderCurrencyToOrders(){if(!Array.isArray(this.orders))return;const e=this.header?.DocCurrencyCode??null,r=this.header?.PriceCurrencyCode??null,t=this.header?.PriceExchangeRate??null;let o=0;for(const a of this.orders)e&&(a.DocCurrencyCode=e),r&&(a.PriceCurrencyCode=r),null!=t&&(a.PriceExchangeRate=t),o++;console.log(`💱 ${o} satırda PB güncellendi → Doc:${e} Price:${r} Rate:${t}`)},saveSnapshot(e="snapshot"){try{const r=this.header?.OrderHeaderID;if(!r)return;const t=`bss_orderentry_snapshot:${r}`,o={tag:e,mode:this.mode,orders:(0,i.ux)(this.orders||[]),header:(0,i.ux)(this.header||{}),savedAt:(0,s["default"])().toISOString()};localStorage.setItem(t,JSON.stringify(o)),console.log(`📸 Snapshot kaydedildi [${t}]`)}catch(e){console.warn("⚠️ saveSnapshot hata:",e)}},loadFromStorage(e=!1){try{const r=localStorage.getItem(this.getPersistKey);if(!r)return console.info("ℹ️ LocalStorage boş, grid başlatılmadı."),!1;if(!e&&"edit"===this.mode)return console.info("⚠️ Edit modda local restore atlandı (force=false)."),!1;const t=JSON.parse(r);return this.orders=Array.isArray(t.orders)?t.orders:[],this.header=t.header||{},this.currentOrderId=t.currentOrderId||null,this.selectedCustomer=t.selectedCustomer||null,this.header.OrderHeaderID=t.header?.OrderHeaderID||null,this.mode=t.mode||"new",this.lastSavedAt=t.savedAt||null,console.log(`♻️ Storage yüklendi • txn:${this.header.OrderHeaderID} (${this.orders.length} satır)`),this.applyHeaderCurrencyToOrders(),this._safePersistDebounced(200),t}catch(e){return console.warn("⚠️ localStorage okuma hatası:",e),!1}},clearStorage(){try{localStorage.removeItem(this.getPersistKey),console.log(`🗑️ LocalStorage temizlendi [${this.getPersistKey}]`)}catch(e){console.warn("⚠️ clearStorage hatası:",e)}},clearNewDraft(){localStorage.removeItem(this.getDraftKey),localStorage.removeItem("bss_last_txn"),console.log("🧹 NEW taslak temizlendi")},isSameCombo(e,r){if(!e||!r)return!1;const t=e=>null==e?"":String(e).trim().toUpperCase(),o={model:t(e.model),renk:t(e.renk),renk2:t(e.renk2)},a={model:t(r.model),renk:t(r.renk),renk2:t(r.renk2)};if(!o.model||!a.model)return!1;const s=o.renk===a.renk||!o.renk||!a.renk,i=o.renk2===a.renk2||!o.renk2||!a.renk2;return o.model===a.model&&s&&i},async saveOrUpdateRowUnified({form:e,recalcVat:r=null,resetEditor:t=null,stockMap:o=null,loadProductSizes:a=null,$q:i=null}){try{console.log("🔥 saveOrUpdateRowUnified v6.6",{model:e?.model,mode:this.mode,editingKey:this.editingKey});const n="function"===typeof this.getRowKey?this.getRowKey:e=>e?.clientKey||e?.id||e?.OrderLineID,d=Array.isArray(this.summaryRows)?[...this.summaryRows]:[];if(!e?.model)return i?.notify?.({type:"warning",message:"Model seçiniz"}),!1;e.pb||(e.pb=this.header?.DocCurrencyCode||"USD");try{"function"===typeof this.loadProductSizes&&await this.loadProductSizes(e,!0,i)}catch(e){console.warn("⚠ this.loadProductSizes hata:",e)}try{"function"===typeof a&&await a(!0)}catch(e){console.warn("⚠ loadProductSizes hata:",e)}const l=o?.value||o||{},c=e.bedenLabels||[],u=e.bedenler||[],m=[];for(let e=0;e0&&o>t&&m.push({beden:r,stok:t,girilen:o})}if(m.length&&i){const e=m.map(e=>`• ${e.beden}: ${e.girilen} (Stok: ${e.stok})`).join("
"),r=await new Promise(r=>{i.dialog({title:"Stok Uyarısı",message:`Bazı bedenlerde stoktan fazla giriş yaptınız:
${e}`,html:!0,ok:{label:"Devam",color:"primary"},cancel:{label:"İptal",color:"negative"}}).onOk(()=>r(!0)).onCancel(()=>r(!1)).onDismiss(()=>r(!1))});if(!r)return!1}let h=!0;try{let r=0;if("function"===typeof this.fetchMinPrice){const t=await this.fetchMinPrice(e.model,e.pb,i);r=Number(t?.price||0)}else Number(e.minFiyat||0)>0&&(r=Number(e.minFiyat));const t=Number(e.fiyat||0);r>0&&t>0&&t{i.dialog({title:"Fiyat Uyarısı",message:`Min. Fiyat: ${r} ${e.pb}
Girdiğiniz: ${t} ${e.pb}`,html:!0,ok:{label:"Devam",color:"primary"},cancel:{label:"İptal",color:"negative"}}).onOk(()=>o(!0)).onCancel(()=>o(!1)).onDismiss(()=>o(!1))}))}catch(e){console.warn("⚠ Min fiyat hata:",e)}if(!h)return!1;const y=(e.bedenler||[]).reduce((e,r)=>e+Number(r||0),0);e.adet=y,e.tutar=Number((y*Number(e.fiyat||0)).toFixed(2));const p=I(e);if(this.editingKey){const e=d.findIndex(e=>n(e)===this.editingKey);if(-1===e)return this.editingKey=null,t?.(!0),!1;const o=d[e];if(this.isRowLocked?.(o))return i?.notify?.({type:"warning",message:"Satır kapalı"}),this.editingKey=null,t?.(!0),!1;const a=this.isSameCombo(o,p),s=o?.lineIdMap&&"object"===typeof o.lineIdMap?{...o.lineIdMap}:p?.lineIdMap&&"object"===typeof p.lineIdMap?{...p.lineIdMap}:{};if(a)return d[e]={...o,...p,id:o.id,OrderLineID:o.OrderLineID||null,lineIdMap:s},this.summaryRows=d,this.orders=d,this.updateHeaderTotals?.(),this.persistLocalStorage?.(),this.editingKey=null,t?.(!0),r?.(),i?.notify?.({type:"positive",message:"Satır güncellendi"}),!0;const l=o?.grpKey||Object.keys(o?.bedenMap||{})[0]||"tak",c={},u=o?.bedenMap?.[l]&&"object"===typeof o.bedenMap[l]?o.bedenMap[l]:s&&"object"===typeof s?s:null;if(u)for(const e of Object.keys(u))c[e]=0;else c["STD"]=0;const m={...o,id:`DEL::${o.id||o.OrderLineID||crypto.randomUUID()}`,_deleteSignal:!0,adet:0,Qty1:0,tutar:0,ComboKey:"",OrderLineID:o.OrderLineID||null,grpKey:l,bedenMap:{[l]:c},lineIdMap:s,comboLineIds:{...o.comboLineIds||{}}},h={...p,id:crypto.randomUUID(),OrderLineID:null,lineIdMap:{}};return d.splice(e,1,h),this.summaryRows=d,this.orders=[...d,m],this.updateHeaderTotals?.(),this.persistLocalStorage?.(),this.editingKey=null,t?.(!0),r?.(),i?.notify?.({type:"positive",message:"Kombinasyon değişti"}),!0}const g=d.findIndex(e=>!e?._deleteSignal&&this.isSameCombo(e,p)),b=e=>{const r=e?.grpKey||Object.keys(e?.bedenMap||{})[0]||"GENEL",t=e?.bedenMap?.[r],o=e?.bedenMap&&"object"===typeof e.bedenMap&&!t?e.bedenMap:null;return{grpKey:r,map:t||o||{}}};if(-1!==g){const e=d[g];if(!0!==e?._deleteSignal){const{grpKey:o,map:a}=b(e),{grpKey:n,map:l}=b(p),c=p?.grpKey||o||n||"GENEL",u={...a||{}};for(const[e,r]of Object.entries(l||{})){const t=null==e||""===String(e).trim()?" ":String(e).trim();u[t]=Number(u[t]||0)+Number(r||0)}const m=Object.values(u).reduce((e,r)=>e+Number(r||0),0),h=Number(p?.fiyat??e?.fiyat??0),y=Number((m*h).toFixed(2));return d[g]={...e,...p,id:e.id,OrderLineID:e.OrderLineID||null,lineIdMap:{...e.lineIdMap||{}},grpKey:c,bedenMap:{[c]:u},adet:m,tutar:y,updatedAt:(0,s["default"])().toISOString()},this.summaryRows=d,this.orders=d,this.updateHeaderTotals?.(),this.persistLocalStorage?.(),t?.(!0),r?.(),i?.notify?.({type:"positive",message:"Aynı kombinasyon bulundu, bedenler birleştirildi"}),!0}}return d.push({...p,id:p.id||crypto.randomUUID(),OrderLineID:null,lineIdMap:{...p.lineIdMap||{}}}),this.summaryRows=d,this.orders=d,this.updateHeaderTotals?.(),this.persistLocalStorage?.(),t?.(!0),r?.(),i?.notify?.({type:"positive",message:"Yeni satır eklendi"}),!0}catch(e){return console.error("❌ saveOrUpdateRowUnified:",e),i?.notify?.({type:"negative",message:"Satır kaydı başarısız"}),!1}},setTransaction(e,r=!0){if(e&&(this.header.OrderHeaderID=e,localStorage.setItem("bss_last_txn",e),console.log("🔄 Transaction değiştirildi:",e),r)){const r=Array.isArray(this.orders)&&this.orders.length>0;if(r)console.log("🚫 Grid dolu, auto-resume atlandı (mevcut satırlar korundu).");else{const r=this.hydrateFromLocalStorage(e,!0);r&&console.info("📦 Local kayıt geri yüklendi (boş grid için).")}}},clearTransaction(){try{const e=this.header?.OrderHeaderID;e&&localStorage.removeItem(`bss_orderentry_data:${e}`),this.orders=[],this.summaryRows=[],this.groupedRows=[],this.header={},this.mode="new",localStorage.removeItem("bss_last_txn"),console.log("🧹 Transaction temizlendi")}catch(e){console.warn("⚠️ clearTransaction hata:",e)}},isRowLocked(e){return!!e&&("edit"===this.mode&&!!e.OrderLineID&&!0===e.isClosed)},findExistingIndexByForm(e){return this.orders.findIndex(r=>this.isSameCombo(r,e))},addRow(e){if(!e)return;const r=this.orders.findIndex(r=>{const t=r.id&&e.id&&r.id===e.id,o=this.isSameCombo(r,e);return t||o});if(-1!==r){const t=this.orders[r];this.orders[r]={...t,adet:Number(e.adet??t.adet??0),fiyat:Number(e.fiyat??t.fiyat??0),tutar:Number(e.fiyat??t.fiyat??0)*Number(e.adet??t.adet??0),ItemDim1Code:e.ItemDim1Code||t.ItemDim1Code,aciklama:e.aciklama||t.aciklama,updatedAt:(0,s["default"])().toISOString()},console.log(`⚠️ Aynı kombinasyon bulundu, satır güncellendi: ${e.model} ${e.renk||""} ${e.renk2||""}`)}else this.orders.push((0,i.ux)(e)),console.log(`➕ Yeni kombinasyon eklendi: ${e.model} ${e.renk||""} ${e.renk2||""}`);this.persistLocalStorage(),this.saveSnapshot("after-add")},updateRow(e,r){e<0||e>=this.orders.length||(this.orders[e]={...this.orders[e],...(0,i.ux)(r),updatedAt:(0,s["default"])().toISOString()},this.persistLocalStorage(),this.saveSnapshot("after-update"),console.log(`✏️ Satır güncellendi (store): #${e}`))},removeRow(e){if(e<0||e>=this.orders.length)return;const r=this.orders.splice(e,1);Array.isArray(this.summaryRows)&&this.summaryRows.splice(e,1),this.persistLocalStorage(),this.saveSnapshot("after-remove"),console.log(`🗑️ Satır silindi: ${r[0]?.model||"(model yok)"}`)},removeSelectedRow(e,r=null){if(e)return this.isRowLocked(e)?(r?.notify?.({type:"warning",message:"🔒 Bu satır (IsClosed=1) kapatılmış. Silinemez."}),!1):new Promise(t=>{r?.dialog({title:"Satır Sil",message:`${e.model} / ${e.renk} / ${e.renk2} kombinasyonu silinsin mi?`,ok:{label:"Evet",color:"negative"},cancel:{label:"Vazgeç"}}).onOk(()=>{this.removeRowInternal(e),t(!0)}).onCancel(()=>t(!1))})},removeRowInternal(e){if(!e)return!1;if(this.isRowLocked(e))return console.warn("🔒 Kilitli satır silinemez."),!1;const r="function"===typeof this.getRowKey?this.getRowKey:e=>e?.clientKey||e?.id||e?.OrderLineID,t=r(e);if(!t)return!1;const o=this.summaryRows.findIndex(e=>r(e)===t);if(-1===o)return!1;console.log("🗑️ X2 removeRowInternal →",e),this._uiBusy=!0,this.preventPersist=!0;try{if(this.summaryRows.splice(o,1),this.orders=[...this.summaryRows],"edit"===this.mode){const r=e.grpKey||Object.keys(e.bedenMap||{})[0]||"tak",t=e.lineIdMap&&"object"===typeof e.lineIdMap?{...e.lineIdMap}:{},o={};if(e.bedenMap&&e.bedenMap[r])for(const t of Object.keys(e.bedenMap[r]||{}))o[t]=0;else if(Object.keys(t).length)for(const e of Object.keys(t))o[e]=0;else o["STD"]=0;const a={...e,id:`DEL::${e.id||e.OrderLineID||crypto.randomUUID()}`,adet:0,Qty1:0,tutar:0,ComboKey:"",OrderLineID:e.OrderLineID||null,grpKey:r,bedenMap:{[r]:o},lineIdMap:t,comboLineIds:{...e.comboLineIds||{}},_deleteSignal:!0};console.log("📡 DELETE sinyali üretildi:",a),this.orders.push(a)}this.updateHeaderTotals?.()}finally{this.preventPersist=!1,this._uiBusy=!1}return this.persistLocalStorage(),!0},normalizeOrderLines(e,r="USD"){if(!Array.isArray(e))return[];const t=Object.create(null);for(const o of e){if(!o)continue;const e=!0===o.IsClosed||!0===o.isClosed||!0===o.IsClosed?.Bool;if(o.bedenMap&&Object.keys(o.bedenMap).length){const a=(o.model||o.ItemCode||"").trim(),s=(o.renk||o.ColorCode||"").trim(),i=(o.renk2||o.ItemDim2Code||"").trim(),n=`${a}||${s}||${i}`,d=o.grpKey||"tak",l=o.bedenMap[d]||{},c=Object.values(l).reduce((e,r)=>e+(Number(r)||0),0),u=Number(o.fiyat||0),m=o.pb||o.DocCurrencyCode||r,h=Number(o.tutar??c*u);t[n]??=[],t[n].push({...o,grpKey:d,bedenMap:{[d]:{...l}},adet:c,fiyat:u,pb:m,tutar:h,isClosed:e});continue}const a=(o.Model||o.ItemCode||"").trim(),s=(o.ColorCode||"").trim(),i=(o.ItemDim2Code||"").trim(),n=`${a}||${s}||${i}`;t[n]??=[];const d=null==o.ItemDim1Code||""===String(o.ItemDim1Code).trim()?" ":String(o.ItemDim1Code).trim().toUpperCase(),l=Number(o.Qty1||o.Qty||0);let c=t[n][0];c||(c={id:o.OrderLineID||crypto.randomUUID(),model:a,renk:s,renk2:i,urunAnaGrubu:o.UrunAnaGrubu||"GENEL",urunAltGrubu:o.UrunAltGrubu||"",kategori:o.Kategori||"",aciklama:o.LineDescription||"",fiyat:Number(o.Price||0),pb:o.DocCurrencyCode||r,__tmpMap:{},lineIdMap:{},adet:0,tutar:0,terminTarihi:o.DeliveryDate||null,isClosed:e},t[n].push(c));const u=o.OrderLineID||o.OrderLineId||o.orderLineID||null;u&&(c.lineIdMap[d]=String(u)),l>0&&(c.__tmpMap[d]=(c.__tmpMap[d]||0)+l,c.adet+=l,c.tutar+=l*c.fiyat)}const o=[];for(const e of Object.values(t))for(const r of e){if(!r.__tmpMap){o.push(r);continue}const e=Object.keys(r.__tmpMap),t=C(e,r.urunAnaGrubu,r.kategori);r.grpKey=t,r.bedenMap={[t]:{...r.__tmpMap}},"aksbir"===t&&(r.bedenMap[t]??={},r.bedenMap[t][" "]=Number(r.adet||0)),delete r.__tmpMap,o.push(r)}return console.log(`📦 normalizeOrderLines (v9 + lineIdMap) → ${o.length} satır`),o},async loadProductSizes(e,r=!1,t=null){if(!e?.model)return;const o=this,s=!!o._uiBusy,i=!!o.preventPersist;o._uiBusy=!0,o.preventPersist=!0;try{const t=e.grpKey;if(!t)return void console.warn("⛔ loadProductSizes iptal → grpKey yok");const o=e.renk||"nocolor",s=e.renk2||"no2color",i=`${e.model}_${o}_${s}_${t}`;if(!r&&g.value?.[i]){const e=g.value[i];return p.value=[...e.stockArray],y.value={...e.stockMap},void console.log(`♻️ loadProductSizes CACHE → ${t}`)}const n={code:e.model};e.renk&&(n.color=e.renk),e.renk2&&(n.color2=e.renk2);const d=await a.Ay.get("/product-colorsize",{params:n}),l=Array.isArray(d?.data)?d.data:[];if(!l.length)return p.value=[],void(y.value={});const c={};for(const e of l){const r=null===e.item_dim1_code||""===e.item_dim1_code?" ":String(e.item_dim1_code);c[r]=Number(e.kullanilabilir_envanter??0)}const u={};for(const r of e.bedenLabels)u[r]=c[r]??0;y.value={...u},p.value=Object.entries(y.value).map(([e,r])=>({beden:e,stok:r})),g.value[i]={labels:[...e.bedenLabels],stockArray:[...p.value],stockMap:{...y.value}},console.log(`✅ loadProductSizes FINAL v4.2 → ${t}`)}catch(e){console.error("❌ loadProductSizes hata:",e),t?.notify?.({type:"negative",message:"Beden / stok alınamadı"})}finally{o._uiBusy=s,o.preventPersist=i,console.log("🧩 Editor beden hydrate",{grpKey:e.grpKey,labels:e.bedenLabels,values:e.bedenler})}},updateTotals(e){e.adet=(e.bedenler||[]).reduce((e,r)=>e+Number(r||0),0);const r=Number(e.fiyat)||0;if(e.tutar=Number((e.adet*r).toFixed(2)),this.header){const e=(this.summaryRows||[]).reduce((e,r)=>e+Number(r?.tutar||0),0);this.header.TotalAmount=Number(e.toFixed(2))}return e},activeGroupKeyForRow(e){const r=(e?.urunAnaGrubu||"").toUpperCase();return r.includes("TAKIM")?"tak":r.includes("PANTOLON")?"pan":r.includes("GÖMLEK")?"gom":r.includes("AYAKKABI")?"ayk":r.includes("YAŞ")?"yas":"tak"},setMode(e){["new","edit","view"].includes(e)?(this.mode=e,console.log(`🧭 Order mode set edildi → ${e}`)):console.warn("⚠️ Geçersiz mode:",e)},async submitAllReal(e,r,t,o,s){let i=null,n=null;try{this.loading=!0,this.isControlledSubmit=!0;const d="new"===this.mode,{header:l,lines:c}=this.buildFinalOrderJson();console.groupCollapsed(`%c📤 ORDER PAYLOAD (${this.mode})`,"color:#c9a873;font-weight:bold"),console.log("HEADER:",JSON.parse(JSON.stringify(l))),c.forEach((e,r)=>{console.log(`LINE[${r}]`,{OrderLineID:e.OrderLineID,ClientKey:e.ClientKey,ItemCode:e.ItemCode,ColorCode:e.ColorCode,ItemDim1Code:e.ItemDim1Code,ItemDim2Code:e.ItemDim2Code,ItemDim3Code:e.ItemDim3Code,Qty1:e.Qty1,ComboKey:e.ComboKey})}),console.groupEnd(),this.debugOrderPayload?.(l,c,"PRE-VALIDATE");const u=e=>Number((Number(e)||0).toFixed(2)),m=e=>Number((Number(e)||0).toFixed(4));for(const e of c){const r=Number(e?.Qty1||0),t=Number(e?.Price||0),o=Number(e?.VatRate||0),a=Number(e?.PriceExchangeRate||l?.ExchangeRate||1)||1,s=u(t*r),i=u(s*o/100),n=u(s+i),d=m(r>0?n/r:t*(1+o/100)),c=String(e?.DocCurrencyCode||l?.DocCurrencyCode||"TRY").trim()||"TRY";e.RelationCurrencyCode=c,e.DocPrice=d,e.DocAmount=n,e.LocalPrice=t,e.LocalAmount=s,e.LineDiscount=Number(e?.LineDiscount||0),e.TotalDiscount=Number(e?.TotalDiscount||0),e.TaxBase=s,e.Pct=Number(e?.Pct||0),e.VatAmount=i,e.VatDeducation=0,e.NetAmount=n,e.CurrencyCode=c,e.ExchangeRate=a,e.PriceVI=d,e.AmountVI=n,e.Amount=s,e.LDiscount1=Number(e?.LDiscount1||0),e.TDiscount1=Number(e?.TDiscount1||0),e.Vat=i}const h=await a.Ay.post("/order/validate",{header:l,lines:c}),y=h?.data?.invalid||[];if(y.length>0)return void await(this.showInvalidVariantDialog?.(e,y));console.log("📤 submitAllReal payload",{mode:this.mode,lines:c.length,deletes:c.filter(e=>e._deleteSignal).length});const p=await a.Ay.post(d?"/order/create":"/order/update",{header:l,lines:c}),g=p?.data||{};if(i=g.orderID||g.orderHeaderID||g.id||l?.OrderHeaderID,n=g.orderNumber||g.orderNo||l?.OrderNumber,!i)throw new Error("OrderHeaderID backend’den dönmedi");this.setMode("edit"),this.header={...this.header,OrderHeaderID:i,OrderNumber:n},this.updateHeaderTotals?.(),this.markAsSaved?.(),this.clearAllOrderSnapshots(),e.notify({type:"positive",message:`Sipariş kaydedildi: ${n||""}`.trim()}),this.allowRouteLeaveOnce=!0,await r.replace({name:"order-entry",params:{orderHeaderID:i},query:{mode:"edit",source:"backend"}}),await this.openExistingForEdit(i,{$q:e,form:t,summaryRowsRef:o,productCache:s});const b=await new Promise(r=>{e.dialog({title:"Sipariş Kaydedildi",options:{type:"radio",model:"continue",items:[{label:"✏️ Düzenlemeye Devam",value:"continue"},{label:"🖨 Yazdır",value:"print"},{label:"📋 Listeye Dön",value:"list"}]},ok:{label:"Seç"},cancel:{label:"Kapat"}}).onOk(e=>r(e)).onCancel(()=>r("continue"))});if("print"===b){const e=this.header?.OrderHeaderID||i;return void(e&&await this.downloadOrderPdf(e))}if("list"===b)return this.allowRouteLeaveOnce=!0,void await r.push({name:"order-list"})}catch(r){console.error("❌ submitAllReal:",r),e.notify({type:"negative",message:r?.response?.data?.message||r?.message||"Kayıt sırasında hata"})}finally{this.isControlledSubmit=!1,this.loading=!1}},async submitAllTest(e=null){try{const{header:r,lines:t}=this.buildFinalOrderJson();console.log("🧾 TEST HEADER",Object.keys(r).length,"alan"),console.log(JSON.stringify(r,null,2)),console.log("🧾 TEST LINES",t.length,"satır"),console.log(JSON.stringify(t,null,2)),e?.notify?.({type:"info",message:`Header (${Object.keys(r).length}) + Lines (${t.length}) gösterildi`,position:"top"})}catch(r){console.error("❌ submitAllTest hata:",r),e?.notify?.({type:"negative",message:"Gösterimde hata oluştu ❌",position:"top"})}},afterSubmit(e={keepLocalStorage:!0,backendPayload:null,resetMode:!0}){try{console.log("🧹 afterSubmit başlatıldı",e),e?.backendPayload?.header?.OrderHeaderID&&this.mergeAndPersistBackendOrder(e.backendPayload.header.OrderHeaderID,e.backendPayload),e?.keepLocalStorage?this.saveSnapshot():(this.clearStorage(),this.clearTransaction()),this.orders=[],this.header={},this.editingKey=null,this.currentOrderId=null,!0===e.resetMode&&(this.mode="new"),console.log("✅ afterSubmit tamamlandı.")}catch(e){console.error("❌ afterSubmit hata:",e)}},buildFinalOrderJson(){const e=(0,n.n)(),r=e?.user||{},t=(0,s["default"])(),o=e=>Number(e)||0,a=e=>null==e?"":String(e).trim(),i=e=>e?(0,s["default"])(e).format("YYYY-MM-DD"):null,d=e=>(0,s["default"])(e).format("HH:mm:ss"),l=e=>e?(0,s["default"])(e).format("YYYY-MM-DD HH:mm:ss"):null,c=e=>{const r=a(e);return""===r||"_"===r||"-"===r?"":r},m=a(r?.v3usergroup),h=a(r?.v3_username),y=m&&h?`${m} ${h}`:h||"BSS",p="%0",g="%0",b=this.header?.OrderHeaderID||crypto.randomUUID(),D=a(this.header?.DocCurrencyCode)||"TRY",C=o(this.header?.ExchangeRate)||1,I=this.header?.AverageDueDate||(0,s["default"])(this.header?.OrderDate||t).add(14,"day"),S={...this.header,OrderHeaderID:b,OrderDate:i(this.header?.OrderDate||t),OrderTime:d(t),AverageDueDate:i(I),DocCurrencyCode:D,LocalCurrencyCode:a(this.header?.LocalCurrencyCode)||"TRY",ExchangeRate:C,CreatedUserName:"edit"===this.mode&&this.header?.CreatedUserName||y,CreatedDate:"edit"===this.mode?l(this.header?.CreatedDate||t):l(t),LastUpdatedUserName:y,LastUpdatedDate:l(t)},O=[],w=new Map,k=(e,r)=>{const{grpKey:s,bedenKey:n,bedenPayload:d,qty:c,orderLineId:m,isDeleteSignal:h}=r;if(c<=0&&!h)return;const D=u(e,n),C=()=>({OrderLineID:m||"",ClientKey:f(e,s,n),ComboKey:D,SortOrder:0,ItemTypeCode:1,ItemCode:a(e.model),ColorCode:a(e.renk),ItemDim1Code:d,ItemDim2Code:a(e.renk2),ItemDim3Code:"",Qty1:h?0:c,Qty2:0,CancelQty1:0,CancelQty2:0,DeliveryDate:e.terminTarihi?l(e.terminTarihi):null,PlannedDateOfLading:e.terminTarihi?i(e.terminTarihi):null,LineDescription:a(e.aciklama),UsedBarcode:"",CostCenterCode:"",VatCode:g,VatRate:o(e.vatRate??e.VatRate??0),PCTCode:p,PCTRate:0,LDisRate1:0,LDisRate2:0,LDisRate3:0,LDisRate4:0,LDisRate5:0,DocCurrencyCode:S.DocCurrencyCode,PriceCurrencyCode:S.DocCurrencyCode,PriceExchangeRate:o(S.ExchangeRate),Price:o(e.fiyat),BaseProcessCode:"WS",BaseOrderNumber:S.OrderNumber,BaseCustomerTypeCode:0,BaseCustomerCode:S.CurrAccCode,BaseSubCurrAccID:null,BaseStoreCode:"",OrderHeaderID:b,CreatedUserName:y,CreatedDate:l(e.CreatedDate||t),LastUpdatedUserName:y,LastUpdatedDate:l(t),SurplusOrderQtyToleranceRate:0,WithHoldingTaxTypeCode:"",DOVCode:""}),I=w.get(D);if(!I){const e=C();return w.set(D,e),void O.push(e)}if(h)return m&&!I.OrderLineID&&(I.OrderLineID=m),void(I.Qty1=0);I.Qty1+=c,"edit"===this.mode&&m&&!I.OrderLineID&&(I.OrderLineID=m),I.Price=o(e.fiyat)};for(const e of this.orders||[]){if(!0===e?.isClosed)continue;const r=e.grpKey||Object.keys(e.bedenMap||{})[0]||"GENEL",t=e.lineIdMap||{},s=e.bedenMap?.[r],i=e.bedenMap&&"object"===typeof e.bedenMap&&!s?e.bedenMap:null,n=s||i,d=n&&"object"===typeof n&&Object.keys(n).length>0;if(!d){const s=o(e.qty??e.Qty1??e.miktar??0),i="_",n="";let d="";"edit"===this.mode&&(d=a(t?.[i])||a(t?.[n])||a(e.OrderLineID)),k(e,{grpKey:r,bedenKey:i,bedenPayload:n,qty:s,orderLineId:d,isDeleteSignal:!0===e._deleteSignal&&!!d});continue}for(const[s,i]of Object.entries(n)){const d=o(i),l=c(s),u=l||"_";let m="";"edit"===this.mode&&(m=a(t?.[u])||a(t?.[l])||(1===Object.keys(n).length?a(e.OrderLineID):"")),k(e,{grpKey:r,bedenKey:u,bedenPayload:l,qty:d,orderLineId:m,isDeleteSignal:!0===e._deleteSignal&&!!m})}}if(O.forEach((e,r)=>{e.SortOrder=r+1}),O.some(e=>"_"===(e.ItemDim1Code||"")))throw console.error('❌ Payload’da "_" yakalandı',O.filter(e=>"_"===e.ItemDim1Code)),new Error('Payload ItemDim1Code "_" olamaz');return console.groupCollapsed("%c📦 BUILD FINAL ORDER JSON","color:#c9a873;font-weight:bold"),console.log("🧾 HEADER:",S),console.table(O.map((e,r)=>({i:r+1,OrderLineID:e.OrderLineID,ClientKey:e.ClientKey,ComboKey:e.ComboKey,ItemCode:e.ItemCode,ColorCode:e.ColorCode,ItemDim1Code:JSON.stringify(e.ItemDim1Code),ItemDim2Code:e.ItemDim2Code,Qty1:e.Qty1,Price:e.Price}))),console.groupEnd(),{header:S,lines:O}},setRowErrorByClientKey(e,r){if(!e)return;if(!Array.isArray(this.summaryRows))return;const t=this.summaryRows.find(r=>r?.clientKey===e);t&&(t._error={code:r?.code,message:r?.message})},clearRowErrorByClientKey(e){if(!e)return;if(!Array.isArray(this.summaryRows))return;const r=this.summaryRows.find(r=>r?.clientKey===e);r&&r._error&&delete r._error},applyTerminToRowsIfEmpty(e){if(e&&Array.isArray(this.summaryRows)){for(const r of this.summaryRows)r?.terminTarihi&&""!==r.terminTarihi||(r.terminTarihi=e);this.persistLocalStorage?.()}}}});function C(e,r="",t=""){const o=Array.isArray(e)&&e.length>0?e.map(e=>(e||"").toString().trim().toUpperCase()):[" "],a=(r||"").toUpperCase().trim().replace(/\(.*?\)/g,"").replace(/[^A-ZÇĞİÖŞÜ0-9\s]/g,"").replace(/\s+/g," "),s=(t||"").toUpperCase().trim(),i=["AKSESUAR","KRAVAT","PAPYON","KEMER","CORAP","ÇORAP","FULAR","MENDIL","MENDİL","KASKOL","ASKI","YAKA","KOL DUGMESI","KOL DÜĞMESİ"],n=["GÖMLEK","CEKET","PANTOLON","MONT","YELEK","TAKIM","TSHIRT","TİŞÖRT"];if(i.some(e=>a.includes(e)||s.includes(e))&&!n.some(e=>a.includes(e)))return"aksbir";if(a.includes("PANTOLON")&&s.includes("YETİŞKİN"))return"pan";const d=o.every(e=>/^\d+$/.test(e));if(d){const e=o.map(e=>parseInt(e,10)).filter(Boolean),r=e.slice(1).map((r,t)=>r-e[t]);if(r.every(e=>1===e)&&e[0]>=35&&e[0]<=46)return"ayk"}if(s.includes("GARSON")||s.includes("ÇOCUK"))return"yas";const l=["XS","S","M","L","XL","XXL","3XL","4XL"];return o.some(e=>l.includes(e))?"gom":"tak"}function I(e){if(!e)return null;const r=e.grpKey||"tak",t={},o=Array.isArray(e.bedenLabels)?e.bedenLabels:[],a=Array.isArray(e.bedenler)?e.bedenler:[];for(let e=0;e0&&(t[s]=i)}return{id:e.id||b(),OrderLineID:e.OrderLineID||null,model:e.model||"",renk:e.renk||"",renk2:e.renk2||"",urunAnaGrubu:e.urunAnaGrubu||"",urunAltGrubu:e.urunAltGrubu||"",aciklama:e.aciklama||"",fiyat:Number(e.fiyat||0),pb:e.pb||"USD",adet:Number(e.adet||0),tutar:Number(e.tutar||0),grpKey:r,bedenMap:{[r]:{...t}},terminTarihi:(e.terminTarihi||"").substring(0,10)}}}}]);