Files
roa2web-service-auto/deploy-package-20260223-151231/frontend/assets/ReceiptCreateView.RpTqvOIL.js
Claude Agent 8bc567a9c5 fix telegram
2026-02-23 15:12:33 +00:00

3 lines
53 KiB
JavaScript

import{a as _,j as D,o as Ye,w as Ie,c as n,d as s,e as t,i as c,h as P,q as y,k as se,v as p,E as ze,u as ee,p as _e,O as q,y as R,F as H,B as le,M as Fa,P as Sa,t as Va,l as Da}from"./vendor-core.B6UiYhU_.js";import{_ as Ee,d as Ae,u as Ia,j as Aa,a as Ea,k as La}from"./index.B8XI8FQW.js";import{u as Pa,a as Ua}from"./sharedStores.D4bwf0TZ.js";import{u as Ma,a as Ke}from"./ocrSettingsStore.B3n_bOhs.js";import{I as Na,s as Oe,d as Qe}from"./vendor-primevue.BN-meDW0.js";import{O as Re}from"./OCRConfidenceIndicator.BILrhVia.js";import"./vendor-utils.CO3CyGpV.js";import"./vendor-export.BWjBvx7Z.js";const Ba={class:"ocr-upload-zone"},ja={key:0,class:"processing-state"},Wa={class:"processing-text"},qa={class:"processing-subtext"},Ga={key:1,class:"file-selected-state"},Za={class:"file-name"},Ja={class:"file-size"},Xa={key:2,class:"empty-state"},Ha={class:"main-text"},Ka={key:0},Qa={key:1},Ya={key:0,class:"action-buttons"},et={class:"engine-option"},at={class:"engine-label"},tt={class:"engine-desc"},lt={__name:"OCRUploadZone",emits:["ocr-result","file-selected","error"],setup(d,{expose:z,emit:K}){const o=K,h=_(null),F=_(null),I=_(!1),k=_(!1),g=_(null),Q=Ma(),u=_("auto"),de={auto:{label:"Auto",desc:"docTR→Paddle→Tess · General"},doctr:{label:"docTR",desc:"Rapid, bună acuratețe"},doctr_plus:{label:"docTR Plus",desc:"2 treceri secvențiale · (recomandat)"},paddleocr:{label:"PaddleOCR",desc:"Cea mai bună calitate"},tesseract:{label:"Tesseract",desc:"Cel mai rapid, calitate redusă"},hybrid:{label:"Hybrid",desc:"docTR+Tess paralel"},"hybrid-quality":{label:"Hybrid Calitate",desc:"Paddle→docTR→Tess · Acuratețe max"}},l=D(()=>Q.availableEngines.map(b=>{var w,$;return{label:((w=de[b])==null?void 0:w.label)||b,desc:(($=de[b])==null?void 0:$.desc)||"",value:b}}));Ye(async()=>{await Q.loadPreference(),u.value=Q.preferredEngine,console.log("[OCRUploadZone] Loaded user preference:",u.value)}),Ie(u,async(b,w)=>{if(w&&b!==w&&Q.initialized)try{await Q.setPreference(b),console.log("[OCRUploadZone] Saved user preference:",b)}catch($){console.error("[OCRUploadZone] Failed to save preference:",$)}});const T=_(null),S=_(null),r=_(null),v=_(null),V=D(()=>v.value==="pending"&&S.value>0?`In coada... Pozitia ${S.value}`:v.value==="processing"?"Se proceseaza imaginea...":"Se trimite..."),A=D(()=>v.value==="pending"&&r.value>0?`Timp estimat: ~${r.value} secunde`:v.value==="processing"?"Extragere date cu OCR":"Asteptati..."),W=()=>{I.value=!0},we=()=>{I.value=!1},ce=b=>{var $;I.value=!1;const w=($=b.dataTransfer)==null?void 0:$.files;(w==null?void 0:w.length)>0&&pe(w[0])},me=()=>{var b;(b=h.value)==null||b.click()},$e=b=>{var $;const w=($=b.target)==null?void 0:$.files;(w==null?void 0:w.length)>0&&pe(w[0])},pe=async b=>{if(!["image/jpeg","image/png","application/pdf"].includes(b.type)){g.value="Tip de fisier invalid. Sunt acceptate doar: JPG, PNG, PDF";return}if(b.size>10*1024*1024){g.value="Fisierul este prea mare. Dimensiunea maxima este 10MB.";return}g.value=null;try{const $=await b.arrayBuffer(),G=new File([$],b.name,{type:b.type,lastModified:b.lastModified});F.value=G,o("file-selected",G)}catch($){console.warn("File clone failed, using original:",$),F.value=b,o("file-selected",b)}},B=async()=>{var b,w,$,G,U,E;if(F.value){k.value=!0,g.value=null,T.value=null,S.value=null,r.value=null,v.value="submitting";try{const Z=new FormData;Z.append("file",F.value),console.log("🔍 OCR Submit:",{fileName:(b=F.value)==null?void 0:b.name,fileSize:(w=F.value)==null?void 0:w.size,fileType:($=F.value)==null?void 0:$.type,engine:u.value});const J=(await Ke.post(`/ocr/extract?engine=${u.value}`,Z,{timeout:3e4})).data;T.value=J.job_id,S.value=J.queue_position,r.value=J.estimated_wait_seconds,v.value=J.status,console.log("📋 OCR Job Created:",J),await ie(J.job_id)}catch(Z){console.error("🔴 OCR Error:",{message:Z.message,code:Z.code,response:(G=Z.response)==null?void 0:G.data});const ne=((E=(U=Z.response)==null?void 0:U.data)==null?void 0:E.detail)||Z.message||"Eroare la procesarea OCR";g.value=ne,o("error",ne),k.value=!1}}},ie=async b=>{const U=Date.now(),E=async()=>{var J;if((Date.now()-U)/1e3>=120){k.value=!1,g.value="Timeout - procesarea a durat prea mult",o("error",g.value);return}const ne=Date.now();try{const M=(await Ke.get(`/ocr/jobs/${b}/wait`,{params:{timeout:30,_t:Date.now()},timeout:35e3,headers:{"Cache-Control":"no-cache"}})).data;v.value=M.status,S.value=M.queue_position,r.value=M.estimated_wait_seconds;const oe=Date.now()-ne;if(console.log("📊 OCR Long-Poll:",{status:M.status,position:M.queue_position,pollDurationMs:oe}),M.status==="completed"){k.value=!1,M.result?(console.log("✅ OCR Complete:",M.result),o("ocr-result",{...M.result,_processing_time_ms:M.processing_time_ms})):(g.value="OCR completed but no result returned",o("error",g.value));return}if(M.status==="failed"){k.value=!1,g.value=M.error||"OCR processing failed",o("error",g.value);return}if(k.value){const Ce=Date.now()-ne;if(Ce<500){const xe=500-Ce;console.log(`⏳ Waiting ${xe}ms before next poll (preventing rapid polling)`),await new Promise(Fe=>setTimeout(Fe,xe))}await E()}}catch(fe){if(fe.code==="ECONNABORTED"||(J=fe.message)!=null&&J.includes("timeout")){console.log("⏱️ Long-poll timeout, retrying..."),k.value&&await E();return}if(console.error("🔴 Poll Error:",fe.message),(Date.now()-U)/1e3<120&&k.value){console.log("🔄 Retrying after error..."),await new Promise(oe=>setTimeout(oe,500)),await E();return}k.value=!1,g.value="Eroare la verificarea starii job-ului",o("error",g.value)}};await E()},ve=b=>b<1024?b+" B":b<1024*1024?(b/1024).toFixed(1)+" KB":(b/(1024*1024)).toFixed(1)+" MB";return z({reset:()=>{F.value=null,g.value=null,T.value=null,S.value=null,r.value=null,v.value=null,k.value=!1,h.value&&(h.value.value="")},processOCR:B}),(b,w)=>{const $=se("ProgressSpinner"),G=se("Button"),U=se("Message");return s(),n("div",Ba,[t("div",{class:ee(["upload-dropzone",{dragging:I.value,processing:k.value}]),onDragover:ze(W,["prevent"]),onDragleave:ze(we,["prevent"]),onDrop:ze(ce,["prevent"]),onClick:me},[t("input",{ref_key:"fileInput",ref:h,type:"file",accept:"image/*,application/pdf",class:"hidden-input",onChange:$e},null,544),k.value?(s(),n("div",ja,[y($,{style:{width:"50px",height:"50px"},strokeWidth:"4"}),t("p",Wa,p(V.value),1),t("p",qa,p(A.value),1)])):F.value?(s(),n("div",Ga,[w[2]||(w[2]=t("i",{class:"pi pi-check-circle",style:{"font-size":"1.75rem",color:"var(--green-500)"}},null,-1)),t("p",Za,p(F.value.name),1),t("p",Ja,p(ve(F.value.size)),1)])):(s(),n("div",Xa,[w[3]||(w[3]=t("i",{class:"pi pi-camera",style:{"font-size":"2rem",color:"var(--primary-500)"}},null,-1)),t("p",Ha,[I.value?(s(),n("span",Ka,"Elibereaza pentru a incarca")):(s(),n("span",Qa,"Trage poza bonului aici sau click pentru a selecta"))]),w[4]||(w[4]=t("p",{class:"sub-text"}," JPG, PNG, PDF (max 10MB) • OCR extrage automat datele ",-1))]))],34),F.value&&!k.value?(s(),n("div",Ya,[y(G,{label:"Schimba",icon:"pi pi-refresh",severity:"secondary",size:"small",onClick:me}),y(q(Na),{modelValue:u.value,"onUpdate:modelValue":w[0]||(w[0]=E=>u.value=E),options:l.value,optionLabel:"label",optionValue:"value",placeholder:"Motor OCR",class:"engine-selector dropdown-borderless"},{option:_e(({option:E})=>[t("div",et,[t("span",at,p(E.label),1),t("span",tt,p(E.desc),1)])]),_:1},8,["modelValue","options"]),y(G,{label:"Proceseaza OCR",icon:"pi pi-cog",size:"small",onClick:B})])):c("",!0),g.value?(s(),P(U,{key:1,severity:"error",closable:!0,onClose:w[1]||(w[1]=E=>g.value=null)},{default:_e(()=>[R(p(g.value),1)]),_:1})):c("",!0)])}}},st=Ee(lt,[["__scopeId","data-v-50521626"]]),it={class:"ocr-preview"},nt={class:"preview-header"},ot={class:"header-right"},rt={class:"overall-confidence"},ut={class:"preview-content"},dt={key:0,class:"ocr-section"},ct={class:"ocr-section-content"},mt={key:0,class:"vendor-name"},pt={key:1,class:"vendor-cui"},vt={key:2,class:"vendor-address"},ft={class:"ocr-section"},yt={class:"ocr-section-content"},gt={key:0,class:"client-name"},_t={key:1,class:"client-cui"},bt={key:2,class:"client-address"},ht={key:1,class:"no-data"},wt={key:1,class:"ocr-section"},Ct={class:"ocr-section-content"},kt={class:"document-row"},Rt={key:1,class:"doc-number"},$t={key:2,class:"doc-date"},xt={key:2,class:"ocr-section"},Tt={class:"ocr-values-table"},Ot={key:0,class:"value-row"},zt={class:"value-amount"},Ft={key:1,class:"value-row warning-row"},St={class:"value-amount calculated"},Vt={key:2,class:"validation-warning"},Dt={key:3,class:"validation-info"},It={class:"value-label"},At={class:"value-amount"},Et={class:"value-label"},Lt={class:"value-amount"},Pt={key:4,class:"value-row total-row"},Ut={class:"value-amount"},Mt={key:5,class:"items-count-inline"},Nt={key:3,class:"raw-text-section"},Bt={class:"raw-text-header"},jt={key:2,class:"ocr-time-badge"},Wt={key:0,class:"raw-text"},qt={class:"preview-actions"},Gt={__name:"OCRPreview",props:{data:{type:Object,required:!0}},emits:["apply","dismiss","collapse"],setup(d){const z=d,K=_(!1),o=D(()=>{var r;return z.data.tva_total?parseFloat(z.data.tva_total):(r=z.data.tva_entries)!=null&&r.length?z.data.tva_entries.reduce((v,V)=>v+parseFloat(V.amount||0),0):0}),h=D(()=>{var r;return(r=z.data.payment_methods)!=null&&r.length?z.data.payment_methods.reduce((v,V)=>v+parseFloat(V.amount||0),0):0}),F=D(()=>{var A;if(!((A=z.data.tva_entries)!=null&&A.length))return 0;const r=z.data.tva_entries[0],v=r.percent||19,V=parseFloat(r.amount||0);return V===0||v===0?0:V*(100+v)/v}),I=D(()=>{if(!z.data.amount||h.value===0)return!1;const r=parseFloat(z.data.amount);return Math.abs(r-h.value)>.02}),k=D(()=>{if(!z.data.amount||F.value===0)return!1;const r=parseFloat(z.data.amount);return Math.abs(r-F.value)>.5}),g=r=>parseFloat(r).toLocaleString("ro-RO",{minimumFractionDigits:2,maximumFractionDigits:2}),Q=r=>r?new Date(r).toLocaleDateString("ro-RO",{day:"2-digit",month:"2-digit",year:"numeric"}):"",u=r=>r?r==="doctr-light"?"doctr-fast":r==="doctr-medium"?"doctr":r==="doctr-adaptive"?"doctr-adaptive":r.includes("doctr")?"doctr":r==="paddle-light"?"fast":r==="paddle-adaptive"?"adaptive":r==="adaptive-full"?"full":r.includes("paddle")?"paddleocr":r.includes("tesseract")?"tesseract":"":"",de=r=>r&&(r==="doctr-light"||r.includes("doctr")||r==="paddle-light")?"pi pi-bolt":"pi pi-cog",l=r=>r?r==="doctr-light"?"docTR Fast":r==="doctr-medium"?"docTR Medium":r==="doctr-adaptive"?"docTR Adaptive":r.includes("doctr")?"docTR":r==="paddle-light"?"Fast Mode (PaddleOCR)":r==="paddle-adaptive"?"Adaptive (Paddle dual)":r==="adaptive-full"?"Full Pipeline":r.includes("paddle")?"PaddleOCR":r.includes("tesseract")?"Tesseract":r:"",T=r=>r?r.includes("fast mode")?"fast-mode":r.includes("full pipeline")?"full-pipeline":"":"",S=r=>r<1e3?`${r}ms`:`${(r/1e3).toFixed(1)}s`;return(r,v)=>{var V;return s(),n("div",it,[t("div",nt,[v[4]||(v[4]=t("div",{class:"header-left"},[t("i",{class:"pi pi-check-circle",style:{color:"var(--green-500)","font-size":"1.25rem"}}),t("span",{class:"title"},"Date extrase din imagine")],-1)),t("div",ot,[t("span",rt,[y(Re,{confidence:d.data.overall_confidence,"show-percentage":!0,size:"normal"},null,8,["confidence"])]),y(q(Oe),{icon:"pi pi-minus",text:"",rounded:"",size:"small",onClick:v[0]||(v[0]=A=>r.$emit("collapse")),class:"collapse-btn"})])]),t("div",ut,[d.data.partner_name||d.data.cui||d.data.address?(s(),n("div",dt,[v[5]||(v[5]=t("div",{class:"ocr-section-title"},"FURNIZOR",-1)),t("div",ct,[d.data.partner_name?(s(),n("div",mt,[R(p(d.data.partner_name)+" ",1),y(Re,{confidence:d.data.confidence_vendor,size:"small"},null,8,["confidence"])])):c("",!0),d.data.cui?(s(),n("div",pt,"CUI: "+p(d.data.cui),1)):c("",!0),d.data.address?(s(),n("div",vt,p(d.data.address),1)):c("",!0)])])):c("",!0),t("div",ft,[v[6]||(v[6]=t("div",{class:"ocr-section-title"},"CLIENT",-1)),t("div",yt,[d.data.client_name||d.data.client_cui||d.data.client_address?(s(),n(H,{key:0},[d.data.client_name?(s(),n("div",gt,[R(p(d.data.client_name)+" ",1),d.data.confidence_client?(s(),P(Re,{key:0,confidence:d.data.confidence_client,size:"small"},null,8,["confidence"])):c("",!0)])):c("",!0),d.data.client_cui?(s(),n("div",_t,"CUI: "+p(d.data.client_cui),1)):c("",!0),d.data.client_address?(s(),n("div",bt,p(d.data.client_address),1)):c("",!0)],64)):(s(),n("div",ht,"-"))])]),d.data.receipt_type||d.data.receipt_number||d.data.receipt_date?(s(),n("div",wt,[v[8]||(v[8]=t("div",{class:"ocr-section-title"},"DOCUMENT",-1)),t("div",Ct,[t("div",kt,[d.data.receipt_type?(s(),P(q(Ae),{key:0,value:d.data.receipt_type==="bon_fiscal"?"Bon Fiscal":"Chitanta",severity:d.data.receipt_type==="bon_fiscal"?"info":"success"},null,8,["value","severity"])):c("",!0),d.data.receipt_number?(s(),n("span",Rt," Nr: "+p(d.data.receipt_series?d.data.receipt_series+" ":"")+p(d.data.receipt_number),1)):c("",!0),d.data.receipt_date?(s(),n("span",$t,[v[7]||(v[7]=t("i",{class:"pi pi-calendar"},null,-1)),R(" "+p(Q(d.data.receipt_date))+" ",1),y(Re,{confidence:d.data.confidence_date,size:"small"},null,8,["confidence"])])):c("",!0)])])])):c("",!0),d.data.amount||((V=d.data.tva_entries)==null?void 0:V.length)>0||h.value>0?(s(),n("div",xt,[t("div",Tt,[d.data.amount?(s(),n("div",Ot,[v[9]||(v[9]=t("span",{class:"value-label"},"TOTAL",-1)),t("span",zt,[R(p(g(d.data.amount))+" LEI ",1),y(Re,{confidence:d.data.confidence_amount,size:"small",class:"confidence-inline"},null,8,["confidence"])])])):h.value>0?(s(),n("div",Ft,[v[11]||(v[11]=t("span",{class:"value-label"},[t("i",{class:"pi pi-exclamation-triangle warning-icon"}),R(" TOTAL (calculat) ")],-1)),t("span",St,[R(p(g(h.value))+" LEI ",1),v[10]||(v[10]=t("span",{class:"hint"},"(din plati)",-1))])])):c("",!0),I.value?(s(),n("div",Vt,[v[12]||(v[12]=t("i",{class:"pi pi-exclamation-triangle"},null,-1)),R(" Total ("+p(g(d.data.amount))+") ≠ Suma plati ("+p(g(h.value))+") ",1)])):c("",!0),k.value?(s(),n("div",Dt,[v[13]||(v[13]=t("i",{class:"pi pi-info-circle"},null,-1)),R(" Total din TVA: "+p(g(F.value))+" LEI ",1)])):c("",!0),(s(!0),n(H,null,le(d.data.payment_methods,(A,W)=>(s(),n("div",{class:"value-row",key:"pm-"+W},[t("span",It,p(A.method),1),t("span",At,p(g(A.amount))+" LEI",1)]))),128)),(s(!0),n(H,null,le(d.data.tva_entries,(A,W)=>(s(),n("div",{class:"value-row",key:"tva-"+W},[t("span",Et,"TVA "+p(A.code)+" ("+p(A.percent)+"%)",1),t("span",Lt,p(g(A.amount))+" LEI",1)]))),128)),o.value>0?(s(),n("div",Pt,[v[14]||(v[14]=t("span",{class:"value-label"},"Total TVA",-1)),t("span",Ut,p(g(o.value))+" LEI",1)])):c("",!0),d.data.items_count?(s(),n("div",Mt,p(d.data.items_count)+" articole ",1)):c("",!0)])])):c("",!0),d.data.raw_text?(s(),n("div",Nt,[t("div",Bt,[y(q(Oe),{label:K.value?"Ascunde text OCR":"Arata text OCR",icon:K.value?"pi pi-eye-slash":"pi pi-eye",severity:"secondary",size:"small",text:"",onClick:v[1]||(v[1]=A=>K.value=!K.value)},null,8,["label","icon"]),d.data.ocr_engine?(s(),n("span",{key:0,class:ee(["ocr-engine-badge",u(d.data.ocr_engine)])},[t("i",{class:ee(de(d.data.ocr_engine))},null,2),R(" "+p(l(d.data.ocr_engine)),1)],2)):c("",!0),d.data._ocr_message?(s(),n("span",{key:1,class:ee(["ocr-message-badge",T(d.data._ocr_message)])},p(d.data._ocr_message),3)):c("",!0),d.data.processing_time_ms?(s(),n("span",jt,[v[15]||(v[15]=t("i",{class:"pi pi-clock"},null,-1)),R(" "+p(S(d.data.processing_time_ms)),1)])):c("",!0)]),K.value?(s(),n("div",Wt,[t("pre",null,p(d.data.raw_text),1)])):c("",!0)])):c("",!0)]),t("div",qt,[y(q(Oe),{label:"Ignora",icon:"pi pi-times",severity:"secondary",onClick:v[2]||(v[2]=A=>r.$emit("dismiss"))}),y(q(Oe),{label:"Aplica datele in formular",icon:"pi pi-check",onClick:v[3]||(v[3]=A=>r.$emit("apply",d.data))})])])}}},Zt=Ee(Gt,[["__scopeId","data-v-3f33cf7b"]]),Jt={class:"receipt-create-view"},Xt={class:"roa-card"},Ht={class:"roa-card-header"},Kt={class:"roa-card-title"},Qt={key:0,class:"rejection-alert"},Yt={class:"receipt-form-layout"},el={class:"form-column-left"},al={key:0,class:"upload-section"},tl={key:1,class:"upload-section"},ll={class:"attachments-grid"},sl={key:1,class:"pdf-attachment"},il={key:2,class:"upload-section"},nl={key:3,class:"upload-section"},ol={key:0},rl={key:1},ul={key:2,class:"image-preview-grid"},dl=["src","alt"],cl={key:1,class:"image-placeholder"},ml={key:2,class:"pdf-preview"},pl={class:"attachment-actions"},vl={key:3,class:"selected-files-list"},fl={class:"file-name"},yl={class:"file-size"},gl={key:4,class:"selected-files-list"},_l={class:"file-name"},bl={class:"file-size"},hl={class:"form-column-right"},wl={class:"form-group"},Cl={class:"form-row"},kl={class:"form-field flex-2"},Rl={class:"label-with-action"},$l={key:0,class:"p-text-success supplier-selected"},xl={class:"form-field flex-1"},Tl={key:0,class:"supplier-warning-box"},Ol={class:"address-preview"},zl={key:1,class:"address-expanded"},Fl={class:"form-group"},Sl={class:"form-row document-row-inline"},Vl={class:"form-field"},Dl={class:"form-field"},Il={class:"form-field"},Al={class:"form-field"},El={class:"direction-header"},Ll={class:"form-group values-section"},Pl={class:"values-row-inline"},Ul={class:"value-item value-item-total"},Ml={class:"value-item value-item-payment"},Nl={key:0,class:"values-row-inline tva-compact"},Bl={class:"value-item tva-total-item"},jl={class:"tva-total-value"},Wl={class:"form-group form-group-last"},ql={class:"form-row"},Gl={class:"form-field flex-1"},Zl={class:"form-row optional-fields"},Jl={class:"form-field flex-2"},Xl={key:0,class:"form-field items-count-field"},Hl={key:0,class:"entries-section"},Kl={class:"entries-table-container"},Ql={class:"entries-table"},Yl={class:"debit",style:{"text-align":"right"}},es={class:"credit",style:{"text-align":"right"}},as={key:0,class:"balance-warning"},ts={key:1,class:"validation-banners"},ls={key:0,class:"validation-banner"},ss={key:1,class:"validation-banner warning"},is={class:"action-buttons-top"},ns={class:"dialog-content"},os={class:"form-field",style:{"margin-top":"1rem"}},rs={class:"form-field"},us={class:"form-field"},ds={class:"dialog-content"},cs={class:"form-field",style:{"margin-top":"1rem"}},ms={__name:"ReceiptCreateView",setup(d){const z=Fa(),K=Sa(),o=Ia(),h=Pa(),F=Ua(),I=D(()=>!!z.params.id&&!z.path.endsWith("/edit")),k=D(()=>!!z.params.id&&z.path.endsWith("/edit"));D(()=>!z.params.id);const g=D(()=>I.value),Q=D(()=>z.params.id),u=_(null),de=()=>F.selectedCompanyId||1,l=_({receipt_type:"bon_fiscal",direction:"cheltuiala",receipt_date:new Date,amount:null,partner_name:null,cui:"",ocr_raw_text:"",expense_type_code:null,payment_mode:null,cash_register_id:null,cash_register_name:null,cash_register_account:null,receipt_number:"",description:"",company_id:de(),tva_breakdown:[],tva_total:null,items_count:null,vendor_address:"",payment_methods:[]}),T=_([]),S=_([]),r=_({}),v=_(!1),V=_(!1),A=_(null),W=_(null),we=_(null),ce=_(!1),me=_(null),$e=_(null),pe=_(!1),B=_(null),ie=_({show:!1,cui:"",name:""}),ve=_(!1),Le=_(!1),b=_(!1),w=_(""),$=_(!1),G=_([]),U=_(null),E=_(!1),Z=D(()=>h.partners),ne=D(()=>h.expenseTypes);D(()=>h.cashRegisters);const J=D(()=>{var a;return(a=u.value)!=null&&a.entries?u.value.entries.filter(e=>e.entry_type==="debit").reduce((e,m)=>e+parseFloat(m.amount),0):0}),fe=D(()=>{var a;return(a=u.value)!=null&&a.entries?u.value.entries.filter(e=>e.entry_type==="credit").reduce((e,m)=>e+parseFloat(m.amount),0):0}),M=D(()=>Math.abs(J.value-fe.value)<.01),oe=D(()=>{var a;return{hasAmount:l.value.amount&&l.value.amount>0,hasDate:!!l.value.receipt_date,hasExpenseType:!!l.value.expense_type_code,hasPaymentMode:!!l.value.payment_mode,hasAttachment:T.value.length>0||S.value.length>0||!!we.value,amountMatchesPayments:!((a=l.value.payment_methods)!=null&&a.length)||Math.abs((l.value.amount||0)-l.value.payment_methods.reduce((e,m)=>e+(m.amount||0),0))<.02}}),Ce=D(()=>{const a=[];return oe.value.hasAmount||a.push("Suma"),oe.value.hasDate||a.push("Data"),oe.value.hasAttachment||a.push("Atasament"),a}),xe=_([{value:"casa",label:"Casa (numerar firma)"},{value:"banca",label:"Banca (virament/POS)"},{value:"avans_decontare",label:"Avans Decontare (decont angajat)"}]),Fe=_([{value:"bon_fiscal",label:"Bon Fiscal"},{value:"chitanta",label:"Chitanta"}]),ea=_([{value:"cheltuiala",label:"Cheltuiala (Plata)"},{value:"incasare",label:"Incasare"}]),aa=a=>{const e=a.query.toLowerCase();G.value=Z.value.filter(m=>m.name.toLowerCase().includes(e)||m.fiscal_code&&m.fiscal_code.toLowerCase().includes(e))};Ye(async()=>{await h.fetchAllNomenclatures(),h.partners.length===0&&await ta(),k.value||I.value?await ye():l.value.company_id=F.selectedCompanyId||1});const ta=async()=>{try{o.add({severity:"info",summary:"Sincronizare furnizori",detail:"Se sincronizeaza furnizorii din Oracle...",life:3e3});const a=await h.syncSuppliers();o.add({severity:"success",summary:"Sincronizare completa",detail:`${a.synced||h.partners.length} furnizori sincronizati`,life:3e3})}catch(a){console.warn("[ReceiptCreateView] Supplier sync failed:",a),o.add({severity:"warn",summary:"Sincronizare esuata",detail:"Nu s-au putut sincroniza furnizorii. Puteti continua cu furnizori locali.",life:5e3})}};Ie(()=>z.params.id,async(a,e)=>{a&&a!==e?(console.log("[ReceiptCreateView] Route changed to receipt:",a),await ye()):!a&&e&&(console.log("[ReceiptCreateView] Route changed to create mode"),u.value=null,S.value=[],T.value=[],W.value=null,l.value={receipt_type:"bon_fiscal",direction:"cheltuiala",receipt_date:new Date,amount:null,partner_name:null,cui:"",ocr_raw_text:"",expense_type_code:null,payment_mode:null,cash_register_id:null,cash_register_name:null,cash_register_account:null,receipt_number:"",description:"",company_id:de(),tva_breakdown:[],tva_total:null,items_count:null,vendor_address:"",payment_methods:[]})}),Ie(()=>F.selectedCompany,async(a,e)=>{a&&e&&a.id_firma!==e.id_firma&&(console.log("[ReceiptCreateView] Company changed, syncing suppliers in background..."),h.syncSuppliers().then(m=>{console.log("[ReceiptCreateView] Background sync complete:",m)}).catch(m=>{console.warn("[ReceiptCreateView] Background sync failed:",m)}))});const la=async()=>{E.value=!0;try{const a=await h.syncSuppliers();o.add({severity:"success",summary:"Sincronizare completa",detail:`${a.synced||0} furnizori noi din Oracle`,life:3e3})}catch(a){console.warn("[ReceiptCreateView] Manual supplier sync failed:",a),o.add({severity:"error",summary:"Sincronizare esuata",detail:a.message||"Nu s-au putut sincroniza furnizorii",life:5e3})}finally{E.value=!1}},ye=async()=>{try{u.value=await h.fetchReceiptById(Q.value);const a=(u.value.tva_breakdown||[]).map(e=>({code:e.code,percent:e.percent,amount:parseFloat(e.amount)||0}));l.value={receipt_type:u.value.receipt_type,direction:u.value.direction,receipt_date:new Date(u.value.receipt_date),amount:parseFloat(u.value.amount),partner_name:u.value.partner_name,cui:u.value.cui||"",ocr_raw_text:u.value.ocr_raw_text||"",expense_type_code:u.value.expense_type_code,payment_mode:u.value.payment_mode||null,cash_register_id:u.value.cash_register_id,cash_register_name:u.value.cash_register_name,cash_register_account:u.value.cash_register_account,receipt_number:u.value.receipt_number||"",description:u.value.description||"",company_id:u.value.company_id,tva_breakdown:a,tva_total:u.value.tva_total?parseFloat(u.value.tva_total):null,items_count:u.value.items_count||null,vendor_address:u.value.vendor_address||"",payment_methods:u.value.payment_methods||[]},S.value=u.value.attachments||[],await sa()}catch{o.add({severity:"error",summary:"Eroare",detail:"Nu s-a putut incarca bonul",life:5e3}),K.push("/data-entry")}},sa=async()=>{for(const a of S.value)try{const e=await h.fetchAttachmentBlob(a.id);e&&(r.value[a.id]=e)}catch(e){console.error(`Failed to load blob for attachment ${a.id}:`,e)}},Pe=async a=>{try{await h.downloadAttachment(a.id,a.filename),o.add({severity:"success",summary:"Succes",detail:"Fisierul a fost descarcat",life:2e3})}catch{o.add({severity:"error",summary:"Eroare",detail:"Nu s-a putut descarca fisierul",life:5e3})}},ia=a=>{we.value=a,T.value.some(e=>e.name===a.name)||(T.value=[a,...T.value])},na=a=>{console.log("[OCR Result] Received data, suggested_payment_mode:",a.suggested_payment_mode,"payment_methods:",a.payment_methods),W.value=a,o.add({severity:"success",summary:"OCR Procesare",detail:"Datele au fost extrase din imagine",life:3e3})},oa=a=>{o.add({severity:"error",summary:"Eroare OCR",detail:a,life:5e3})},ra=async a=>{var e,m;if(!me.value){me.value=a.id;try{const C=await apiService.get(`/receipts/attachments/${a.id}/download`,{responseType:"blob"}),L=new File([C.data],a.filename,{type:a.mime_type}),N=new FormData;N.append("file",L);const O=await apiService.post("/ocr/extract",N,{timeout:3e4}),Y=O.data.job_id;console.log("📋 OCR Rescan Job:",O.data);const ue=120;let j=0;for(;j<ue;){await new Promise(f=>setTimeout(f,1e3));const X=(await apiService.get(`/ocr/jobs/${Y}`)).data;if(X.status==="completed"){X.result&&(W.value={...X.result,_processing_time_ms:X.processing_time_ms},ce.value=!1,o.add({severity:"success",summary:"OCR Procesare",detail:"Datele au fost re-extrase din atasament",life:3e3}));break}if(X.status==="failed"){o.add({severity:"error",summary:"Eroare OCR",detail:X.error||"Procesare OCR esuata",life:5e3});break}j++}j>=ue&&o.add({severity:"error",summary:"Eroare OCR",detail:"Timeout - procesarea a durat prea mult",life:5e3})}catch(C){const L=((m=(e=C.response)==null?void 0:e.data)==null?void 0:m.detail)||C.message||"Eroare la procesarea OCR";o.add({severity:"error",summary:"Eroare OCR",detail:L,life:5e3})}finally{me.value=null}}},ua=async a=>{var L,N,O,Y,ue,j,be,X;if(!a.amount||parseFloat(a.amount)<=0){const f=((L=a.payment_methods)==null?void 0:L.reduce((ae,ge)=>ae+parseFloat(ge.amount||0),0))||0;f>0?o.add({severity:"warn",summary:"Total nedetectat",detail:`Totalul nu a fost extras. Suma din plati: ${f.toFixed(2)} LEI`,life:6e3}):o.add({severity:"warn",summary:"Total nedetectat",detail:"Totalul nu a fost extras din OCR. Completati manual.",life:5e3})}if(a.amount&&((N=a.payment_methods)==null?void 0:N.length)>0){const f=a.payment_methods.reduce((ge,he)=>ge+parseFloat(he.amount||0),0);Math.abs(parseFloat(a.amount)-f)>.02&&o.add({severity:"warn",summary:"Diferenta detectata",detail:`Total (${parseFloat(a.amount).toFixed(2)}) ≠ Plati (${f.toFixed(2)})`,life:5e3})}a.receipt_type&&(l.value.receipt_type=a.receipt_type),a.receipt_date&&(l.value.receipt_date=new Date(a.receipt_date)),a.amount&&(l.value.amount=parseFloat(a.amount)),a.receipt_number&&(l.value.receipt_number=a.receipt_number),a.cui&&(l.value.cui=a.cui),a.raw_text&&(l.value.ocr_raw_text=a.raw_text),((O=a.tva_entries)==null?void 0:O.length)>0&&(l.value.tva_breakdown=a.tva_entries.map(f=>({code:f.code,percent:f.percent,amount:parseFloat(f.amount)}))),a.tva_total&&(l.value.tva_total=parseFloat(a.tva_total)),a.items_count&&(l.value.items_count=a.items_count),a.address&&(l.value.vendor_address=a.address),((Y=a.payment_methods)==null?void 0:Y.length)>0&&(l.value.payment_methods=a.payment_methods.map(f=>({method:f.method,amount:parseFloat(f.amount)}))),console.log("[OCR Apply] suggested_payment_mode:",a.suggested_payment_mode,"payment_methods:",a.payment_methods),a.suggested_payment_mode&&(l.value.payment_mode=a.suggested_payment_mode,Le.value=!0,console.log("[OCR Apply] Set payment_mode to:",a.suggested_payment_mode));const e=(j=(ue=F.selectedCompany)==null?void 0:ue.fiscal_code)==null?void 0:j.replace(/^RO/i,""),m=(be=a.cui)==null?void 0:be.replace(/^RO/i,""),C=(X=a.client_cui)==null?void 0:X.replace(/^RO/i,"");if(b.value=!1,w.value="",$.value=!1,m&&e&&m===e){if(l.value.direction="incasare",b.value=!0,w.value="CUI furnizor = CUI firma curenta",a.client_name||a.client_cui){if(l.value.partner_name=a.client_name||"",l.value.cui=a.client_cui||"",l.value.vendor_address=a.client_address||"",a.client_cui){const f=await h.searchSupplier(a.client_cui);f.found&&f.supplier&&(l.value.partner_name=f.supplier.name,l.value.cui=f.supplier.fiscal_code||a.client_cui,l.value.vendor_address=f.supplier.address||a.client_address||"",U.value=f.source,o.add({severity:"success",summary:"Client gasit",detail:`${f.supplier.name} (${f.source})`,life:3e3}))}o.add({severity:"info",summary:"Incasare detectata",detail:"Firma curenta este furnizorul. Partenerul este clientul.",life:4e3})}else $.value=!0,o.add({severity:"warn",summary:"Lipsesc date client",detail:"Incasare detectata dar nu exista date client pe bon. Completeaza manual.",life:5e3});o.add({severity:"success",summary:"Date aplicate",detail:"Datele OCR au fost aplicate in formular",life:3e3});return}else C&&e&&C===e?(l.value.direction="cheltuiala",b.value=!0,w.value="CUI client = CUI firma curenta"):C&&e&&C!==e&&(va(C,e)>=.8?o.add({severity:"warn",summary:"CUI client similar",detail:`CUI client (${C}) este similar cu CUI firma (${e}). Posibila eroare OCR.`,life:8e3}):C.length>=6&&o.add({severity:"info",summary:"CUI client diferit",detail:`CUI client pe bon: ${C}. CUI firma: ${e}`,life:5e3}));if(a.cui){o.add({severity:"info",summary:"Cautare furnizor",detail:`Se cauta furnizor dupa CUI: ${a.cui}`,life:2e3});const f=await h.searchSupplier(a.cui);if(f.found&&f.supplier){const ae={name:f.supplier.name,fiscal_code:f.supplier.fiscal_code,address:f.supplier.address,source:f.source};l.value.partner_name=f.supplier.name,l.value.cui=f.supplier.fiscal_code||a.cui,l.value.vendor_address=f.supplier.address||a.address||l.value.vendor_address,U.value=f.source,h.partners.some(he=>he.name===f.supplier.name)||h.partners.push(ae),o.add({severity:"success",summary:"Furnizor gasit",detail:`${f.supplier.name} (${f.source})`,life:3e3})}else ie.value={show:!0,cui:a.cui,name:a.partner_name||""},l.value.partner_name=a.partner_name||"",o.add({severity:"warn",summary:"Furnizor negasit",detail:`CUI ${a.cui} nu a fost gasit in nomenclator`,life:5e3})}else if(a.partner_name){const f=Z.value.find(ae=>ae.name.toLowerCase().includes(a.partner_name.toLowerCase()));f?(l.value.partner_name=f.name,l.value.cui=f.fiscal_code||"",l.value.vendor_address=f.address||l.value.vendor_address||"",U.value=f.source||"local"):l.value.partner_name=a.partner_name}o.add({severity:"success",summary:"Date aplicate",detail:"Datele OCR au fost aplicate in formular",life:3e3})},da=()=>{W.value=null},ca=async()=>{if(B.value)try{const a=await h.createLocalSupplier(B.value);l.value.partner_id=a.id,l.value.partner_name=a.name,o.add({severity:"success",summary:"Furnizor creat",detail:`${a.name} a fost adaugat`,life:3e3})}catch(a){o.add({severity:"error",summary:"Eroare",detail:a.message,life:5e3})}finally{pe.value=!1,B.value=null}},ma=()=>{pe.value=!1,B.value=null},pa=async()=>{if(l.value.cui)try{await h.createLocalSupplier({name:l.value.partner_name||ie.value.name||`Furnizor ${l.value.cui}`,fiscal_code:l.value.cui,address:l.value.vendor_address||null}),o.add({severity:"success",summary:"Furnizor creat",detail:`${l.value.partner_name||l.value.cui} a fost adaugat`,life:3e3}),ie.value={show:!1,cui:"",name:""},U.value="local"}catch(a){o.add({severity:"error",summary:"Eroare",detail:a.message||"Nu s-a putut crea furnizorul",life:5e3})}},va=(a,e)=>{if(!a||!e)return 0;const m=a.replace(/^R[O0]/i,"").replace(/\D/g,""),C=e.replace(/^R[O0]/i,"").replace(/\D/g,"");if(m.length===0||C.length===0)return 0;if(m===C)return 1;const L=Math.max(m.length,C.length),N=Math.min(m.length,C.length),O=N/L;let Y=0;for(let j=0;j<N;j++)m[j]===C[j]&&Y++;return Y/L*.8+O*.2},fa=a=>{const e=a.value;e&&typeof e=="object"&&(l.value.partner_name=e.name,l.value.cui=e.fiscal_code||"",l.value.vendor_address=e.address||l.value.vendor_address||"",U.value=e.source||"oracle")},ya=()=>{var a;(a=$e.value)==null||a.click()},ga=a=>{var m;const e=(m=a.target)==null?void 0:m.files;(e==null?void 0:e.length)>0&&(T.value=[...T.value,...Array.from(e)]),a.target.value=""},Ue=a=>{T.value=T.value.filter((e,m)=>m!==a)},_a=async a=>{try{await h.deleteAttachment(a),S.value=S.value.filter(e=>e.id!==a),o.add({severity:"success",summary:"Succes",detail:"Atasamentul a fost sters",life:3e3})}catch(e){o.add({severity:"error",summary:"Eroare",detail:e.message,life:5e3})}},Me=a=>a<1024?a+" B":a<1024*1024?(a/1024).toFixed(1)+" KB":(a/(1024*1024)).toFixed(1)+" MB",ba=()=>{var e;return(e=l.value.tva_breakdown)!=null&&e.length?l.value.tva_breakdown.reduce((m,C)=>m+(C.amount||0),0).toLocaleString("ro-RO",{minimumFractionDigits:2,maximumFractionDigits:2}):"0.00"},Se=a=>new Intl.NumberFormat("ro-RO",{style:"currency",currency:"RON"}).format(a),ha=a=>a?new Date(a).toLocaleString("ro-RO"):"-",wa=a=>({draft:"status-draft",pending_review:"status-pending",approved:"status-approved",rejected:"status-rejected",synced:"status-synced"})[a]||"",Ca=a=>({draft:"Ciorna",pending_review:"In asteptare",approved:"Validat",rejected:"Respins",synced:"Sincronizat"})[a]||a,ka=async()=>{V.value=!0;try{const a=await h.submitReceipt(u.value.id);a.success?(o.add({severity:"success",summary:"Succes",detail:"Bonul a fost trimis spre aprobare",life:3e3}),await ye()):o.add({severity:"error",summary:"Eroare",detail:a.message,life:5e3})}catch(a){o.add({severity:"error",summary:"Eroare",detail:a.message||"Nu s-a putut trimite bonul",life:5e3})}finally{V.value=!1}},Ra=async()=>{V.value=!0;try{const a=await h.resubmitReceipt(u.value.id);a.success?(o.add({severity:"success",summary:"Succes",detail:"Bonul a fost re-trimis spre aprobare",life:3e3}),await ye()):o.add({severity:"error",summary:"Eroare",detail:a.message,life:5e3})}catch(a){o.add({severity:"error",summary:"Eroare",detail:a.message||"Nu s-a putut re-trimite bonul",life:5e3})}finally{V.value=!1}},Ve=_(!1),Te=_(!1),De=_(!1),ke=_(!1),re=_(""),$a=async()=>{Ve.value=!0;try{const a=await h.approveReceipt(u.value.id);a.success?(o.add({severity:"success",summary:"Succes",detail:"Bonul a fost validat",life:3e3}),await ye()):o.add({severity:"error",summary:"Eroare",detail:a.message,life:5e3})}catch(a){o.add({severity:"error",summary:"Eroare",detail:a.message||"Nu s-a putut valida bonul",life:5e3})}finally{Ve.value=!1}},xa=()=>{re.value="",ke.value=!0},Ta=async()=>{if(!re.value||re.value.length<5){o.add({severity:"warn",summary:"Atentie",detail:"Motivul respingerii trebuie sa aiba minim 5 caractere",life:3e3});return}Te.value=!0;try{const a=await h.rejectReceipt(u.value.id,re.value);a.success?(o.add({severity:"success",summary:"Succes",detail:"Bonul a fost respins",life:3e3}),ke.value=!1,await ye()):o.add({severity:"error",summary:"Eroare",detail:a.message,life:5e3})}catch(a){o.add({severity:"error",summary:"Eroare",detail:a.message||"Nu s-a putut respinge bonul",life:5e3})}finally{Te.value=!1}},Oa=async()=>{De.value=!0;try{const a=await h.unapproveReceipt(u.value.id);a.success?(o.add({severity:"success",summary:"Succes",detail:"Validarea a fost anulata",life:3e3}),await ye()):o.add({severity:"error",summary:"Eroare",detail:a.message,life:5e3})}catch(a){o.add({severity:"error",summary:"Eroare",detail:a.message||"Nu s-a putut anula validarea",life:5e3})}finally{De.value=!1}},Ne=()=>!k.value&&T.value.length===0&&!we.value?(o.add({severity:"warn",summary:"Validare",detail:"Trebuie sa adaugi cel putin o poza a bonului",life:3e3}),!1):l.value.receipt_date?!l.value.amount||l.value.amount<=0?(o.add({severity:"warn",summary:"Validare",detail:"Suma trebuie sa fie mai mare decat 0",life:3e3}),!1):!0:(o.add({severity:"warn",summary:"Validare",detail:"Data bonului este obligatorie",life:3e3}),!1),Be=async()=>{var a,e;if(Ne()){v.value=!0;try{if(l.value.cui&&ie.value.show)try{await h.createLocalSupplier({name:l.value.partner_name||`Furnizor ${l.value.cui}`,fiscal_code:l.value.cui,address:l.value.vendor_address||null}),o.add({severity:"info",summary:"Furnizor local creat",detail:`${l.value.partner_name||l.value.cui} adaugat automat`,life:3e3}),ie.value={show:!1,cui:"",name:""},U.value="local"}catch(O){console.warn("[saveReceipt] Failed to auto-create local supplier:",O)}const m=((a=l.value.payment_methods)==null?void 0:a.map(O=>({...O,amount:O.amount??0})))||null,C=((e=l.value.tva_breakdown)==null?void 0:e.map(O=>({...O,amount:O.amount??0})))||null,L={...l.value,receipt_date:l.value.receipt_date.toISOString().split("T")[0],payment_methods:m,tva_breakdown:C};let N;k.value?N=await h.updateReceipt(Q.value,L):N=await h.createReceipt(L);for(const O of T.value)try{await h.uploadAttachment(N.id,O)}catch{o.add({severity:"warn",summary:"Atentie",detail:`Nu s-a putut incarca: ${O.name}`,life:5e3})}o.add({severity:"success",summary:"Succes",detail:k.value?"Bonul a fost actualizat":"Bonul a fost creat",life:3e3}),K.push(`/data-entry/${N.id}`)}catch(m){o.add({severity:"error",summary:"Eroare",detail:m.message||"Nu s-a putut salva bonul",life:5e3})}finally{v.value=!1}}},za=async()=>{if(Ne()){V.value=!0;try{await Be();const a=await h.submitReceipt(Q.value);a.success?(o.add({severity:"success",summary:"Succes",detail:"Bonul a fost trimis spre aprobare",life:3e3}),K.push("/data-entry")):o.add({severity:"error",summary:"Eroare",detail:a.message,life:5e3})}catch(a){o.add({severity:"error",summary:"Eroare",detail:a.message||"Nu s-a putut trimite bonul",life:5e3})}finally{V.value=!1}}};return(a,e)=>{var j,be,X,f,ae,ge,he,je,We,qe,Ge,Ze,Je;const m=se("Button"),C=se("InputText"),L=se("Dropdown"),N=se("Calendar"),O=se("InputNumber"),Y=se("Textarea"),ue=Da("tooltip");return s(),n("div",Jt,[t("div",Xt,[t("div",Ht,[t("div",null,[t("h2",Kt,[t("i",{class:ee(I.value?"pi pi-receipt":"pi pi-plus-circle")},null,2),R(" "+p(I.value?`Bon #${(j=u.value)==null?void 0:j.id}`:k.value?"Editare Bon Fiscal":"Bon Fiscal Nou"),1)]),I.value&&u.value?(s(),n("span",{key:0,class:ee(["status-badge",wa(u.value.status)])},p(Ca(u.value.status)),3)):c("",!0)])]),(be=u.value)!=null&&be.rejection_reason?(s(),n("div",Qt,[e[26]||(e[26]=t("i",{class:"pi pi-exclamation-triangle"},null,-1)),t("div",null,[e[25]||(e[25]=t("strong",null,"Motiv respingere:",-1)),t("p",null,p(u.value.rejection_reason),1),t("small",null,"Respins de "+p(u.value.reviewed_by)+" la "+p(ha(u.value.reviewed_at)),1)])])):c("",!0),t("form",{id:"receipt-form",onSubmit:ze(Be,["prevent"])},[t("div",Yt,[t("div",el,[I.value?c("",!0):(s(),n("div",al,[t("h3",null,[e[27]||(e[27]=t("i",{class:"pi pi-camera"},null,-1)),R(" "+p(k.value?"Re-scanare OCR (optional)":"Poza Bon"),1)]),y(st,{ref_key:"ocrUploadZone",ref:A,onOcrResult:na,onFileSelected:ia,onError:oa},null,512),W.value&&ce.value?(s(),n("div",{key:0,class:"ocr-applied-banner",onClick:e[0]||(e[0]=i=>ce.value=!1)},[...e[28]||(e[28]=[t("i",{class:"pi pi-check-circle"},null,-1),t("span",null,"Date OCR aplicate",-1),t("i",{class:"pi pi-chevron-down"},null,-1)])])):c("",!0),W.value&&!ce.value?(s(),P(Zt,{key:1,data:W.value,onApply:ua,onDismiss:da,onCollapse:e[1]||(e[1]=i=>ce.value=!0)},null,8,["data"])):c("",!0)])),I.value&&S.value.length?(s(),n("div",tl,[t("h3",null,[e[29]||(e[29]=t("i",{class:"pi pi-images"},null,-1)),R(" Atasamente ("+p(S.value.length)+") ",1)]),t("div",ll,[(s(!0),n(H,null,le(S.value,i=>{var x;return s(),n("div",{key:i.id,class:"attachment-item"},[(x=i.mime_type)!=null&&x.startsWith("image/")?(s(),P(q(La),{key:0,src:r.value[i.id]||"",alt:i.filename,preview:"",class:"attachment-image"},null,8,["src","alt"])):(s(),n("div",sl,[e[30]||(e[30]=t("i",{class:"pi pi-file-pdf"},null,-1)),t("span",null,p(i.filename),1)])),y(m,{icon:"pi pi-download",severity:"secondary",rounded:"",size:"small",class:"download-btn",onClick:te=>Pe(i)},null,8,["onClick"])])}),128))])])):c("",!0),I.value&&!S.value.length?(s(),n("div",il,[...e[31]||(e[31]=[t("h3",null,[t("i",{class:"pi pi-images"}),R(" Atasamente ")],-1),t("div",{class:"empty-state"},[t("i",{class:"pi pi-image"}),t("p",null,"Niciun atasament")],-1)])])):c("",!0),k.value||T.value.length>0?(s(),n("div",nl,[k.value?(s(),n("h3",ol,[e[32]||(e[32]=t("i",{class:"pi pi-images"},null,-1)),e[33]||(e[33]=R(" Atasamente ",-1)),y(m,{icon:"pi pi-plus",label:"Adauga",severity:"secondary",size:"small",class:"add-attachment-btn",onClick:ya}),t("input",{ref_key:"editFileInput",ref:$e,type:"file",accept:"image/*,application/pdf",multiple:"",class:"hidden-file-input",onChange:ga},null,544)])):T.value.length>0?(s(),n("h3",rl,[...e[34]||(e[34]=[t("i",{class:"pi pi-paperclip"},null,-1),R(" Fisiere Selectate ",-1)])])):c("",!0),S.value.length?(s(),n("div",ul,[(s(!0),n(H,null,le(S.value,i=>{var x,te,Xe;return s(),n("div",{key:i.id,class:"image-preview-item"},[(x=i.mime_type)!=null&&x.startsWith("image/")&&r.value[i.id]?(s(),n("img",{key:0,src:r.value[i.id],alt:i.filename},null,8,dl)):(te=i.mime_type)!=null&&te.startsWith("image/")&&!r.value[i.id]?(s(),n("div",cl,[e[35]||(e[35]=t("i",{class:"pi pi-image",style:{"font-size":"2rem",color:"var(--text-color-secondary)"}},null,-1)),t("span",null,p(i.filename),1)])):(s(),n("div",ml,[e[36]||(e[36]=t("i",{class:"pi pi-file-pdf",style:{"font-size":"2rem"}},null,-1)),t("span",null,p(i.filename),1)])),t("div",pl,[(Xe=i.mime_type)!=null&&Xe.startsWith("image/")?(s(),P(m,{key:0,icon:"pi pi-sync",severity:"info",rounded:"",size:"small",loading:me.value===i.id,onClick:He=>ra(i)},null,8,["loading","onClick"])):c("",!0),y(m,{icon:"pi pi-download",severity:"secondary",rounded:"",size:"small",onClick:He=>Pe(i)},null,8,["onClick"]),y(m,{icon:"pi pi-times",severity:"danger",rounded:"",size:"small",onClick:He=>_a(i.id)},null,8,["onClick"])])])}),128))])):c("",!0),T.value.length?(s(),n("div",vl,[(s(!0),n(H,null,le(T.value,(i,x)=>(s(),n("div",{key:x,class:"selected-file-item"},[t("i",{class:ee(i.type.startsWith("image/")?"pi pi-image":"pi pi-file-pdf")},null,2),t("span",fl,p(i.name),1),t("span",yl,p(Me(i.size)),1),y(m,{icon:"pi pi-times",severity:"danger",rounded:"",size:"small",onClick:te=>Ue(x)},null,8,["onClick"])]))),128))])):c("",!0),k.value&&T.value.length?(s(),n("div",gl,[e[37]||(e[37]=t("div",{class:"pending-files-header"},"Fisiere noi de incarcat:",-1)),(s(!0),n(H,null,le(T.value,(i,x)=>(s(),n("div",{key:x,class:"selected-file-item"},[t("i",{class:ee(i.type.startsWith("image/")?"pi pi-image":"pi pi-file-pdf")},null,2),t("span",_l,p(i.name),1),t("span",bl,p(Me(i.size)),1),y(m,{icon:"pi pi-times",severity:"danger",rounded:"",size:"small",onClick:te=>Ue(x)},null,8,["onClick"])]))),128))])):c("",!0)])):c("",!0)]),t("div",hl,[t("div",wl,[t("div",Cl,[t("div",kl,[t("div",Rl,[e[38]||(e[38]=t("label",null,"Furnizor",-1)),g.value?c("",!0):Va((s(),P(m,{key:0,icon:"pi pi-sync",size:"small",text:"",rounded:"",loading:E.value,onClick:la,class:"sync-btn"},null,8,["loading"])),[[ue,"Re-sincronizeaza furnizorii din Oracle",void 0,{top:!0}]])]),y(q(Aa),{modelValue:l.value.partner_name,"onUpdate:modelValue":e[2]||(e[2]=i=>l.value.partner_name=i),suggestions:G.value,optionLabel:"name",field:"name",onComplete:aa,onItemSelect:fa,placeholder:"Cauta furnizor...",dropdown:"",forceSelection:!1,disabled:g.value},null,8,["modelValue","suggestions","disabled"]),U.value?(s(),n("small",$l,[e[39]||(e[39]=t("i",{class:"pi pi-check-circle"},null,-1)),R(" Validat ("+p(U.value)+") ",1)])):c("",!0)]),t("div",xl,[e[41]||(e[41]=t("label",null,"CUI",-1)),y(C,{modelValue:l.value.cui,"onUpdate:modelValue":e[3]||(e[3]=i=>l.value.cui=i),placeholder:"RO12345678",disabled:g.value},null,8,["modelValue","disabled"]),ie.value.show?(s(),n("div",Tl,[e[40]||(e[40]=t("small",{class:"p-text-warning"},[t("i",{class:"pi pi-exclamation-triangle"}),R(" Negasit - se va crea automat la salvare ")],-1)),g.value?c("",!0):(s(),P(m,{key:0,label:"Creaza acum",icon:"pi pi-plus",size:"small",severity:"warning",text:"",onClick:pa,class:"supplier-create-btn"}))])):c("",!0)])]),l.value.vendor_address?(s(),n("div",{key:0,class:"address-collapsed",onClick:e[4]||(e[4]=i=>ve.value=!ve.value)},[t("i",{class:ee(ve.value?"pi pi-chevron-up":"pi pi-chevron-down")},null,2),t("span",Ol,p(ve.value?"Ascunde adresa":l.value.vendor_address),1)])):c("",!0),l.value.vendor_address&&ve.value?(s(),n("div",zl,[y(C,{modelValue:l.value.vendor_address,"onUpdate:modelValue":e[5]||(e[5]=i=>l.value.vendor_address=i),placeholder:"Adresa furnizor",disabled:g.value,class:"input-small"},null,8,["modelValue","disabled"])])):c("",!0)]),t("div",Fl,[t("div",Sl,[t("div",Vl,[e[42]||(e[42]=t("label",null,"Tip",-1)),y(L,{modelValue:l.value.receipt_type,"onUpdate:modelValue":e[6]||(e[6]=i=>l.value.receipt_type=i),options:Fe.value,optionLabel:"label",optionValue:"value",placeholder:"Tip",disabled:g.value,class:"dropdown-compact dropdown-borderless"},null,8,["modelValue","options","disabled"])]),t("div",Dl,[e[43]||(e[43]=t("label",null,"Nr.",-1)),y(C,{modelValue:l.value.receipt_number,"onUpdate:modelValue":e[7]||(e[7]=i=>l.value.receipt_number=i),placeholder:"12345",style:{"max-width":"90px"},disabled:g.value},null,8,["modelValue","disabled"])]),t("div",Il,[e[44]||(e[44]=t("label",null,"Data *",-1)),y(N,{modelValue:l.value.receipt_date,"onUpdate:modelValue":e[8]||(e[8]=i=>l.value.receipt_date=i),dateFormat:"dd.mm.yy",showIcon:"",required:"",disabled:g.value},null,8,["modelValue","disabled"])]),t("div",Al,[t("div",El,[e[45]||(e[45]=t("label",null,"Operatiune",-1)),b.value?(s(),P(q(Ae),{key:0,severity:"info",value:"Auto",class:"auto-tag"})):c("",!0)]),y(L,{modelValue:l.value.direction,"onUpdate:modelValue":e[9]||(e[9]=i=>l.value.direction=i),options:ea.value,optionLabel:"label",optionValue:"value",placeholder:"Tip",disabled:g.value,onChange:e[10]||(e[10]=i=>b.value=!1),class:"dropdown-compact dropdown-borderless"},null,8,["modelValue","options","disabled"])])]),$.value?(s(),P(q(Ea),{key:0,severity:"warn",closable:!1,class:"mt-1 message-compact"},{default:_e(()=>[...e[46]||(e[46]=[t("small",null,"Incasare detectata dar lipsesc datele clientului.",-1)])]),_:1})):c("",!0)]),t("div",Ll,[t("div",Pl,[t("div",Ul,[e[47]||(e[47]=t("label",null,"TOTAL *",-1)),y(O,{modelValue:l.value.amount,"onUpdate:modelValue":e[11]||(e[11]=i=>l.value.amount=i),minFractionDigits:2,maxFractionDigits:2,required:"",disabled:g.value,class:"input-compact",pt:{root:{style:"width: 130px"}}},null,8,["modelValue","disabled"])]),(s(!0),n(H,null,le(l.value.payment_methods,(i,x)=>(s(),n("div",{class:"value-item payment-method-item",key:i.method},[t("label",null,p(i.method),1),y(O,{modelValue:l.value.payment_methods[x].amount,"onUpdate:modelValue":te=>l.value.payment_methods[x].amount=te,locale:"en-US",minFractionDigits:2,maxFractionDigits:2,disabled:g.value,inputStyle:{width:"110px"},class:"input-payment-method"},null,8,["modelValue","onUpdate:modelValue","disabled"])]))),128)),t("div",Ml,[e[48]||(e[48]=t("label",null,"Mod Plata",-1)),y(L,{modelValue:l.value.payment_mode,"onUpdate:modelValue":e[12]||(e[12]=i=>l.value.payment_mode=i),options:xe.value,optionLabel:"label",optionValue:"value",placeholder:"Selecteaza",disabled:g.value,class:"dropdown-payment dropdown-borderless"},null,8,["modelValue","options","disabled"])])]),((X=l.value.tva_breakdown)==null?void 0:X.length)>0?(s(),n("div",Nl,[(s(!0),n(H,null,le(l.value.tva_breakdown,(i,x)=>(s(),n("div",{class:"value-item tva-item",key:"tva-"+x},[t("label",null,"TVA "+p(i.code)+" "+p(i.percent)+"%",1),y(O,{modelValue:l.value.tva_breakdown[x].amount,"onUpdate:modelValue":te=>l.value.tva_breakdown[x].amount=te,minFractionDigits:2,maxFractionDigits:2,disabled:g.value,inputStyle:{width:"110px"},class:"input-tva"},null,8,["modelValue","onUpdate:modelValue","disabled"])]))),128)),t("div",Bl,[e[49]||(e[49]=t("label",null,"Total TVA",-1)),t("span",jl,p(ba()),1)])])):c("",!0)]),t("div",Wl,[t("div",ql,[t("div",Gl,[e[50]||(e[50]=t("label",null,"Tip Cheltuiala",-1)),y(L,{modelValue:l.value.expense_type_code,"onUpdate:modelValue":e[13]||(e[13]=i=>l.value.expense_type_code=i),options:ne.value,optionLabel:"name",optionValue:"code",placeholder:"Selecteaza tip cheltuiala",disabled:g.value,class:"dropdown-borderless"},null,8,["modelValue","options","disabled"])])]),t("div",Zl,[t("div",Jl,[e[51]||(e[51]=t("label",{class:"label-small"},"Descriere",-1)),y(Y,{modelValue:l.value.description,"onUpdate:modelValue":e[14]||(e[14]=i=>l.value.description=i),rows:"2",placeholder:"Descriere optionala...",disabled:g.value},null,8,["modelValue","disabled"])]),l.value.items_count?(s(),n("div",Xl,[e[52]||(e[52]=t("label",{class:"label-small label-muted"},"Nr. Art.",-1)),y(O,{modelValue:l.value.items_count,"onUpdate:modelValue":e[15]||(e[15]=i=>l.value.items_count=i),min:1,placeholder:"17",class:"items-count-input",disabled:g.value},null,8,["modelValue","disabled"])])):c("",!0)])])])]),I.value&&((ae=(f=u.value)==null?void 0:f.entries)!=null&&ae.length)?(s(),n("div",Hl,[e[57]||(e[57]=t("h3",null,[t("i",{class:"pi pi-book"}),R(" Note Contabile ")],-1)),t("div",Kl,[t("table",Ql,[e[55]||(e[55]=t("thead",null,[t("tr",null,[t("th",null,"Tip"),t("th",null,"Cont"),t("th",null,"Denumire Cont"),t("th",{style:{"text-align":"right"}},"Suma")])],-1)),t("tbody",null,[(s(!0),n(H,null,le(u.value.entries,i=>(s(),n("tr",{key:i.id},[t("td",null,[y(q(Ae),{value:i.entry_type==="debit"?"D":"C",severity:i.entry_type==="debit"?"danger":"success"},null,8,["value","severity"])]),t("td",null,p(i.account_code),1),t("td",null,p(i.account_name||"-"),1),t("td",{class:ee(i.entry_type),style:{"text-align":"right"}},p(Se(i.amount)),3)]))),128))]),t("tfoot",null,[t("tr",null,[e[53]||(e[53]=t("td",{colspan:"3",style:{"text-align":"right"}},[t("strong",null,"Total Debit:")],-1)),t("td",Yl,[t("strong",null,p(Se(J.value)),1)])]),t("tr",null,[e[54]||(e[54]=t("td",{colspan:"3",style:{"text-align":"right"}},[t("strong",null,"Total Credit:")],-1)),t("td",es,[t("strong",null,p(Se(fe.value)),1)])])])]),M.value?c("",!0):(s(),n("div",as,[...e[56]||(e[56]=[t("i",{class:"pi pi-exclamation-triangle"},null,-1),R(" Atentie: Notele contabile nu sunt echilibrate! ",-1)])]))])])):c("",!0),e[58]||(e[58]=t("div",{class:"floating-buttons-spacer"},null,-1))],32),I.value?c("",!0):(s(),n("div",ts,[Ce.value.length>0?(s(),n("div",ls,[e[60]||(e[60]=t("i",{class:"pi pi-exclamation-circle"},null,-1)),t("span",null,[e[59]||(e[59]=R("Campuri obligatorii necompletate: ",-1)),t("strong",null,p(Ce.value.join(", ")),1)])])):c("",!0),oe.value.amountMatchesPayments?c("",!0):(s(),n("div",ss,[...e[61]||(e[61]=[t("i",{class:"pi pi-exclamation-triangle"},null,-1),t("span",null,"Totalul nu corespunde cu suma metodelor de plata",-1)])]))]))]),t("div",is,[y(m,{icon:"pi pi-arrow-left",label:"Inapoi",severity:"secondary",onClick:e[16]||(e[16]=i=>a.$router.push("/data-entry"))}),I.value?(s(),n(H,{key:0},[((ge=u.value)==null?void 0:ge.status)==="draft"||((he=u.value)==null?void 0:he.status)==="rejected"?(s(),P(m,{key:0,icon:"pi pi-pencil",label:"Editeaza",onClick:e[17]||(e[17]=i=>a.$router.push(`/data-entry/${u.value.id}/edit`))})):c("",!0),((je=u.value)==null?void 0:je.status)==="draft"?(s(),P(m,{key:1,icon:"pi pi-send",label:"Trimite",severity:"success",onClick:ka,loading:V.value},null,8,["loading"])):c("",!0),((We=u.value)==null?void 0:We.status)==="rejected"?(s(),P(m,{key:2,icon:"pi pi-refresh",label:"Re-trimite",severity:"warning",onClick:Ra,loading:V.value},null,8,["loading"])):c("",!0),((qe=u.value)==null?void 0:qe.status)==="pending_review"?(s(),P(m,{key:3,icon:"pi pi-check",label:"Valideaza",severity:"success",onClick:$a,loading:Ve.value},null,8,["loading"])):c("",!0),((Ge=u.value)==null?void 0:Ge.status)==="pending_review"?(s(),P(m,{key:4,icon:"pi pi-times",label:"Respinge",severity:"danger",onClick:xa,loading:Te.value},null,8,["loading"])):c("",!0),((Ze=u.value)==null?void 0:Ze.status)==="approved"?(s(),P(m,{key:5,icon:"pi pi-undo",label:"Anuleaza Validarea",severity:"warning",onClick:Oa,loading:De.value},null,8,["loading"])):c("",!0)],64)):(s(),n(H,{key:1},[y(m,{type:"submit",icon:"pi pi-save",label:"Salveaza",loading:v.value,form:"receipt-form"},null,8,["loading"]),k.value&&((Je=u.value)==null?void 0:Je.status)==="draft"?(s(),P(m,{key:0,type:"button",icon:"pi pi-send",label:"Trimite",severity:"success",loading:V.value,onClick:za},null,8,["loading"])):c("",!0)],64))]),y(q(Qe),{visible:pe.value,"onUpdate:visible":e[21]||(e[21]=i=>pe.value=i),header:"Furnizor Negasit",modal:!0,style:{width:"450px"}},{footer:_e(()=>[y(m,{label:"Anuleaza",severity:"secondary",onClick:ma}),y(m,{label:"Creaza Furnizor",icon:"pi pi-plus",onClick:ca})]),default:_e(()=>{var i;return[t("div",ns,[t("p",null,[e[62]||(e[62]=t("i",{class:"pi pi-exclamation-triangle",style:{color:"var(--orange-500)"}},null,-1)),e[63]||(e[63]=R(" Furnizorul cu CUI ",-1)),t("strong",null,p((i=B.value)==null?void 0:i.fiscal_code),1),e[64]||(e[64]=R(" nu a fost gasit in baza de date. ",-1))]),e[68]||(e[68]=t("p",null,"Doriti sa creati un furnizor local cu datele extrase din bon?",-1)),t("div",os,[e[65]||(e[65]=t("label",null,"Nume Furnizor",-1)),y(C,{modelValue:B.value.name,"onUpdate:modelValue":e[18]||(e[18]=x=>B.value.name=x),class:"w-full"},null,8,["modelValue"])]),t("div",rs,[e[66]||(e[66]=t("label",null,"CUI",-1)),y(C,{modelValue:B.value.fiscal_code,"onUpdate:modelValue":e[19]||(e[19]=x=>B.value.fiscal_code=x),class:"w-full",disabled:""},null,8,["modelValue"])]),t("div",us,[e[67]||(e[67]=t("label",null,"Adresa",-1)),y(C,{modelValue:B.value.address,"onUpdate:modelValue":e[20]||(e[20]=x=>B.value.address=x),class:"w-full"},null,8,["modelValue"])])])]}),_:1},8,["visible"]),y(q(Qe),{visible:ke.value,"onUpdate:visible":e[24]||(e[24]=i=>ke.value=i),header:"Respinge Bon",modal:!0,style:{width:"450px"}},{footer:_e(()=>[y(m,{label:"Anuleaza",severity:"secondary",onClick:e[23]||(e[23]=i=>ke.value=!1)}),y(m,{label:"Respinge",icon:"pi pi-times",severity:"danger",onClick:Ta,loading:Te.value,disabled:!re.value||re.value.length<5},null,8,["loading","disabled"])]),default:_e(()=>[t("div",ds,[e[70]||(e[70]=t("p",null,[t("i",{class:"pi pi-exclamation-triangle",style:{color:"var(--red-500)"}}),R(" Introduceti motivul respingerii bonului: ")],-1)),t("div",cs,[e[69]||(e[69]=t("label",null,"Motiv respingere *",-1)),y(Y,{modelValue:re.value,"onUpdate:modelValue":e[22]||(e[22]=i=>re.value=i),rows:"3",class:"w-full",placeholder:"Explicati de ce bonul este respins (minim 5 caractere)..."},null,8,["modelValue"])])])]),_:1},8,["visible"])])}}},ws=Ee(ms,[["__scopeId","data-v-7782ce9c"]]);export{ws as default};
//# sourceMappingURL=ReceiptCreateView.RpTqvOIL.js.map