import{l as Y,m as q,c as Q}from"./index.B8XI8FQW.js";import{a as g,u as X}from"./ocrSettingsStore.B3n_bOhs.js";import{N as x,a as v,j as b}from"./vendor-core.B6UiYhU_.js";const i={get:(e,t)=>g.get(`/receipts${e}`,t),post:(e,t,r)=>g.post(`/receipts${e}`,t,r),put:(e,t,r)=>g.put(`/receipts${e}`,t,r),delete:(e,t)=>g.delete(`/receipts${e}`,t)},Z=x("receipts",{state:()=>({receipts:[],currentReceipt:null,pendingReceipts:[],stats:null,processingStats:{pending_count:0,processing_count:0,completed_count:0,failed_count:0},loading:!1,error:null,pagination:{page:1,pageSize:20,total:0,pages:1},filters:{status:null,search:"",direction:null,dateFrom:null,dateTo:null,processingStatus:null},partners:[],accounts:[],cashRegisters:[],expenseTypes:[]}),getters:{hasReceipts:e=>e.receipts.length>0,hasPendingReceipts:e=>e.pendingReceipts.length>0,pendingCount:e=>e.pendingReceipts.length},actions:{async fetchReceipts(){var e,t;this.loading=!0,this.error=null;try{const r={page:this.pagination.page,page_size:this.pagination.pageSize};this.filters.status&&(r.status=this.filters.status),this.filters.search&&(r.search=this.filters.search),this.filters.direction&&(r.direction=this.filters.direction),this.filters.dateFrom&&(r.date_from=this.filters.dateFrom),this.filters.dateTo&&(r.date_to=this.filters.dateTo),this.filters.processingStatus&&(this.filters.processingStatus==="in_processing"?r.processing_status="pending,processing":r.processing_status=this.filters.processingStatus);const s=await i.get("/",{params:r});this.receipts=s.data.items,this.pagination.total=s.data.total,this.pagination.pages=s.data.pages,s.data.processing_stats&&(this.processingStats=s.data.processing_stats)}catch(r){throw this.error=((t=(e=r.response)==null?void 0:e.data)==null?void 0:t.detail)||"Failed to fetch receipts",r}finally{this.loading=!1}},async fetchReceiptById(e){var t,r;this.loading=!0,this.error=null;try{const s=await i.get(`/${e}`);return this.currentReceipt=s.data,s.data}catch(s){throw this.error=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to fetch receipt",s}finally{this.loading=!1}},async createReceipt(e){var t,r;this.loading=!0,this.error=null;try{return(await i.post("/",e)).data}catch(s){throw this.error=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to create receipt",s}finally{this.loading=!1}},async updateReceipt(e,t){var r,s;this.loading=!0,this.error=null;try{return(await i.put(`/${e}`,t)).data}catch(o){throw this.error=((s=(r=o.response)==null?void 0:r.data)==null?void 0:s.detail)||"Failed to update receipt",o}finally{this.loading=!1}},async deleteReceipt(e){var t,r;this.loading=!0,this.error=null;try{await i.delete(`/${e}`)}catch(s){throw this.error=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to delete receipt",s}finally{this.loading=!1}},async submitReceipt(e){var t,r;this.loading=!0,this.error=null;try{return(await i.post(`/${e}/submit`)).data}catch(s){throw this.error=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to submit receipt",s}finally{this.loading=!1}},async approveReceipt(e){var t,r;this.loading=!0,this.error=null;try{return(await i.post(`/${e}/approve`)).data}catch(s){throw this.error=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to approve receipt",s}finally{this.loading=!1}},async rejectReceipt(e,t){var r,s;this.loading=!0,this.error=null;try{return(await i.post(`/${e}/reject`,{reason:t})).data}catch(o){throw this.error=((s=(r=o.response)==null?void 0:r.data)==null?void 0:s.detail)||"Failed to reject receipt",o}finally{this.loading=!1}},async resubmitReceipt(e){var t,r;this.loading=!0,this.error=null;try{return(await i.post(`/${e}/resubmit`)).data}catch(s){throw this.error=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to resubmit receipt",s}finally{this.loading=!1}},async unapproveReceipt(e){var t,r;this.loading=!0,this.error=null;try{return(await i.post(`/${e}/unapprove`)).data}catch(s){throw this.error=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to unapprove receipt",s}finally{this.loading=!1}},async fetchPendingReceipts(){var e,t;this.loading=!0,this.error=null;try{const r=await i.get("/pending");return this.pendingReceipts=r.data,r.data}catch(r){throw this.error=((t=(e=r.response)==null?void 0:e.data)==null?void 0:t.detail)||"Failed to fetch pending receipts",r}finally{this.loading=!1}},async uploadAttachment(e,t){var s,o;const r=new FormData;r.append("file",t);try{return(await i.post(`/${e}/attachments`,r,{headers:{"Content-Type":"multipart/form-data"}})).data}catch(m){throw new Error(((o=(s=m.response)==null?void 0:s.data)==null?void 0:o.detail)||"Failed to upload attachment")}},async deleteAttachment(e){var t,r;try{await i.delete(`/attachments/${e}`)}catch(s){throw new Error(((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to delete attachment")}},getAttachmentUrl(e){return`/api/data-entry/receipts/attachments/${e}/download`},async fetchAttachmentBlob(e){try{const t=await g.get(`/receipts/attachments/${e}/download`,{responseType:"blob"});return URL.createObjectURL(t.data)}catch(t){return console.error("Failed to fetch attachment:",t),null}},async downloadAttachment(e,t){var r,s;try{const o=await g.get(`/receipts/attachments/${e}/download`,{responseType:"blob"}),m=URL.createObjectURL(o.data),y=document.createElement("a");return y.href=m,y.download=t||"attachment",document.body.appendChild(y),y.click(),document.body.removeChild(y),URL.revokeObjectURL(m),!0}catch(o){throw console.error("Failed to download attachment:",o),new Error(((s=(r=o.response)==null?void 0:r.data)==null?void 0:s.detail)||"Failed to download attachment")}},async fetchEntries(e){var t,r;try{return(await i.get(`/${e}/entries`)).data}catch(s){throw new Error(((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to fetch entries")}},async updateEntries(e,t){var r,s;try{return(await i.put(`/${e}/entries`,{entries:t})).data}catch(o){throw new Error(((s=(r=o.response)==null?void 0:r.data)==null?void 0:s.detail)||"Failed to update entries")}},async regenerateEntries(e){var t,r;try{return(await i.post(`/${e}/entries/regenerate`)).data}catch(s){throw new Error(((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to regenerate entries")}},async fetchPartners(e=""){try{const t=await i.get("/nomenclature/partners",{params:{search:e}});return this.partners=t.data,t.data}catch(t){return console.error("Failed to fetch partners:",t),[]}},async fetchAccounts(e=""){try{const t=await i.get("/nomenclature/accounts",{params:{prefix:e}});return this.accounts=t.data,t.data}catch(t){return console.error("Failed to fetch accounts:",t),[]}},async fetchCashRegisters(){try{const e=await i.get("/nomenclature/cash-registers");return this.cashRegisters=e.data,e.data}catch(e){return console.error("Failed to fetch cash registers:",e),[]}},async fetchExpenseTypes(){try{const e=await i.get("/nomenclature/expense-types");return this.expenseTypes=e.data,e.data}catch(e){return console.error("Failed to fetch expense types:",e),[]}},async fetchAllNomenclatures(){await Promise.all([this.fetchPartners(),this.fetchCashRegisters(),this.fetchExpenseTypes()])},async searchSupplier(e){try{return(await g.get("/nomenclature/suppliers/search",{params:{fiscal_code:e}})).data}catch(t){return console.error("Supplier search failed:",t),{found:!1,source:"error"}}},async createLocalSupplier(e){var t,r;try{const s=await g.post("/nomenclature/suppliers/local",e);return this.partners.push({id:s.data.id,name:s.data.name,fiscal_code:s.data.fiscal_code,address:s.data.address,source:"local"}),s.data}catch(s){throw new Error(((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Failed to create supplier")}},async syncSuppliers(){try{const e=await g.post("/nomenclature/sync/suppliers");return console.log("[receiptsStore] Synced suppliers:",e.data),await this.fetchPartners(),e.data}catch(e){throw console.error("[receiptsStore] Supplier sync failed:",e),e}},async fetchStats(){try{const e=await i.get("/stats");return this.stats=e.data,e.data}catch(e){return console.error("Failed to fetch stats:",e),null}},async retryReceipt(e){var t,r;try{return(await g.post(`/bulk/retry/${e}`)).data}catch(s){const o=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Eroare la reîncărcare";throw new Error(o)}},async retryBatchFailed(e){var t,r;try{return(await g.post(`/bulk/retry-batch/${e}`)).data}catch(s){const o=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Eroare la reîncărcarea batch-ului";throw new Error(o)}},async bulkDeleteReceipts(e){var t,r;try{return(await i.delete("/bulk",{data:{ids:e}})).data}catch(s){const o=((r=(t=s.response)==null?void 0:t.data)==null?void 0:r.detail)||"Eroare la ștergerea bonurilor";throw new Error(o)}},removeReceiptsLocally(e){const t=new Set(e);this.receipts=this.receipts.filter(r=>!t.has(r.id))},updateReceiptInPlace(e,t){const r=this.receipts.findIndex(s=>s.id===e);return r!==-1?(Object.assign(this.receipts[r],t),!0):!1},insertReceiptInPlace(e){const t=this.receipts.findIndex(r=>r.id===e.id);return t!==-1?(Object.assign(this.receipts[t],e),!0):(this.receipts.unshift(e),!0)},setFilters(e){this.filters={...this.filters,...e},this.pagination.page=1},clearFilters(){this.filters={status:null,search:"",direction:null,dateFrom:null,dateTo:null,processingStatus:null},this.pagination.page=1},setPage(e){this.pagination.page=e},clearCurrentReceipt(){this.currentReceipt=null}}}),F="roa2web_active_batch_ids";function C(){try{const e=localStorage.getItem(F);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch(e){return console.warn("[BatchProgress] Failed to read localStorage:",e),[]}}function E(e){try{e.length===0?localStorage.removeItem(F):localStorage.setItem(F,JSON.stringify(e))}catch(t){console.warn("[BatchProgress] Failed to save to localStorage:",t)}}function ee(e){const t=C();t.includes(e)||(t.push(e),E(t))}function w(e){const r=C().filter(s=>s!==e);E(r)}const te=x("batchProgress",()=>{const e=v(null),t=v(new Map),r=v(!1),s=v(null);let o=null,m=null;const y=b(()=>{let a=0;for(const n of t.value.values())n.status==="pending"&&a++;return a}),P=b(()=>{let a=0;for(const n of t.value.values())n.status==="processing"&&a++;return a}),A=b(()=>{let a=0;for(const n of t.value.values())n.status==="completed"&&a++;return a}),B=b(()=>{let a=0;for(const n of t.value.values())n.status==="failed"&&a++;return a}),_=b(()=>t.value.size),D=b(()=>{if(_.value===0)return 0;const a=A.value+B.value;return Math.round(a/_.value*100)}),L=b(()=>_.value===0?!1:y.value===0&&P.value===0),j=v(0),O=b(()=>Array.from(t.value.values()));async function M(a,n=null){if($(),e.value=a,t.value=new Map,s.value=null,r.value=!0,j.value=0,n&&Array.isArray(n))for(const p of n)t.value.set(p.job_id,{job_id:p.job_id,filename:p.filename,status:"pending",receipt_id:null,error_message:null,confidence:null});ee(a),o=new AbortController,await k()}function $(){r.value=!1,o&&(o.abort(),o=null)}async function k(){var a,n;for(;r.value&&e.value!==null;)try{const d=(await g.get(`/bulk/batches/${e.value}/status`,{params:{wait:30},signal:o==null?void 0:o.signal,timeout:35e3})).data,f=t.value,h=[],l=[],c=new Map;for(const u of d.jobs){const R=f.get(u.job_id),T=R==null?void 0:R.status;T&&T!==u.status&&(u.status==="completed"&&u.receipt_id?(h.push(u.receipt_id),console.log(`[BatchProgress] Job ${u.job_id} completed -> receipt ${u.receipt_id}`)):u.status==="failed"&&(l.push(u.job_id),console.log(`[BatchProgress] Job ${u.job_id} failed: ${u.error_message}`))),c.set(u.job_id,{job_id:u.job_id,filename:u.filename,status:u.status,receipt_id:u.receipt_id||null,error_message:u.error_message||null,confidence:u.confidence||null})}if(t.value=c,m&&(h.length>0||l.length>0)&&m(h,l),j.value=d.total_amount||0,s.value=null,d.completed_count+d.failed_count>=d.total_files){console.log("[BatchProgress] All jobs finished, stopping polling"),r.value=!1,e.value&&d.failed_count===0?(console.log("[BatchProgress] No failed jobs, removing batch from storage"),w(e.value)):d.failed_count>0&&console.log(`[BatchProgress] Batch has ${d.failed_count} failed jobs, keeping in storage for retry`);break}}catch(p){if(p.name==="AbortError"||p.code==="ERR_CANCELED"){console.log("[BatchProgress] Polling aborted");break}console.error("[BatchProgress] Polling error:",p),s.value=((n=(a=p.response)==null?void 0:a.data)==null?void 0:n.detail)||p.message||"Failed to fetch batch status",await G(2e3)}}function N(){$(),e.value=null,t.value=new Map,s.value=null,j.value=0}function U(){return C()}function z(a){w(a)}function J(){if(t.value.size===0)return!0;for(const a of t.value.values())if(a.status==="failed")return!1;return!0}function I(){J()&&e.value&&(console.log("[BatchProgress] No failed jobs remain, clearing batch from storage"),w(e.value))}function W(){E([])}function G(a){return new Promise(n=>setTimeout(n,a))}async function H(a){var n;try{console.log(`[BatchProgress] Restoring jobs from batch ${a}`);const d=(await g.get(`/bulk/batches/${a}/status`,{params:{wait:0},timeout:1e4})).data;if(!d.jobs||d.jobs.length===0)return console.log(`[BatchProgress] Batch ${a} has no jobs, removing from storage`),w(a),{hasActiveJobs:!1,jobCount:0,hasFailedJobs:!1};const f=d.jobs.filter(c=>c.status==="pending"||c.status==="processing"||c.status==="failed"),h=d.jobs.filter(c=>c.status==="pending"||c.status==="processing"),l=d.jobs.filter(c=>c.status==="failed");if(f.length===0)return console.log(`[BatchProgress] Batch ${a} has no jobs to restore (all completed), removing from storage`),w(a),{hasActiveJobs:!1,jobCount:0,hasFailedJobs:!1};e.value=a;for(const c of f)t.value.set(c.job_id,{job_id:c.job_id,filename:c.filename,status:c.status,receipt_id:c.receipt_id||null,error_message:c.error_message||null,confidence:c.confidence||null});return console.log(`[BatchProgress] Restored ${f.length} jobs from batch ${a} (${h.length} active, ${l.length} failed)`),h.length>0&&!r.value&&(r.value=!0,o=new AbortController,k()),{hasActiveJobs:h.length>0,jobCount:f.length,hasFailedJobs:l.length>0}}catch(p){return console.error(`[BatchProgress] Error restoring batch ${a}:`,p),((n=p.response)==null?void 0:n.status)===404&&(console.log(`[BatchProgress] Batch ${a} not found, removing from storage`),w(a)),{hasActiveJobs:!1,jobCount:0,hasFailedJobs:!1}}}async function K(a){var n,p,d,f;try{const l=(await g.post(`/bulk/cancel/${a}`)).data;return l.success?(t.value.delete(a),console.log(`[BatchProgress] Job ${a} cancelled successfully`),{success:!0,message:l.message||"Job anulat cu succes"}):{success:!1,message:l.message||"Eroare la anularea job-ului"}}catch(h){return console.error("[BatchProgress] Error cancelling job:",h),{success:!1,message:((p=(n=h.response)==null?void 0:n.data)==null?void 0:p.detail)||((f=(d=h.response)==null?void 0:d.data)==null?void 0:f.message)||h.message||"Eroare la anularea job-ului"}}}async function V(a){var n,p,d,f;try{const l=(await g.post(`/bulk/cancel-batch/${a}`)).data;if(l.success){const c=[];for(const[S,u]of t.value.entries())(u.status==="pending"||u.status==="processing")&&c.push(S);for(const S of c)t.value.delete(S);return console.log(`[BatchProgress] Batch ${a} cancelled: ${l.cancelled_count} cancelled, ${l.skipped_count} skipped`),{success:!0,message:l.message||`${l.cancelled_count} job-uri anulate`,cancelledCount:l.cancelled_count,skippedCount:l.skipped_count}}return{success:!1,message:l.message||"Eroare la anularea batch-ului",cancelledCount:0,skippedCount:0}}catch(h){return console.error("[BatchProgress] Error cancelling batch:",h),{success:!1,message:((p=(n=h.response)==null?void 0:n.data)==null?void 0:p.detail)||((f=(d=h.response)==null?void 0:d.data)==null?void 0:f.message)||h.message||"Eroare la anularea batch-ului",cancelledCount:0,skippedCount:0}}}return{batchId:e,jobs:t,isPolling:r,error:s,pendingCount:y,processingCount:P,completedCount:A,failedCount:B,totalCount:_,progress:D,isComplete:L,totalAmount:j,jobsArray:O,startPolling:M,stopPolling:$,reset:N,getStoredBatchIds:U,clearStoredBatch:z,clearAllStoredBatches:W,shouldClearBatch:J,clearBatchIfNoFailedJobs:I,restoreJobsFromBatch:H,cancelJob:K,cancelBatch:V,setOnJobsTransitionCallback:a=>{m=a}}}),se=(e={})=>{const{username:t,serverId:r}=e;console.log("[DataEntry] Resetting all stores on logout...",{username:t,serverId:r});try{const s=Z();s.$reset&&s.$reset()}catch(s){console.warn("[DataEntry] Could not reset receipts store:",s.message)}try{const s=te();s.reset&&s.reset()}catch(s){console.warn("[DataEntry] Could not reset batch progress store:",s.message)}try{const s=X();s.$reset&&s.$reset()}catch(s){console.warn("[DataEntry] Could not reset OCR settings store:",s.message)}try{const s=ae();s.resetWithContext&&t?s.resetWithContext(t,r):s.reset&&s.reset()}catch(s){console.warn("[DataEntry] Could not reset company store:",s.message)}try{const s=oe();s.reset&&s.reset()}catch(s){console.warn("[DataEntry] Could not reset period store:",s.message)}console.log("[DataEntry] All stores reset complete")},re=Q(g,{onLogout:se}),ae=Y(g,re),oe=q(g);export{ae as a,oe as b,te as c,re as d,Z as u}; //# sourceMappingURL=sharedStores.D4bwf0TZ.js.map