Fresh release output after merging dev: apps/api/release (server bundle, migrations and the database client) and the three front-end dist folders. All three front-ends type-check clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 lines
43 KiB
JavaScript
2 lines
43 KiB
JavaScript
import{m as qe}from"./index-FKca-jp6.js";import{c as a,I as pt,d as mt,m as Je,o as n,b as c,n as o,a as O,g as xt,f as v,t as m,w as l,i as y,F as D,e as we,s as Ge,h as Ue,B as Nt,p as $,y as le,l as U,x as A,z as B,r as _,C as dt,G as Ut,u as Tt,v as Dt}from"./index-DDKWZYPX.js";import{S as Ke}from"./SafetyCertificateOutlined-B88f1GF9.js";import{_ as ft}from"./_plugin-vue_export-helper-DlAUqK2U.js";var It={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 10-56 0z"}}]},name:"lock",theme:"outlined"};function vt(f){for(var x=1;x<arguments.length;x++){var d=arguments[x]!=null?Object(arguments[x]):{},z=Object.keys(d);typeof Object.getOwnPropertySymbols=="function"&&(z=z.concat(Object.getOwnPropertySymbols(d).filter(function(R){return Object.getOwnPropertyDescriptor(d,R).enumerable}))),z.forEach(function(R){$t(f,R,d[R])})}return f}function $t(f,x,d){return x in f?Object.defineProperty(f,x,{value:d,enumerable:!0,configurable:!0,writable:!0}):f[x]=d,f}var Qe=function(x,d){var z=vt({},x,d.attrs);return a(pt,vt({},z,{icon:It}),null)};Qe.displayName="LockOutlined";Qe.inheritAttrs=!1;var Mt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z"}}]},name:"minus-circle",theme:"filled"};function ct(f){for(var x=1;x<arguments.length;x++){var d=arguments[x]!=null?Object(arguments[x]):{},z=Object.keys(d);typeof Object.getOwnPropertySymbols=="function"&&(z=z.concat(Object.getOwnPropertySymbols(d).filter(function(R){return Object.getOwnPropertyDescriptor(d,R).enumerable}))),z.forEach(function(R){zt(f,R,d[R])})}return f}function zt(f,x,d){return x in f?Object.defineProperty(f,x,{value:d,enumerable:!0,configurable:!0,writable:!0}):f[x]=d,f}var Le=function(x,d){var z=ct({},x,d.attrs);return a(pt,ct({},z,{icon:Mt}),null)};Le.displayName="MinusCircleFilled";Le.inheritAttrs=!1;const Rt={class:"conn"},jt={class:"status__body"},At={class:"status__title"},Gt={key:0,class:"status__text"},Lt={key:1,class:"kv status__rows"},Pt=["dir"],Bt={class:"step"},Vt={class:"choices",role:"radiogroup"},Wt=["aria-checked","onClick"],Ft={class:"choice__name"},Yt={class:"choice__desc"},Ht={class:"step"},Kt={class:"step__title"},qt={class:"help"},Jt={key:0,class:"token"},Qt={key:0},Zt={key:1,class:"text-danger"},Xt={class:"help"},ea={key:0,class:"step"},ta={class:"step__lead"},aa={key:0,class:"cert cert--ok"},la={class:"cert__body"},sa={class:"cert__title"},na={key:0,class:"kv"},oa={dir:"ltr",class:"latin"},ia={dir:"ltr",class:"mono"},ra={key:1,class:"help"},ua={key:1,class:"cert cert--ask"},da={class:"cert__body"},va={class:"kv"},ca={dir:"ltr",class:"latin"},pa={dir:"ltr",class:"mono"},ma={key:2,class:"cert cert--ok"},fa={key:3,class:"cert"},ba={key:1,class:"step"},_a={class:"kv kv--inline"},ya=["dir"],ka={key:0,class:"text-danger mt"},ga={class:"latin"},Ca={class:"latin"},wa={key:1,class:"help"},Ea={key:0,class:"help"},Oa={class:"bar"},ha={class:"bar__note"},Sa=mt({__name:"AccountingConnection",props:{overview:{},form:{},tokens:{},saving:{type:Boolean}},emits:["save","clearToken"],setup(f,{emit:x}){const d=f,z=x,R={tahesab:"تهحساب",zarrin:"زرین"},Pe=[{value:"none",label:"بدون اتصال",desc:"هیچ اطلاعاتی با حسابداری رد و بدل نمیشود."},{value:"tahesab",label:"تهحساب",desc:"اتصال به وبسرویس نرمافزار تهحساب."},{value:"zarrin",label:"زرین",desc:"اتصال به وبسرویس نرمافزار زرین."}],i=$(()=>d.form.provider==="none"?null:d.form.provider),J=$(()=>{var r;return((r=d.overview)==null?void 0:r.config)??null}),F=r=>{var e;return(e=J.value)==null?void 0:e[r]},se=$(()=>{var r;return!!(i.value&&((r=F(i.value))!=null&&r.tokenSet))}),h=$(()=>!!i.value&&/^https:\/\//i.test(d.form[i.value].baseUrl||"")),p=(r,e)=>{var C,k,N,I,ee;return JSON.stringify(e==="none"?{provider:e}:{provider:e,baseUrl:((C=r[e])==null?void 0:C.baseUrl)??"",caCert:((k=r[e])==null?void 0:k.caCert)??"",timeoutMs:(N=r[e])==null?void 0:N.timeoutMs,dbName:e==="tahesab"?(I=r.tahesab)==null?void 0:I.dbName:void 0,balanceOwesWhen:e==="zarrin"?(ee=r.zarrin)==null?void 0:ee.balanceOwesWhen:void 0})},Q=$(()=>{var r;return J.value?d.form.provider!==J.value.provider?!0:i.value?p(d.form,i.value)!==p(J.value,i.value)||!!((r=d.tokens[i.value])!=null&&r.trim()):!1:!1}),Te=$(()=>!!J.value&&J.value.provider!=="none"&&J.value.provider!==d.form.provider),ce=r=>r?qe(r).format("jYYYY/jMM/jDD ساعت HH:mm"):"",G=$(()=>{const r=d.overview;if(!r)return{tone:"off",icon:Le,title:"…",text:"",rows:[]};const e=r.config;if(e.provider==="none")return{tone:"off",icon:Le,title:"اتصال خاموش است",text:"هیچ اطلاعاتی با نرمافزار حسابداری رد و بدل نمیشود."};const C=R[e.provider];if(r.inactiveReason)return{tone:"bad",icon:dt,title:`اتصال به ${C} کار نمیکند`,text:r.inactiveReason};const k=r.realtime;if(k!=null&&k.lastError)return{tone:"bad",icon:dt,title:`${C}: ارتباط برقرار نیست`,text:k.lastError};const I=[{label:"آدرس",value:e[e.provider].baseUrl,ltr:!0}];return e.provider==="tahesab"&&I.push({label:"دیتابیس",value:e.tahesab.dbName,ltr:!0}),k!=null&&k.lastOkAt&&I.push({label:"آخرین ارتباط موفق",value:ce(k.lastOkAt)}),{tone:"ok",icon:Ut,title:`متصل به ${C}`,text:"",rows:I}}),Z=le({tahesab:!1,zarrin:!1});function pe(){i.value&&(d.tokens[i.value]="",Z[i.value]=!1)}Je(()=>d.overview,()=>{Z.tahesab=!1,Z.zarrin=!1,S.value=null});const me=$({get:()=>i.value?Math.round((d.form[i.value].timeoutMs??2e4)/1e3):20,set:r=>{i.value&&(d.form[i.value].timeoutMs=Math.max(3,Math.min(120,Number(r)||20))*1e3)}}),Y=U(!1),S=U(null),fe=r=>{var e;return((e=r.match(/CN=([^\n,]+)/))==null?void 0:e[1])??r.replace(/\n/g,", ")},ne=r=>r?qe(new Date(r)).format("jYYYY/jMM/jDD"):"—",oe=$(()=>{var r;return!!i.value&&(d.form[i.value].caCert||"")!==(((r=F(i.value))==null?void 0:r.caCert)||"")}),H=$(()=>{var r;return i.value?oe.value?S.value&&S.value.pem===d.form[i.value].caCert?S.value:null:((r=F(i.value))==null?void 0:r.caInfo)??null:null});async function ie(){var r,e;if(i.value){Y.value=!0;try{const{data:C}=await A.post("admin/accounting/certificate",{baseUrl:d.form[i.value].baseUrl});S.value=C,d.form[i.value].caCert&&C.pem.trim()===d.form[i.value].caCert.trim()?B.success("گواهی سرور همان گواهی تأییدشده است"):d.form[i.value].caCert&&(d.form[i.value].caCert="")}catch(C){B.error(((e=(r=C==null?void 0:C.response)==null?void 0:r.data)==null?void 0:e.message)??"گواهی دریافت نشد")}finally{Y.value=!1}}}function X(){!i.value||!S.value||(d.form[i.value].caCert=S.value.pem)}const be=U(!1),j=U(null),De=U(""),Ie=()=>i.value?JSON.stringify([d.form.provider,d.form[i.value],d.tokens[i.value]]):"",$e=$(()=>!!j.value&&De.value!==Ie()),Be=$(()=>{var r;return!!i.value&&!!d.form[i.value].baseUrl&&(se.value||!!((r=d.tokens[i.value])!=null&&r.trim()))});Je(i,()=>j.value=null);async function re(){var e,C;if(!i.value)return;const r=i.value;be.value=!0;try{const k={baseUrl:d.form[r].baseUrl,timeoutMs:d.form[r].timeoutMs,caCert:d.form[r].caCert,token:d.tokens[r]||void 0};r==="tahesab"?k.dbName=d.form.tahesab.dbName:k.balanceOwesWhen=d.form.zarrin.balanceOwesWhen,De.value=Ie();const{data:N}=await A.post("admin/accounting/test",{provider:r,connection:k});j.value=N}catch(k){const N=(C=(e=k==null?void 0:k.response)==null?void 0:e.data)==null?void 0:C.message;j.value={ok:!1,error:Array.isArray(N)?N.join("، "):N??"خطا در تست اتصال"}}finally{be.value=!1}}const Ve={version:{label:"نسخه",ltr:!0},dbType:{label:"نوع دیتابیس",ltr:!0},dbName:{label:"دیتابیس",ltr:!0},customerGroups:{label:"گروههای حساب"},message:{label:"پیام سرور"}},K=$(()=>{var C,k;const r=((C=j.value)==null?void 0:C.info)??{},e=Object.entries(Ve).filter(([N])=>r[N]!==void 0&&r[N]!==null&&r[N]!=="").map(([N,I])=>({label:I.label,value:String(r[N]),ltr:I.ltr}));return e.push({label:"زمان پاسخ",value:`${(((k=j.value)==null?void 0:k.ms)??0).toLocaleString("fa-IR")} میلیثانیه`,ltr:!1}),e}),Ee=$(()=>{var r,e;return i.value==="tahesab"&&!!((e=(r=j.value)==null?void 0:r.info)!=null&&e.dbName)&&String(j.value.info.dbName).toLowerCase()!==String(d.form.tahesab.dbName||"").toLowerCase()});return(r,e)=>{var Se,Re,te;const C=_("a-tag"),k=_("a-alert"),N=_("a-input"),I=_("a-form-item"),ee=_("a-select-option"),Oe=_("a-select"),L=_("a-button"),he=_("a-popconfirm"),V=_("a-space"),Me=_("a-input-password"),q=_("a-form"),ze=_("a-input-number"),ue=_("a-collapse-panel"),_e=_("a-collapse"),We=_("a-textarea");return n(),c("div",Rt,[o("div",{class:Ge(["status",`status--${G.value.tone}`])},[(n(),O(xt(G.value.icon),{class:"status__icon"})),o("div",jt,[o("div",At,[v(m(G.value.title)+" ",1),Q.value?(n(),O(C,{key:0,color:"orange",class:"status__tag"},{default:l(()=>[...e[11]||(e[11]=[v("تغییرات ذخیره نشده",-1)])]),_:1})):y("",!0)]),G.value.text?(n(),c("div",Gt,m(G.value.text),1)):y("",!0),(Se=G.value.rows)!=null&&Se.length?(n(),c("dl",Lt,[(n(!0),c(D,null,we(G.value.rows,b=>(n(),c(D,{key:b.label},[o("dt",null,m(b.label),1),o("dd",{dir:b.ltr?"ltr":void 0,class:Ge({latin:b.ltr})},m(b.value),11,Pt)],64))),128))])):y("",!0)])],2),o("section",Bt,[e[14]||(e[14]=o("h3",{class:"step__title"},[o("span",{class:"step__no"},"۱"),v("نرمافزار حسابداری")],-1)),o("div",Vt,[(n(),c(D,null,we(Pe,b=>o("button",{key:b.value,type:"button",role:"radio","aria-checked":f.form.provider===b.value,class:Ge(["choice",{"choice--on":f.form.provider===b.value}]),onClick:ye=>f.form.provider=b.value},[e[13]||(e[13]=o("span",{class:"choice__dot"},null,-1)),o("span",Ft,[v(m(b.label)+" ",1),b.value==="zarrin"?(n(),O(C,{key:0,color:"gold",class:"choice__tag"},{default:l(()=>[...e[12]||(e[12]=[v("آزمودهنشده",-1)])]),_:1})):y("",!0)]),o("span",Yt,m(b.desc),1)],10,Wt)),64))]),Te.value?(n(),O(k,{key:0,class:"mt",type:"info","show-icon":"",message:"با ذخیره، نرمافزار عوض میشود",description:"کارهای در صف نرمافزار قبلی متوقف میمانند (پاک نمیشوند) و لینکهای هر نرمافزار جدا نگه داشته میشوند؛ برگشت بیخطر است."})):y("",!0)]),i.value?(n(),c(D,{key:0},[o("section",Ht,[o("h3",Kt,[e[15]||(e[15]=o("span",{class:"step__no"},"۲",-1)),v("اطلاعات اتصال به "+m(R[i.value]),1)]),a(q,{layout:"vertical",class:"grid"},{default:l(()=>[a(I,{label:"آدرس وبسرویس",required:""},{default:l(()=>[a(N,{value:f.form[i.value].baseUrl,"onUpdate:value":e[0]||(e[0]=b=>f.form[i.value].baseUrl=b),dir:"ltr",class:"ltr",placeholder:i.value==="tahesab"?"https://192.168.1.10:8081":"http://192.168.1.10:8000/ZarrinService/accounting"},null,8,["value","placeholder"]),o("div",qt,"آدرسی که وبسرویس "+m(R[i.value])+" روی آن در دسترس است، با پورت.",1)]),_:1}),i.value==="tahesab"?(n(),O(I,{key:0,label:"نام دیتابیس (DBname)",required:""},{default:l(()=>[a(N,{value:f.form.tahesab.dbName,"onUpdate:value":e[1]||(e[1]=b=>f.form.tahesab.dbName=b),dir:"ltr",class:"ltr",placeholder:"TahesabDB"},null,8,["value"]),e[16]||(e[16]=o("div",{class:"help"},"نام دقیق دیتابیس همین شرکت. یک سرور ممکن است چند دیتابیس داشته باشد؛ بعد از تست، نام را در نتیجه چک کنید.",-1))]),_:1})):(n(),O(I,{key:1,label:"علامت ماندهی بدهکار"},{default:l(()=>[a(Oe,{value:f.form.zarrin.balanceOwesWhen,"onUpdate:value":e[2]||(e[2]=b=>f.form.zarrin.balanceOwesWhen=b)},{default:l(()=>[a(ee,{value:"negative"},{default:l(()=>[...e[17]||(e[17]=[v("منفی یعنی بدهکار",-1)])]),_:1}),a(ee,{value:"positive"},{default:l(()=>[...e[18]||(e[18]=[v("مثبت یعنی بدهکار",-1)])]),_:1})]),_:1},8,["value"]),e[19]||(e[19]=o("div",{class:"help"},"در دورهی آزمایشی با یک حساب نمونه بررسی شود.",-1))]),_:1})),a(I,{label:"توکن وبسرویس",required:"",class:"grid__full"},{default:l(()=>{var b;return[se.value&&!Z[i.value]?(n(),c("div",Jt,[a(Ue(Qe),{class:"token__icon"}),(b=F(i.value))!=null&&b.tokenReadable?(n(),c("span",Qt,"توکن ذخیره شده است و نمایش داده نمیشود.")):(n(),c("span",Zt,"توکن ذخیرهشده قابلخواندن نیست؛ دوباره وارد کنید.")),a(V,{class:"token__actions"},{default:l(()=>[a(L,{size:"small",onClick:e[3]||(e[3]=ye=>Z[i.value]=!0)},{default:l(()=>[...e[20]||(e[20]=[v("تغییر توکن",-1)])]),_:1}),a(he,{title:"توکن حذف شود؟ تا توکن جدید وارد نشود اتصال کار نمیکند.","ok-text":"حذف","cancel-text":"انصراف",onConfirm:e[4]||(e[4]=ye=>z("clearToken",i.value))},{default:l(()=>[a(L,{size:"small",danger:""},{default:l(()=>[...e[21]||(e[21]=[v("حذف",-1)])]),_:1})]),_:1})]),_:1})])):(n(),c(D,{key:1},[a(Me,{value:f.tokens[i.value],"onUpdate:value":e[5]||(e[5]=ye=>f.tokens[i.value]=ye),dir:"ltr",class:"ltr",autocomplete:"new-password",placeholder:"توکن را اینجا وارد کنید"},null,8,["value"]),o("div",Xt,[e[22]||(e[22]=v(" بعد از ذخیره، توکن رمز میشود و دیگر نمایش داده نمیشود. ",-1)),se.value?(n(),c("a",{key:0,class:"link",onClick:pe},"انصراف و نگهداشتن توکن فعلی")):y("",!0)])],64))]}),_:1})]),_:1}),a(_e,{ghost:"",class:"advanced"},{default:l(()=>[a(ue,{key:"adv",header:"تنظیمات پیشرفته"},{default:l(()=>[a(q,{layout:"vertical"},{default:l(()=>[a(I,{label:"حداکثر زمان انتظار برای پاسخ"},{default:l(()=>[a(ze,{value:me.value,"onUpdate:value":e[6]||(e[6]=b=>me.value=b),min:3,max:120,"addon-after":"ثانیه"},null,8,["value"]),e[23]||(e[23]=o("div",{class:"help"},"اگر سرور حسابداری کند است بیشترش کنید. پیشفرض ۲۰ ثانیه.",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),h.value?(n(),c("section",ea,[e[42]||(e[42]=o("h3",{class:"step__title"},[o("span",{class:"step__no"},"۳"),v("گواهی امنیتی سرور")],-1)),o("p",ta," اتصال همیشه رمزنگاریشده و بررسیشده است. نصبهای معمول "+m(R[i.value])+" گواهی خودساخته دارند؛ در این حالت یک بار گواهی سرور را بررسی و تأیید کنید. ",1),f.form[i.value].caCert?(n(),c("div",aa,[a(Ue(Ke),{class:"cert__icon"}),o("div",la,[o("div",sa,[e[26]||(e[26]=v(" گواهی سرور تأیید شده است ",-1)),oe.value?(n(),O(C,{key:0,color:"orange"},{default:l(()=>[...e[24]||(e[24]=[v("ذخیره نشده",-1)])]),_:1})):y("",!0),(Re=H.value)!=null&&Re.expired?(n(),O(C,{key:1,color:"red"},{default:l(()=>[...e[25]||(e[25]=[v("منقضی شده",-1)])]),_:1})):y("",!0)]),H.value?(n(),c("dl",na,[e[27]||(e[27]=o("dt",null,"صادرشده برای",-1)),o("dd",oa,m(fe(H.value.subject)),1),e[28]||(e[28]=o("dt",null,"معتبر تا",-1)),o("dd",null,m(ne(H.value.validTo)),1),e[29]||(e[29]=o("dt",null,"اثرانگشت",-1)),o("dd",ia,m(H.value.fingerprint256),1)])):(n(),c("div",ra,"مشخصات گواهی بعد از ذخیره نمایش داده میشود."))]),a(V,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{size:"small",loading:Y.value,onClick:ie},{default:l(()=>[...e[30]||(e[30]=[v("بررسی دوباره",-1)])]),_:1},8,["loading"]),a(L,{size:"small",danger:"",onClick:e[7]||(e[7]=b=>f.form[i.value].caCert="")},{default:l(()=>[...e[31]||(e[31]=[v("برداشتن",-1)])]),_:1})]),_:1})])):S.value&&!S.value.trustedBySystem?(n(),c("div",ua,[a(Ue(Nt),{class:"cert__icon"}),o("div",da,[e[35]||(e[35]=o("div",{class:"cert__title"},"این گواهی را تأیید میکنید؟",-1)),e[36]||(e[36]=o("div",{class:"help"},"اثرانگشت زیر را با گواهی نصبشده روی سرور حسابداری مقایسه کنید. اگر یکی است تأیید کنید.",-1)),o("dl",va,[e[32]||(e[32]=o("dt",null,"صادرشده برای",-1)),o("dd",ca,m(fe(S.value.subject)),1),e[33]||(e[33]=o("dt",null,"معتبر تا",-1)),o("dd",null,m(ne(S.value.validTo)),1),e[34]||(e[34]=o("dt",null,"اثرانگشت",-1)),o("dd",pa,m(S.value.fingerprint256),1)]),S.value.expired?(n(),O(k,{key:0,type:"error","show-icon":"",message:"این گواهی منقضی شده است.",class:"mt"})):y("",!0)]),a(V,{direction:"vertical",class:"cert__actions"},{default:l(()=>[a(L,{type:"primary",size:"small",onClick:X},{default:l(()=>[...e[37]||(e[37]=[v("تأیید گواهی",-1)])]),_:1}),a(L,{size:"small",onClick:e[8]||(e[8]=b=>S.value=null)},{default:l(()=>[...e[38]||(e[38]=[v("انصراف",-1)])]),_:1})]),_:1})])):(te=S.value)!=null&&te.trustedBySystem?(n(),c("div",ma,[a(Ue(Ke),{class:"cert__icon"}),e[39]||(e[39]=o("div",{class:"cert__body"},[o("div",{class:"cert__title"},"گواهی سرور معتبر است"),o("div",{class:"help"},"این سرور گواهی معتبر عمومی دارد؛ کاری لازم نیست.")],-1))])):(n(),c("div",fa,[a(Ue(Ke),{class:"cert__icon cert__icon--muted"}),e[41]||(e[41]=o("div",{class:"cert__body"},[o("div",{class:"cert__title"},"گواهیای تأیید نشده"),o("div",{class:"help"},"اگر «تست اتصال» خطای گواهی داد، اینجا گواهی سرور را بررسی کنید.")],-1)),a(L,{loading:Y.value,disabled:!f.form[i.value].baseUrl,onClick:ie},{default:l(()=>[...e[40]||(e[40]=[v("بررسی گواهی سرور",-1)])]),_:1},8,["loading","disabled"])])),a(_e,{ghost:"",class:"advanced"},{default:l(()=>[a(ue,{key:"pem",header:"وارد کردن دستی گواهی (PEM)"},{default:l(()=>[a(We,{value:f.form[i.value].caCert,"onUpdate:value":e[9]||(e[9]=b=>f.form[i.value].caCert=b),dir:"ltr",class:"ltr mono",rows:5,placeholder:"-----BEGIN CERTIFICATE-----"},null,8,["value"])]),_:1})]),_:1})])):y("",!0)],64)):y("",!0),i.value&&j.value?(n(),c("section",ba,[j.value.ok?(n(),O(k,{key:0,type:"success","show-icon":"",message:`اتصال به ${R[i.value]} برقرار است`},{description:l(()=>[o("dl",_a,[(n(!0),c(D,null,we(K.value,b=>(n(),c(D,{key:b.label},[o("dt",null,m(b.label),1),o("dd",{dir:b.ltr?"ltr":void 0,class:Ge({latin:b.ltr})},m(b.value),11,ya)],64))),128))]),Ee.value?(n(),c("div",ka,[e[43]||(e[43]=v(" دیتابیسی که وصل شد ",-1)),o("bdi",ga,m(j.value.info.dbName),1),e[44]||(e[44]=v(" است، نه ",-1)),o("bdi",Ca,m(f.form.tahesab.dbName),1),e[45]||(e[45]=v(". نام دیتابیس را چک کنید. ",-1))])):y("",!0),$e.value?(n(),c("div",wa,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):y("",!0)]),_:1},8,["message"])):(n(),O(k,{key:1,type:"error","show-icon":"",message:"اتصال برقرار نشد"},{description:l(()=>[o("div",null,m(j.value.error),1),$e.value?(n(),c("div",Ea,"این نتیجه برای مقادیر قبلی است؛ دوباره تست کنید.")):y("",!0)]),_:1}))])):y("",!0),o("div",Oa,[o("span",ha,[Q.value?(n(),c(D,{key:0},[v("تغییرات هنوز ذخیره نشدهاند.")],64)):i.value?(n(),c(D,{key:1},[v("«تست اتصال» مقادیر همین فرم را امتحان میکند، حتی پیش از ذخیره.")],64)):y("",!0)]),a(V,null,{default:l(()=>[i.value?(n(),O(L,{key:0,loading:be.value,disabled:!Be.value,onClick:re},{default:l(()=>[...e[46]||(e[46]=[v("تست اتصال",-1)])]),_:1},8,["loading","disabled"])):y("",!0),a(L,{type:"primary",loading:f.saving,disabled:!Q.value,onClick:e[10]||(e[10]=b=>z("save"))},{default:l(()=>[...e[47]||(e[47]=[v("ذخیره",-1)])]),_:1},8,["loading","disabled"])]),_:1})])])}}}),xa=ft(Sa,[["__scopeId","data-v-a32bb40e"]]),Na={key:0},Ua={key:0},Ta={key:1},Da={key:2,class:"warn"},Ia={key:2},$a={key:0,class:"hint"},Ma={key:0,class:"warn"},za={key:1},Ra={class:"grid-2 mt-4"},ja={class:"grid-2"},Aa={class:"grid-2"},Ga={key:1,class:"hint mb-4"},La={key:0,class:"hint"},Pa={key:4,class:"warn small"},Ba={class:"grid-2"},Va={dir:"ltr"},Wa={dir:"ltr"},Fa={class:"hint"},Ya=mt({__name:"accounting",setup(f){const x=Tt(),d=s=>!!x.hasPermission(s),z={PENDING:"در صف",SENDING:"در حال ارسال",SENT:"ارسال شد",FAILED:"ناموفق",NEEDS_REVIEW:"نیاز به بررسی",RESOLVED:"حلشده"},R={PENDING:"default",SENDING:"processing",SENT:"success",FAILED:"error",NEEDS_REVIEW:"warning",RESOLVED:"default"},Pe={CUSTOMER_PUSH:"ارسال مشتری",PRODUCT_PUSH:"ساخت کارساخته",ORDER_DOCUMENT:"سند سفارش",ORDER_DOCUMENT_DELETE:"حذف سند سفارش"},i={CUSTOMER_NO_MOBILE:"حساب بدون موبایل",CUSTOMER_DUPLICATE_MOBILE:"موبایل تکراری",CUSTOMER_LINK_CONFLICT:"تداخل لینک",PRODUCT_DUPLICATE_TITLE:"عنوان تکراری محصول",PRODUCT_CODE_TAKEN:"کد محصول تکراری"},J={LINKED:"جفت با موبایل/نام",IMPORTED:"وارد شده از حسابداری",PUSHED:"ساخته شده از اپ",MANUAL:"دستی"},F=U(!1),se=U("connection"),h=U(null),p=le({provider:"none",tahesab:{baseUrl:"",dbName:"TahesabDB",timeoutMs:2e4,caCert:""},zarrin:{baseUrl:"",balanceOwesWhen:"negative",timeoutMs:2e4,caCert:""},features:{customers:!1,balances:!1,report:!1,products:!1,documents:!1},intervals:{customersMinutes:60,balancesMinutes:10,productsMinutes:30},mapping:{karat:750},report:{windowDays:365},documents:{triggerStatus:"DELIVERED_TO_AGENT"}}),Q=le({tahesab:"",zarrin:""}),Te=U("none"),ce=$(()=>Te.value!=="none"),G=le({customerGroups:[],karSakhteGroups:[],karSakhteTypes:[]}),Z=U([]),pe=U([]),me=U(!1),Y=s=>s?`${s.id}|${s.name}`:void 0,S=s=>{if(!s)return null;const t=s.indexOf("|");return{id:s.slice(0,t),name:s.slice(t+1)}},fe=(s,t)=>{const g=[...s];for(const w of t)w&&!g.some(W=>W.id===w.id&&W.name===w.name)&&g.push(w);return g.map(w=>({value:Y(w),label:w.id?`${w.name} (${w.id})`:w.name}))},ne=U([]),oe=U(),H=U(),ie=U(),X=le({}),be=$(()=>fe(G.customerGroups,[...ne.value.map(S),S(oe.value)])),j=$(()=>fe(G.karSakhteGroups,[S(H.value),...Object.values(X).map(S)])),De=$(()=>fe(G.karSakhteTypes,[S(ie.value)])),Ie=[{value:"PLACED",label:"ثبت سفارش"},{value:"ADMIN_APPROVED",label:"تأیید مدیر"},{value:"SOURCING",label:"در حال تأمین"},{value:"PREPARING",label:"در حال آمادهسازی"},{value:"DELIVERED_TO_AGENT",label:"تحویل مسئول فروش"},{value:"DELIVERED_TO_CUSTOMER",label:"تحویل مشتری"}],$e=[{key:"customers",label:"سینک مشتریان (ورود/لینک با موبایل، ساخت پس از احراز هویت)",interval:"customersMinutes",job:"customers"},{key:"balances",label:"سینک مانده (نمایش به مشتری)",interval:"balancesMinutes",job:"balances"},{key:"report",label:"گزارش مشتری از حسابداری",interval:null,job:null},{key:"products",label:"کارساخته ↔ محصول و قفل ناموجود",interval:"productsMinutes",job:"products"},{key:"documents",label:"ثبت سند سفارش (موقت)",interval:null,job:"outbox"}],Be=[{title:"قابلیت",dataIndex:"label",key:"label"},{title:"فعال",key:"on",width:80},{title:"بازه",key:"interval",width:170},{title:"وضعیت",key:"state"},{title:"",key:"run",width:110}],re=s=>{var t,g,w;return(w=(g=(t=h.value)==null?void 0:t.state)==null?void 0:g.jobs)==null?void 0:w[s]},Ve=s=>Object.entries(s).map(([t,g])=>`${t}: ${g}`).join("، "),K=le({rows:[],total:0,page:1,limit:25}),Ee=U(),r=[{title:"زمان",key:"createdAt",width:150},{title:"نوع",key:"kind",width:120},{title:"مورد",key:"entity"},{title:"وضعیت",key:"status",width:140},{title:"خطا",key:"error"},{title:"",key:"actions",width:190}],e=$(()=>{var g;const s=((g=h.value)==null?void 0:g.outbox)??{},t=(s.FAILED??0)+(s.NEEDS_REVIEW??0);return t?` (${t})`:""}),C=le({rows:[],total:0,page:1,limit:25}),k=le({rows:[],total:0,page:1,limit:25}),N=U("CUSTOMER"),I=U(""),ee=le({rows:[],scope:null}),Oe=U(""),L=U(""),he=U(!1),V=s=>s?qe(s).format("jYYYY/jMM/jDD HH:mm"):"—",Me=s=>s==null?"—":JSON.stringify(s,null,2),q=(s,t)=>{var w,W;const g=(W=(w=s==null?void 0:s.response)==null?void 0:w.data)==null?void 0:W.message;return Array.isArray(g)?g.join("، "):g??t};function ze(s){var t;p.provider=s.provider,Te.value=s.provider;for(const g of["tahesab","zarrin"])p[g].baseUrl=s[g].baseUrl,p[g].timeoutMs=s[g].timeoutMs,p[g].caCert=s[g].caCert??"";p.tahesab.dbName=s.tahesab.dbName,p.zarrin.balanceOwesWhen=s.zarrin.balanceOwesWhen,Object.assign(p.features,s.features),Object.assign(p.intervals,s.intervals),p.mapping.karat=s.mapping.karat,p.report.windowDays=s.report.windowDays,p.documents.triggerStatus=((t=s.documents)==null?void 0:t.triggerStatus)??"DELIVERED_TO_AGENT",ne.value=(s.mapping.importCustomerGroups??[]).map(Y),oe.value=Y(s.mapping.newCustomerGroup),H.value=Y(s.mapping.newKarSakhteGroup),ie.value=Y(s.mapping.newKarSakhteType);for(const g of Object.keys(X))delete X[g];for(const g of s.mapping.categoryGroups??[])X[g.categoryId]=Y(g.group)}async function ue(){try{F.value=!0;const{data:s}=await A.get("admin/accounting");h.value=s,ze(s.config)}catch(s){B.error(q(s,"خطا در دریافت تنظیمات"))}finally{F.value=!1}}async function _e(){const s={provider:p.provider,tahesab:{baseUrl:p.tahesab.baseUrl,dbName:p.tahesab.dbName,timeoutMs:p.tahesab.timeoutMs,caCert:p.tahesab.caCert},zarrin:{baseUrl:p.zarrin.baseUrl,balanceOwesWhen:p.zarrin.balanceOwesWhen,timeoutMs:p.zarrin.timeoutMs,caCert:p.zarrin.caCert},features:p.features,intervals:p.intervals,report:p.report,documents:p.documents,mapping:{karat:p.mapping.karat,importCustomerGroups:ne.value.map(S).filter(Boolean),newCustomerGroup:S(oe.value),newKarSakhteGroup:S(H.value),newKarSakhteType:S(ie.value),categoryGroups:Object.entries(X).filter(([,t])=>!!t).map(([t,g])=>({categoryId:t,group:S(g)}))}};for(const t of["tahesab","zarrin"])Q[t].trim()&&(s[t].token=Q[t].trim());try{F.value=!0;const{data:t}=await A.put("admin/accounting/config",s);h.value=t,ze(t.config),Q.tahesab="",Q.zarrin="",B.success("تنظیمات ذخیره شد")}catch(t){B.error(q(t,"خطا در ذخیره"))}finally{F.value=!1}}async function We(s){try{const{data:t}=await A.put("admin/accounting/config",{[s]:{token:null}});h.value=t,B.success("توکن حذف شد")}catch(t){B.error(q(t,"خطا"))}}async function Se(){me.value=!0,pe.value=[];try{const{data:s}=await A.get("admin/accounting/options",{params:{provider:p.provider}});G.customerGroups=s.customerGroups.items,G.karSakhteGroups=s.karSakhteGroups.items,G.karSakhteTypes=s.karSakhteTypes.items,Z.value=s.categories;for(const t of[s.customerGroups,s.karSakhteGroups,s.karSakhteTypes])t.ok||pe.value.push(t.error)}catch(s){pe.value=[q(s,"تنظیمات اتصال را اول ذخیره کنید")]}finally{me.value=!1}}async function Re(s){try{const{data:t}=await A.post(`admin/accounting/run/${s}`);t.started?B.success("همگامسازی شروع شد؛ نتیجه چند لحظه بعد در همین صفحه دیده میشود"):B.warning(t.message),setTimeout(ue,4e3)}catch(t){B.error(q(t,"خطا"))}}async function te(s=1){const{data:t}=await A.get("admin/accounting/outbox",{params:{page:s,status:Ee.value}});Object.assign(K,t)}async function b(s){try{await A.post(`admin/accounting/outbox/${s}/retry`),B.success("دوباره در صف قرار گرفت"),te(K.page)}catch(t){B.error(q(t,"خطا"))}}async function ye(s){await A.post(`admin/accounting/outbox/${s}/resolve`,{}),te(K.page)}async function Fe(s=1){const{data:t}=await A.get("admin/accounting/issues",{params:{page:s}});Object.assign(C,t)}async function bt(s){await A.post(`admin/accounting/issues/${s}/resolve`),Fe(C.page),ue()}async function xe(s=1){const{data:t}=await A.get("admin/accounting/links",{params:{page:s,entityType:N.value,q:I.value||void 0}});Object.assign(k,t)}async function _t(s){await A.delete(`admin/accounting/links/${s}`),xe(k.page)}async function yt(){he.value=!0;try{const{data:s}=await A.get("admin/accounting/movement",{params:{from:Oe.value||void 0,to:L.value||void 0}});Object.assign(ee,s)}catch(s){B.error(q(s,"خطا در دریافت گردش"))}finally{he.value=!1}}return Je(se,s=>{s==="outbox"&&te(1),s==="issues"&&Fe(1),s==="links"&&xe(1),s==="mapping"&&p.provider!=="none"&&Z.value.length===0&&Se()}),Dt(ue),(s,t)=>{const g=_("a-tag"),w=_("a-button"),W=_("a-space"),ke=_("a-alert"),de=_("a-tab-pane"),kt=_("a-switch"),Ye=_("a-input-number"),Ze=_("a-select-option"),ve=_("a-select"),ge=_("a-table"),Ce=_("a-form-item"),gt=_("a-divider"),T=_("a-table-column"),Ct=_("a-form"),He=_("a-popconfirm"),Xe=_("a-radio-button"),wt=_("a-radio-group"),Et=_("a-input-search"),et=_("a-input"),Ot=_("a-tabs"),ht=_("a-spin"),St=_("a-card");return n(),c("div",null,[d("config.accounting")?(n(),O(St,{key:0,title:"اتصال به نرمافزار حسابداری"},{extra:l(()=>[a(W,null,{default:l(()=>{var Ne;return[(Ne=h.value)!=null&&Ne.busy?(n(),O(g,{key:0,color:"processing"},{default:l(()=>[...t[17]||(t[17]=[v("همگامسازی در حال اجرا",-1)])]),_:1})):y("",!0),a(w,{size:"small",onClick:ue},{default:l(()=>[...t[18]||(t[18]=[v("تازهسازی",-1)])]),_:1})]}),_:1})]),default:l(()=>{var Ne,tt,at,lt,st,nt,ot,it;return[h.value&&h.value.config.secretKeySource!=="ACCOUNTING_SECRET_KEY"?(n(),O(ke,{key:0,type:"warning","show-icon":"",class:"mb-4",message:"متغیر ACCOUNTING_SECRET_KEY روی سرور تنظیم نشده است",description:"توکن با کلیدی مشتق از JWT_SECRET رمز میشود؛ اگر JWT_SECRET عوض شود باید توکن را دوباره وارد کنید."})):y("",!0),(Ne=h.value)!=null&&Ne.inactiveReason&&h.value.config.provider!=="none"&&se.value!=="connection"?(n(),O(ke,{key:1,type:"error","show-icon":"",class:"mb-4",message:"همگامسازی انجام نمیشود",description:h.value.inactiveReason},null,8,["description"])):ce.value&&!((st=(lt=(at=(tt=h.value)==null?void 0:tt.config)==null?void 0:at.mapping)==null?void 0:lt.importCustomerGroups)!=null&&st.length)&&((it=(ot=(nt=h.value)==null?void 0:nt.config)==null?void 0:ot.features)!=null&&it.customers)?(n(),O(ke,{key:2,type:"warning","show-icon":"",class:"mb-4",message:"سینک مشتری اجرا نمیشود",description:"هیچ گروه مشتری برای ورود انتخاب نشده است؛ در تب «نگاشت» گروههایی را که واقعاً مشتری هستند انتخاب و ذخیره کنید."})):y("",!0),a(ht,{spinning:F.value},{default:l(()=>[a(Ot,{"active-key":se.value,"onUpdate:activeKey":t[16]||(t[16]=je=>se.value=je)},{default:l(()=>{var je;return[a(de,{key:"connection",tab:"اتصال"},{default:l(()=>[a(xa,{overview:h.value,form:p,tokens:Q,saving:F.value,onSave:_e,onClearToken:We},null,8,["overview","form","tokens","saving"])]),_:1}),a(de,{key:"features",tab:"قابلیتها و زمانبندی"},{default:l(()=>{var u,E,Ae,rt;return[p.provider==="zarrin"?(n(),O(ke,{key:0,type:"info","show-icon":"",class:"mb-4",message:"درایور زرین روی نصب واقعی تست نشده است",description:"طبق تصمیم مالک، پیش از استفادهی واقعی یک دورهی آزمایشی با اسناد موقت لازم است (علامت مانده و فیلد هزینهی سنگ را بررسی کنید)."})):y("",!0),ce.value&&((E=(u=h.value)==null?void 0:u.config)!=null&&E.provider)&&(p.features.balances||p.features.products)?(n(),O(ke,{key:1,type:(rt=(Ae=h.value)==null?void 0:Ae.realtime)!=null&&rt.lastError?"warning":"success","show-icon":"",class:"mb-4",message:"همگامسازی لحظهای"},{description:l(()=>{var ae,M,P,ut;return[(M=(ae=h.value)==null?void 0:ae.realtime)!=null&&M.lastOkAt?(n(),c("div",Na,[v(" تغییرات حسابداری چند ثانیه یکبار بررسی میشود؛ آخرین بررسی: "+m(V(h.value.realtime.lastOkAt))+". ",1),h.value.realtime.lastChangeAt?(n(),c("span",Ua,"آخرین تغییر دریافتشده: "+m(V(h.value.realtime.lastChangeAt))+".",1)):y("",!0)])):(n(),c("div",Ta,"هنوز بررسی انجام نشده است (چند ثانیه بعد از روشنشدن شروع میشود).")),(ut=(P=h.value)==null?void 0:P.realtime)!=null&&ut.lastError?(n(),c("div",Da,"خطای آخرین بررسی: "+m(h.value.realtime.lastError),1)):y("",!0),t[19]||(t[19]=o("div",{class:"hint"}," سفارش و ویرایش مشتری بلافاصله ارسال میشود و موجودی هنگام ثبت سفارش مستقیم از حسابداری خوانده میشود؛ اگر حسابداری آن لحظه پاسخ ندهد، آخرین موجودی معلوم ملاک است. بازههای «دقیقه»ی زیر فقط شبکهی اطمیناناند (مشتری جدید، ویرایش یا حذف در حسابداری). ",-1))]}),_:1},8,["type"])):y("",!0),a(ge,{"data-source":$e,columns:Be,pagination:!1,"row-key":"key",size:"middle"},{bodyCell:l(({column:ae,record:M})=>[ae.key==="on"?(n(),O(kt,{key:0,checked:p.features[M.key],"onUpdate:checked":P=>p.features[M.key]=P},null,8,["checked","onUpdate:checked"])):ae.key==="interval"?(n(),c(D,{key:1},[M.interval?(n(),O(Ye,{key:0,value:p.intervals[M.interval],"onUpdate:value":P=>p.intervals[M.interval]=P,min:1,max:1440,"addon-after":"دقیقه"},null,8,["value","onUpdate:value"])):M.key==="documents"?(n(),O(ve,{key:1,value:p.documents.triggerStatus,"onUpdate:value":t[0]||(t[0]=P=>p.documents.triggerStatus=P),style:{"min-width":"220px"},title:"سند (موقت / پیشفاکتور) وقتی سفارش به این وضعیت برسد ثبت میشود"},{default:l(()=>[(n(),c(D,null,we(Ie,P=>a(Ze,{key:P.value,value:P.value},{default:l(()=>[v("ثبت در: "+m(P.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])):(n(),c("span",Ia,"—"))],64)):ae.key==="state"?(n(),c(D,{key:2},[M.job&&re(M.job)?(n(),c("div",$a,[v(" آخرین اجرا: "+m(V(re(M.job).lastRunAt))+" ",1),re(M.job).lastError?(n(),c("span",Ma," — خطا: "+m(re(M.job).lastError),1)):re(M.job).summary?(n(),c("span",za," — "+m(Ve(re(M.job).summary)),1)):y("",!0)])):y("",!0)],64)):ae.key==="run"?(n(),c(D,{key:3},[M.job?(n(),O(w,{key:0,size:"small",disabled:!ce.value,onClick:P=>Re(M.job)},{default:l(()=>[...t[20]||(t[20]=[v("سینک الان",-1)])]),_:1},8,["disabled","onClick"])):y("",!0)],64)):y("",!0)]),_:1}),o("div",Ra,[a(Ce,{label:"بازهی گزارش مشتری (روز)"},{default:l(()=>[a(Ye,{value:p.report.windowDays,"onUpdate:value":t[1]||(t[1]=ae=>p.report.windowDays=ae),min:7,max:3650,class:"w-full"},null,8,["value"])]),_:1})]),t[22]||(t[22]=o("div",{class:"hint mb-4"}," اسناد سفارش همیشه «موقت» ثبت میشوند و تا حسابدار نهایی نکند روی ماندهی حسابداری اثر ندارند. سقف اعتبار سفارش همچنان با دفتر داخلی اپ چک میشود. ",-1)),a(w,{type:"primary",onClick:_e},{default:l(()=>[...t[21]||(t[21]=[v("ذخیره",-1)])]),_:1})]}),_:1}),a(de,{key:"mapping",tab:"نگاشت"},{default:l(()=>[a(W,{class:"mb-4"},{default:l(()=>[a(w,{disabled:p.provider==="none",loading:me.value,onClick:Se},{default:l(()=>[...t[23]||(t[23]=[v("دریافت گروهها از حسابداری",-1)])]),_:1},8,["disabled","loading"]),(n(!0),c(D,null,we(pe.value,u=>(n(),c("span",{key:u,class:"warn"},m(u),1))),128))]),_:1}),a(Ct,{layout:"vertical"},{default:l(()=>[o("div",ja,[a(Ce,{label:"گروههای حسابی که وارد اپ میشوند (خالی = همه)"},{default:l(()=>[a(ve,{value:ne.value,"onUpdate:value":t[2]||(t[2]=u=>ne.value=u),mode:"multiple",options:be.value,"allow-clear":"",placeholder:"همهی گروهها"},null,8,["value","options"])]),_:1}),a(Ce,{label:"گروه مشتری جدیدی که از اپ ساخته میشود"},{default:l(()=>[a(ve,{value:oe.value,"onUpdate:value":t[3]||(t[3]=u=>oe.value=u),options:be.value,"allow-clear":""},null,8,["value","options"])]),_:1}),a(Ce,{label:"عیار پایهی گرمهای اپ"},{default:l(()=>[a(Ye,{value:p.mapping.karat,"onUpdate:value":t[4]||(t[4]=u=>p.mapping.karat=u),min:1,max:1e3,class:"w-full"},null,8,["value"])]),_:1})]),p.provider==="zarrin"?(n(),c(D,{key:0},[a(gt,{orientation:"right"},{default:l(()=>[...t[24]||(t[24]=[v("کارساخته (زرین)",-1)])]),_:1}),o("div",Aa,[a(Ce,{label:"نوع کارساختهی جدید (گرمی/تعدادی…)"},{default:l(()=>[a(ve,{value:ie.value,"onUpdate:value":t[5]||(t[5]=u=>ie.value=u),options:De.value,"allow-clear":""},null,8,["value","options"])]),_:1}),a(Ce,{label:"گروه ساختهی پیشفرض"},{default:l(()=>[a(ve,{value:H.value,"onUpdate:value":t[6]||(t[6]=u=>H.value=u),options:j.value,"allow-clear":""},null,8,["value","options"])]),_:1})]),a(ge,{"data-source":Z.value,pagination:!1,"row-key":"id",size:"small",class:"mb-4"},{default:l(()=>[a(T,{title:"دستهبندی اپ","data-index":"title"}),a(T,{title:"گروه ساخته در زرین"},{default:l(({record:u})=>[a(ve,{value:X[u.id],"onUpdate:value":E=>X[u.id]=E,options:j.value,"allow-clear":"",class:"w-full",placeholder:"پیشفرض"},null,8,["value","onUpdate:value","options"])]),_:1})]),_:1},8,["data-source"])],64)):p.provider==="tahesab"?(n(),c("div",Ga," تهحساب در API خود ساخت کارساخته ندارد: نام کار با اولین سند سفارش در تهحساب ساخته میشود و از آن به بعد به محصول لینک میشود. ")):y("",!0),a(w,{type:"primary",onClick:_e},{default:l(()=>[...t[25]||(t[25]=[v("ذخیره",-1)])]),_:1})]),_:1})]),_:1}),a(de,{key:"outbox",tab:`لاگ ارسال${e.value}`},{default:l(()=>[a(W,{class:"mb-4"},{default:l(()=>[a(ve,{value:Ee.value,"onUpdate:value":t[7]||(t[7]=u=>Ee.value=u),style:{width:"180px"},"allow-clear":"",placeholder:"همهی وضعیتها",onChange:t[8]||(t[8]=u=>te(1))},{default:l(()=>[(n(),c(D,null,we(z,(u,E)=>a(Ze,{key:E,value:E},{default:l(()=>[v(m(u),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"]),a(w,{onClick:t[9]||(t[9]=u=>te(K.page))},{default:l(()=>[...t[26]||(t[26]=[v("تازهسازی",-1)])]),_:1})]),_:1}),a(ge,{"data-source":K.rows,columns:r,"row-key":"id",size:"small",pagination:{current:K.page,pageSize:K.limit,total:K.total,onChange:te}},{bodyCell:l(({column:u,record:E})=>[u.key==="createdAt"?(n(),c(D,{key:0},[v(m(V(E.createdAt)),1)],64)):u.key==="kind"?(n(),c(D,{key:1},[v(m(Pe[E.kind]??E.kind),1)],64)):u.key==="entity"?(n(),c(D,{key:2},[v(m(E.entityLabel??E.entityId),1)],64)):u.key==="status"?(n(),c(D,{key:3},[a(g,{color:R[E.status]},{default:l(()=>[v(m(z[E.status]??E.status),1)]),_:2},1032,["color"]),E.provider!==p.provider?(n(),c("span",La," ("+m(E.provider)+")",1)):y("",!0)],64)):u.key==="error"?(n(),c("span",Pa,m(E.lastError),1)):u.key==="actions"?(n(),O(W,{key:5},{default:l(()=>[["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(n(),O(He,{key:0,title:"پیش از تلاش دوباره، مطمئن شوید سند در حسابداری ثبت نشده است. ادامه؟",onConfirm:Ae=>b(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...t[27]||(t[27]=[v("تلاش دوباره",-1)])]),_:1})]),_:1},8,["onConfirm"])):y("",!0),["FAILED","NEEDS_REVIEW","PENDING"].includes(E.status)?(n(),O(He,{key:1,title:"این ردیف «حلشده» علامت بخورد (دستی در حسابداری رسیدگی شده)؟",onConfirm:Ae=>ye(E.id)},{default:l(()=>[a(w,{size:"small"},{default:l(()=>[...t[28]||(t[28]=[v("حلشده",-1)])]),_:1})]),_:1},8,["onConfirm"])):y("",!0)]),_:2},1024)):y("",!0)]),expandedRowRender:l(({record:u})=>[o("div",Ba,[o("div",null,[t[29]||(t[29]=o("b",null,"درخواست",-1)),o("pre",Va,m(Me(u.lastRequest)),1)]),o("div",null,[t[30]||(t[30]=o("b",null,"پاسخ",-1)),o("pre",Wa,m(Me(u.lastResponse)),1)])]),o("div",Fa,"کد مرجع: "+m(u.externalRef??"—")+" | تلاش: "+m(u.attempts)+" | تلاش بعدی: "+m(V(u.nextAttemptAt)),1)]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(de,{key:"issues",tab:`مغایرتها${(je=h.value)!=null&&je.openIssues?` (${h.value.openIssues})`:""}`},{default:l(()=>[a(ge,{"data-source":C.rows,"row-key":"id",size:"small",pagination:{current:C.page,pageSize:C.limit,total:C.total,onChange:Fe}},{default:l(()=>[a(T,{title:"تاریخ"},{default:l(({record:u})=>[v(m(V(u.updatedAt)),1)]),_:1}),a(T,{title:"نرمافزار","data-index":"provider"}),a(T,{title:"نوع"},{default:l(({record:u})=>[v(m(i[u.kind]??u.kind),1)]),_:1}),a(T,{title:"کد حسابداری","data-index":"externalCode"}),a(T,{title:"شرح","data-index":"message"}),a(T,{title:""},{default:l(({record:u})=>[a(w,{size:"small",onClick:E=>bt(u.id)},{default:l(()=>[...t[31]||(t[31]=[v("رسیدگی شد",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1},8,["tab"]),a(de,{key:"links",tab:"لینکها"},{default:l(()=>[a(W,{class:"mb-4"},{default:l(()=>[a(wt,{value:N.value,"onUpdate:value":t[10]||(t[10]=u=>N.value=u),onChange:t[11]||(t[11]=u=>xe(1))},{default:l(()=>[a(Xe,{value:"CUSTOMER"},{default:l(()=>[...t[32]||(t[32]=[v("مشتری",-1)])]),_:1}),a(Xe,{value:"PRODUCT"},{default:l(()=>[...t[33]||(t[33]=[v("کارساخته",-1)])]),_:1})]),_:1},8,["value"]),a(Et,{value:I.value,"onUpdate:value":t[12]||(t[12]=u=>I.value=u),placeholder:"کد یا نام در حسابداری",style:{width:"240px"},onSearch:t[13]||(t[13]=u=>xe(1))},null,8,["value"])]),_:1}),a(ge,{"data-source":k.rows,"row-key":"id",size:"small",pagination:{current:k.page,pageSize:k.limit,total:k.total,onChange:xe}},{default:l(()=>[a(T,{title:"کد حسابداری","data-index":"externalCode"}),a(T,{title:"نام در حسابداری","data-index":"externalName"}),a(T,{title:"شناسهی اپ","data-index":"entityId"}),a(T,{title:"منشأ"},{default:l(({record:u})=>[v(m(J[u.origin]??u.origin),1)]),_:1}),a(T,{title:"آخرین سینک"},{default:l(({record:u})=>[v(m(V(u.syncedAt)),1)]),_:1}),a(T,{title:""},{default:l(({record:u})=>[a(He,{title:"لینک حذف شود؟ در سینک بعدی دوباره با موبایل/نام جفت میشود.",onConfirm:E=>_t(u.id)},{default:l(()=>[a(w,{size:"small",danger:""},{default:l(()=>[...t[34]||(t[34]=[v("حذف لینک",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data-source","pagination"])]),_:1}),a(de,{key:"movement",tab:"گردش کارساخته"},{default:l(()=>[a(W,{class:"mb-4"},{default:l(()=>[a(et,{value:Oe.value,"onUpdate:value":t[14]||(t[14]=u=>Oe.value=u),dir:"ltr",placeholder:"از ۱۴۰۵/۰۷/۰۱",style:{width:"150px"}},null,8,["value"]),a(et,{value:L.value,"onUpdate:value":t[15]||(t[15]=u=>L.value=u),dir:"ltr",placeholder:"تا ۱۴۰۵/۰۷/۳۰",style:{width:"150px"}},null,8,["value"]),a(w,{disabled:!ce.value,loading:he.value,onClick:yt},{default:l(()=>[...t[35]||(t[35]=[v("نمایش",-1)])]),_:1},8,["disabled","loading"])]),_:1}),ee.scope==="recent-documents"?(n(),O(ke,{key:0,type:"info","show-icon":"",class:"mb-4",message:"تهحساب گزارش گردش همهی حسابها را ندارد؛ این فهرست از آخرین ۱۰۰۰ سند ثبتشده ساخته شده است."})):y("",!0),a(ge,{"data-source":ee.rows,"row-key":(u,E)=>E,size:"small"},{default:l(()=>[a(T,{title:"تاریخ","data-index":"date"}),a(T,{title:"کارساخته","data-index":"itemName"}),a(T,{title:"شرح","data-index":"description"}),a(T,{title:"وزن","data-index":"weight"}),a(T,{title:"تعداد","data-index":"count"}),a(T,{title:"مبلغ","data-index":"amount"})]),_:1},8,["data-source","row-key"])]),_:1})]}),_:1},8,["active-key"])]),_:1},8,["spinning"])]}),_:1})):y("",!0)])}}}),Qa=ft(Ya,[["__scopeId","data-v-e0948f1c"]]);export{Qa as default};
|