dealpos 26.18.3 → 26.18.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/{chunk-N3D5OHXG.js → chunk-2F3D4ZGN.js} +1 -1
- package/browser/{chunk-W52R6UAE.js → chunk-3434WGAY.js} +1 -1
- package/browser/{chunk-WQZHE36X.js → chunk-3IVV4MBN.js} +1 -1
- package/browser/{chunk-Y4WSLIZA.js → chunk-3VYMRLWZ.js} +1 -1
- package/browser/{chunk-ROY2XQOS.js → chunk-47M7AACR.js} +2 -2
- package/browser/{chunk-VXZFKD3W.js → chunk-4FFG7KB7.js} +1 -1
- package/browser/{chunk-XP576DJH.js → chunk-4UZTANNS.js} +1 -1
- package/browser/{chunk-IQVP2XEY.js → chunk-4XUJ32IA.js} +1 -1
- package/browser/{chunk-2HPFEFSF.js → chunk-56LGODCT.js} +1 -1
- package/browser/{chunk-CETJNHCJ.js → chunk-5HM6CLIG.js} +1 -1
- package/browser/{chunk-F6HOOZ7H.js → chunk-5KLAA3FP.js} +1 -1
- package/browser/{chunk-6MCI5TRP.js → chunk-64AGMC3U.js} +1 -1
- package/browser/{chunk-ON7RJ6WH.js → chunk-66KSE2V3.js} +1 -1
- package/browser/{chunk-WDMQ3M7R.js → chunk-6AZCQ7TR.js} +1 -1
- package/browser/{chunk-T2MGIAWR.js → chunk-6GC3SPMQ.js} +1 -1
- package/browser/{chunk-CBSTHNXN.js → chunk-6JTBEOQ5.js} +2 -2
- package/browser/{chunk-T37GZSJE.js → chunk-6VDBOHII.js} +1 -1
- package/browser/{chunk-7T3IAYJ3.js → chunk-756PN46O.js} +1 -1
- package/browser/{chunk-REH4W4SW.js → chunk-7AAMGIRY.js} +1 -1
- package/browser/{chunk-USB5OMEG.js → chunk-7C22YK2N.js} +1 -1
- package/browser/{chunk-AZNBF62D.js → chunk-7K6VZPAI.js} +1 -1
- package/browser/{chunk-GP6VPCGB.js → chunk-7M2WHQJC.js} +1 -1
- package/browser/{chunk-NVOUQPRP.js → chunk-7NYDRCKL.js} +1 -1
- package/browser/{chunk-5LQRQ6CC.js → chunk-ADIIJU5S.js} +1 -1
- package/browser/{chunk-DPI2B5YQ.js → chunk-AGV3FXUP.js} +2 -2
- package/browser/{chunk-DZ3JXADL.js → chunk-B42LXFDK.js} +1 -1
- package/browser/{chunk-QYXGPMRY.js → chunk-BEO6PXUY.js} +1 -1
- package/browser/{chunk-4FNP7VWG.js → chunk-BHXONIUE.js} +1 -1
- package/browser/{chunk-HBJGXS5Q.js → chunk-C2I5K6TT.js} +1 -1
- package/browser/{chunk-WIOHYFLM.js → chunk-CSJMNYHJ.js} +1 -1
- package/browser/{chunk-GJXGARIQ.js → chunk-DD7XQJP3.js} +1 -1
- package/browser/{chunk-BJ6EXRAU.js → chunk-DDYRC4A5.js} +1 -1
- package/browser/{chunk-JOSHRC7X.js → chunk-EHH2QGAZ.js} +1 -1
- package/browser/{chunk-E55EEPXO.js → chunk-EUNAG7SX.js} +1 -1
- package/browser/{chunk-GYGG67VS.js → chunk-F3Q4DUGU.js} +1 -1
- package/browser/{chunk-7YBXWJCJ.js → chunk-F4P6D3Z4.js} +1 -1
- package/browser/{chunk-RUD3FHIM.js → chunk-FQONFOFM.js} +1 -1
- package/browser/{chunk-5HKYQEWI.js → chunk-FUNMZYKX.js} +1 -1
- package/browser/{chunk-4B6GJ6A3.js → chunk-FV2ROO6A.js} +1 -1
- package/browser/{chunk-KEG3ANR7.js → chunk-FW42PNB5.js} +1 -1
- package/browser/{chunk-3YI53GZY.js → chunk-G2KG6K7K.js} +1 -1
- package/browser/{chunk-MSPSVMV3.js → chunk-GAJECC6G.js} +2 -2
- package/browser/{chunk-KM6FYZDZ.js → chunk-GJD4FNDI.js} +1 -1
- package/browser/{chunk-CWARZOIH.js → chunk-GZFG45MX.js} +2 -2
- package/browser/{chunk-43BGI3IE.js → chunk-HJJBDWR3.js} +1 -1
- package/browser/{chunk-OOTJHUWX.js → chunk-HQHBRNRZ.js} +1 -1
- package/browser/{chunk-AZK4E6I4.js → chunk-HQLEA66C.js} +1 -1
- package/browser/{chunk-HB2WJFGW.js → chunk-HXFTTXR3.js} +1 -1
- package/browser/{chunk-L3YIAPOE.js → chunk-IICP4XOG.js} +1 -1
- package/browser/{chunk-I62AJ347.js → chunk-IJQLYDJH.js} +1 -1
- package/browser/{chunk-JUSEKOMC.js → chunk-IQPZMNYI.js} +1 -1
- package/browser/{chunk-B7AFGOTK.js → chunk-IRA27IAL.js} +1 -1
- package/browser/{chunk-25274S6K.js → chunk-JU5UIOUW.js} +1 -1
- package/browser/{chunk-MKLIUJHS.js → chunk-JZ5YXYHB.js} +1 -1
- package/browser/{chunk-XWDKVN5H.js → chunk-K34PHZPN.js} +1 -1
- package/browser/{chunk-QVPRAQH4.js → chunk-K6NA7HMT.js} +1 -1
- package/browser/{chunk-L3HDTWQB.js → chunk-KMLNQ4BQ.js} +1 -1
- package/browser/{chunk-PBK5GYE6.js → chunk-KO3MZAM6.js} +1 -1
- package/browser/{chunk-QZWVFJFJ.js → chunk-KXIRGY6F.js} +1 -1
- package/browser/{chunk-UAKNIXXI.js → chunk-L7AGH4PV.js} +1 -1
- package/browser/{chunk-TEI76EGJ.js → chunk-LQICJUPN.js} +1 -1
- package/browser/{chunk-DP3JENL2.js → chunk-LW7UGWZV.js} +1 -1
- package/browser/{chunk-Q3L52DFZ.js → chunk-MMDMLHHF.js} +2 -2
- package/browser/{chunk-XAXNS6WP.js → chunk-NTMEU4KU.js} +1 -1
- package/browser/chunk-NWORGUOM.js +1 -0
- package/browser/{chunk-WR5BQDZY.js → chunk-NYDLVFJX.js} +1 -1
- package/browser/{chunk-43S2PNNK.js → chunk-OK7X4WCH.js} +1 -1
- package/browser/{chunk-SRZ5R5WU.js → chunk-OMTIBA7D.js} +1 -1
- package/browser/{chunk-W6KOSPU7.js → chunk-PFT7IRYL.js} +1 -1
- package/browser/{chunk-TJFGUMOR.js → chunk-PNFNKDQ6.js} +1 -1
- package/browser/{chunk-2UKJ5JFU.js → chunk-QS4VWTEA.js} +1 -1
- package/browser/{chunk-YRG72BER.js → chunk-QZUA3LRZ.js} +1 -1
- package/browser/{chunk-GPNIBVNO.js → chunk-RMCSFH5F.js} +1 -1
- package/browser/{chunk-FBJRK77M.js → chunk-RMQLYIFY.js} +1 -1
- package/browser/{chunk-MAUT7GZV.js → chunk-RSAJJHFG.js} +1 -1
- package/browser/{chunk-ETZCKE6M.js → chunk-RVOPNNB5.js} +1 -1
- package/browser/{chunk-DE4NUVHF.js → chunk-S5P7DHZH.js} +1 -1
- package/browser/{chunk-X65TSAOL.js → chunk-SQTRBCEE.js} +1 -1
- package/browser/{chunk-4O5EVGKX.js → chunk-T3WBN7AZ.js} +1 -1
- package/browser/{chunk-VJP4AKC2.js → chunk-UUCSM7IO.js} +1 -1
- package/browser/{chunk-XK734Z2S.js → chunk-VBL737PZ.js} +1 -1
- package/browser/{chunk-M5TQQZ2J.js → chunk-VD3FRLD7.js} +1 -1
- package/browser/{chunk-2WEIHWMH.js → chunk-VEI73UZU.js} +1 -1
- package/browser/{chunk-UFY4PZX2.js → chunk-VH6OW7Z3.js} +1 -1
- package/browser/{chunk-R5NVDEK4.js → chunk-VR6UQAMJ.js} +1 -1
- package/browser/{chunk-3LXAI5HJ.js → chunk-VRISQEFY.js} +1 -1
- package/browser/{chunk-KLH7XOVP.js → chunk-VU5OLVSA.js} +1 -1
- package/browser/{chunk-N6Q3DXCH.js → chunk-VU6O7LYV.js} +1 -1
- package/browser/{chunk-LJ3HOA2Y.js → chunk-WKWOXGLM.js} +1 -1
- package/browser/{chunk-4A37CVIY.js → chunk-WTEYUHP4.js} +1 -1
- package/browser/{chunk-5SORMWMW.js → chunk-X4T33LOO.js} +1 -1
- package/browser/{chunk-W3NJRUP6.js → chunk-XMR655U4.js} +1 -1
- package/browser/{chunk-64OLEF37.js → chunk-XTDXOXX3.js} +1 -1
- package/browser/{chunk-XDEVWINC.js → chunk-XXWGRBYL.js} +1 -1
- package/browser/{chunk-NCRVYRBL.js → chunk-Y7GFKYZY.js} +1 -1
- package/browser/{chunk-ZCX6PP2T.js → chunk-YASZJV72.js} +1 -1
- package/browser/{chunk-PNB66VF3.js → chunk-YF4XKFAA.js} +1 -1
- package/browser/{chunk-DWERFAPR.js → chunk-YXKDLD7O.js} +1 -1
- package/browser/{chunk-TFMNCQWI.js → chunk-ZMNC5VDP.js} +2 -2
- package/browser/index.html +2 -2
- package/browser/{main-DK67LUMO.js → main-JYOFEALH.js} +2 -2
- package/package.json +1 -1
- package/browser/chunk-ALOPMLEF.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as de}from"./chunk-VWU53F6L.js";import{a as le}from"./chunk-Y3K3NP4V.js";import"./chunk-BYXBJQAS.js";import{f as ae,g as se}from"./chunk-
|
|
1
|
+
import{a as de}from"./chunk-VWU53F6L.js";import{a as le}from"./chunk-Y3K3NP4V.js";import"./chunk-BYXBJQAS.js";import{f as ae,g as se}from"./chunk-NYDLVFJX.js";import"./chunk-WTEYUHP4.js";import"./chunk-M42U7VID.js";import{a as re}from"./chunk-IICP4XOG.js";import"./chunk-HRIVC724.js";import"./chunk-DTQAQRLJ.js";import"./chunk-6GC3SPMQ.js";import"./chunk-VU6O7LYV.js";import"./chunk-INL666X3.js";import"./chunk-UUAZGIAN.js";import"./chunk-SPPZGYU7.js";import"./chunk-FICGNDPR.js";import"./chunk-DYDRVXX3.js";import"./chunk-2BQQJ3YS.js";import"./chunk-YNQPX5G6.js";import{P as V}from"./chunk-5VLBYHUJ.js";import"./chunk-LQICJUPN.js";import{a as oe,b as ie,c as ne}from"./chunk-6RFU4RXC.js";import"./chunk-YCV6GUTW.js";import"./chunk-VXGIPE22.js";import{b as ee,c as te}from"./chunk-M5BHFFPW.js";import"./chunk-XUQHA7FY.js";import"./chunk-AJ6OO7CP.js";import"./chunk-UPAKGSOK.js";import"./chunk-FMECWSCG.js";import{E as W,F as Q,c as z,h as G,o as J}from"./chunk-QMS2MBIA.js";import"./chunk-XXWGRBYL.js";import"./chunk-FQONFOFM.js";import"./chunk-WLVEHCCR.js";import{b as Z}from"./chunk-P7GOTTNS.js";import"./chunk-3DEA4WWC.js";import"./chunk-QS4VWTEA.js";import{n as q,q as X}from"./chunk-3GXUD7K4.js";import{Bb as I,Db as P,Eb as g,F as T,Fa as b,Gb as C,Hb as v,Ib as _,Jb as i,Kb as a,Lb as H,Pb as A,Qb as N,Qc as $,Rb as K,Rd as Y,Tc as L,Ub as y,Xb as m,Za as l,Zb as u,eb as f,hc as j,ib as M,mc as d,nb as F,nc as O,ob as E,pc as B,ra as h,rc as S,rd as U,sc as x,tc as w,va as c,wa as p,zd as R}from"./chunk-NGFIIVK5.js";import"./chunk-WFMAM73Y.js";import"./chunk-SNAKHGZS.js";function he(n,r){if(n&1){let e=y();i(0,"tr")(1,"td")(2,"div",11)(3,"i",15),m("click",function(){let t=c(e).$index,s=u();return p(s.onRemoveHeader(t))}),a()()(),i(4,"td")(5,"input",16),w("ngModelChange",function(t){let s=c(e).$implicit;return x(s.Key,t)||(s.Key=t),p(t)}),a()(),i(6,"td")(7,"input",17),w("ngModelChange",function(t){let s=c(e).$implicit;return x(s.Value,t)||(s.Value=t),p(t)}),a()()()}if(n&2){let e=r.$implicit;l(5),S("ngModel",e.Key),l(2),S("ngModel",e.Value)}}var k=class n{dialogRef=h(oe);toastr=h(q);config;headers=b([{Value:"",Key:""}]);host=b("");data=h(ie);lastHeader=L(()=>this.headers()[this.headers()?.length-1]);constructor(){this.initModalConfig(),this.data&&(this.host.set(this.data.Host),this.headers.set(this.data.Headers))}initModalConfig(){this.config=new ee,this.config.title="Host Request Header",this.config.customWidth="600px"}onRemoveHeader(r){let e=this.headers();e.splice(r,1),this.headers.set([...e])}onSave(){if(!this.validateForm())return;let r={Host:this.host(),Headers:this.headers()};this.dialogRef.close(r)}validateForm(){let r=!0;return this.host()||(this.toastr.error("Host is required","Invalid Host"),r=!1),this.headers().length===0&&r&&(this.toastr.error("At least one header is required","No Headers"),r=!1),this.headers().forEach((e,o)=>{(!e.Key||!e.Value)&&r&&(this.toastr.error(`Header ${o+1} is incomplete`,"Invalid Header"),r=!1)}),r}onClose(){this.dialogRef.close()}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-modal-webhook-request-header"]],decls:25,vars:3,consts:[[3,"onOk","onCancel","onClose","config"],[1,"container-fluid","pt-4"],[1,"row"],[1,"col-12"],[1,"form-floating-outline","mb-8"],["type","text","id","host","name","host","placeholder","Host",1,"form-control","bg-white",3,"ngModelChange","ngModel"],["for","host"],[1,"card-title"],[1,"table","table-bordered","custom-table"],[1,"thead-light","sticky-top-thead-webhook-request-header"],[2,"width","20px"],[1,"d-flex","justify-content-center"],["type","button",1,"btn","btn-outline-dark","btn-sm","bg-white","text-black",3,"click","disabled"],["aria-hidden","true",1,"fa","fa-plus"],[2,"width","100px"],[1,"fa","fa-xmark","text-danger","cursor-pointer",3,"click"],["type","text","id","key","name","key","placeholder","Key",1,"form-control","bg-white",3,"ngModelChange","ngModel"],["type","text","id","value","name","value","placeholder","Value",1,"form-control","bg-white",3,"ngModelChange","ngModel"]],template:function(e,o){if(e&1&&(i(0,"modal-material",0),m("onOk",function(){return o.onSave()})("onCancel",function(){return o.onClose()})("onClose",function(){return o.onClose()}),i(1,"content")(2,"div",1)(3,"div",2)(4,"div",3)(5,"div",4)(6,"input",5),w("ngModelChange",function(s){return x(o.host,s)||(o.host=s),s}),a(),i(7,"label",6),d(8,"Host"),a()(),i(9,"h5",7),d(10,"Headers"),a(),i(11,"table",8)(12,"thead",9)(13,"tr")(14,"th",10)(15,"div",11)(16,"button",12),m("click",function(){return o.headers.set([...o.headers(),{Key:"",Value:""}])}),H(17,"i",13),a()()(),i(18,"th",14),d(19,"Key"),a(),i(20,"th"),d(21,"Value"),a()()(),i(22,"tbody"),C(23,he,8,2,"tr",null,g),a()()()()()()()),e&2){let t;_("config",o.config),l(6),S("ngModel",o.host),l(10),_("disabled",(!((t=o.lastHeader())!=null&&t.Key)||!((t=o.lastHeader())!=null&&t.Value))&&o.headers().length>0),l(7),v(o.headers())}},dependencies:[R,Q,z,G,te,W,J],styles:[".sticky-top-thead-webhook-request-header[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{position:sticky!important;top:-16px!important;z-index:1020!important}"]})};function fe(n,r){if(n&1&&(i(0,"div"),d(1),a()),n&2){let e=r.$implicit;l(),B(" ",e.Key," : ",e.Value," ")}}function _e(n,r){if(n&1){let e=y();i(0,"tr",11),m("click",function(){let t=c(e),s=t.$implicit,D=t.$index,ce=u(2);return p(ce.onUpdateHost(s,D))}),i(1,"td")(2,"div",12)(3,"i",13),m("click",function(){let t=c(e).$index,s=u(2);return p(s.onRemoveHeader(t))}),a()()(),i(4,"td"),d(5),a(),i(6,"td"),C(7,fe,2,2,"div",null,g),a()()}if(n&2){let e=r.$implicit;l(5),O(e.Host),l(2),v(e.Headers)}}function be(n,r){if(n&1&&C(0,_e,9,1,"tr",10,g),n&2){let e=u();v(e.host())}}function ge(n,r){n&1&&K(0)}function Ce(n,r){if(n&1&&E(0,ge,1,0,"ng-container",14),n&2){u();let e=j(20);_("ngTemplateOutlet",e)}}function ve(n,r){n&1&&(i(0,"tr",15)(1,"td",16),H(2,"empty-state-table"),a()())}var me=class n extends de{constructor(e,o,t,s,D){super(e,o,V.WebhookRequestCustomHeaderLoader,t);this.activatedRoute=t;this.role=s;this.dialog=D}host=b([]);toastr=h(q);postBindForm(e){let o=e.Form?.CustomHeaders;this.host.set(o)}addCustomHeader(){this.dialog.open(k).afterClosed().pipe(T(e=>!!e)).subscribe(e=>{if(e){let o=[...this.host(),e];this.saveHost(o)}})}onUpdateHost(e,o){this.dialog.open(k,{data:e}).afterClosed().pipe(T(t=>!!t)).subscribe(t=>{if(t){let s=[...this.host()];s[o]=t,this.saveHost(s)}})}onRemoveHeader(e){let o=this.host();o.splice(e,1);let t=[...o];this.saveHost(t)}saveHost(e){this.httpService.post(V.WebhookRequestCustomHeaderSave,e).subscribe({next:()=>{this.host.set(e),this.toastr.success("Host and headers saved successfully","Success")}})}static \u0275fac=function(o){return new(o||n)(f(re),f(X),f(Y),f(Z),f(ne))};static \u0275cmp=M({type:n,selectors:[["app-webhook-request-header"]],features:[F],decls:21,vars:4,consts:[["EMPTY_STATE",""],[3,"pageData","hideSearchDropdown","hideSearchBox"],["ngProjectAs","actions",5,["actions"]],["type","button","role","button",1,"btn","btn-success",3,"click"],[1,"container-fluid","mt-6"],[1,"row"],[1,"col-12"],[1,"table","table-stripped","custom-table"],[1,"thead-light","sticky-top-thead"],["width","30"],[1,"cursor-pointer"],[1,"cursor-pointer",3,"click"],[1,"d-flex","justify-content-center"],[1,"fa","fa-xmark","text-danger","cursor-pointer",3,"click"],[4,"ngTemplateOutlet"],[1,"table-border-bottom-0"],["colspan","3"]],template:function(o,t){o&1&&(i(0,"mainpanel-cmp",1),A(1,2),i(2,"button",3),m("click",function(){return t.addCustomHeader()}),d(3," Add "),a(),N(),i(4,"content")(5,"div",4)(6,"div",5)(7,"div",6)(8,"table",7)(9,"thead",8)(10,"tr"),H(11,"th",9),i(12,"th"),d(13,"Host"),a(),i(14,"th"),d(15,"Headers"),a()()(),i(16,"tbody"),I(17,be,2,0)(18,Ce,1,1,"ng-container"),a()()()()(),E(19,ve,3,0,"ng-template",null,0,$),a()()),o&2&&(_("pageData",t.menuData)("hideSearchDropdown",!0)("hideSearchBox",!0),l(17),P(t.host().length>0?17:18))},dependencies:[R,U,se,ae,W,le],encapsulation:2})};export{me as WebhookRequestHeaderComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as W,c as X}from"./chunk-
|
|
1
|
+
import{b as W,c as X}from"./chunk-DD7XQJP3.js";import{a as Y,b as Z}from"./chunk-S5D6TMC7.js";import{a as Q,b as U}from"./chunk-2BQQJ3YS.js";import{a as B}from"./chunk-5UKWQA6U.js";import{va as K}from"./chunk-FMECWSCG.js";import{E as J,h as q,o as G}from"./chunk-QMS2MBIA.js";import{a as d}from"./chunk-3DEA4WWC.js";import{q as C}from"./chunk-3GXUD7K4.js";import{Bb as H,Ca as M,Db as V,Ib as l,Jb as c,Kb as m,Kc as k,Lc as F,Qc as N,Rb as L,Ub as j,Xb as E,Z as f,Za as _,Zb as n,d as x,da as S,eb as b,ga as T,hc as I,ia as u,ib as $,mc as v,na as w,o as h,ob as a,oc as R,qa as O,ra as D,rd as P,sd as z,va as p,wa as g,zd as A}from"./chunk-NGFIIVK5.js";var y=class o{signalRClient=D(B);continuedCategories$;allCategories$;_onOpenTreeSelector=new x;onOpenTreeSelector$=this._onOpenTreeSelector.asObservable();constructor(t){this.continuedCategories$=this.onOpenTreeSelector$.pipe(u(this.signalRClient.recacheCategory$),S((e,[i,r])=>r||!e.length?(this.signalRClient.resetCategoryCache(),t.post("/api/catalog/product/GetProductStorageOptions")):h(e),[]),f(1)),this.allCategories$=this.onOpenTreeSelector$.pipe(u(this.signalRClient.recacheCategory$),S((e,[i,r])=>r||!e.length?t.get("/API/catalog/category/SelectOptions"):h(e),[]),f(1))}onOpenTreeSelector(){this._onOpenTreeSelector.next(!0)}forceLoadCategories(){this._onOpenTreeSelector.next(!0)}static \u0275fac=function(e){return new(e||o)(O(C))};static \u0275prov=w({token:o,factory:o.\u0275fac,providedIn:"root"})};function re(o,t){o&1&&L(0)}function ne(o,t){if(o&1&&(c(0,"p-floatLabel",1),a(1,re,1,0,"ng-container",2),c(2,"label",3),v(3,"Category"),m()()),o&2){n();let e=I(3);_(),l("ngTemplateOutlet",e)}}function ae(o,t){o&1&&L(0)}function le(o,t){if(o&1&&a(0,ae,1,0,"ng-container",2),o&2){n();let e=I(3);l("ngTemplateOutlet",e)}}function ce(o,t){if(o&1&&(c(0,"div",6),v(1),m()),o&2){let e=n(2);l("matTooltip",e.selectedCategoryLabel),_(),R(" ",e.selectedCategoryLabel," ")}}function se(o,t){if(o&1){let e=j();c(0,"p-treeSelect",4),k(1,"async"),E("click",function(){p(e);let r=n();return g(r.loadCategories())})("ngModelChange",function(r){p(e);let s=n();return g(s.onSelectCategory(r))})("onClear",function(){p(e);let r=n();return g(r.onClear())}),a(2,ce,2,2,"ng-template",5),m()}if(o&2){let e=n();l("options",F(1,4,e.categories$))("ngModel",e.selectedCategory)("showClear",e.showClear)("placeholder",e.placeholder)}}var ee=class o{constructor(t,e){this.http=t;this.treeSelector=e}continuedCategoriesOnly=!0;categories=[];showClear=!1;showLabel=!1;isInitializedCategoryLabel=!1;placeholder="Select Storage Location";selectedCategory;selectedCategoryID;selectedCategoryIDChange=new M;selectedCategoryLabel;top=0;isLoadCategories=!1;categories$;ngAfterViewInit(){let t=document.querySelector("body");this.top=t.getBoundingClientRect().top*-1}ngOnInit(){this.isInitializedCategoryLabel&&(d.IsEmpty(this.selectedCategoryID)&&d.IsNotEmpty(this.categories)&&(this.selectedCategoryID=this.categories[0]?.key),this.selectedCategory=this.findSelectedCategory(this.categories,this.selectedCategoryID),this.generateLabelSelectedCategory(this.selectedCategory)),this.categories$=this.continuedCategoriesOnly?this.treeSelector.continuedCategories$:this.treeSelector.allCategories$,this.categories$=this.categories$.pipe(T(t=>{this.selectedCategory=this.findSelectedCategory(t,this.selectedCategoryID),this.generateLabelSelectedCategory(this.selectedCategory)}))}onSelectCategory(t){this.selectedCategory=t,this.generateLabelSelectedCategory(this.selectedCategory),this.selectedCategoryID=t?.key,this.selectedCategoryIDChange.emit(this.selectedCategoryID)}generateLabelSelectedCategory(t){if(t){let e=[];this.selectedCategoryLabel="";do e=[...e,t.label],t=t.parent;while(t!==void 0);this.selectedCategoryLabel=e.reverse().join("/")}else this.selectedCategoryLabel=this.placeholder}findSelectedCategory(t,e){if(d.IsNotEmpty(e))for(let i of t){if(i.key===e)return i;{i.children=i.children?i.children:[],i.children=i.children.map(s=>(s.parent=i,s));let r=this.findSelectedCategory(i.children,e);if(r)return r}}else return null}loadCategories(){this.treeSelector.onOpenTreeSelector()}onClear(){this.selectedCategoryID=null,this.selectedCategoryIDChange.emit(this.selectedCategoryID)}static \u0275fac=function(e){return new(e||o)(b(C),b(y))};static \u0275cmp=$({type:o,selectors:[["POS-storage-location-select"]],inputs:{continuedCategoriesOnly:"continuedCategoriesOnly",categories:"categories",showClear:"showClear",showLabel:"showLabel",isInitializedCategoryLabel:"isInitializedCategoryLabel",placeholder:"placeholder",selectedCategoryID:"selectedCategoryID"},outputs:{selectedCategoryIDChange:"selectedCategoryIDChange"},decls:4,vars:1,consts:[["categorySelectTemplate",""],["variant","on",1,"w-100"],[4,"ngTemplateOutlet"],["for","selectCategory",1,"tree-category-label"],["appendTo","body","selectionMode","single","filter","true","filterInputAutoFocus","true","scrollHeight","250px","inputId","selectCategory",3,"click","ngModelChange","onClear","options","ngModel","showClear","placeholder"],["pTemplate","value"],["matTooltipPosition","above",3,"matTooltip"]],template:function(e,i){e&1&&(H(0,ne,4,1,"p-floatLabel",1)(1,le,1,1,"ng-container"),a(2,se,3,6,"ng-template",null,0,N)),e&2&&V(i.showLabel?0:1)},dependencies:[A,P,U,Q,X,W,K,J,q,G,Z,Y,z],styles:[".p-popover.p-component{z-index:10000000000000000000000!important} .p-treeselect-panel .p-treeselect-items-wrapper .p-tree{padding-left:4px!important} .p-float-label .p-inputwrapper-filled~label.tree-category-label{left:.5rem!important}"]})};export{ee as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as Yt,b as ue,c as Jt,d as Xt,e as en,f as tn}from"./chunk-QVPRAQH4.js";import{a as Zt}from"./chunk-HRGUDDKZ.js";import{a as nn,b as on,c as rn,g as an}from"./chunk-PDTEF7GP.js";import{a as dn}from"./chunk-OEZWD2O3.js";import{a as Qt}from"./chunk-LHUG6IEF.js";import{a as qt}from"./chunk-NEKBV3FU.js";import{b as ke,c as Kt}from"./chunk-JOSHRC7X.js";import"./chunk-CSFBLJDG.js";import"./chunk-YGI2CFJK.js";import"./chunk-L3HDTWQB.js";import{a as zt}from"./chunk-XOJZGUT3.js";import"./chunk-DDLXGCOB.js";import"./chunk-ZOY3GIWS.js";import{b as Mt,c as St,d as Pt,e as Vt}from"./chunk-CIDPGJ5I.js";import"./chunk-6FI765LW.js";import{d as Ht}from"./chunk-3XXHI4EL.js";import{a as jt}from"./chunk-XC2DOMTX.js";import"./chunk-OFAMZL4W.js";import"./chunk-PRC6BIGW.js";import"./chunk-XRHB5YFU.js";import"./chunk-JGRL2V64.js";import"./chunk-77OYJ25Y.js";import"./chunk-IGAEFS7B.js";import"./chunk-4M7RPVWV.js";import"./chunk-5FZQUUGO.js";import{b as Me,c as Se,d as Pe}from"./chunk-W2DHHNBD.js";import{d as $t,e as Bt}from"./chunk-GJXGARIQ.js";import"./chunk-GYGG67VS.js";import"./chunk-L2YVRRNZ.js";import"./chunk-LU2TRITM.js";import"./chunk-NB2TBERF.js";import{b as Wt,c as Gt}from"./chunk-ETZCKE6M.js";import"./chunk-Y4WSLIZA.js";import"./chunk-FKYSDVEG.js";import"./chunk-ELS45DNO.js";import"./chunk-TMLUWER3.js";import"./chunk-S5D6TMC7.js";import"./chunk-GQLZJQI6.js";import{b as Ut,c as Lt,f as Rt,g as At}from"./chunk-WR5BQDZY.js";import"./chunk-KCKWSNMS.js";import"./chunk-IEXCLXA2.js";import{a as Te}from"./chunk-7TPO6NBM.js";import"./chunk-NS5MW6GH.js";import"./chunk-WQ627RLB.js";import"./chunk-3YI53GZY.js";import"./chunk-YQH2QORC.js";import"./chunk-ZAPREM3S.js";import"./chunk-X36HAWOW.js";import"./chunk-2B2L2JOP.js";import"./chunk-N76EALXO.js";import"./chunk-QWL5S2RG.js";import"./chunk-UL6HUKIC.js";import{a as Dt,b as wt,d as Ve,e as Tt,f as De,h as we}from"./chunk-NLFBNSNG.js";import"./chunk-4A37CVIY.js";import{a as Et}from"./chunk-L3YIAPOE.js";import"./chunk-HRIVC724.js";import"./chunk-DTQAQRLJ.js";import{a as Ft,b as Ot}from"./chunk-T2MGIAWR.js";import{e as Ie,f as Ne}from"./chunk-N6Q3DXCH.js";import"./chunk-INL666X3.js";import"./chunk-UUAZGIAN.js";import"./chunk-SPPZGYU7.js";import"./chunk-FICGNDPR.js";import"./chunk-DYDRVXX3.js";import{a as T,b as I}from"./chunk-2BQQJ3YS.js";import"./chunk-YNQPX5G6.js";import{P as B}from"./chunk-5VLBYHUJ.js";import"./chunk-5UKWQA6U.js";import"./chunk-QYSFCWV7.js";import{a as Nt,b as kt,d as X,e as ee}from"./chunk-Q7OVBNEW.js";import"./chunk-TEI76EGJ.js";import{c as Z,h as It}from"./chunk-6RFU4RXC.js";import{a as ce}from"./chunk-YCV6GUTW.js";import"./chunk-VXGIPE22.js";import"./chunk-PG5RORVW.js";import"./chunk-OQDKFI6M.js";import"./chunk-TKBQO5Z6.js";import{a as q}from"./chunk-M5BHFFPW.js";import"./chunk-XUQHA7FY.js";import"./chunk-AJ6OO7CP.js";import"./chunk-UPAKGSOK.js";import"./chunk-FMECWSCG.js";import{B as yt,E,F as xt,c as $,e as be,h as k,l as qe,o as O,s as vt}from"./chunk-QMS2MBIA.js";import"./chunk-XDEVWINC.js";import"./chunk-RUD3FHIM.js";import"./chunk-WLVEHCCR.js";import{b as J}from"./chunk-P7GOTTNS.js";import{a as V}from"./chunk-3DEA4WWC.js";import"./chunk-2UKJ5JFU.js";import{n as xe,q as bt}from"./chunk-3GXUD7K4.js";import{Ba as Ce,Bb as h,Bc as _e,Cc as pt,Db as v,Dc as fe,Eb as rt,Ec as je,F as ie,Fa as w,Fb as at,Gb as G,Ha as re,Hb as H,Ib as C,J as Je,Jb as a,Kb as d,Kc as mt,La as et,Lb as x,Lc as ut,N as Ge,R as He,Rd as _t,Tc as y,Td as ft,Ua as tt,Ub as M,Ud as ye,Wd as ht,Xb as g,Xc as gt,Yc as he,Za as l,Zb as c,ba as W,bc as dt,cc as lt,dc as ct,eb as nt,ga as A,hc as me,ib as D,jc as Y,lc as st,mc as s,md as ve,na as oe,nb as it,nc as R,o as Qe,ob as Q,oc as j,p as K,ra as b,rc as ae,sc as de,sd as Ct,tc as le,u as L,v as Ye,va as _,wa as f,xa as Ze,xb as ot,ya as Xe,zd as N}from"./chunk-NGFIIVK5.js";import"./chunk-WFMAM73Y.js";import{a as p,b as u,k as Ke}from"./chunk-SNAKHGZS.js";var Ee=class{ID;Name;CreatorID;Created;ModifierID;Modified;Description};var P=class o{http=b(bt);toastr=b(xe);processUppy=b(Qt);destroyRef=b(Ce);formulaNameService=b(Jt);_productForm=w(null);productForm=this._productForm.asReadonly();product=y(()=>this._productForm()?.Product??null);options=y(()=>this._productForm()?.Options??null);outletStocks=y(()=>this._productForm()?.Product?.OutletStocks??[]);productImages=y(()=>this._productForm()?.Product?.ProductImages??[]);supplierName=y(()=>this._productForm()?.SupplierName??null);isValidVariantCode=y(()=>this._productForm()?.CodeRequired?!(this._productForm()?.Product?.Variants??[]).some(e=>V.IsEmpty(e.Code)):!0);nextProductName=y(()=>this._productForm()?.NextProductName??null);productLocations=y(()=>this._productForm()?.Product?.ProductLocations??[]);language=y(()=>this._productForm()?.Language??"Indonesian");isEditMode=y(()=>!V.IsEmpty(this._productForm()?.Product?.ID));productNameMaxCharacter=200;productDescriptionMaxCharacter=3e3;variantNameMaxCharacter=100;loadForm(t={}){return this.http.post(B.ProductForm,t).pipe(A(e=>{let n=V.IsEmpty(e.Product?.ID),i=this.applyCodeSuggestion(e,n);this._productForm.set(i),this.initializeProductLocations(),this.initializeOutletStocks(i.Options?.Entities??[]),this.initializeDefaultCategory(n,i)}))}initializeOutletStocks(t){let e=t.map(i=>({EntityID:i.ID,Name:i.Name,OnHand:void 0,MinStock:void 0,MaxStock:void 0})),n=this._productForm()?.Product?.OutletStocks;this._productForm.update(i=>u(p({},i),{Product:u(p({},i?.Product),{OutletStocks:n?.length>0?n:e})}))}initializeProductLocations(){let t=this._productForm()?.ProductLocations;t&&this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{ProductLocations:t})}))}updateProductName(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Name:t})}))}updateProductCode(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Code:t})}))}updateProductCategory(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{CategoryID:t})})),this.updateCodeByCategory(t)}updateProductReleaseDate(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Released:t})}))}updateProductDiscontinue(t){let e=(this._productForm()?.Product?.Variants??[]).map(n=>u(p({},n),{Discontinued:t}));this._productForm.update(n=>u(p({},n),{Product:u(p({},n?.Product),{Discontinued:t,Variants:e})}))}handleVariantTypeUOM(t){let e=t===7||t===8,n=(this._productForm()?.Product?.Variants??[]).map((i,r)=>u(p({},i),{Ratio:e?1:i.Ratio,TypeID:e?r===0?8:7:t}));this.updateProductVariant(n)}updateBaseUnitModelReferences(t,e){if(!t||t.trim()===""||t===e)return;let n=(this._productForm()?.Product?.Variants??[]).map(i=>i.BaseUnitModel===t?u(p({},i),{BaseUnitModel:e}):i);this.updateProductVariant(n)}updateProductBrand(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{BrandID:t})}))}updateProductTag(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{TagIDs:[...t]})}))}updateProductSupplier(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{SupplierID:t})}))}updateProductVariantType(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{VariantTypeID:t})}))}updateProductSupplierWithName(t,e){this._productForm.update(n=>u(p({},n),{SupplierName:e,Product:u(p({},n?.Product),{SupplierID:t})}))}updateProductNextID(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{NextProductID:t})}))}updateProductDesc(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Description:t})}))}updateProductCurrency(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{CostCurrencyID:t})}))}updateProductImages(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{ProductImages:[...t],ImageUrl:t?.[0]?.URL??null})}))}updateProductVariant(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Variants:[...t]})}))}updateOutletStocks(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{OutletStocks:[...t]})}))}updateProductVariantValue(t,e){let n=(this._productForm()?.Product?.Variants??[]).map(i=>u(p({},i),{[e]:t}));this.updateProductVariant(n),e==="UnitPrice"&&this._productForm.update(i=>u(p({},i),{Product:u(p({},i?.Product),{VariantUnitPrice:t})})),e==="UnitCost"&&this._productForm.update(i=>u(p({},i),{Product:u(p({},i?.Product),{VariantUnitCost:t})})),e==="Weight"&&this._productForm.update(i=>u(p({},i),{Product:u(p({},i?.Product),{VariantWeight:t})}))}updateStorageLocation(t,e){let n=this._productForm()?.Product?.ProductLocations??[];V.IsEmpty(t)&&(t=V.GuidEmpty),n.find(r=>r.OutletID===e)?n=n.map(r=>r.OutletID===e?u(p({},r),{StorageID:t}):r):V.IsEmpty(t)||(n=[...n,{OutletID:e,StorageID:t}]),this._productForm.update(r=>u(p({},r),{Product:u(p({},r?.Product),{ProductLocations:n})}))}updateProductUOM(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{VariantUOM:t})}))}updateNextProductWithName(t,e){this._productForm.update(n=>u(p({},n),{NextProductName:e,Product:u(p({},n?.Product),{NextProductID:t})}))}uploadImages(t){let e=this._productForm()?.CloudinaryFolder??"",n=t.map(({file:i,id:r})=>this.processUppy.uploadFileThroughPreSignedUrl(i,e).pipe(L(m=>({ImageID:r,ImageName:i.name,ImageURL:m.url}))));n.length&&Ye(n).pipe(ce(this.destroyRef)).subscribe(i=>{let r=new Set(this.productImages().map(S=>S.ImageID??S.ID)),m=i.filter(S=>!r.has(S.ImageID));this.updateProductImages([...this.productImages(),...m])})}removeImageById(t){let e=this.productImages().filter(n=>(n.ImageID??n.ID)!==t);this.updateProductImages(e)}removeImageByIndex(t){let e=[...this.productImages()];e.splice(t,1),this.updateProductImages(e)}updateCodeByCategory(t){this._productForm()?.ProductCodeByCategory&&this.http.get(B.ProductCodeByCategory,[{key:"ID",value:t}]).pipe(ie(e=>V.IsNotEmpty(e.Code)),ce(this.destroyRef)).subscribe(e=>this.updateProductCode(e.Code))}applyCodeSuggestion(t,e){let n=V.IsNotEmpty(t.CodeSuggestion);return e&&n?u(p({},t),{Product:u(p({},t.Product),{Code:t.CodeSuggestion})}):t}initializeDefaultCategory(t,e){let n=V.IsEmpty(e.Product?.CategoryID),i=e.Options?.Categories?.[0]?.key??null;!t||!n||!i||this.updateProductCategory(i)}createNewCategory(t){return this.http.post(B.CreateNewCategory,{name:t,parentID:"undefined"}).pipe(A(()=>this.toastr.success("Category added",q.Success)))}createNewBrand(t){return this.http.post(B.CreateNewBrand,{name:t}).pipe(L(e=>({ID:e.ObjectID,Name:t})),A(e=>{this._productForm.update(n=>u(p({},n),{Options:u(p({},n?.Options),{Brands:[...n?.Options?.Brands??[],e]})})),this.updateProductBrand(e.ID),this.toastr.success("Brand added",q.Success)}))}createNewTag(t){return this.http.post(B.CreateNewTags,{name:t}).pipe(L(e=>({ID:e.ObjectID,Name:t})),A(e=>{let n=new Ee;n.ID=e.ID,n.Name=e.Name,this._productForm.update(i=>u(p({},i),{Options:u(p({},i?.Options),{Tags:[...i?.Options?.Tags??[],n]})})),this.updateProductTag([...this.product()?.TagIDs??[],e.ID]),this.toastr.success("Tag added",q.Success)}))}createNewSupplier(t){let e={contact:t,type:"supplier",groups:t?.Group??[]};return this.http.post(B.CreateNewSupplier,e).pipe(L(n=>({ID:n.ID,Name:t.Name})),A(n=>{this.updateProductSupplier(n.ID),this.toastr.success("Supplier added",q.Success)}))}checkExistNameAndCode(t,e){return this.http.post(B.ProductIsUnique,{Name:t,Code:e,ID:this._productForm()?.Product?.ID??null}).pipe(Je(()=>Qe({exist:!1})))}showDuplicateNameCodeError(){this.toastr.error("Product name or code already exist",q.Error)}getProductDescSuggestion(t,e){let n={ProductName:this.product()?.Name,CategoryID:this.product()?.CategoryID,Language:t,Keywords:e};return this.http.post(B.GetProductDescSuggestion,n)}updateVariantCodesFromProductCode(t){let e=this._productForm()?.ProductCodeGenerator?.VariantCodeGenerator;if(!e?.Enabled||!t)return;let n=(this._productForm()?.Product?.Variants??[]).map(i=>u(p({},i),{Code:i.Code?i.Code:t+`${e.Separator}${(i.Model??"").slice(0,e.SubstringDigit)}`}));this.updateProductVariant(n)}onSave(){let t=this.product();if(!t?.Name)return this.toastr.error("Product name is required",q.Error),K(()=>new Error("Product name is required"));if(this._productForm()?.CodeRequired&&V.IsEmpty(t?.Code))return this.toastr.error("Product code is required",q.Error),K(()=>new Error("Product code is required"));if(!this.isValidVariantCode())return this.toastr.warning("Please fill in the code for all variants","Variant Code Required"),K(()=>new Error("Variant code is required"));if((t?.Name?.length??0)>this.productNameMaxCharacter)return this.toastr.warning(`Product name maximum character is ${this.productNameMaxCharacter}`,"Maximum Character Exceeded"),K(()=>new Error("Product name exceeds maximum character limit"));if(this.getDescriptionLength(t?.Description)>this.productDescriptionMaxCharacter)return this.toastr.warning(`Product description maximum character is ${this.productDescriptionMaxCharacter}`,"Maximum Character Exceeded"),K(()=>new Error("Product description exceeds maximum character limit"));if(!this.validateBaseUnitAndMultiUOM())return K(()=>new Error("Invalid BaseUnit/MultipleUOM configuration"));if(!this.validateVariantNames())return K(()=>new Error("Duplicate variant names found"));let e=this.prepareProductForSubmit(t);return this.http.post(B.SubmitProduct,e).pipe(A(()=>this.toastr.success("Product saved successfully",q.Success)))}prepareImagesForSubmit(t,e){return(t??[]).map(n=>{let i=n?.URL??"",r="";if(i&&i.includes("crop")){let S=i.split("upload/")[1]??"",F=e?S.split(`/${e}`)[0]:S.split("/")[0];F&&(r=F+"#")}let m=i?i.substring(i.lastIndexOf("/")+1):"";return u(p({},n),{URL:(r||"")+(m??"")})})}prepareProductForSubmit(t){if(!t)return t;let e=this._productForm()?.CloudinaryFolder??"",n=this.prepareImagesForSubmit(t?.ProductImages??[],e);return u(p({},t),{Variants:this.preparedVariantNameBeforeSubmit(t.Name,t.Variants)??[],ProductImages:n,ImageUrl:n[0]?.URL??t?.ImageUrl??null})}preparedVariantNameBeforeSubmit(t,e=[]){let n=this._productForm()?.VariantDisplayNameFormula;return n?e.map(r=>u(p({},r),{Name:this.formulaNameService.generateVariantName(n,t,r.Model??"")})):void 0}validateVariantNames(){let t=this.product()?.Variants??[],e=new Set;for(let n of t){let i=(n.Model??"").trim().toLowerCase();if(!i)continue;let r=(n.Code??"").trim().toLowerCase(),m=`${i}||${r}`;if(e.has(m))return this.toastr.error("Variant names must be unique.","Duplicate Variant Name"),!1;e.add(m)}return!0}getDescriptionLength(t){if(!t)return 0;let e=document.createElement("div");return e.innerHTML=t,e.textContent?.length??0}validateBaseUnitAndMultiUOM(){let t=this.product(),e=t?.VariantTypeID===8,n=t?.VariantTypeID===7;if(!e&&!n)return!0;let i=t?.Variants??[],r=i.filter(F=>F.TypeID===8).length,m=i.filter(F=>F.TypeID===7).length,S=r>=1&&m>=1&&r<=1;return S||this.toastr.warning("Ensure there is at least one base unit type and one multi-unit type.","Incomplete Variant Configuration"),S}static \u0275fac=function(e){return new(e||o)};static \u0275prov=oe({token:o,factory:o.\u0275fac})};function mn(o,t){o&1&&(a(0,"span",6),s(1,"Main"),d())}function un(o,t){if(o&1){let e=M();a(0,"button",8),g("click",function(){_(e);let i=c().$index,r=c();return f(r.onRemove(i))}),s(1," \xD7 "),d()}}function gn(o,t){if(o&1){let e=M();a(0,"div",3),g("cdkDropListDropped",function(i){_(e);let r=c();return f(r.drop(i))}),a(1,"div",4),g("click",function(i){let r=_(e).$implicit,m=c();return f(m.onZoomImage(r.OnNewFormURL??r.URL,i))}),x(2,"img",5),h(3,mn,2,0,"span",6),h(4,un,2,0,"button",7),d()()}if(o&2){let e=t.$implicit,n=t.$index,i=c();C("cdkDropListData",n),l(2),C("src",e.ImageURL||e.ImageUrl||"",tt)("alt",e.ImageName||"Product image"),l(),v(n===0?3:-1),l(),v(i.hasRole()?4:-1)}}function Cn(o,t){o&1&&(a(0,"div",10),Ze(),a(1,"svg",12),x(2,"rect",13)(3,"circle",14)(4,"polyline",15),d(),Xe(),a(5,"div",16),s(6,"Upload Image"),d()())}function _n(o,t){o&1&&x(0,"i",11)}function fn(o,t){if(o&1){let e=M();a(0,"div",9),g("click",function(){_(e);let i=c();return f(i.openUploadDialog())}),h(1,Cn,7,0,"div",10)(2,_n,1,0,"i",11),d()}if(o&2){let e=c();Y("piu-upload-area--full",e.images().length===0)("piu-upload-area--shrink",e.images().length>0)("piu-upload-area--disabled",!e.hasRole())("piu-upload-area--edit-mode",e.service.isEditMode()),C("matTooltip",e.hasRole()?"Click to upload image":"You do not have permission to upload images"),l(),v(e.images().length===0?1:2)}}var Fe=class o{service=b(P);role=b(J);dialog=b(Z);bigPicture=b(qt);images=he([]);maxFile=he(5);cloudinaryFolder=he("");imagesChange=gt();hasRole=y(()=>this.service.isEditMode()?!!this.role.product?.Edit&&!!this.role.product?.ImageEditor:!!this.role.product?.Create&&!!this.role.product?.ImageEditor);slotAvailable=y(()=>(this.images()?.length??0)<this.maxFile());canUpload=y(()=>this.hasRole()&&this.slotAvailable());onRemove(t){let e=[...this.images()||[]];e.splice(t,1),this.service.updateProductImages(e)}openUploadDialog(){if(!this.canUpload())return;let t=this.service.productForm();this.dialog.open(Yt,{data:{currentProductImagesLength:this.images()?.length??0,CloudinaryFolder:t?.CloudinaryFolder??"",productID:t?.Product?.ID??null}}).afterClosed().subscribe(n=>{if(n?.length){let i=[...this.images()||[],...n];this.service.updateProductImages(i)}})}onZoomImage(t,e){return Ke(this,null,function*(){this.bigPicture.openBiggerPicture(e,t)})}drop(t){let e=[...this.images()||[]];Dt(e,t.previousContainer.data,t.container.data),this.service.updateProductImages(e)}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-product-image-upload"]],inputs:{images:[1,"images"],maxFile:[1,"maxFile"],cloudinaryFolder:[1,"cloudinaryFolder"]},outputs:{imagesChange:"imagesChange"},decls:4,vars:1,consts:[["cdkDropListGroup","",1,"d-flex","flex-wrap","gap-2","align-items-start","w-100"],["cdkDropList","","cdkDropListOrientation","horizontal",3,"cdkDropListData"],[1,"piu-upload-area",3,"matTooltip","piu-upload-area--full","piu-upload-area--shrink","piu-upload-area--disabled","piu-upload-area--edit-mode"],["cdkDropList","","cdkDropListOrientation","horizontal",3,"cdkDropListDropped","cdkDropListData"],["cdkDrag","",1,"piu-preview-item","cursor-pointer",3,"click"],[3,"src","alt"],[1,"piu-main-badge"],["type","button","aria-label","Remove image",1,"piu-remove-btn"],["type","button","aria-label","Remove image",1,"piu-remove-btn",3,"click"],[1,"piu-upload-area",3,"click","matTooltip"],[1,"text-center"],["aria-hidden","true",1,"fa-thin","fa-plus","fa-2x",2,"color","#9ca3af"],["xmlns","http://www.w3.org/2000/svg","width","32","height","32","viewBox","0 0 24 24","fill","none","stroke","#9ca3af","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["x","3","y","3","width","18","height","18","rx","2"],["cx","8.5","cy","8.5","r","1.5"],["points","21 15 16 10 5 21"],[1,"piu-upload-label","mt-1","fs-6","text-muted"]],template:function(e,n){e&1&&(a(0,"div",0),G(1,gn,5,5,"div",1,at),h(3,fn,3,10,"div",2),d()),e&2&&(l(),H(n.images()),l(2),v(n.slotAvailable()?3:-1))},dependencies:[N,I,T,we,De,Tt,Ve],styles:[".piu-preview-item[_ngcontent-%COMP%]{position:relative;width:125px;height:125px;border-radius:6px;overflow:hidden;border:1px solid #e2e8f0;flex-shrink:0}.piu-preview-item[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover;display:block}.piu-preview-item[_ngcontent-%COMP%] .piu-main-badge[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;right:0;background:#0b5ed7d1;color:#fff;font-size:.6rem;font-weight:600;text-align:center;padding:2px 0;letter-spacing:.04em}.piu-preview-item[_ngcontent-%COMP%] .piu-remove-btn[_ngcontent-%COMP%]{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;border:none;background:#dc2626d9;color:#fff;font-size:.75rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.piu-preview-item[_ngcontent-%COMP%]:hover .piu-remove-btn[_ngcontent-%COMP%]{opacity:1}.piu-upload-area[_ngcontent-%COMP%]{border:1.5px dashed #d1d5db;border-radius:8px;display:flex;align-items:center;justify-content:center;background:#fafafa;cursor:pointer;transition:border-color .15s,background .15s}.piu-upload-area[_ngcontent-%COMP%]:hover{border-color:#9ca3af;background:#f3f4f6}.piu-upload-area--full[_ngcontent-%COMP%]{width:100%;min-height:160px;flex-direction:column;gap:.25rem}.piu-upload-area--edit-mode[_ngcontent-%COMP%]{min-height:125px}.piu-upload-area--shrink[_ngcontent-%COMP%]{width:125px;height:125px;flex-shrink:0}.piu-upload-label[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:#374151}.piu-upload-hint[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af}.piu-upload-area--disabled[_ngcontent-%COMP%]{opacity:.45;cursor:not-allowed}"],changeDetection:0})};function hn(o,t){o&1&&(a(0,"a",10),x(1,"i",19),d()),o&2&&C("matTooltipPositionAtOrigin",!0)}function vn(o,t){o&1&&(a(0,"div",11),s(1," Code is required "),d())}function yn(o,t){if(o&1){let e=M();a(0,"POS-product-category-select",20),g("selectedCategoryIDChange",function(i){_(e);let r=c();return f(r.onCategoryChange(i))}),d()}if(o&2){let e,n=c();C("isInitializedCategoryLabel",!0)("selectedCategoryID",n.categoryID())("categories",(e=n.options())==null?null:e.Categories)}}var Oe=class o{service=b(P);roleService=b(J);dialog=b(Z);treeSelector=b($t);destroyRef=b(Ce);productCode=y(()=>this.service.product()?.Code??null);isCodeRequired=y(()=>this.service.productForm()?.CodeRequired??!1);options=y(()=>this.service?.options()??null);maxNameLength=200;categoryID=y(()=>this.service.product()?.CategoryID??null);images=y(()=>this.service.productImages());cloudinaryFolder=y(()=>this.service.productForm()?.CloudinaryFolder??"");maxFile=5;productNameCtrl=new qe(null,be.required);productCodeCtrl=new qe(null);constructor(){this.initCodeValidators(),re(()=>{let t=this.productCode();this.productCodeCtrl.value!==t&&this.productCodeCtrl.setValue(t,{emitEvent:!1})}),re(()=>{let t=this.service.product()?.Name??null,e=this.productNameCtrl.value;V.IsEmpty(e)&&V.IsNotEmpty(t)&&this.productNameCtrl.setValue(t,{emitEvent:!1})})}initCodeValidators(){re(()=>{this.isCodeRequired()?this.productCodeCtrl.addValidators(be.required):this.productCodeCtrl.removeValidators(be.required),this.productCodeCtrl.updateValueAndValidity({emitEvent:!1})})}ngOnInit(){this.productNameCtrl.valueChanges.pipe(L(t=>(t??"").toString().trim()),He(),Ge(1e3),A(t=>this.service.updateProductName(t)),W(t=>this.service.checkExistNameAndCode(t,this.productCodeCtrl.value??"")),ce(this.destroyRef)).subscribe(t=>{t?.exist&&this.service.showDuplicateNameCodeError()}),this.productCodeCtrl.valueChanges.pipe(L(t=>(t??"").toString()),He(),Ge(1e3),W(t=>this.service.checkExistNameAndCode(this.productNameCtrl.value??"",t).pipe(A(e=>{e?.exist?this.service.showDuplicateNameCodeError():this.service.updateVariantCodesFromProductCode(t)}),L(()=>t))),ce(this.destroyRef)).subscribe(t=>this.service.updateProductCode(t??""))}onCategoryChange(t){this.service.updateProductCategory(t)}openAddCategoryDialog(){this.dialog.open(ue,{data:{form:{Name:null,Status:"Category"}}}).afterClosed().subscribe(e=>{e?.Name&&this.service.createNewCategory(e.Name).subscribe(n=>{n?.key&&this.service.updateProductCategory(n.key),this.treeSelector.forceLoadCategories()})})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-general-card"]],decls:27,vars:16,consts:[[1,"card","mb-12"],[1,"card-body"],[1,"d-flex","flex-column","gap-10"],["for","productName",1,"mb-2"],["placeholder","Long pants jeans","errorMessage","Name is required","id","productName","trimInput","",3,"autofocus","formControl","inputName","maxlength","valid","floatingLabel"],[1,"row","g-3"],[1,"col-6"],["for","productCode",1,"mb-2"],[1,"position-relative"],["id","productCode","type","text","disallowSpaces","","placeholder","VAR-0001","matTooltip","Stock Keeping Unit (SKU) Code","matTooltipPosition","above",1,"form-control",3,"formControl"],["routerLink","/menu/Settings/Module/Product","fragment","productCodeGeneratorProduct","target","_blank","matTooltip","Click here to enable or disable auto-generation of Code","matTooltipPosition","above","tabindex","-1",1,"pointer","text-dark","position-absolute",2,"top","50%","right","10px","transform","translateY(-50%)",3,"matTooltipPositionAtOrigin"],["aria-hidden","true",1,"invalid-feedback"],["for","categorySelect",1,"mb-2","d-flex","align-items-center","gap-1"],["matTooltip","Add New Category","matTooltipPosition","above",1,"fa-sharp","fa-thin","fa-circle-plus","cursor-pointer",3,"click"],[1,"gc-category-wrap"],["placeholder","Select Category","id","categorySelect",3,"isInitializedCategoryLabel","selectedCategoryID","categories"],["for","productImageUpload",1,"mb-2"],[1,"text-muted"],["id","productImageUpload",3,"images","maxFile","cloudinaryFolder"],[1,"fa-solid","fa-gear","fa-lg"],["placeholder","Select Category","id","categorySelect",3,"selectedCategoryIDChange","isInitializedCategoryLabel","selectedCategoryID","categories"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"div")(4,"label",3),s(5,"Product Name"),d(),x(6,"POS-input-limit",4),d(),a(7,"div",5)(8,"div",6)(9,"label",7),s(10,"Product Code"),d(),a(11,"div",8),x(12,"input",9),h(13,hn,2,1,"a",10),h(14,vn,2,0,"div",11),d()(),a(15,"div",6)(16,"label",12),s(17," Category "),a(18,"i",13),g("click",function(){return n.openAddCategoryDialog()}),d()(),a(19,"div",14),h(20,yn,1,3,"POS-product-category-select",15),d()()(),a(21,"div")(22,"label",16),s(23,"Product Image "),a(24,"span",17),s(25),d()(),x(26,"POS-product-image-upload",18),d()()()()),e&2){let i;l(6),C("autofocus",!0)("formControl",n.productNameCtrl)("inputName","productName")("maxlength",n.service.productNameMaxCharacter)("valid",n.productNameCtrl.touched&&n.productNameCtrl.invalid)("floatingLabel",!1),l(6),Y("is-invalid",n.productCodeCtrl.touched&&n.productCodeCtrl.invalid),C("formControl",n.productCodeCtrl),l(),v(n.roleService.setup.View&&n.productCodeCtrl.valid?13:-1),l(),v(n.productCodeCtrl.touched&&n.productCodeCtrl.invalid?14:-1),l(6),v((i=n.options())!=null&&i.Categories?20:-1),l(5),j("(",n.images().length,"/5)"),l(),C("images",n.images())("maxFile",n.maxFile)("cloudinaryFolder",n.cloudinaryFolder())}},dependencies:[E,$,k,yt,xt,vt,I,T,ye,Fe,Xt,Bt,Zt,ke],styles:['[_nghost-%COMP%]{display:flex;flex-direction:column}[_nghost-%COMP%] input[_ngcontent-%COMP%]{font-size:.75rem}[_nghost-%COMP%] label[_ngcontent-%COMP%]{font-size:.813rem}.card[_ngcontent-%COMP%]{flex:1;overflow-y:auto}.gc-section-title[_ngcontent-%COMP%]{color:#374151;border-bottom-color:#eef2f5!important}.gc-label[_ngcontent-%COMP%]{color:#374151}#productCode[_ngcontent-%COMP%]{height:2.375rem;border-radius:.25rem!important;padding:.375rem .75rem!important} .input-limit-container .input-core{height:2.375rem;border-radius:.25rem!important;padding:.375rem .75rem!important;font-size:.75rem} pos-input-limit .limit-preview, .input-limit-container .limit-preview{top:3px!important;transform:none!important}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect{height:2.375rem;align-items:center;border-radius:.25rem;border:1px solid #dee2e6;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect.p-focus, .gc-category-wrap[_ngcontent-%COMP%] .p-treeselect.p-overlay-open{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-label{font-size:.75rem;padding:.375rem .75rem;line-height:1.5}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-dropdown{background:transparent!important;border:none!important;box-shadow:none!important;width:2rem;padding:0;display:flex;align-items:center;justify-content:center}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-dropdown .p-treeselect-dropdown-icon, .gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-dropdown svg{display:none!important}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-dropdown:after{content:"";border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px;display:inline-block;height:0;width:0}'],changeDetection:0})};var bn=o=>({"pb-9":o});function Mn(o,t){if(o&1){let e=M();a(0,"div",2)(1,"label",14),s(2,"Type"),d(),a(3,"ng-select",15),g("ngModelChange",function(i){_(e);let r=c();return f(r.onTypeChange(i))}),d()()}if(o&2){let e,n,i=c();l(3),C("items",(e=i.options())==null?null:e.Types)("clearable",!1)("ngModel",(n=i.product())==null?null:n.VariantTypeID)("disabled",i.service.isEditMode())}}var Ue=class o{service=b(P);dialog=b(Z);options=y(()=>this.service.options());product=y(()=>this.service.product());supplierName=y(()=>this.service.supplierName());statusOptions=[{Key:!1,Value:"Active"},{Key:!0,Value:"Discontinued"}];onTypeChange(t){this.service.updateProductVariantType(t),this.service.handleVariantTypeUOM(t)}onBrandChange(t){this.service.updateProductBrand(t)}onTagsChange(t){this.service.updateProductTag(t??[])}onStatusChange(t){this.service.updateProductDiscontinue(t)}onSupplierSelected(t){let{Key:e,Value:n}=JSON.parse(t);this.service.updateProductSupplierWithName(e,n)}openBrandDialog(){this.dialog.open(ue,{data:{form:{Name:null,Status:"Brand"}}}).afterClosed().pipe(W(t=>t?.Name?this.service.createNewBrand(t.Name):[])).subscribe()}openTagDialog(){this.dialog.open(ue,{data:{form:{Name:null,Status:"Tag"}}}).afterClosed().pipe(W(t=>t?.Name?this.service.createNewTag(t.Name):[])).subscribe()}openSupplierDialog(){this.dialog.open(Kt,{data:{options:{Genders:[{Key:0,Value:"Male"},{Key:1,Value:"Female"}]},config:{DefaultValue:{Gender:0}},type:"supplier",title:"New Supplier Form"}}).afterClosed().pipe(ie(t=>V.IsNotEmpty(t?.supplier?.Name)),W(t=>this.service.createNewSupplier(t.supplier))).subscribe(t=>{this.service.updateProductSupplierWithName(t.ID,t.Name)})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-properties-card"]],decls:22,vars:17,consts:[[1,"card","mb-12"],[1,"card-body"],[1,"mb-6"],["for","supplierSelect",1,"mb-2","d-flex","align-items-center","gap-1"],["matTooltip","Add New Supplier","matTooltipPosition","above",1,"fa-sharp","fa-thin","fa-circle-plus","cursor-pointer",3,"click"],["id","supplierSelect","customLabel","Supplier","placeholder","Supplier","requestUrl","/API/AC/GetSupplierSuggestion","matTooltip","Input supplier for this product","matTooltipPosition","above",1,"w-100",3,"optionSelected","customStyle","ngModel","inputTextValue"],["for","brandSelect",1,"mb-2","d-flex","align-items-center","gap-1"],["matTooltip","Add New Brand","matTooltipPosition","above",1,"fa-sharp","fa-thin","fa-circle-plus","cursor-pointer",3,"click"],["id","brandSelect","bindLabel","Name","bindValue","ID","matTooltip","Select brand for this product","matTooltipPosition","above",1,"productform","w-100",3,"ngModelChange","items","clearable","ngModel"],["for","tagsSelect",1,"mb-2","d-flex","align-items-center","gap-1"],["matTooltip","Add New Tag","matTooltipPosition","above",1,"fa-sharp","fa-thin","fa-circle-plus","cursor-pointer",3,"click"],["id","tagsSelect","fluid","","display","chip","optionLabel","Name","optionValue","ID","matTooltip","Select tags for this product","matTooltipPosition","above",3,"ngModelChange","showClear","options","ngModel"],["for","statusSelect",1,"mb-2"],["id","statusSelect","bindLabel","Value","bindValue","Key","matTooltip","Set product status","matTooltipPosition","above",1,"productform","w-100",3,"ngModelChange","items","clearable","ngModel"],["for","typeSelect",1,"mb-2"],["id","typeSelect","bindLabel","Value","bindValue","Key","matTooltip","Choose product type","matTooltipPosition","above",1,"productform","w-100",3,"ngModelChange","items","clearable","ngModel","disabled"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"div",1),h(2,Mn,4,4,"div",2),a(3,"div",2)(4,"label",3),s(5," Supplier "),a(6,"i",4),g("click",function(){return n.openSupplierDialog()}),d()(),a(7,"autocompleteV2",5),g("optionSelected",function(r){return n.onSupplierSelected(r)}),d()(),a(8,"div",2)(9,"label",6),s(10," Brand "),a(11,"i",7),g("click",function(){return n.openBrandDialog()}),d()(),a(12,"ng-select",8),g("ngModelChange",function(r){return n.onBrandChange(r)}),d()(),a(13,"div",2)(14,"label",9),s(15," Tags "),a(16,"i",10),g("click",function(){return n.openTagDialog()}),d()(),a(17,"p-multiselect",11),g("ngModelChange",function(r){return n.onTagsChange(r)}),d()(),a(18,"div",2)(19,"label",12),s(20,"Status"),d(),a(21,"ng-select",13),g("ngModelChange",function(r){return n.onStatusChange(r)}),d()()()()),e&2){let i,r,m,S,F,pe;st(fe(15,bn,n.service.isEditMode())),l(2),v(n.service.isEditMode()?-1:2),l(5),C("customStyle",!0)("ngModel",(i=n.product())==null?null:i.SupplierID)("inputTextValue",n.supplierName()),l(5),C("items",(r=n.options())==null?null:r.Brands)("clearable",!0)("ngModel",(m=n.product())==null?null:m.BrandID),l(5),C("showClear",!0)("options",(S=n.options())==null?null:S.Tags)("ngModel",(F=n.product())==null?null:F.TagIDs),l(4),C("items",n.statusOptions)("clearable",!1)("ngModel",(pe=n.product())==null?null:pe.Discontinued)}},dependencies:[E,k,O,I,T,ee,X,Gt,Wt,Ne,Ie],styles:['label[_ngcontent-%COMP%]{font-size:.813rem}[_nghost-%COMP%] .productform.ng-select .ng-select-container{border-color:#dee2e6;min-height:2.375rem}[_nghost-%COMP%] .productform.ng-select.ng-select-single .ng-select-container{height:2.375rem}[_nghost-%COMP%] .productform.ng-select input{padding-top:0!important}[_nghost-%COMP%] .productform.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#86b7fe;box-shadow:0 0 0 .25rem #0d6efd40}[_nghost-%COMP%] .p-multiselect{min-height:2.375rem;border-radius:.25rem;border:1px solid #dee2e6;align-items:center;width:100%}[_nghost-%COMP%] .p-multiselect.p-focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}[_nghost-%COMP%] .p-multiselect .p-multiselect-label{font-size:.75rem;padding:.375rem .75rem}[_nghost-%COMP%] .p-multiselect .p-multiselect-clear-icon{width:10px;font-weight:700}[_nghost-%COMP%] .p-multiselect .p-multiselect-dropdown{background:transparent!important;border:none!important;box-shadow:none!important;width:2rem;padding:0;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%] .p-multiselect .p-multiselect-dropdown .p-multiselect-dropdown-icon, [_nghost-%COMP%] .p-multiselect .p-multiselect-dropdown svg{display:none!important}[_nghost-%COMP%] .p-multiselect .p-multiselect-dropdown:after{content:"";border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px;display:inline-block;height:0;width:0}[_nghost-%COMP%] autocompleteV2{display:block}[_nghost-%COMP%] autocompleteV2 .mat-mdc-text-field-wrapper{height:2.375rem;padding:0!important;border:1px solid #dee2e6!important;border-radius:.25rem!important;background:#fff!important}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-flex{height:100%;padding:0 .75rem!important;align-items:center}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:unset!important;width:100%;display:flex;align-items:center}[_nghost-%COMP%] autocompleteV2 label{display:none!important}[_nghost-%COMP%] autocompleteV2 input.form-control{box-shadow:none!important;height:2.375rem;font-size:.75rem}[_nghost-%COMP%] autocompleteV2 .mdc-line-ripple{display:none}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-subscript-wrapper{display:none}[_nghost-%COMP%] autocompleteV2:focus-within .mat-mdc-text-field-wrapper{border-color:#86b7fe!important;box-shadow:0 0 0 .25rem #0d6efd40!important}'],changeDetection:0})};var ne=class o{productFormService=b(P);product=y(()=>this.productFormService.product());variants=y(()=>this.productFormService.product()?.Variants??[]);isMultiple=w(!1);isMultipleWithEmptyVariant=y(()=>this.isMultiple()&&this.variants().some(t=>(t.Model??"").trim().length===0));update(t){let e=[...this.variants()||[]],n=t(e);this.productFormService.updateProductVariant(n)}addVariantRow(){let t=this.createNewVariant();this.update(e=>[...e,t])}createNewVariant(){let t=this.productFormService.product()?.VariantTypeID??1,e={ID:"",Model:"",Name:this.product()?.Name??"",Code:"",UnitCost:0,UnitPrice:0,Discount:0,Weight:0,TypeID:t,Ratio:1,UnitQuantity:1,Discontinued:!1,ActivePromotionCount:0,Components:null,BaseUnitModel:null},n=this.product()?.ID??null;return n&&n!==V.GuidEmpty?(e.ProductID=n,e.CostCurrencyID=this.productFormService.product()?.CostCurrencyID??1,e.PriceCurrencyID=this.productFormService.product()?.PriceCurrencyID??1):e.ProductID=V.GuidEmpty,e}updateVariantField(t,e,n){this.update(i=>{let r=[...i],m=u(p({},r[t]),{[e]:n});return e==="Model"&&(m.Code=this.generateVariantCodeConfig(m)),r[t]=m,r})}replaceVariant(t,e){this.update(n=>{let i=[...n];i[t]=p({},e);let r=i[t].Code??"";return V.IsEmpty(r)&&(i[t].Code=this.generateVariantCodeConfig(i[t])),i})}removeVariantByIndex(t){this.update(e=>e.filter((n,i)=>i!==t))}clearVariants(){this.productFormService.updateProductVariant([])}sortVariants(t,e){e&&this.update(n=>[...n].sort((r,m)=>{let S=r[t]??"",F=m[t]??"",pe=typeof S=="number"?S-F:String(S).localeCompare(String(F));return e==="asc"?pe:-pe}))}reorderVariants(t,e){this.update(n=>{let i=[...n],[r]=i.splice(t,1);return i.splice(e,0,r),i})}updateAllVariantDiscount(t){this.update(e=>e.map(n=>u(p({},n),{Discount:t})))}generateVariantCodeConfig(t){let e=t.Code??"",n=this.productFormService.productForm()?.ProductCodeGenerator?.VariantCodeGenerator,i=this.productFormService.product()?.Code??"";return n?.Enabled&&i&&(e=`${i}${n.Separator??""}${t.Model.slice(0,n.SubstringDigit)}`),e}static \u0275fac=function(e){return new(e||o)};static \u0275prov=oe({token:o,factory:o.\u0275fac})};var Pn=["variantInput"],ln=(o,t)=>({"btn-primary":o,"btn-outline-secondary":t}),Vn=(o,t)=>t.key;function Dn(o,t){if(o&1){let e=M();a(0,"li",14)(1,"div",15),g("click",function(i){return i.stopPropagation()}),a(2,"p-checkbox",16),le("ngModelChange",function(i){let r=_(e).$implicit;return de(r.selected,i)||(r.selected=i),f(i)}),g("onChange",function(){let i=_(e).$implicit,r=c(2);return f(r.columnService.toggleColumn(i.key))}),d(),a(3,"label",17),s(4),d()()()}if(o&2){let e=t.$implicit;l(2),ae("ngModel",e.selected),C("binary",!0)("inputId","vcol-"+e.key),l(),C("for","vcol-"+e.key),l(),j(" ",e.name??e.key," ")}}function wn(o,t){if(o&1&&(a(0,"div",4)(1,"div",10),x(2,"i",11),d(),a(3,"ul",12)(4,"div",13)(5,"h6"),s(6,"Columns to View"),d()(),G(7,Dn,5,5,"li",14,Vn),d()()),o&2){let e=c();l(7),H(e.columnService.getAvailableColumns(!0))}}function Tn(o,t){if(o&1){let e=M();a(0,"div",5)(1,"button",18),g("click",function(){_(e);let i=c();return f(i.onToggleMode(!1))}),x(2,"i",19),s(3," Single "),d(),a(4,"button",18),g("click",function(){_(e);let i=c();return f(i.onToggleMode(!0))}),x(5,"i",20),s(6," Multiple "),d()()}if(o&2){let e=c();l(),C("ngClass",je(2,ln,!e.variantService.isMultiple(),e.variantService.isMultiple())),l(3),C("ngClass",je(5,ln,e.variantService.isMultiple(),!e.variantService.isMultiple()))}}function In(o,t){if(o&1){let e=M();a(0,"div",8)(1,"div",21)(2,"label",22),s(3,"Buying Cost"),d(),a(4,"input",23),g("ngModelChange",function(i){_(e);let r=c();return f(r.service.updateProductVariantValue(i,"UnitCost"))}),d()(),a(5,"div",21)(6,"label",24),s(7,"Selling Price"),d(),a(8,"input",25),g("ngModelChange",function(i){_(e);let r=c();return f(r.service.updateProductVariantValue(i,"UnitPrice"))}),d()(),a(9,"div",21)(10,"label",26),s(11,"Weight (gr)"),d(),a(12,"input",27),g("ngModelChange",function(i){_(e);let r=c();return f(r.service.updateProductVariantValue(i,"Weight"))}),d()()()}if(o&2){let e,n,i,r=c();l(4),C("ngModel",(e=r.product())==null?null:e.VariantUnitCost),l(4),C("ngModel",(n=r.product())==null?null:n.VariantUnitPrice),l(4),C("ngModel",(i=r.product())==null?null:i.VariantWeight)}}function Nn(o,t){o&1&&(a(0,"th",34),s(1,"Code"),d())}function kn(o,t){o&1&&(a(0,"th",35),s(1," Cost "),d())}function En(o,t){o&1&&(a(0,"th",36),s(1," Price "),d())}function Fn(o,t){o&1&&(a(0,"th",37),s(1,"Discount %"),d())}function On(o,t){o&1&&(a(0,"th",37),s(1,"Weight (gr)"),d())}function Un(o,t){o&1&&(a(0,"th",37),s(1,"Ratio"),d())}function Ln(o,t){o&1&&(a(0,"th",38),s(1,"Reference Unit"),d())}function Rn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",53,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"Code",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"Code"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-Code")("ngModel",n.Code)}}function An(o,t){if(o&1){let e=M();a(0,"td")(1,"input",54,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"UnitCost",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"UnitCost"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-UnitCost")("ngModel",n.UnitCost)}}function $n(o,t){if(o&1){let e=M();a(0,"td")(1,"input",54,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"UnitPrice",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"UnitPrice"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-UnitPrice")("ngModel",n.UnitPrice)}}function Bn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",55,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"Discount",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"Discount"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-Discount")("ngModel",n.Discount)("max",100)("min",0)}}function Wn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",54,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"Weight",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"Weight"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-Weight")("ngModel",n.Weight)}}function Gn(o,t){if(o&1&&(a(0,"td",47),s(1),d()),o&2){let e=c().$implicit;l(),R(e.Ratio)}}function Hn(o,t){if(o&1&&(a(0,"td"),s(1),d()),o&2){let e=c().$implicit;l(),R(e.BaseUnitModel)}}function jn(o,t){if(o&1){let e=M();a(0,"tr",42)(1,"td",43)(2,"button",44),x(3,"i",45),d()(),a(4,"td")(5,"input",46,0),g("ngModelChange",function(i){let r=_(e).$index,m=c(2);return f(m.updateVariantField(r,"Model",i))})("keydown.enter",function(i){let r=_(e).$index,m=c(2);return f(m.onVariantEnter(i,r,"Model"))}),d()(),h(7,Rn,3,2,"td"),h(8,An,3,2,"td"),h(9,$n,3,2,"td"),h(10,Bn,3,4,"td"),h(11,Wn,3,2,"td"),h(12,Gn,2,1,"td",47),h(13,Hn,2,1,"td"),a(14,"td",43)(15,"div",48)(16,"button",49),g("click",function(){let i=_(e),r=i.$implicit,m=i.$index,S=c(2);return f(S.onEditVariant(r,m))}),x(17,"i",50),d(),a(18,"button",51),g("click",function(i){let r=_(e).$index,m=c(2);return f(m.removeVariantByIndex(r,i))}),x(19,"i",52),d()()()()}if(o&2){let e=t.$implicit,n=t.$index,i=t.$index,r=c(2);Y("bg-gradient-warning",e.Discontinued),l(5),C("id","v-"+i+"-Model")("ngModel",e.Model),l(2),v(r.columnService.columnsToDisplay.Code.selected?7:-1),l(),v(r.role.product!=null&&r.role.product.Cost&&r.columnService.columnsToDisplay.UnitCost.selected?8:-1),l(),v(r.role.sell!=null&&r.role.sell.PriceVisible&&r.columnService.columnsToDisplay.UnitPrice.selected?9:-1),l(),v(r.columnService.columnsToDisplay.Percentage.selected?10:-1),l(),v(r.columnService.columnsToDisplay.Weight.selected?11:-1),l(),v(r.columnService.columnsToDisplay.Ratio.selected?12:-1),l(),v(r.columnService.columnsToDisplay.ReferenceUnit.selected?13:-1),l(5),C("disabled",n==0)}}function qn(o,t){o&1&&x(0,"td")}function zn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",56),le("ngModelChange",function(i){_(e);let r=c(2);return de(r.setAll.UnitCost,i)||(r.setAll.UnitCost=i),f(i)}),g("ngModelChange",function(i){_(e);let r=c(2);return f(r.updateAllVariantField(i,"UnitCost"))}),d()()}if(o&2){let e=c(2);l(),ae("ngModel",e.setAll.UnitCost)}}function Kn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",57),le("ngModelChange",function(i){_(e);let r=c(2);return de(r.setAll.UnitPrice,i)||(r.setAll.UnitPrice=i),f(i)}),g("ngModelChange",function(i){_(e);let r=c(2);return f(r.updateAllVariantField(i,"UnitPrice"))}),d()()}if(o&2){let e=c(2);l(),ae("ngModel",e.setAll.UnitPrice)}}function Qn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",58),le("ngModelChange",function(i){_(e);let r=c(2);return de(r.setAll.Discount,i)||(r.setAll.Discount=i),f(i)}),g("ngModelChange",function(i){_(e);let r=c(2);return f(r.updateAllVariantDiscount(i))}),d()()}if(o&2){let e=c(2);l(),ae("ngModel",e.setAll.Discount),C("max",100)("min",0)}}function Yn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",59),le("ngModelChange",function(i){_(e);let r=c(2);return de(r.setAll.Weight,i)||(r.setAll.Weight=i),f(i)}),g("ngModelChange",function(i){_(e);let r=c(2);return f(r.updateAllVariantField(i,"Weight"))}),d()()}if(o&2){let e=c(2);l(),ae("ngModel",e.setAll.Weight)}}function Jn(o,t){o&1&&x(0,"td")}function Zn(o,t){o&1&&x(0,"td")}function Xn(o,t){if(o&1){let e=M();a(0,"div",9)(1,"table",28),g("matSortChange",function(i){_(e);let r=c();return f(r.onSortVariants(i))})("cdkDropListDropped",function(i){_(e);let r=c();return f(r.onDropVariant(i))}),a(2,"thead",29)(3,"tr")(4,"th")(5,"div",30)(6,"button",31),g("click",function(i){return _(e),c().addVariantRow(),f(i.stopPropagation())}),x(7,"i",32),d()()(),a(8,"th",33),s(9,"Variant Name"),d(),h(10,Nn,2,0,"th",34),h(11,kn,2,0,"th",35),h(12,En,2,0,"th",36),h(13,Fn,2,0,"th",37),h(14,On,2,0,"th",37),h(15,Un,2,0,"th",37),h(16,Ln,2,0,"th",38),x(17,"th",39),d()(),a(18,"tbody"),G(19,jn,20,12,"tr",40,rt),d(),a(21,"tfoot")(22,"tr"),x(23,"td",41),h(24,qn,1,0,"td"),h(25,zn,2,1,"td"),h(26,Kn,2,1,"td"),h(27,Qn,2,3,"td"),h(28,Yn,2,1,"td"),h(29,Jn,1,0,"td"),h(30,Zn,1,0,"td"),x(31,"td"),d()()()()}if(o&2){let e=c();l(10),v(e.columnService.columnsToDisplay.Code.selected?10:-1),l(),v(e.role.product!=null&&e.role.product.Cost&&e.columnService.columnsToDisplay.UnitCost.selected?11:-1),l(),v(e.role.sell!=null&&e.role.sell.PriceVisible&&e.columnService.columnsToDisplay.UnitPrice.selected?12:-1),l(),v(e.columnService.columnsToDisplay.Percentage.selected?13:-1),l(),v(e.columnService.columnsToDisplay.Weight.selected?14:-1),l(),v(e.columnService.columnsToDisplay.Ratio.selected?15:-1),l(),v(e.columnService.columnsToDisplay.ReferenceUnit.selected?16:-1),l(3),H(e.variants()),l(5),v(e.columnService.columnsToDisplay.Code.selected?24:-1),l(),v(e.role.product!=null&&e.role.product.Cost&&e.columnService.columnsToDisplay.UnitCost.selected?25:-1),l(),v(e.role.sell!=null&&e.role.sell.PriceVisible&&e.columnService.columnsToDisplay.UnitPrice.selected?26:-1),l(),v(e.columnService.columnsToDisplay.Percentage.selected?27:-1),l(),v(e.columnService.columnsToDisplay.Weight.selected?28:-1),l(),v(e.columnService.columnsToDisplay.Ratio.selected?29:-1),l(),v(e.columnService.columnsToDisplay.ReferenceUnit.selected?30:-1)}}var Le=class o{service=b(P);variantService=b(ne);columnService=b(tn);role=b(J);dialog=b(Z);toastr=b(xe);variantInputs;setAll={UnitCost:null,UnitPrice:null,Discount:null,Weight:null};variants=y(()=>this.variantService.variants());product=y(()=>this.service.product());constructor(){re(()=>{let t=this.service.product()?.Variants??[];(this.service.isEditMode()||t.length>0)&&(this.variantService.isMultiple()||this.variantService.isMultiple.set(!0))})}onToggleMode(t){this.variantService.isMultiple.set(t),t&&this.variants().length==0?(this.variantService.addVariantRow(),setTimeout(()=>this.focusVariantInput(0,"Model"),0)):this.variantService.clearVariants()}addVariantRow(){let t=this.variants()?.length-1;this.validateNewVariant(t,"Model"),this.variantService.isMultiple.set(!0)}updateVariantField(t,e,n){this.variantService.updateVariantField(t,e,n)}removeVariantByIndex(t,e){e?.stopPropagation(),this.variantService.removeVariantByIndex(t)}onEditVariant(t,e){let n=t.Model,i=this.service.productForm();this.dialog.open(en,{data:{form:p({},t),Options:i?.Options,parentDiscontinued:this.product()?.Discontinued,productName:this.product()?.Name,maskingFields:i?.MaskFields??[],codeRequired:i?.CodeRequired,variantDisplayNameFormula:i?.VariantDisplayNameFormula,referenceUnit:this.variants(),selectedReferenceUnitModel:this.variants().filter((r,m)=>m!==e).map(r=>r.BaseUnitModel)}}).afterClosed().subscribe(r=>{r&&(this.service.updateBaseUnitModelReferences(n,r.Model),this.variantService.replaceVariant(e,r))})}onSortVariants(t){this.variantService.sortVariants(t.active,t.direction)}onDropVariant(t){this.variantService.reorderVariants(t.previousIndex,t.currentIndex)}updateAllVariantField(t,e){this.service.updateProductVariantValue(Number(t)||0,e)}updateAllVariantDiscount(t){this.variantService.updateAllVariantDiscount(Number(t)||0)}onVariantEnter(t,e,n){t.preventDefault(),t.stopPropagation(),this.validateNewVariant(e,n)}validateNewVariant(t,e){let n=this.variants().length-1;if(t===n){if(!this.variants()[t]?.Model?.trim()){this.toastr.warning("Variant Name cannot be empty.","Empty Variant Name");return}this.variantService.addVariantRow(),setTimeout(()=>this.focusVariantInput(t+1,"Model"),0)}else this.focusVariantInput(t+1,e)}focusVariantInput(t,e){let n=this.variantInputs?.toArray()??[],i=`v-${t}-${e}`,r=n.find(S=>S.nativeElement.id===i);if(r){r.nativeElement.focus();return}let m=`v-${t}-Model`;r=n.find(S=>S.nativeElement.id===m),r?.nativeElement?.focus()}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-variant-card"]],viewQuery:function(e,n){if(e&1&&dt(Pn,5,et),e&2){let i;lt(i=ct())&&(n.variantInputs=i)}},decls:11,vars:4,consts:[["variantInput",""],[1,"card","mb-12"],[1,"card-header","d-flex","justify-content-between","align-items-center"],[1,"d-flex","align-items-center","gap-2"],[1,"dropdown"],[1,"btn-group"],[1,"border-bottom","mx-8","mt-6"],[1,"card-body","px-10"],[1,"row","g-3"],[1,"table-responsive"],["role","button","data-bs-toggle","dropdown","aria-expanded","false",1,"p-0","d-flex","justify-content-center","align-items-center",2,"cursor","pointer"],["matTooltip","Toggle columns","matTooltipPosition","above",1,"fa-solid","fa-columns-3","mt-2","position-relative","mb-0"],[1,"dropdown-menu","dropdown-menu-start","mt-2"],[1,"border-bottom","pb-3","px-3"],[1,"column-toggle-group"],[1,"p-4",3,"click"],[1,"me-3",3,"ngModelChange","onChange","ngModel","binary","inputId"],[1,"cursor-pointer",2,"width","70%",3,"for"],[1,"btn","fs-6",3,"click","ngClass"],[1,"fa-solid","fa-archive","fa-lg","me-1"],[1,"fa-solid","fa-boxes","fa-lg","me-1"],[1,"col-md-4"],["for","buyingCost",1,"mb-2"],["id","buyingCost","type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["for","sellingPrice",1,"mb-2"],["id","sellingPrice","type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["for","weight",1,"mb-2"],["id","weight","type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["matSort","","cdkDropList","",1,"table",3,"matSortChange","cdkDropListDropped"],[1,"table-light"],[1,"d-flex","justify-content-center","align-items-center"],["matTooltip","Add New Variant","aria-label","Add New Variant",1,"btn","btn-sm","btn-primary","border-0","cdk-mouse-focused","px-3","py-1",3,"click"],[1,"fa-solid","fa-plus","fs-6"],["mat-sort-header","Model",1,"fw-normal"],["mat-sort-header","Code",1,"fw-normal"],["mat-sort-header","UnitCost","arrowPosition","before",1,"text-end","fw-normal"],["mat-sort-header","UnitPrice","arrowPosition","before",1,"text-end","fw-normal"],[1,"text-end","fw-normal"],[1,"fw-normal"],[2,"width","80px"],["cdkDrag","",3,"bg-gradient-warning"],["colspan","2"],["cdkDrag",""],[1,"text-center"],["cdkDragHandle","","matTooltip","Drag to reorder",1,"btn","btn-sm","p-0",2,"cursor","grab"],[1,"fa-solid","fa-bars"],["type","text","placeholder","e.g. Red, Large","trimInput","",1,"form-control","rounded-1",3,"ngModelChange","keydown.enter","id","ngModel"],[1,"text-end"],[1,"d-flex","align-items-center","justify-content-center"],["matTooltip","Edit advanced fields",1,"btn","btn-sm","p-0",3,"click"],[1,"fas","fa-edit","text-secondary","me-2","fs-4"],["matTooltip","Remove variant",1,"btn","btn-sm","p-0","border-0",3,"click","disabled"],[1,"fa","fa-xmark","text-danger","fa-lg","fs-4"],["type","text","placeholder","VAR-001234",1,"form-control","rounded-1",3,"ngModelChange","keydown.enter","id","ngModel"],["type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","keydown.enter","id","ngModel"],["type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","keydown.enter","id","ngModel","max","min"],["type","text","placeholder","set all cost","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["type","text","placeholder","set all price","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["type","text","placeholder","set all %","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel","max","min"],["type","text","placeholder","set all weight","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"]],template:function(e,n){e&1&&(a(0,"div",1)(1,"div",2)(2,"div",3)(3,"h3"),s(4),d(),h(5,wn,9,0,"div",4),d(),h(6,Tn,7,8,"div",5),d(),x(7,"div",6),a(8,"div",7),h(9,In,13,3,"div",8)(10,Xn,32,14,"div",9),d()()),e&2&&(l(4),j(" ",n.variantService.isMultiple()?"Pricing & Variants":"Pricing"," "),l(),v(n.variantService.isMultiple()&&n.variants().length>0?5:-1),l(),v(n.service.isEditMode()?-1:6),l(3),v(!n.variantService.isMultiple()&&!n.service.isEditMode()?9:10))},dependencies:[N,ve,E,$,k,O,we,De,Ve,wt,Pe,Me,Se,I,T,It,Ot,Ft,Te,ke],styles:["[_nghost-%COMP%] input[_ngcontent-%COMP%]{height:2.375rem;border-radius:.25rem!important;padding:.375rem .75rem!important;font-size:.75rem}[_nghost-%COMP%] label[_ngcontent-%COMP%]{font-size:.813rem}"],changeDetection:0})};var ge=class o{productFormService=b(P);outletStocks=y(()=>this.productFormService.outletStocks());entities=y(()=>this.productFormService.options()?.Entities??[]);update(t){let e=[...this.outletStocks()],n=t(e);this.productFormService.updateOutletStocks(n)}updateStockField(t,e,n){this.update(i=>i.map(r=>r.EntityID===t?u(p({},r),{[e]:n}):r))}updateAllStockField(t,e){this.update(n=>n.map(i=>u(p({},i),{[t]:e})))}static \u0275fac=function(e){return new(e||o)};static \u0275prov=oe({token:o,factory:o.\u0275fac})};var ei=o=>({"bg-light":o}),ti=(o,t)=>t.EntityID;function ni(o,t){if(o&1&&x(0,"span",14),o&2){let e=c(3);C("ngClass",fe(1,ei,!e.role.inventory.Edit))}}function ii(o,t){if(o&1){let e=M();a(0,"input",18),g("ngModelChange",function(i){_(e);let r=c().$implicit,m=c(2);return f(m.onUpdateField(r.EntityID,"OnHand",i))}),d()}if(o&2){let e=c().$implicit;C("ngModel",e.OnHand)}}function oi(o,t){if(o&1){let e=M();a(0,"tr")(1,"td",13),s(2),d(),a(3,"td"),s(4,":"),d(),a(5,"td"),h(6,ni,1,3,"span",14),h(7,ii,1,1,"input",15),d(),a(8,"td")(9,"input",16),g("ngModelChange",function(i){let r=_(e).$implicit,m=c(2);return f(m.onUpdateField(r.EntityID,"MinStock",i))}),d()(),a(10,"td")(11,"input",17),g("ngModelChange",function(i){let r=_(e).$implicit,m=c(2);return f(m.onUpdateField(r.EntityID,"MaxStock",i))}),d()()()}if(o&2){let e=t.$implicit,n=c(2);l(2),R(e.Name),l(4),v(n.role.inventory.Edit?-1:6),l(),v(n.role.inventory.Edit?7:-1),l(2),C("ngModel",e.MinStock),l(2),C("ngModel",e.MaxStock)}}function ri(o,t){if(o&1){let e=M();a(0,"input",23),g("ngModelChange",function(i){_(e);let r=c(3);return r.bulkOnHand.set(i),f(r.onUpdateAllField("OnHand",i))}),d()}if(o&2){let e=c(3);C("ngModel",e.bulkOnHand())}}function ai(o,t){if(o&1){let e=M();a(0,"tfoot")(1,"tr"),x(2,"td",19),a(3,"td"),h(4,ri,1,1,"input",20),d(),a(5,"td")(6,"input",21),g("ngModelChange",function(i){_(e);let r=c(2);return r.bulkMinStock.set(i),f(r.onUpdateAllField("MinStock",i))}),d()(),a(7,"td")(8,"input",22),g("ngModelChange",function(i){_(e);let r=c(2);return r.bulkMaxStock.set(i),f(r.onUpdateAllField("MaxStock",i))}),d()()()()}if(o&2){let e=c(2);l(4),v(e.role.inventory.Edit?4:-1),l(2),C("ngModel",e.bulkMinStock()),l(2),C("ngModel",e.bulkMaxStock())}}function di(o,t){if(o&1){let e=M();a(0,"div",5)(1,"table",6),g("matSortChange",function(i){_(e);let r=c();return f(r.onSortStocks(i))}),a(2,"thead",7)(3,"tr")(4,"th",8),s(5," Outlet "),d(),x(6,"th",9),a(7,"th",10),s(8," On Hand "),d(),a(9,"th",11),s(10," ROP "),d(),a(11,"th",12),s(12," Max "),d()()(),a(13,"tbody"),G(14,oi,12,5,"tr",null,ti),d(),h(16,ai,9,3,"tfoot"),d()()}if(o&2){let e=c();l(14),H(e.outletStocks()),l(2),v(e.hasMultipleEntities()?16:-1)}}var Re=class o{service=b(P);inventoryService=b(ge);role=b(J);isExpanded=w(!1);outletStocks=y(()=>this.inventoryService.outletStocks());hasMultipleEntities=y(()=>this.inventoryService.outletStocks().length>1);bulkOnHand=w(null);bulkMinStock=w(null);bulkMaxStock=w(null);onUpdateField(t,e,n){this.inventoryService.updateStockField(t,e,n)}onUpdateAllField(t,e){this.inventoryService.updateAllStockField(t,e)}onSortStocks(t){if(!t.direction)return;let e=[...this.outletStocks()].sort((n,i)=>{let r=n.Name.localeCompare(i.Name);return t.direction==="asc"?r:-r});this.service.updateOutletStocks(e)}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-inventory-card"]],features:[_e([ge])],decls:6,vars:2,consts:[[1,"card","mb-12"],[2,"box-shadow","none !important",3,"opened","closed","expanded"],["matTooltipPosition","above",2,"height","60px",3,"matTooltip"],[1,"fw-normal",2,"color","#4d4d4d"],["matExpansionPanelContent",""],[1,"table-responsive"],["matSort","",1,"table","table-bordered",3,"matSortChange"],[1,"thead-light"],["mat-sort-header","Name","matTooltipPosition","above","matTooltip","Outlet list",1,"border-end"],[1,"border-end",2,"width","10px"],["matTooltipPosition","above","matTooltip","Number of inventory in the outlet",1,"text-end","border-end",2,"width","120px"],["matTooltipPosition","above","matTooltip","Number of minimum inventory before it needs to be reordered",1,"text-end","border-end",2,"width","120px"],["matTooltipPosition","above","matTooltip","Number of maximum inventory to be kept in the outlet",1,"text-end","border-end",2,"width","120px"],[1,"align-middle"],[1,"form-control","text-end",3,"ngClass"],["type","text","matTooltipPosition","above","matTooltip","Input On Hand Inventory for this outlet","autoNum","",1,"form-control","text-end",3,"ngModel"],["type","text","matTooltipPosition","above","matTooltip","Input Reorder Inventory for this outlet","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["type","text","matTooltipPosition","above","matTooltip","Input Maximum Inventory for this outlet","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["type","text","matTooltipPosition","above","matTooltip","Input On Hand Inventory for this outlet","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["colspan","2"],["type","text","placeholder","Set all outlet","matTooltipPosition","above","matTooltip","Input On Hand Inventory for all outlets","autoNum","",1,"form-control","text-end",3,"ngModel"],["type","text","placeholder","Set all outlet","matTooltipPosition","above","matTooltip","Input Reorder Inventory for all outlets","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["type","text","placeholder","Set all outlet","matTooltipPosition","above","matTooltip","Input Maximum Inventory for all outlets","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["type","text","placeholder","Set all outlet","matTooltipPosition","above","matTooltip","Input On Hand Inventory for all outlets","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"]],template:function(e,n){e&1&&(a(0,"div",0)(1,"mat-expansion-panel",1),g("opened",function(){return n.isExpanded.set(!0)})("closed",function(){return n.isExpanded.set(!1)}),a(2,"mat-expansion-panel-header",2)(3,"h3",3),s(4,"Inventory"),d()(),Q(5,di,17,1,"ng-template",4),d()()),e&2&&(l(),C("expanded",n.isExpanded()),l(),C("matTooltip",n.isExpanded()?"Click to collapse":"Click to expand"))},dependencies:[N,ve,E,$,k,O,an,on,rn,nn,I,T,Pe,Me,Se,Te],encapsulation:2,changeDetection:0})};function li(o,t){if(o&1&&(a(0,"div",18)(1,"p",21),s(2),d()()),o&2){let e=c();l(2),j(" ",e.generatedDescription()," ")}}function ci(o,t){o&1&&s(0," Generating... ")}function si(o,t){o&1&&s(0," Generate ")}function pi(o,t){if(o&1){let e=M();a(0,"button",22),g("click",function(){_(e);let i=c(),r=me(12);return f(i.onGenerateDescription(r))}),h(1,ci,1,0)(2,si,1,0),d()}if(o&2){let e=c();C("disabled",e.isGenerating()),l(),v(e.isGenerating()?1:2)}}function mi(o,t){if(o&1){let e=M();a(0,"button",23),g("click",function(){_(e);let i=c(),r=me(12);return f(i.onGenerateDescription(r))}),s(1," Regenerate "),d(),a(2,"button",24),g("click",function(){_(e);let i=c(),r=me(12);return f(i.onAcceptDescription(r))}),s(3," Accept "),d()}}var Ae=class o{service=b(P);dropdownEvent;description=y(()=>this.service.product()?.Description??"");maxLength=this.service.productDescriptionMaxCharacter;keywords=w("");selectedLanguage=w(this.service.language());generatedDescription=w(null);isGenerating=w(!1);onDescriptionChange(t){this.service.updateProductDesc(t)}onGenerateDescription(t){this.dropdownEvent=t,this.isGenerating.set(!0),this.service.getProductDescSuggestion(this.selectedLanguage(),this.keywords()).subscribe({next:e=>{this.generatedDescription.set(e.Message??e.message??""),this.isGenerating.set(!1)},error:()=>this.isGenerating.set(!1)})}onAcceptDescription(t){let e=this.generatedDescription();e&&(this.service.updateProductDesc(e),this.generatedDescription.set(null),this.keywords.set(""),t.hide())}ngOnDestroy(){this.dropdownEvent&&this.dropdownEvent?.hide()}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-description"]],decls:26,vars:8,consts:[["op",""],["height","250px",3,"ngModelChange","ngModel","maxLength"],[1,"mt-8","d-flex","align-items-center","justify-content-end"],[1,"d-flex","align-items-center","gap-2"],[1,"btn","btn-gradient-ai","btn-sm",3,"click"],["matTooltipPosition","above","matTooltip","Generate product description with DealPOS AI",1,"fa-regular","fa-sparkles"],[1,"ms-2"],["href","https://support.dealpos.com/en/articles/10152475-generate-product-description-with-dealpos-ai","target","_blank","matTooltipPosition","above","matTooltip","Learn more about AI description"],[1,"fa-solid","fa-circle-info"],[1,"p-0"],[2,"max-width","400px"],[1,"mb-3"],[1,"fw-bold","mb-1"],["name","keywords","id","keywords","placeholder","Enter additional keywords (e.g., color, size, material)","cols","80","rows","3",1,"form-control",3,"ngModelChange","ngModel"],[1,"d-flex","align-items-center","gap-3","mb-3"],["bindLabel","Value","bindValue","Value","placeholder","Language",2,"min-width","130px",3,"ngModelChange","items","ngModel","clearable"],[1,"border-bottom","flex-grow-1"],[1,"fa-regular","fa-sparkles"],[1,"border","rounded","p-3","mb-3","bg-light"],[1,"d-flex","justify-content-end","gap-2"],[1,"btn","btn-success","btn-sm",3,"disabled"],[1,"mb-0",2,"white-space","pre-wrap"],[1,"btn","btn-success","btn-sm",3,"click","disabled"],[1,"btn","btn-outline-secondary","btn-sm",3,"click"],[1,"btn","btn-success","btn-sm",3,"click"]],template:function(e,n){if(e&1){let i=M();a(0,"div")(1,"POS-tinymce-editor",1),g("ngModelChange",function(m){return n.onDescriptionChange(m)}),d()(),a(2,"div",2)(3,"div",3)(4,"button",4),g("click",function(m){_(i);let S=me(12);return f(S.toggle(m))}),x(5,"i",5),a(6,"span",6),s(7,"Generate with AI"),d()(),a(8,"h3")(9,"a",7),x(10,"i",8),d()()(),a(11,"p-popover",9,0)(13,"div",10)(14,"div",11)(15,"label",12),s(16,"Additional Keywords"),d(),a(17,"textarea",13),g("ngModelChange",function(m){return n.keywords.set(m)}),d()(),a(18,"div",14)(19,"ng-select",15),g("ngModelChange",function(m){return n.selectedLanguage.set(m)}),d(),x(20,"div",16)(21,"i",17),d(),h(22,li,3,1,"div",18),a(23,"div",19),h(24,pi,3,2,"button",20)(25,mi,4,0),d()()()()}if(e&2){let i;l(),C("ngModel",n.description())("maxLength",n.maxLength),l(16),C("ngModel",n.keywords()),l(2),C("items",(i=n.service.productForm())==null||i.Options==null?null:i.Options.LanguageOptions)("ngModel",n.selectedLanguage())("clearable",!1),l(3),v(n.generatedDescription()?22:-1),l(2),v(n.generatedDescription()?25:24)}},dependencies:[N,E,$,k,O,ee,X,I,T,Lt,Ut,zt],encapsulation:2,changeDetection:0})};var ui=(o,t)=>t.ID;function gi(o,t){o&1&&(a(0,"div"),s(1,"Outlet"),d())}function Ci(o,t){if(o&1){let e=M();a(0,"input",14),g("ngModelChange",function(i){_(e);let r=c();return f(r.outletQuery.set(i))})("click",function(i){return i.stopPropagation()}),d()}if(o&2){let e=c();C("ngModel",e.outletQuery())}}function _i(o,t){if(o&1){let e=M();a(0,"tr")(1,"td"),s(2),d(),a(3,"td")(4,"ng-select",15),g("change",function(i){let r=_(e).$implicit,m=c(2);return f(m.onSelectStorage(r.ID,i))}),d()()()}if(o&2){let e=t.$implicit,n=c(2);l(2),R(e.Name),l(2),C("items",n.storages())("ngModel",n.selectedStoragesMap().get(e.ID))}}function fi(o,t){if(o&1&&G(0,_i,5,3,"tr",null,ui),o&2){let e=c();H(e.filteredEntities())}}function hi(o,t){o&1&&(a(0,"tr")(1,"td",16),x(2,"app-empty-state"),d()())}var $e=class o{service=b(P);entities=y(()=>this.service.options()?.Entities??[]);storages=y(()=>this.service.options()?.Storages??[]);selectedStoragesMap=y(()=>{let t=this.service.productLocations(),e=new Map;return t.forEach(n=>{e.set(n.OutletID,n.StorageID??null)}),e});filterToggle=w(!1);outletQuery=w("");filteredEntities=y(()=>{let t=this.outletQuery().trim().toLowerCase();return t?this.entities().filter(e=>e.Name?.toLowerCase().includes(t)):this.entities()});onSelectStorage(t,e){let n=e?.Key??null;this.service.updateStorageLocation(n,t)}toggleSearch(){this.filterToggle.update(t=>!t),this.outletQuery.set("")}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-storage-location"]],decls:25,vars:7,consts:[[1,"row"],[1,"col-md-8"],[1,"table-responsive"],[1,"table",2,"position","relative"],[1,"thead-light"],["matTooltipPosition","above","matTooltip","Outlet List",1,"border-end",2,"width","40%"],[1,"d-flex","align-items-center","justify-content-between"],["type","text","placeholder","Search Outlet by Name","autofocus","",1,"txtFilter","form-control","me-4",3,"ngModel"],[1,"fa-solid","pointer",3,"click"],["matTooltipPosition","above","matTooltip","Storage location for the outlet"],[1,"col-md-4"],[1,"alert","d-flex","gap-3","align-items-start","border"],[1,"fa-solid","fa-circle-info","mt-1","flex-shrink-0"],[1,"text-secondary-emphasis","mt-2"],["type","text","placeholder","Search Outlet by Name","autofocus","",1,"txtFilter","form-control","me-4",3,"ngModelChange","click","ngModel"],["bindLabel","Value","bindValue","Key","matTooltipPosition","above","matTooltip","Select storage location for this outlet","appendTo","body",3,"change","items","ngModel"],["colspan","2",1,"text-center","py-5"]],template:function(e,n){e&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"table",3)(4,"thead",4)(5,"tr")(6,"th",5)(7,"div",6),h(8,gi,2,0,"div")(9,Ci,1,1,"input",7),a(10,"i",8),g("click",function(r){return r.stopPropagation(),n.toggleSearch()}),d()()(),a(11,"th",9),s(12," Storage "),d()()(),a(13,"tbody"),h(14,fi,2,0)(15,hi,3,0,"tr"),d()()()(),a(16,"div",10)(17,"div",11),x(18,"i",12),a(19,"div")(20,"strong"),s(21,"Information"),d(),x(22,"br"),a(23,"div",13),s(24," You can add storage locations by going to the Product menu, selecting More Settings, and then choosing Storage Location under the Setup section. "),d()()()()()),e&2&&(l(8),v(n.filterToggle()?9:8),l(2),Y("fa-filter",!n.filterToggle())("fa-filter-slash",n.filterToggle()),ot("title",n.filterToggle()?"Hide search":"Search outlet"),l(4),v(n.filteredEntities().length>0?14:15))},dependencies:[N,E,$,k,O,ee,X,I,T,jt],encapsulation:2,changeDetection:0})};function vi(o,t){if(o&1){let e=M();a(0,"div",1)(1,"label",10),s(2,"Units of Measurement"),d(),a(3,"ng-select",11),g("ngModelChange",function(i){_(e);let r=c();return f(r.onUOMChange(i))}),d()()}if(o&2){let e,n,i=c();l(3),C("clearable",!1)("ngModel",(e=i.product())==null?null:e.VariantUOM)("items",(n=i.options())==null?null:n.UOMs)}}function yi(o,t){if(o&1&&(a(0,"div",12)(1,"span",13),s(2),d(),a(3,"span"),s(4),d()()),o&2){let e=t.item;l(2),j("",e.Symbol," - "),l(2),R(e.Name)}}function xi(o,t){if(o&1&&(a(0,"div",12)(1,"span",13),s(2),d(),a(3,"span"),s(4),d()()),o&2){let e=t.item;l(2),R(e.Symbol),l(2),R(e.Name)}}var Be=class o{service=b(P);product=y(()=>this.service.product());options=y(()=>this.service.options());nextProductName=y(()=>this.service.nextProductName());onReleaseDateChange(t){let e=t?new Date(t).toISOString().split("T")[0]:null;this.service.updateProductReleaseDate(e)}onUOMChange(t){this.service.updateProductUOM(t)}onCurrencyChange(t){this.service.updateProductCurrency(t)}onNextProductSelected(t){try{let e=JSON.parse(t);this.service.updateNextProductWithName(e.Key??null,e.Value??null)}catch(e){}}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-more-settings"]],decls:16,vars:8,consts:[[1,"row"],[1,"col-6","mb-6"],[1,"mb-2"],["placeholder","Release Date","matTooltipPosition","above","matTooltip","Input released date for this product",3,"dateChange","date","isFloatingLabel"],["for","inputCostCurrency",1,"mb-2"],["id","inputCostCurrency","bindLabel","DisplayName","bindValue","ID","placeholder","Select currency","matTooltipPosition","above","matTooltip","Select cost currency used for this variant","appendTo","body",3,"ngModelChange","items","clearable","ngModel"],["ng-option-tmp",""],["ng-label-tmp",""],["for","inputNextProduct",1,"mb-2"],["id","inputNextProduct","appendTo","body","placeholder","Search product...","requestUrl","/API/AC/GetProductSuggestion","matTooltipPosition","above","matTooltip","Select next product to upsell after this product",1,"w-100",3,"optionSelected","ngModel","inputTextValue"],["for","inputUOM",1,"mb-2"],["id","inputUOM","bindLabel","Name","bindValue","ID","placeholder","Select UOM","matTooltipPosition","above","matTooltip","Select UOM for this product e.g. gram, meter, pcs, etc.","appendTo","body",3,"ngModelChange","clearable","ngModel","items"],[1,"d-flex","align-items-center","gap-2"],[1,"fw-semibold"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"div",1)(2,"label",2),s(3,"Release Date"),d(),a(4,"datepicker",3),g("dateChange",function(r){return n.onReleaseDateChange(r)}),d()(),h(5,vi,4,3,"div",1),a(6,"div",1)(7,"label",4),s(8,"Cost Currency"),d(),a(9,"ng-select",5),g("ngModelChange",function(r){return n.onCurrencyChange(r)}),Q(10,yi,5,2,"ng-template",6)(11,xi,5,2,"ng-template",7),d()(),a(12,"div",1)(13,"label",8),s(14,"Cross Sell Product"),d(),a(15,"autocompleteV2",9),g("optionSelected",function(r){return n.onNextProductSelected(r)}),d()()()),e&2){let i,r,m,S;l(4),C("date",(i=n.product())==null?null:i.Released)("isFloatingLabel",!1),l(),v(n.service.isEditMode()?-1:5),l(4),C("items",(r=n.options())==null?null:r.Currencies)("clearable",!1)("ngModel",(m=n.product())==null?null:m.CostCurrencyID),l(6),C("ngModel",(S=n.product())==null?null:S.NextProductID)("inputTextValue",n.nextProductName())}},dependencies:[N,E,k,O,ee,X,Nt,kt,I,T,Ht,Ne,Ie],styles:["label[_ngcontent-%COMP%]{font-size:.813rem}[_nghost-%COMP%] .ng-select .ng-select-container{border-color:#dee2e6;border-radius:.25rem;min-height:2.375rem}[_nghost-%COMP%] .ng-select.ng-select-single .ng-select-container{height:2.375rem}[_nghost-%COMP%] .ng-select input{padding-top:0!important}[_nghost-%COMP%] .ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#86b7fe;box-shadow:0 0 0 .25rem #0d6efd40}[_nghost-%COMP%] datepicker{display:block;--mdc-filled-text-field-container-color: white;--mdc-filled-text-field-active-indicator-color: transparent;--mdc-filled-text-field-hover-active-indicator-color: transparent;--mdc-filled-text-field-focus-active-indicator-color: transparent;--mdc-filled-text-field-active-indicator-height: 0px}[_nghost-%COMP%] datepicker mat-form-field{width:100%}[_nghost-%COMP%] datepicker .mat-mdc-text-field-wrapper{height:2.375rem;padding:0!important;background:#fff!important}[_nghost-%COMP%] datepicker .mat-mdc-form-field-flex{height:100%;padding:0 .75rem!important;align-items:center}[_nghost-%COMP%] datepicker .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:unset!important;width:100%;display:flex;align-items:center}[_nghost-%COMP%] datepicker .mat-mdc-form-field-infix input{font-size:.75rem}[_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix{padding:0!important;display:flex;align-items:center}[_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix button.mat-mdc-icon-button{width:1.75rem;height:1.75rem;padding:0;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix button.mat-mdc-icon-button .mat-icon, [_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix button.mat-mdc-icon-button mat-icon{font-size:1rem;width:1rem;height:1rem;line-height:1rem}[_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix button.mat-mdc-icon-button svg{width:1rem;height:1rem}[_nghost-%COMP%] datepicker .mdc-line-ripple{display:none}[_nghost-%COMP%] datepicker .mat-mdc-form-field-subscript-wrapper{display:none}[_nghost-%COMP%] datepicker label{display:none!important}[_nghost-%COMP%] datepicker:focus-within .mat-mdc-text-field-wrapper{border-color:#86b7fe!important;box-shadow:0 0 0 .25rem #0d6efd40!important}[_nghost-%COMP%] autocompleteV2{display:block}[_nghost-%COMP%] autocompleteV2 .mat-mdc-text-field-wrapper{height:2.375rem;padding:0!important;border:1px solid #dee2e6!important;border-radius:.25rem!important;background:#fff!important}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-flex{height:100%;padding:0 .75rem!important;align-items:center}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:unset!important;width:100%;display:flex;align-items:center}[_nghost-%COMP%] autocompleteV2 label{display:none!important}[_nghost-%COMP%] autocompleteV2 input.form-control{border-radius:4px!important;background:transparent!important;box-shadow:none!important;height:2.375rem;font-size:.75rem}[_nghost-%COMP%] autocompleteV2 .mdc-line-ripple{display:none}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-subscript-wrapper{display:none}[_nghost-%COMP%] autocompleteV2:focus-within .mat-mdc-text-field-wrapper{border-color:#86b7fe!important;box-shadow:0 0 0 .25rem #0d6efd40!important}"],changeDetection:0})};function bi(o,t){o&1&&(x(0,"i",5),a(1,"span",6),s(2,"Description"),d())}function Mi(o,t){o&1&&x(0,"POS-description")}function Si(o,t){o&1&&(x(0,"i",7),a(1,"span",6),s(2,"Storage Location"),d())}function Pi(o,t){o&1&&(x(0,"i",8),a(1,"span",6),s(2,"More Settings"),d())}var We=class o{activeTab=w(0);static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-tabs-card"]],decls:15,vars:2,consts:[[1,"card","mb-12"],[1,"card-body"],[1,"product-info-tab",3,"selectedIndexChange","mat-stretch-tabs"],["mat-tab-label",""],[1,"p-6"],[1,"fa-solid","fa-text","me-3","me-2"],[1,"fs-5"],[1,"fa-solid","fa-warehouse","me-2"],[1,"fa-solid","fa-circle-info","me-2"]],template:function(e,n){e&1&&(a(0,"div",0)(1,"div",1)(2,"mat-tab-group",2),g("selectedIndexChange",function(r){return n.activeTab.set(r)}),a(3,"mat-tab"),Q(4,bi,3,0,"ng-template",3),a(5,"div",4),h(6,Mi,1,0,"POS-description"),d()(),a(7,"mat-tab"),Q(8,Si,3,0,"ng-template",3),a(9,"div",4),x(10,"POS-storage-location"),d()(),a(11,"mat-tab"),Q(12,Pi,3,0,"ng-template",3),a(13,"div",4),x(14,"POS-more-settings"),d()()()()()),e&2&&(l(2),C("mat-stretch-tabs",!1),l(4),v(n.activeTab()===0?6:-1))},dependencies:[Vt,Mt,St,Pt,Ae,$e,Be],styles:["mat-tab-group.product-info-tab mat-tab-header{border-bottom:1px solid #e0e0e0}"],changeDetection:0})};var Vi=()=>["/menu/Products/Catalog/Products"];function Di(o,t){o&1&&(a(0,"div",8),x(1,"POS-inventory-card"),d())}var sn=class o extends dn{service=b(P);variantService=b(ne);submitBtnDisabled=y(()=>this.variantService.isMultipleWithEmptyVariant());router=b(ft);route=b(_t);product=this.service.product;menu$=this.menuData$.pipe(W(t=>{let e=this.route.snapshot.queryParams;return this.service.loadForm(e).pipe(L(n=>(n&&(t.H=n.PageTitle),t)))}));constructor(t){super(t)}onSave(){this.service.onSave().pipe(ie(t=>V.IsNotEmpty(t))).subscribe(t=>{t.RedirectTo=="Variant"?this.router.navigate(["/menu/Products/Catalog/Variants/Form"],{queryParams:{ID:t.FirstVariantID}}):this.router.navigate(["/menu/Products/Catalog/Products"])})}onCancel(){this.router.navigate(["/menu/Products/Catalog/Products"])}static \u0275fac=function(e){return new(e||o)(nt(Et))};static \u0275cmp=D({type:o,selectors:[["POS-product-form-v2"]],features:[_e([P,ne]),it],decls:22,vars:9,consts:[[3,"pageData","hideSearchDropdown","hideSearchBox"],["role","button","matTooltipPosition","above","matTooltip","Cancel this product",1,"btn","btn-outline-secondary","me-2",3,"routerLink"],["type","button","role","button","matTooltipPosition","above","matTooltip","Save this product",1,"btn","btn-success",3,"click","disabled"],[1,"container-fluid","bg-light-gray","pt-5"],[1,"row"],[1,"col-md-8","d-flex"],[1,"w-100"],[1,"col-md-4","d-flex","ps-5"],[1,"col-md-12"]],template:function(e,n){e&1&&(a(0,"mainpanel-cmp",0),mt(1,"async"),a(2,"actions")(3,"a",1),s(4,"Cancel"),d(),a(5,"button",2),g("click",function(){return n.onSave()}),s(6," Save "),d()(),a(7,"content")(8,"div",3)(9,"div",4)(10,"div",5),x(11,"POS-general-card",6),d(),a(12,"div",7),x(13,"POS-properties-card",6),d()(),a(14,"div",4)(15,"div",8),x(16,"POS-variant-card"),d()(),a(17,"div",4),h(18,Di,2,0,"div",8),d(),a(19,"div",4)(20,"div",8),x(21,"POS-tabs-card"),d()()()()()),e&2&&(C("pageData",ut(1,6,n.menu$))("hideSearchDropdown",!0)("hideSearchBox",!0),l(3),C("routerLink",pt(8,Vi)),l(2),C("disabled",n.submitBtnDisabled()),l(13),v(n.service.isEditMode()?-1:18))},dependencies:[N,ht,ye,Oe,Ue,Le,Re,We,At,Rt,Ct],styles:[".pf2-shell[_ngcontent-%COMP%]{background:#fff}"],changeDetection:0})};export{sn as ProductFormV2Component};
|
|
1
|
+
import{a as Yt,b as ue,c as Jt,d as Xt,e as en,f as tn}from"./chunk-K6NA7HMT.js";import{a as Zt}from"./chunk-HRGUDDKZ.js";import{a as nn,b as on,c as rn,g as an}from"./chunk-PDTEF7GP.js";import{a as dn}from"./chunk-OEZWD2O3.js";import{a as Qt}from"./chunk-LHUG6IEF.js";import{a as qt}from"./chunk-NEKBV3FU.js";import{b as ke,c as Kt}from"./chunk-EHH2QGAZ.js";import"./chunk-CSFBLJDG.js";import"./chunk-YGI2CFJK.js";import"./chunk-KMLNQ4BQ.js";import{a as zt}from"./chunk-XOJZGUT3.js";import"./chunk-DDLXGCOB.js";import"./chunk-ZOY3GIWS.js";import{b as Mt,c as St,d as Pt,e as Vt}from"./chunk-CIDPGJ5I.js";import"./chunk-6FI765LW.js";import{d as Ht}from"./chunk-3XXHI4EL.js";import{a as jt}from"./chunk-XC2DOMTX.js";import"./chunk-OFAMZL4W.js";import"./chunk-PRC6BIGW.js";import"./chunk-XRHB5YFU.js";import"./chunk-JGRL2V64.js";import"./chunk-77OYJ25Y.js";import"./chunk-IGAEFS7B.js";import"./chunk-4M7RPVWV.js";import"./chunk-5FZQUUGO.js";import{b as Me,c as Se,d as Pe}from"./chunk-W2DHHNBD.js";import{d as $t,e as Bt}from"./chunk-DD7XQJP3.js";import"./chunk-F3Q4DUGU.js";import"./chunk-L2YVRRNZ.js";import"./chunk-LU2TRITM.js";import"./chunk-NB2TBERF.js";import{b as Wt,c as Gt}from"./chunk-RVOPNNB5.js";import"./chunk-3VYMRLWZ.js";import"./chunk-FKYSDVEG.js";import"./chunk-ELS45DNO.js";import"./chunk-TMLUWER3.js";import"./chunk-S5D6TMC7.js";import"./chunk-GQLZJQI6.js";import{b as Ut,c as Lt,f as Rt,g as At}from"./chunk-NYDLVFJX.js";import"./chunk-KCKWSNMS.js";import"./chunk-IEXCLXA2.js";import{a as Te}from"./chunk-7TPO6NBM.js";import"./chunk-NS5MW6GH.js";import"./chunk-WQ627RLB.js";import"./chunk-G2KG6K7K.js";import"./chunk-YQH2QORC.js";import"./chunk-ZAPREM3S.js";import"./chunk-X36HAWOW.js";import"./chunk-2B2L2JOP.js";import"./chunk-N76EALXO.js";import"./chunk-QWL5S2RG.js";import"./chunk-UL6HUKIC.js";import{a as Dt,b as wt,d as Ve,e as Tt,f as De,h as we}from"./chunk-NLFBNSNG.js";import"./chunk-WTEYUHP4.js";import{a as Et}from"./chunk-IICP4XOG.js";import"./chunk-HRIVC724.js";import"./chunk-DTQAQRLJ.js";import{a as Ft,b as Ot}from"./chunk-6GC3SPMQ.js";import{e as Ie,f as Ne}from"./chunk-VU6O7LYV.js";import"./chunk-INL666X3.js";import"./chunk-UUAZGIAN.js";import"./chunk-SPPZGYU7.js";import"./chunk-FICGNDPR.js";import"./chunk-DYDRVXX3.js";import{a as T,b as I}from"./chunk-2BQQJ3YS.js";import"./chunk-YNQPX5G6.js";import{P as B}from"./chunk-5VLBYHUJ.js";import"./chunk-5UKWQA6U.js";import"./chunk-QYSFCWV7.js";import{a as Nt,b as kt,d as X,e as ee}from"./chunk-Q7OVBNEW.js";import"./chunk-LQICJUPN.js";import{c as Z,h as It}from"./chunk-6RFU4RXC.js";import{a as ce}from"./chunk-YCV6GUTW.js";import"./chunk-VXGIPE22.js";import"./chunk-PG5RORVW.js";import"./chunk-OQDKFI6M.js";import"./chunk-TKBQO5Z6.js";import{a as q}from"./chunk-M5BHFFPW.js";import"./chunk-XUQHA7FY.js";import"./chunk-AJ6OO7CP.js";import"./chunk-UPAKGSOK.js";import"./chunk-FMECWSCG.js";import{B as yt,E,F as xt,c as $,e as be,h as k,l as qe,o as O,s as vt}from"./chunk-QMS2MBIA.js";import"./chunk-XXWGRBYL.js";import"./chunk-FQONFOFM.js";import"./chunk-WLVEHCCR.js";import{b as J}from"./chunk-P7GOTTNS.js";import{a as V}from"./chunk-3DEA4WWC.js";import"./chunk-QS4VWTEA.js";import{n as xe,q as bt}from"./chunk-3GXUD7K4.js";import{Ba as Ce,Bb as h,Bc as _e,Cc as pt,Db as v,Dc as fe,Eb as rt,Ec as je,F as ie,Fa as w,Fb as at,Gb as G,Ha as re,Hb as H,Ib as C,J as Je,Jb as a,Kb as d,Kc as mt,La as et,Lb as x,Lc as ut,N as Ge,R as He,Rd as _t,Tc as y,Td as ft,Ua as tt,Ub as M,Ud as ye,Wd as ht,Xb as g,Xc as gt,Yc as he,Za as l,Zb as c,ba as W,bc as dt,cc as lt,dc as ct,eb as nt,ga as A,hc as me,ib as D,jc as Y,lc as st,mc as s,md as ve,na as oe,nb as it,nc as R,o as Qe,ob as Q,oc as j,p as K,ra as b,rc as ae,sc as de,sd as Ct,tc as le,u as L,v as Ye,va as _,wa as f,xa as Ze,xb as ot,ya as Xe,zd as N}from"./chunk-NGFIIVK5.js";import"./chunk-WFMAM73Y.js";import{a as p,b as u,k as Ke}from"./chunk-SNAKHGZS.js";var Ee=class{ID;Name;CreatorID;Created;ModifierID;Modified;Description};var P=class o{http=b(bt);toastr=b(xe);processUppy=b(Qt);destroyRef=b(Ce);formulaNameService=b(Jt);_productForm=w(null);productForm=this._productForm.asReadonly();product=y(()=>this._productForm()?.Product??null);options=y(()=>this._productForm()?.Options??null);outletStocks=y(()=>this._productForm()?.Product?.OutletStocks??[]);productImages=y(()=>this._productForm()?.Product?.ProductImages??[]);supplierName=y(()=>this._productForm()?.SupplierName??null);isValidVariantCode=y(()=>this._productForm()?.CodeRequired?!(this._productForm()?.Product?.Variants??[]).some(e=>V.IsEmpty(e.Code)):!0);nextProductName=y(()=>this._productForm()?.NextProductName??null);productLocations=y(()=>this._productForm()?.Product?.ProductLocations??[]);language=y(()=>this._productForm()?.Language??"Indonesian");isEditMode=y(()=>!V.IsEmpty(this._productForm()?.Product?.ID));productNameMaxCharacter=200;productDescriptionMaxCharacter=3e3;variantNameMaxCharacter=100;loadForm(t={}){return this.http.post(B.ProductForm,t).pipe(A(e=>{let n=V.IsEmpty(e.Product?.ID),i=this.applyCodeSuggestion(e,n);this._productForm.set(i),this.initializeProductLocations(),this.initializeOutletStocks(i.Options?.Entities??[]),this.initializeDefaultCategory(n,i)}))}initializeOutletStocks(t){let e=t.map(i=>({EntityID:i.ID,Name:i.Name,OnHand:void 0,MinStock:void 0,MaxStock:void 0})),n=this._productForm()?.Product?.OutletStocks;this._productForm.update(i=>u(p({},i),{Product:u(p({},i?.Product),{OutletStocks:n?.length>0?n:e})}))}initializeProductLocations(){let t=this._productForm()?.ProductLocations;t&&this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{ProductLocations:t})}))}updateProductName(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Name:t})}))}updateProductCode(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Code:t})}))}updateProductCategory(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{CategoryID:t})})),this.updateCodeByCategory(t)}updateProductReleaseDate(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Released:t})}))}updateProductDiscontinue(t){let e=(this._productForm()?.Product?.Variants??[]).map(n=>u(p({},n),{Discontinued:t}));this._productForm.update(n=>u(p({},n),{Product:u(p({},n?.Product),{Discontinued:t,Variants:e})}))}handleVariantTypeUOM(t){let e=t===7||t===8,n=(this._productForm()?.Product?.Variants??[]).map((i,r)=>u(p({},i),{Ratio:e?1:i.Ratio,TypeID:e?r===0?8:7:t}));this.updateProductVariant(n)}updateBaseUnitModelReferences(t,e){if(!t||t.trim()===""||t===e)return;let n=(this._productForm()?.Product?.Variants??[]).map(i=>i.BaseUnitModel===t?u(p({},i),{BaseUnitModel:e}):i);this.updateProductVariant(n)}updateProductBrand(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{BrandID:t})}))}updateProductTag(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{TagIDs:[...t]})}))}updateProductSupplier(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{SupplierID:t})}))}updateProductVariantType(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{VariantTypeID:t})}))}updateProductSupplierWithName(t,e){this._productForm.update(n=>u(p({},n),{SupplierName:e,Product:u(p({},n?.Product),{SupplierID:t})}))}updateProductNextID(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{NextProductID:t})}))}updateProductDesc(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Description:t})}))}updateProductCurrency(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{CostCurrencyID:t})}))}updateProductImages(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{ProductImages:[...t],ImageUrl:t?.[0]?.URL??null})}))}updateProductVariant(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{Variants:[...t]})}))}updateOutletStocks(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{OutletStocks:[...t]})}))}updateProductVariantValue(t,e){let n=(this._productForm()?.Product?.Variants??[]).map(i=>u(p({},i),{[e]:t}));this.updateProductVariant(n),e==="UnitPrice"&&this._productForm.update(i=>u(p({},i),{Product:u(p({},i?.Product),{VariantUnitPrice:t})})),e==="UnitCost"&&this._productForm.update(i=>u(p({},i),{Product:u(p({},i?.Product),{VariantUnitCost:t})})),e==="Weight"&&this._productForm.update(i=>u(p({},i),{Product:u(p({},i?.Product),{VariantWeight:t})}))}updateStorageLocation(t,e){let n=this._productForm()?.Product?.ProductLocations??[];V.IsEmpty(t)&&(t=V.GuidEmpty),n.find(r=>r.OutletID===e)?n=n.map(r=>r.OutletID===e?u(p({},r),{StorageID:t}):r):V.IsEmpty(t)||(n=[...n,{OutletID:e,StorageID:t}]),this._productForm.update(r=>u(p({},r),{Product:u(p({},r?.Product),{ProductLocations:n})}))}updateProductUOM(t){this._productForm.update(e=>u(p({},e),{Product:u(p({},e?.Product),{VariantUOM:t})}))}updateNextProductWithName(t,e){this._productForm.update(n=>u(p({},n),{NextProductName:e,Product:u(p({},n?.Product),{NextProductID:t})}))}uploadImages(t){let e=this._productForm()?.CloudinaryFolder??"",n=t.map(({file:i,id:r})=>this.processUppy.uploadFileThroughPreSignedUrl(i,e).pipe(L(m=>({ImageID:r,ImageName:i.name,ImageURL:m.url}))));n.length&&Ye(n).pipe(ce(this.destroyRef)).subscribe(i=>{let r=new Set(this.productImages().map(S=>S.ImageID??S.ID)),m=i.filter(S=>!r.has(S.ImageID));this.updateProductImages([...this.productImages(),...m])})}removeImageById(t){let e=this.productImages().filter(n=>(n.ImageID??n.ID)!==t);this.updateProductImages(e)}removeImageByIndex(t){let e=[...this.productImages()];e.splice(t,1),this.updateProductImages(e)}updateCodeByCategory(t){this._productForm()?.ProductCodeByCategory&&this.http.get(B.ProductCodeByCategory,[{key:"ID",value:t}]).pipe(ie(e=>V.IsNotEmpty(e.Code)),ce(this.destroyRef)).subscribe(e=>this.updateProductCode(e.Code))}applyCodeSuggestion(t,e){let n=V.IsNotEmpty(t.CodeSuggestion);return e&&n?u(p({},t),{Product:u(p({},t.Product),{Code:t.CodeSuggestion})}):t}initializeDefaultCategory(t,e){let n=V.IsEmpty(e.Product?.CategoryID),i=e.Options?.Categories?.[0]?.key??null;!t||!n||!i||this.updateProductCategory(i)}createNewCategory(t){return this.http.post(B.CreateNewCategory,{name:t,parentID:"undefined"}).pipe(A(()=>this.toastr.success("Category added",q.Success)))}createNewBrand(t){return this.http.post(B.CreateNewBrand,{name:t}).pipe(L(e=>({ID:e.ObjectID,Name:t})),A(e=>{this._productForm.update(n=>u(p({},n),{Options:u(p({},n?.Options),{Brands:[...n?.Options?.Brands??[],e]})})),this.updateProductBrand(e.ID),this.toastr.success("Brand added",q.Success)}))}createNewTag(t){return this.http.post(B.CreateNewTags,{name:t}).pipe(L(e=>({ID:e.ObjectID,Name:t})),A(e=>{let n=new Ee;n.ID=e.ID,n.Name=e.Name,this._productForm.update(i=>u(p({},i),{Options:u(p({},i?.Options),{Tags:[...i?.Options?.Tags??[],n]})})),this.updateProductTag([...this.product()?.TagIDs??[],e.ID]),this.toastr.success("Tag added",q.Success)}))}createNewSupplier(t){let e={contact:t,type:"supplier",groups:t?.Group??[]};return this.http.post(B.CreateNewSupplier,e).pipe(L(n=>({ID:n.ID,Name:t.Name})),A(n=>{this.updateProductSupplier(n.ID),this.toastr.success("Supplier added",q.Success)}))}checkExistNameAndCode(t,e){return this.http.post(B.ProductIsUnique,{Name:t,Code:e,ID:this._productForm()?.Product?.ID??null}).pipe(Je(()=>Qe({exist:!1})))}showDuplicateNameCodeError(){this.toastr.error("Product name or code already exist",q.Error)}getProductDescSuggestion(t,e){let n={ProductName:this.product()?.Name,CategoryID:this.product()?.CategoryID,Language:t,Keywords:e};return this.http.post(B.GetProductDescSuggestion,n)}updateVariantCodesFromProductCode(t){let e=this._productForm()?.ProductCodeGenerator?.VariantCodeGenerator;if(!e?.Enabled||!t)return;let n=(this._productForm()?.Product?.Variants??[]).map(i=>u(p({},i),{Code:i.Code?i.Code:t+`${e.Separator}${(i.Model??"").slice(0,e.SubstringDigit)}`}));this.updateProductVariant(n)}onSave(){let t=this.product();if(!t?.Name)return this.toastr.error("Product name is required",q.Error),K(()=>new Error("Product name is required"));if(this._productForm()?.CodeRequired&&V.IsEmpty(t?.Code))return this.toastr.error("Product code is required",q.Error),K(()=>new Error("Product code is required"));if(!this.isValidVariantCode())return this.toastr.warning("Please fill in the code for all variants","Variant Code Required"),K(()=>new Error("Variant code is required"));if((t?.Name?.length??0)>this.productNameMaxCharacter)return this.toastr.warning(`Product name maximum character is ${this.productNameMaxCharacter}`,"Maximum Character Exceeded"),K(()=>new Error("Product name exceeds maximum character limit"));if(this.getDescriptionLength(t?.Description)>this.productDescriptionMaxCharacter)return this.toastr.warning(`Product description maximum character is ${this.productDescriptionMaxCharacter}`,"Maximum Character Exceeded"),K(()=>new Error("Product description exceeds maximum character limit"));if(!this.validateBaseUnitAndMultiUOM())return K(()=>new Error("Invalid BaseUnit/MultipleUOM configuration"));if(!this.validateVariantNames())return K(()=>new Error("Duplicate variant names found"));let e=this.prepareProductForSubmit(t);return this.http.post(B.SubmitProduct,e).pipe(A(()=>this.toastr.success("Product saved successfully",q.Success)))}prepareImagesForSubmit(t,e){return(t??[]).map(n=>{let i=n?.URL??"",r="";if(i&&i.includes("crop")){let S=i.split("upload/")[1]??"",F=e?S.split(`/${e}`)[0]:S.split("/")[0];F&&(r=F+"#")}let m=i?i.substring(i.lastIndexOf("/")+1):"";return u(p({},n),{URL:(r||"")+(m??"")})})}prepareProductForSubmit(t){if(!t)return t;let e=this._productForm()?.CloudinaryFolder??"",n=this.prepareImagesForSubmit(t?.ProductImages??[],e);return u(p({},t),{Variants:this.preparedVariantNameBeforeSubmit(t.Name,t.Variants)??[],ProductImages:n,ImageUrl:n[0]?.URL??t?.ImageUrl??null})}preparedVariantNameBeforeSubmit(t,e=[]){let n=this._productForm()?.VariantDisplayNameFormula;return n?e.map(r=>u(p({},r),{Name:this.formulaNameService.generateVariantName(n,t,r.Model??"")})):void 0}validateVariantNames(){let t=this.product()?.Variants??[],e=new Set;for(let n of t){let i=(n.Model??"").trim().toLowerCase();if(!i)continue;let r=(n.Code??"").trim().toLowerCase(),m=`${i}||${r}`;if(e.has(m))return this.toastr.error("Variant names must be unique.","Duplicate Variant Name"),!1;e.add(m)}return!0}getDescriptionLength(t){if(!t)return 0;let e=document.createElement("div");return e.innerHTML=t,e.textContent?.length??0}validateBaseUnitAndMultiUOM(){let t=this.product(),e=t?.VariantTypeID===8,n=t?.VariantTypeID===7;if(!e&&!n)return!0;let i=t?.Variants??[],r=i.filter(F=>F.TypeID===8).length,m=i.filter(F=>F.TypeID===7).length,S=r>=1&&m>=1&&r<=1;return S||this.toastr.warning("Ensure there is at least one base unit type and one multi-unit type.","Incomplete Variant Configuration"),S}static \u0275fac=function(e){return new(e||o)};static \u0275prov=oe({token:o,factory:o.\u0275fac})};function mn(o,t){o&1&&(a(0,"span",6),s(1,"Main"),d())}function un(o,t){if(o&1){let e=M();a(0,"button",8),g("click",function(){_(e);let i=c().$index,r=c();return f(r.onRemove(i))}),s(1," \xD7 "),d()}}function gn(o,t){if(o&1){let e=M();a(0,"div",3),g("cdkDropListDropped",function(i){_(e);let r=c();return f(r.drop(i))}),a(1,"div",4),g("click",function(i){let r=_(e).$implicit,m=c();return f(m.onZoomImage(r.OnNewFormURL??r.URL,i))}),x(2,"img",5),h(3,mn,2,0,"span",6),h(4,un,2,0,"button",7),d()()}if(o&2){let e=t.$implicit,n=t.$index,i=c();C("cdkDropListData",n),l(2),C("src",e.ImageURL||e.ImageUrl||"",tt)("alt",e.ImageName||"Product image"),l(),v(n===0?3:-1),l(),v(i.hasRole()?4:-1)}}function Cn(o,t){o&1&&(a(0,"div",10),Ze(),a(1,"svg",12),x(2,"rect",13)(3,"circle",14)(4,"polyline",15),d(),Xe(),a(5,"div",16),s(6,"Upload Image"),d()())}function _n(o,t){o&1&&x(0,"i",11)}function fn(o,t){if(o&1){let e=M();a(0,"div",9),g("click",function(){_(e);let i=c();return f(i.openUploadDialog())}),h(1,Cn,7,0,"div",10)(2,_n,1,0,"i",11),d()}if(o&2){let e=c();Y("piu-upload-area--full",e.images().length===0)("piu-upload-area--shrink",e.images().length>0)("piu-upload-area--disabled",!e.hasRole())("piu-upload-area--edit-mode",e.service.isEditMode()),C("matTooltip",e.hasRole()?"Click to upload image":"You do not have permission to upload images"),l(),v(e.images().length===0?1:2)}}var Fe=class o{service=b(P);role=b(J);dialog=b(Z);bigPicture=b(qt);images=he([]);maxFile=he(5);cloudinaryFolder=he("");imagesChange=gt();hasRole=y(()=>this.service.isEditMode()?!!this.role.product?.Edit&&!!this.role.product?.ImageEditor:!!this.role.product?.Create&&!!this.role.product?.ImageEditor);slotAvailable=y(()=>(this.images()?.length??0)<this.maxFile());canUpload=y(()=>this.hasRole()&&this.slotAvailable());onRemove(t){let e=[...this.images()||[]];e.splice(t,1),this.service.updateProductImages(e)}openUploadDialog(){if(!this.canUpload())return;let t=this.service.productForm();this.dialog.open(Yt,{data:{currentProductImagesLength:this.images()?.length??0,CloudinaryFolder:t?.CloudinaryFolder??"",productID:t?.Product?.ID??null}}).afterClosed().subscribe(n=>{if(n?.length){let i=[...this.images()||[],...n];this.service.updateProductImages(i)}})}onZoomImage(t,e){return Ke(this,null,function*(){this.bigPicture.openBiggerPicture(e,t)})}drop(t){let e=[...this.images()||[]];Dt(e,t.previousContainer.data,t.container.data),this.service.updateProductImages(e)}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-product-image-upload"]],inputs:{images:[1,"images"],maxFile:[1,"maxFile"],cloudinaryFolder:[1,"cloudinaryFolder"]},outputs:{imagesChange:"imagesChange"},decls:4,vars:1,consts:[["cdkDropListGroup","",1,"d-flex","flex-wrap","gap-2","align-items-start","w-100"],["cdkDropList","","cdkDropListOrientation","horizontal",3,"cdkDropListData"],[1,"piu-upload-area",3,"matTooltip","piu-upload-area--full","piu-upload-area--shrink","piu-upload-area--disabled","piu-upload-area--edit-mode"],["cdkDropList","","cdkDropListOrientation","horizontal",3,"cdkDropListDropped","cdkDropListData"],["cdkDrag","",1,"piu-preview-item","cursor-pointer",3,"click"],[3,"src","alt"],[1,"piu-main-badge"],["type","button","aria-label","Remove image",1,"piu-remove-btn"],["type","button","aria-label","Remove image",1,"piu-remove-btn",3,"click"],[1,"piu-upload-area",3,"click","matTooltip"],[1,"text-center"],["aria-hidden","true",1,"fa-thin","fa-plus","fa-2x",2,"color","#9ca3af"],["xmlns","http://www.w3.org/2000/svg","width","32","height","32","viewBox","0 0 24 24","fill","none","stroke","#9ca3af","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["x","3","y","3","width","18","height","18","rx","2"],["cx","8.5","cy","8.5","r","1.5"],["points","21 15 16 10 5 21"],[1,"piu-upload-label","mt-1","fs-6","text-muted"]],template:function(e,n){e&1&&(a(0,"div",0),G(1,gn,5,5,"div",1,at),h(3,fn,3,10,"div",2),d()),e&2&&(l(),H(n.images()),l(2),v(n.slotAvailable()?3:-1))},dependencies:[N,I,T,we,De,Tt,Ve],styles:[".piu-preview-item[_ngcontent-%COMP%]{position:relative;width:125px;height:125px;border-radius:6px;overflow:hidden;border:1px solid #e2e8f0;flex-shrink:0}.piu-preview-item[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover;display:block}.piu-preview-item[_ngcontent-%COMP%] .piu-main-badge[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;right:0;background:#0b5ed7d1;color:#fff;font-size:.6rem;font-weight:600;text-align:center;padding:2px 0;letter-spacing:.04em}.piu-preview-item[_ngcontent-%COMP%] .piu-remove-btn[_ngcontent-%COMP%]{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;border:none;background:#dc2626d9;color:#fff;font-size:.75rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.piu-preview-item[_ngcontent-%COMP%]:hover .piu-remove-btn[_ngcontent-%COMP%]{opacity:1}.piu-upload-area[_ngcontent-%COMP%]{border:1.5px dashed #d1d5db;border-radius:8px;display:flex;align-items:center;justify-content:center;background:#fafafa;cursor:pointer;transition:border-color .15s,background .15s}.piu-upload-area[_ngcontent-%COMP%]:hover{border-color:#9ca3af;background:#f3f4f6}.piu-upload-area--full[_ngcontent-%COMP%]{width:100%;min-height:160px;flex-direction:column;gap:.25rem}.piu-upload-area--edit-mode[_ngcontent-%COMP%]{min-height:125px}.piu-upload-area--shrink[_ngcontent-%COMP%]{width:125px;height:125px;flex-shrink:0}.piu-upload-label[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:#374151}.piu-upload-hint[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af}.piu-upload-area--disabled[_ngcontent-%COMP%]{opacity:.45;cursor:not-allowed}"],changeDetection:0})};function hn(o,t){o&1&&(a(0,"a",10),x(1,"i",19),d()),o&2&&C("matTooltipPositionAtOrigin",!0)}function vn(o,t){o&1&&(a(0,"div",11),s(1," Code is required "),d())}function yn(o,t){if(o&1){let e=M();a(0,"POS-product-category-select",20),g("selectedCategoryIDChange",function(i){_(e);let r=c();return f(r.onCategoryChange(i))}),d()}if(o&2){let e,n=c();C("isInitializedCategoryLabel",!0)("selectedCategoryID",n.categoryID())("categories",(e=n.options())==null?null:e.Categories)}}var Oe=class o{service=b(P);roleService=b(J);dialog=b(Z);treeSelector=b($t);destroyRef=b(Ce);productCode=y(()=>this.service.product()?.Code??null);isCodeRequired=y(()=>this.service.productForm()?.CodeRequired??!1);options=y(()=>this.service?.options()??null);maxNameLength=200;categoryID=y(()=>this.service.product()?.CategoryID??null);images=y(()=>this.service.productImages());cloudinaryFolder=y(()=>this.service.productForm()?.CloudinaryFolder??"");maxFile=5;productNameCtrl=new qe(null,be.required);productCodeCtrl=new qe(null);constructor(){this.initCodeValidators(),re(()=>{let t=this.productCode();this.productCodeCtrl.value!==t&&this.productCodeCtrl.setValue(t,{emitEvent:!1})}),re(()=>{let t=this.service.product()?.Name??null,e=this.productNameCtrl.value;V.IsEmpty(e)&&V.IsNotEmpty(t)&&this.productNameCtrl.setValue(t,{emitEvent:!1})})}initCodeValidators(){re(()=>{this.isCodeRequired()?this.productCodeCtrl.addValidators(be.required):this.productCodeCtrl.removeValidators(be.required),this.productCodeCtrl.updateValueAndValidity({emitEvent:!1})})}ngOnInit(){this.productNameCtrl.valueChanges.pipe(L(t=>(t??"").toString().trim()),He(),Ge(1e3),A(t=>this.service.updateProductName(t)),W(t=>this.service.checkExistNameAndCode(t,this.productCodeCtrl.value??"")),ce(this.destroyRef)).subscribe(t=>{t?.exist&&this.service.showDuplicateNameCodeError()}),this.productCodeCtrl.valueChanges.pipe(L(t=>(t??"").toString()),He(),Ge(1e3),W(t=>this.service.checkExistNameAndCode(this.productNameCtrl.value??"",t).pipe(A(e=>{e?.exist?this.service.showDuplicateNameCodeError():this.service.updateVariantCodesFromProductCode(t)}),L(()=>t))),ce(this.destroyRef)).subscribe(t=>this.service.updateProductCode(t??""))}onCategoryChange(t){this.service.updateProductCategory(t)}openAddCategoryDialog(){this.dialog.open(ue,{data:{form:{Name:null,Status:"Category"}}}).afterClosed().subscribe(e=>{e?.Name&&this.service.createNewCategory(e.Name).subscribe(n=>{n?.key&&this.service.updateProductCategory(n.key),this.treeSelector.forceLoadCategories()})})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-general-card"]],decls:27,vars:16,consts:[[1,"card","mb-12"],[1,"card-body"],[1,"d-flex","flex-column","gap-10"],["for","productName",1,"mb-2"],["placeholder","Long pants jeans","errorMessage","Name is required","id","productName","trimInput","",3,"autofocus","formControl","inputName","maxlength","valid","floatingLabel"],[1,"row","g-3"],[1,"col-6"],["for","productCode",1,"mb-2"],[1,"position-relative"],["id","productCode","type","text","disallowSpaces","","placeholder","VAR-0001","matTooltip","Stock Keeping Unit (SKU) Code","matTooltipPosition","above",1,"form-control",3,"formControl"],["routerLink","/menu/Settings/Module/Product","fragment","productCodeGeneratorProduct","target","_blank","matTooltip","Click here to enable or disable auto-generation of Code","matTooltipPosition","above","tabindex","-1",1,"pointer","text-dark","position-absolute",2,"top","50%","right","10px","transform","translateY(-50%)",3,"matTooltipPositionAtOrigin"],["aria-hidden","true",1,"invalid-feedback"],["for","categorySelect",1,"mb-2","d-flex","align-items-center","gap-1"],["matTooltip","Add New Category","matTooltipPosition","above",1,"fa-sharp","fa-thin","fa-circle-plus","cursor-pointer",3,"click"],[1,"gc-category-wrap"],["placeholder","Select Category","id","categorySelect",3,"isInitializedCategoryLabel","selectedCategoryID","categories"],["for","productImageUpload",1,"mb-2"],[1,"text-muted"],["id","productImageUpload",3,"images","maxFile","cloudinaryFolder"],[1,"fa-solid","fa-gear","fa-lg"],["placeholder","Select Category","id","categorySelect",3,"selectedCategoryIDChange","isInitializedCategoryLabel","selectedCategoryID","categories"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"div")(4,"label",3),s(5,"Product Name"),d(),x(6,"POS-input-limit",4),d(),a(7,"div",5)(8,"div",6)(9,"label",7),s(10,"Product Code"),d(),a(11,"div",8),x(12,"input",9),h(13,hn,2,1,"a",10),h(14,vn,2,0,"div",11),d()(),a(15,"div",6)(16,"label",12),s(17," Category "),a(18,"i",13),g("click",function(){return n.openAddCategoryDialog()}),d()(),a(19,"div",14),h(20,yn,1,3,"POS-product-category-select",15),d()()(),a(21,"div")(22,"label",16),s(23,"Product Image "),a(24,"span",17),s(25),d()(),x(26,"POS-product-image-upload",18),d()()()()),e&2){let i;l(6),C("autofocus",!0)("formControl",n.productNameCtrl)("inputName","productName")("maxlength",n.service.productNameMaxCharacter)("valid",n.productNameCtrl.touched&&n.productNameCtrl.invalid)("floatingLabel",!1),l(6),Y("is-invalid",n.productCodeCtrl.touched&&n.productCodeCtrl.invalid),C("formControl",n.productCodeCtrl),l(),v(n.roleService.setup.View&&n.productCodeCtrl.valid?13:-1),l(),v(n.productCodeCtrl.touched&&n.productCodeCtrl.invalid?14:-1),l(6),v((i=n.options())!=null&&i.Categories?20:-1),l(5),j("(",n.images().length,"/5)"),l(),C("images",n.images())("maxFile",n.maxFile)("cloudinaryFolder",n.cloudinaryFolder())}},dependencies:[E,$,k,yt,xt,vt,I,T,ye,Fe,Xt,Bt,Zt,ke],styles:['[_nghost-%COMP%]{display:flex;flex-direction:column}[_nghost-%COMP%] input[_ngcontent-%COMP%]{font-size:.75rem}[_nghost-%COMP%] label[_ngcontent-%COMP%]{font-size:.813rem}.card[_ngcontent-%COMP%]{flex:1;overflow-y:auto}.gc-section-title[_ngcontent-%COMP%]{color:#374151;border-bottom-color:#eef2f5!important}.gc-label[_ngcontent-%COMP%]{color:#374151}#productCode[_ngcontent-%COMP%]{height:2.375rem;border-radius:.25rem!important;padding:.375rem .75rem!important} .input-limit-container .input-core{height:2.375rem;border-radius:.25rem!important;padding:.375rem .75rem!important;font-size:.75rem} pos-input-limit .limit-preview, .input-limit-container .limit-preview{top:3px!important;transform:none!important}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect{height:2.375rem;align-items:center;border-radius:.25rem;border:1px solid #dee2e6;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect.p-focus, .gc-category-wrap[_ngcontent-%COMP%] .p-treeselect.p-overlay-open{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-label{font-size:.75rem;padding:.375rem .75rem;line-height:1.5}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-dropdown{background:transparent!important;border:none!important;box-shadow:none!important;width:2rem;padding:0;display:flex;align-items:center;justify-content:center}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-dropdown .p-treeselect-dropdown-icon, .gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-dropdown svg{display:none!important}.gc-category-wrap[_ngcontent-%COMP%] .p-treeselect .p-treeselect-dropdown:after{content:"";border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px;display:inline-block;height:0;width:0}'],changeDetection:0})};var bn=o=>({"pb-9":o});function Mn(o,t){if(o&1){let e=M();a(0,"div",2)(1,"label",14),s(2,"Type"),d(),a(3,"ng-select",15),g("ngModelChange",function(i){_(e);let r=c();return f(r.onTypeChange(i))}),d()()}if(o&2){let e,n,i=c();l(3),C("items",(e=i.options())==null?null:e.Types)("clearable",!1)("ngModel",(n=i.product())==null?null:n.VariantTypeID)("disabled",i.service.isEditMode())}}var Ue=class o{service=b(P);dialog=b(Z);options=y(()=>this.service.options());product=y(()=>this.service.product());supplierName=y(()=>this.service.supplierName());statusOptions=[{Key:!1,Value:"Active"},{Key:!0,Value:"Discontinued"}];onTypeChange(t){this.service.updateProductVariantType(t),this.service.handleVariantTypeUOM(t)}onBrandChange(t){this.service.updateProductBrand(t)}onTagsChange(t){this.service.updateProductTag(t??[])}onStatusChange(t){this.service.updateProductDiscontinue(t)}onSupplierSelected(t){let{Key:e,Value:n}=JSON.parse(t);this.service.updateProductSupplierWithName(e,n)}openBrandDialog(){this.dialog.open(ue,{data:{form:{Name:null,Status:"Brand"}}}).afterClosed().pipe(W(t=>t?.Name?this.service.createNewBrand(t.Name):[])).subscribe()}openTagDialog(){this.dialog.open(ue,{data:{form:{Name:null,Status:"Tag"}}}).afterClosed().pipe(W(t=>t?.Name?this.service.createNewTag(t.Name):[])).subscribe()}openSupplierDialog(){this.dialog.open(Kt,{data:{options:{Genders:[{Key:0,Value:"Male"},{Key:1,Value:"Female"}]},config:{DefaultValue:{Gender:0}},type:"supplier",title:"New Supplier Form"}}).afterClosed().pipe(ie(t=>V.IsNotEmpty(t?.supplier?.Name)),W(t=>this.service.createNewSupplier(t.supplier))).subscribe(t=>{this.service.updateProductSupplierWithName(t.ID,t.Name)})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-properties-card"]],decls:22,vars:17,consts:[[1,"card","mb-12"],[1,"card-body"],[1,"mb-6"],["for","supplierSelect",1,"mb-2","d-flex","align-items-center","gap-1"],["matTooltip","Add New Supplier","matTooltipPosition","above",1,"fa-sharp","fa-thin","fa-circle-plus","cursor-pointer",3,"click"],["id","supplierSelect","customLabel","Supplier","placeholder","Supplier","requestUrl","/API/AC/GetSupplierSuggestion","matTooltip","Input supplier for this product","matTooltipPosition","above",1,"w-100",3,"optionSelected","customStyle","ngModel","inputTextValue"],["for","brandSelect",1,"mb-2","d-flex","align-items-center","gap-1"],["matTooltip","Add New Brand","matTooltipPosition","above",1,"fa-sharp","fa-thin","fa-circle-plus","cursor-pointer",3,"click"],["id","brandSelect","bindLabel","Name","bindValue","ID","matTooltip","Select brand for this product","matTooltipPosition","above",1,"productform","w-100",3,"ngModelChange","items","clearable","ngModel"],["for","tagsSelect",1,"mb-2","d-flex","align-items-center","gap-1"],["matTooltip","Add New Tag","matTooltipPosition","above",1,"fa-sharp","fa-thin","fa-circle-plus","cursor-pointer",3,"click"],["id","tagsSelect","fluid","","display","chip","optionLabel","Name","optionValue","ID","matTooltip","Select tags for this product","matTooltipPosition","above",3,"ngModelChange","showClear","options","ngModel"],["for","statusSelect",1,"mb-2"],["id","statusSelect","bindLabel","Value","bindValue","Key","matTooltip","Set product status","matTooltipPosition","above",1,"productform","w-100",3,"ngModelChange","items","clearable","ngModel"],["for","typeSelect",1,"mb-2"],["id","typeSelect","bindLabel","Value","bindValue","Key","matTooltip","Choose product type","matTooltipPosition","above",1,"productform","w-100",3,"ngModelChange","items","clearable","ngModel","disabled"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"div",1),h(2,Mn,4,4,"div",2),a(3,"div",2)(4,"label",3),s(5," Supplier "),a(6,"i",4),g("click",function(){return n.openSupplierDialog()}),d()(),a(7,"autocompleteV2",5),g("optionSelected",function(r){return n.onSupplierSelected(r)}),d()(),a(8,"div",2)(9,"label",6),s(10," Brand "),a(11,"i",7),g("click",function(){return n.openBrandDialog()}),d()(),a(12,"ng-select",8),g("ngModelChange",function(r){return n.onBrandChange(r)}),d()(),a(13,"div",2)(14,"label",9),s(15," Tags "),a(16,"i",10),g("click",function(){return n.openTagDialog()}),d()(),a(17,"p-multiselect",11),g("ngModelChange",function(r){return n.onTagsChange(r)}),d()(),a(18,"div",2)(19,"label",12),s(20,"Status"),d(),a(21,"ng-select",13),g("ngModelChange",function(r){return n.onStatusChange(r)}),d()()()()),e&2){let i,r,m,S,F,pe;st(fe(15,bn,n.service.isEditMode())),l(2),v(n.service.isEditMode()?-1:2),l(5),C("customStyle",!0)("ngModel",(i=n.product())==null?null:i.SupplierID)("inputTextValue",n.supplierName()),l(5),C("items",(r=n.options())==null?null:r.Brands)("clearable",!0)("ngModel",(m=n.product())==null?null:m.BrandID),l(5),C("showClear",!0)("options",(S=n.options())==null?null:S.Tags)("ngModel",(F=n.product())==null?null:F.TagIDs),l(4),C("items",n.statusOptions)("clearable",!1)("ngModel",(pe=n.product())==null?null:pe.Discontinued)}},dependencies:[E,k,O,I,T,ee,X,Gt,Wt,Ne,Ie],styles:['label[_ngcontent-%COMP%]{font-size:.813rem}[_nghost-%COMP%] .productform.ng-select .ng-select-container{border-color:#dee2e6;min-height:2.375rem}[_nghost-%COMP%] .productform.ng-select.ng-select-single .ng-select-container{height:2.375rem}[_nghost-%COMP%] .productform.ng-select input{padding-top:0!important}[_nghost-%COMP%] .productform.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#86b7fe;box-shadow:0 0 0 .25rem #0d6efd40}[_nghost-%COMP%] .p-multiselect{min-height:2.375rem;border-radius:.25rem;border:1px solid #dee2e6;align-items:center;width:100%}[_nghost-%COMP%] .p-multiselect.p-focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}[_nghost-%COMP%] .p-multiselect .p-multiselect-label{font-size:.75rem;padding:.375rem .75rem}[_nghost-%COMP%] .p-multiselect .p-multiselect-clear-icon{width:10px;font-weight:700}[_nghost-%COMP%] .p-multiselect .p-multiselect-dropdown{background:transparent!important;border:none!important;box-shadow:none!important;width:2rem;padding:0;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%] .p-multiselect .p-multiselect-dropdown .p-multiselect-dropdown-icon, [_nghost-%COMP%] .p-multiselect .p-multiselect-dropdown svg{display:none!important}[_nghost-%COMP%] .p-multiselect .p-multiselect-dropdown:after{content:"";border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px;display:inline-block;height:0;width:0}[_nghost-%COMP%] autocompleteV2{display:block}[_nghost-%COMP%] autocompleteV2 .mat-mdc-text-field-wrapper{height:2.375rem;padding:0!important;border:1px solid #dee2e6!important;border-radius:.25rem!important;background:#fff!important}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-flex{height:100%;padding:0 .75rem!important;align-items:center}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:unset!important;width:100%;display:flex;align-items:center}[_nghost-%COMP%] autocompleteV2 label{display:none!important}[_nghost-%COMP%] autocompleteV2 input.form-control{box-shadow:none!important;height:2.375rem;font-size:.75rem}[_nghost-%COMP%] autocompleteV2 .mdc-line-ripple{display:none}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-subscript-wrapper{display:none}[_nghost-%COMP%] autocompleteV2:focus-within .mat-mdc-text-field-wrapper{border-color:#86b7fe!important;box-shadow:0 0 0 .25rem #0d6efd40!important}'],changeDetection:0})};var ne=class o{productFormService=b(P);product=y(()=>this.productFormService.product());variants=y(()=>this.productFormService.product()?.Variants??[]);isMultiple=w(!1);isMultipleWithEmptyVariant=y(()=>this.isMultiple()&&this.variants().some(t=>(t.Model??"").trim().length===0));update(t){let e=[...this.variants()||[]],n=t(e);this.productFormService.updateProductVariant(n)}addVariantRow(){let t=this.createNewVariant();this.update(e=>[...e,t])}createNewVariant(){let t=this.productFormService.product()?.VariantTypeID??1,e={ID:"",Model:"",Name:this.product()?.Name??"",Code:"",UnitCost:0,UnitPrice:0,Discount:0,Weight:0,TypeID:t,Ratio:1,UnitQuantity:1,Discontinued:!1,ActivePromotionCount:0,Components:null,BaseUnitModel:null},n=this.product()?.ID??null;return n&&n!==V.GuidEmpty?(e.ProductID=n,e.CostCurrencyID=this.productFormService.product()?.CostCurrencyID??1,e.PriceCurrencyID=this.productFormService.product()?.PriceCurrencyID??1):e.ProductID=V.GuidEmpty,e}updateVariantField(t,e,n){this.update(i=>{let r=[...i],m=u(p({},r[t]),{[e]:n});return e==="Model"&&(m.Code=this.generateVariantCodeConfig(m)),r[t]=m,r})}replaceVariant(t,e){this.update(n=>{let i=[...n];i[t]=p({},e);let r=i[t].Code??"";return V.IsEmpty(r)&&(i[t].Code=this.generateVariantCodeConfig(i[t])),i})}removeVariantByIndex(t){this.update(e=>e.filter((n,i)=>i!==t))}clearVariants(){this.productFormService.updateProductVariant([])}sortVariants(t,e){e&&this.update(n=>[...n].sort((r,m)=>{let S=r[t]??"",F=m[t]??"",pe=typeof S=="number"?S-F:String(S).localeCompare(String(F));return e==="asc"?pe:-pe}))}reorderVariants(t,e){this.update(n=>{let i=[...n],[r]=i.splice(t,1);return i.splice(e,0,r),i})}updateAllVariantDiscount(t){this.update(e=>e.map(n=>u(p({},n),{Discount:t})))}generateVariantCodeConfig(t){let e=t.Code??"",n=this.productFormService.productForm()?.ProductCodeGenerator?.VariantCodeGenerator,i=this.productFormService.product()?.Code??"";return n?.Enabled&&i&&(e=`${i}${n.Separator??""}${t.Model.slice(0,n.SubstringDigit)}`),e}static \u0275fac=function(e){return new(e||o)};static \u0275prov=oe({token:o,factory:o.\u0275fac})};var Pn=["variantInput"],ln=(o,t)=>({"btn-primary":o,"btn-outline-secondary":t}),Vn=(o,t)=>t.key;function Dn(o,t){if(o&1){let e=M();a(0,"li",14)(1,"div",15),g("click",function(i){return i.stopPropagation()}),a(2,"p-checkbox",16),le("ngModelChange",function(i){let r=_(e).$implicit;return de(r.selected,i)||(r.selected=i),f(i)}),g("onChange",function(){let i=_(e).$implicit,r=c(2);return f(r.columnService.toggleColumn(i.key))}),d(),a(3,"label",17),s(4),d()()()}if(o&2){let e=t.$implicit;l(2),ae("ngModel",e.selected),C("binary",!0)("inputId","vcol-"+e.key),l(),C("for","vcol-"+e.key),l(),j(" ",e.name??e.key," ")}}function wn(o,t){if(o&1&&(a(0,"div",4)(1,"div",10),x(2,"i",11),d(),a(3,"ul",12)(4,"div",13)(5,"h6"),s(6,"Columns to View"),d()(),G(7,Dn,5,5,"li",14,Vn),d()()),o&2){let e=c();l(7),H(e.columnService.getAvailableColumns(!0))}}function Tn(o,t){if(o&1){let e=M();a(0,"div",5)(1,"button",18),g("click",function(){_(e);let i=c();return f(i.onToggleMode(!1))}),x(2,"i",19),s(3," Single "),d(),a(4,"button",18),g("click",function(){_(e);let i=c();return f(i.onToggleMode(!0))}),x(5,"i",20),s(6," Multiple "),d()()}if(o&2){let e=c();l(),C("ngClass",je(2,ln,!e.variantService.isMultiple(),e.variantService.isMultiple())),l(3),C("ngClass",je(5,ln,e.variantService.isMultiple(),!e.variantService.isMultiple()))}}function In(o,t){if(o&1){let e=M();a(0,"div",8)(1,"div",21)(2,"label",22),s(3,"Buying Cost"),d(),a(4,"input",23),g("ngModelChange",function(i){_(e);let r=c();return f(r.service.updateProductVariantValue(i,"UnitCost"))}),d()(),a(5,"div",21)(6,"label",24),s(7,"Selling Price"),d(),a(8,"input",25),g("ngModelChange",function(i){_(e);let r=c();return f(r.service.updateProductVariantValue(i,"UnitPrice"))}),d()(),a(9,"div",21)(10,"label",26),s(11,"Weight (gr)"),d(),a(12,"input",27),g("ngModelChange",function(i){_(e);let r=c();return f(r.service.updateProductVariantValue(i,"Weight"))}),d()()()}if(o&2){let e,n,i,r=c();l(4),C("ngModel",(e=r.product())==null?null:e.VariantUnitCost),l(4),C("ngModel",(n=r.product())==null?null:n.VariantUnitPrice),l(4),C("ngModel",(i=r.product())==null?null:i.VariantWeight)}}function Nn(o,t){o&1&&(a(0,"th",34),s(1,"Code"),d())}function kn(o,t){o&1&&(a(0,"th",35),s(1," Cost "),d())}function En(o,t){o&1&&(a(0,"th",36),s(1," Price "),d())}function Fn(o,t){o&1&&(a(0,"th",37),s(1,"Discount %"),d())}function On(o,t){o&1&&(a(0,"th",37),s(1,"Weight (gr)"),d())}function Un(o,t){o&1&&(a(0,"th",37),s(1,"Ratio"),d())}function Ln(o,t){o&1&&(a(0,"th",38),s(1,"Reference Unit"),d())}function Rn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",53,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"Code",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"Code"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-Code")("ngModel",n.Code)}}function An(o,t){if(o&1){let e=M();a(0,"td")(1,"input",54,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"UnitCost",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"UnitCost"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-UnitCost")("ngModel",n.UnitCost)}}function $n(o,t){if(o&1){let e=M();a(0,"td")(1,"input",54,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"UnitPrice",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"UnitPrice"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-UnitPrice")("ngModel",n.UnitPrice)}}function Bn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",55,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"Discount",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"Discount"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-Discount")("ngModel",n.Discount)("max",100)("min",0)}}function Wn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",54,0),g("ngModelChange",function(i){_(e);let r=c().$index,m=c(2);return f(m.updateVariantField(r,"Weight",i))})("keydown.enter",function(i){_(e);let r=c().$index,m=c(2);return f(m.onVariantEnter(i,r,"Weight"))}),d()()}if(o&2){let e=c(),n=e.$implicit,i=e.$index;l(),C("id","v-"+i+"-Weight")("ngModel",n.Weight)}}function Gn(o,t){if(o&1&&(a(0,"td",47),s(1),d()),o&2){let e=c().$implicit;l(),R(e.Ratio)}}function Hn(o,t){if(o&1&&(a(0,"td"),s(1),d()),o&2){let e=c().$implicit;l(),R(e.BaseUnitModel)}}function jn(o,t){if(o&1){let e=M();a(0,"tr",42)(1,"td",43)(2,"button",44),x(3,"i",45),d()(),a(4,"td")(5,"input",46,0),g("ngModelChange",function(i){let r=_(e).$index,m=c(2);return f(m.updateVariantField(r,"Model",i))})("keydown.enter",function(i){let r=_(e).$index,m=c(2);return f(m.onVariantEnter(i,r,"Model"))}),d()(),h(7,Rn,3,2,"td"),h(8,An,3,2,"td"),h(9,$n,3,2,"td"),h(10,Bn,3,4,"td"),h(11,Wn,3,2,"td"),h(12,Gn,2,1,"td",47),h(13,Hn,2,1,"td"),a(14,"td",43)(15,"div",48)(16,"button",49),g("click",function(){let i=_(e),r=i.$implicit,m=i.$index,S=c(2);return f(S.onEditVariant(r,m))}),x(17,"i",50),d(),a(18,"button",51),g("click",function(i){let r=_(e).$index,m=c(2);return f(m.removeVariantByIndex(r,i))}),x(19,"i",52),d()()()()}if(o&2){let e=t.$implicit,n=t.$index,i=t.$index,r=c(2);Y("bg-gradient-warning",e.Discontinued),l(5),C("id","v-"+i+"-Model")("ngModel",e.Model),l(2),v(r.columnService.columnsToDisplay.Code.selected?7:-1),l(),v(r.role.product!=null&&r.role.product.Cost&&r.columnService.columnsToDisplay.UnitCost.selected?8:-1),l(),v(r.role.sell!=null&&r.role.sell.PriceVisible&&r.columnService.columnsToDisplay.UnitPrice.selected?9:-1),l(),v(r.columnService.columnsToDisplay.Percentage.selected?10:-1),l(),v(r.columnService.columnsToDisplay.Weight.selected?11:-1),l(),v(r.columnService.columnsToDisplay.Ratio.selected?12:-1),l(),v(r.columnService.columnsToDisplay.ReferenceUnit.selected?13:-1),l(5),C("disabled",n==0)}}function qn(o,t){o&1&&x(0,"td")}function zn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",56),le("ngModelChange",function(i){_(e);let r=c(2);return de(r.setAll.UnitCost,i)||(r.setAll.UnitCost=i),f(i)}),g("ngModelChange",function(i){_(e);let r=c(2);return f(r.updateAllVariantField(i,"UnitCost"))}),d()()}if(o&2){let e=c(2);l(),ae("ngModel",e.setAll.UnitCost)}}function Kn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",57),le("ngModelChange",function(i){_(e);let r=c(2);return de(r.setAll.UnitPrice,i)||(r.setAll.UnitPrice=i),f(i)}),g("ngModelChange",function(i){_(e);let r=c(2);return f(r.updateAllVariantField(i,"UnitPrice"))}),d()()}if(o&2){let e=c(2);l(),ae("ngModel",e.setAll.UnitPrice)}}function Qn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",58),le("ngModelChange",function(i){_(e);let r=c(2);return de(r.setAll.Discount,i)||(r.setAll.Discount=i),f(i)}),g("ngModelChange",function(i){_(e);let r=c(2);return f(r.updateAllVariantDiscount(i))}),d()()}if(o&2){let e=c(2);l(),ae("ngModel",e.setAll.Discount),C("max",100)("min",0)}}function Yn(o,t){if(o&1){let e=M();a(0,"td")(1,"input",59),le("ngModelChange",function(i){_(e);let r=c(2);return de(r.setAll.Weight,i)||(r.setAll.Weight=i),f(i)}),g("ngModelChange",function(i){_(e);let r=c(2);return f(r.updateAllVariantField(i,"Weight"))}),d()()}if(o&2){let e=c(2);l(),ae("ngModel",e.setAll.Weight)}}function Jn(o,t){o&1&&x(0,"td")}function Zn(o,t){o&1&&x(0,"td")}function Xn(o,t){if(o&1){let e=M();a(0,"div",9)(1,"table",28),g("matSortChange",function(i){_(e);let r=c();return f(r.onSortVariants(i))})("cdkDropListDropped",function(i){_(e);let r=c();return f(r.onDropVariant(i))}),a(2,"thead",29)(3,"tr")(4,"th")(5,"div",30)(6,"button",31),g("click",function(i){return _(e),c().addVariantRow(),f(i.stopPropagation())}),x(7,"i",32),d()()(),a(8,"th",33),s(9,"Variant Name"),d(),h(10,Nn,2,0,"th",34),h(11,kn,2,0,"th",35),h(12,En,2,0,"th",36),h(13,Fn,2,0,"th",37),h(14,On,2,0,"th",37),h(15,Un,2,0,"th",37),h(16,Ln,2,0,"th",38),x(17,"th",39),d()(),a(18,"tbody"),G(19,jn,20,12,"tr",40,rt),d(),a(21,"tfoot")(22,"tr"),x(23,"td",41),h(24,qn,1,0,"td"),h(25,zn,2,1,"td"),h(26,Kn,2,1,"td"),h(27,Qn,2,3,"td"),h(28,Yn,2,1,"td"),h(29,Jn,1,0,"td"),h(30,Zn,1,0,"td"),x(31,"td"),d()()()()}if(o&2){let e=c();l(10),v(e.columnService.columnsToDisplay.Code.selected?10:-1),l(),v(e.role.product!=null&&e.role.product.Cost&&e.columnService.columnsToDisplay.UnitCost.selected?11:-1),l(),v(e.role.sell!=null&&e.role.sell.PriceVisible&&e.columnService.columnsToDisplay.UnitPrice.selected?12:-1),l(),v(e.columnService.columnsToDisplay.Percentage.selected?13:-1),l(),v(e.columnService.columnsToDisplay.Weight.selected?14:-1),l(),v(e.columnService.columnsToDisplay.Ratio.selected?15:-1),l(),v(e.columnService.columnsToDisplay.ReferenceUnit.selected?16:-1),l(3),H(e.variants()),l(5),v(e.columnService.columnsToDisplay.Code.selected?24:-1),l(),v(e.role.product!=null&&e.role.product.Cost&&e.columnService.columnsToDisplay.UnitCost.selected?25:-1),l(),v(e.role.sell!=null&&e.role.sell.PriceVisible&&e.columnService.columnsToDisplay.UnitPrice.selected?26:-1),l(),v(e.columnService.columnsToDisplay.Percentage.selected?27:-1),l(),v(e.columnService.columnsToDisplay.Weight.selected?28:-1),l(),v(e.columnService.columnsToDisplay.Ratio.selected?29:-1),l(),v(e.columnService.columnsToDisplay.ReferenceUnit.selected?30:-1)}}var Le=class o{service=b(P);variantService=b(ne);columnService=b(tn);role=b(J);dialog=b(Z);toastr=b(xe);variantInputs;setAll={UnitCost:null,UnitPrice:null,Discount:null,Weight:null};variants=y(()=>this.variantService.variants());product=y(()=>this.service.product());constructor(){re(()=>{let t=this.service.product()?.Variants??[];(this.service.isEditMode()||t.length>0)&&(this.variantService.isMultiple()||this.variantService.isMultiple.set(!0))})}onToggleMode(t){this.variantService.isMultiple.set(t),t&&this.variants().length==0?(this.variantService.addVariantRow(),setTimeout(()=>this.focusVariantInput(0,"Model"),0)):this.variantService.clearVariants()}addVariantRow(){let t=this.variants()?.length-1;this.validateNewVariant(t,"Model"),this.variantService.isMultiple.set(!0)}updateVariantField(t,e,n){this.variantService.updateVariantField(t,e,n)}removeVariantByIndex(t,e){e?.stopPropagation(),this.variantService.removeVariantByIndex(t)}onEditVariant(t,e){let n=t.Model,i=this.service.productForm();this.dialog.open(en,{data:{form:p({},t),Options:i?.Options,parentDiscontinued:this.product()?.Discontinued,productName:this.product()?.Name,maskingFields:i?.MaskFields??[],codeRequired:i?.CodeRequired,variantDisplayNameFormula:i?.VariantDisplayNameFormula,referenceUnit:this.variants(),selectedReferenceUnitModel:this.variants().filter((r,m)=>m!==e).map(r=>r.BaseUnitModel)}}).afterClosed().subscribe(r=>{r&&(this.service.updateBaseUnitModelReferences(n,r.Model),this.variantService.replaceVariant(e,r))})}onSortVariants(t){this.variantService.sortVariants(t.active,t.direction)}onDropVariant(t){this.variantService.reorderVariants(t.previousIndex,t.currentIndex)}updateAllVariantField(t,e){this.service.updateProductVariantValue(Number(t)||0,e)}updateAllVariantDiscount(t){this.variantService.updateAllVariantDiscount(Number(t)||0)}onVariantEnter(t,e,n){t.preventDefault(),t.stopPropagation(),this.validateNewVariant(e,n)}validateNewVariant(t,e){let n=this.variants().length-1;if(t===n){if(!this.variants()[t]?.Model?.trim()){this.toastr.warning("Variant Name cannot be empty.","Empty Variant Name");return}this.variantService.addVariantRow(),setTimeout(()=>this.focusVariantInput(t+1,"Model"),0)}else this.focusVariantInput(t+1,e)}focusVariantInput(t,e){let n=this.variantInputs?.toArray()??[],i=`v-${t}-${e}`,r=n.find(S=>S.nativeElement.id===i);if(r){r.nativeElement.focus();return}let m=`v-${t}-Model`;r=n.find(S=>S.nativeElement.id===m),r?.nativeElement?.focus()}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-variant-card"]],viewQuery:function(e,n){if(e&1&&dt(Pn,5,et),e&2){let i;lt(i=ct())&&(n.variantInputs=i)}},decls:11,vars:4,consts:[["variantInput",""],[1,"card","mb-12"],[1,"card-header","d-flex","justify-content-between","align-items-center"],[1,"d-flex","align-items-center","gap-2"],[1,"dropdown"],[1,"btn-group"],[1,"border-bottom","mx-8","mt-6"],[1,"card-body","px-10"],[1,"row","g-3"],[1,"table-responsive"],["role","button","data-bs-toggle","dropdown","aria-expanded","false",1,"p-0","d-flex","justify-content-center","align-items-center",2,"cursor","pointer"],["matTooltip","Toggle columns","matTooltipPosition","above",1,"fa-solid","fa-columns-3","mt-2","position-relative","mb-0"],[1,"dropdown-menu","dropdown-menu-start","mt-2"],[1,"border-bottom","pb-3","px-3"],[1,"column-toggle-group"],[1,"p-4",3,"click"],[1,"me-3",3,"ngModelChange","onChange","ngModel","binary","inputId"],[1,"cursor-pointer",2,"width","70%",3,"for"],[1,"btn","fs-6",3,"click","ngClass"],[1,"fa-solid","fa-archive","fa-lg","me-1"],[1,"fa-solid","fa-boxes","fa-lg","me-1"],[1,"col-md-4"],["for","buyingCost",1,"mb-2"],["id","buyingCost","type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["for","sellingPrice",1,"mb-2"],["id","sellingPrice","type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["for","weight",1,"mb-2"],["id","weight","type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["matSort","","cdkDropList","",1,"table",3,"matSortChange","cdkDropListDropped"],[1,"table-light"],[1,"d-flex","justify-content-center","align-items-center"],["matTooltip","Add New Variant","aria-label","Add New Variant",1,"btn","btn-sm","btn-primary","border-0","cdk-mouse-focused","px-3","py-1",3,"click"],[1,"fa-solid","fa-plus","fs-6"],["mat-sort-header","Model",1,"fw-normal"],["mat-sort-header","Code",1,"fw-normal"],["mat-sort-header","UnitCost","arrowPosition","before",1,"text-end","fw-normal"],["mat-sort-header","UnitPrice","arrowPosition","before",1,"text-end","fw-normal"],[1,"text-end","fw-normal"],[1,"fw-normal"],[2,"width","80px"],["cdkDrag","",3,"bg-gradient-warning"],["colspan","2"],["cdkDrag",""],[1,"text-center"],["cdkDragHandle","","matTooltip","Drag to reorder",1,"btn","btn-sm","p-0",2,"cursor","grab"],[1,"fa-solid","fa-bars"],["type","text","placeholder","e.g. Red, Large","trimInput","",1,"form-control","rounded-1",3,"ngModelChange","keydown.enter","id","ngModel"],[1,"text-end"],[1,"d-flex","align-items-center","justify-content-center"],["matTooltip","Edit advanced fields",1,"btn","btn-sm","p-0",3,"click"],[1,"fas","fa-edit","text-secondary","me-2","fs-4"],["matTooltip","Remove variant",1,"btn","btn-sm","p-0","border-0",3,"click","disabled"],[1,"fa","fa-xmark","text-danger","fa-lg","fs-4"],["type","text","placeholder","VAR-001234",1,"form-control","rounded-1",3,"ngModelChange","keydown.enter","id","ngModel"],["type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","keydown.enter","id","ngModel"],["type","text","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","keydown.enter","id","ngModel","max","min"],["type","text","placeholder","set all cost","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["type","text","placeholder","set all price","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"],["type","text","placeholder","set all %","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel","max","min"],["type","text","placeholder","set all weight","autoNum","",1,"form-control","text-end","rounded-1",3,"ngModelChange","ngModel"]],template:function(e,n){e&1&&(a(0,"div",1)(1,"div",2)(2,"div",3)(3,"h3"),s(4),d(),h(5,wn,9,0,"div",4),d(),h(6,Tn,7,8,"div",5),d(),x(7,"div",6),a(8,"div",7),h(9,In,13,3,"div",8)(10,Xn,32,14,"div",9),d()()),e&2&&(l(4),j(" ",n.variantService.isMultiple()?"Pricing & Variants":"Pricing"," "),l(),v(n.variantService.isMultiple()&&n.variants().length>0?5:-1),l(),v(n.service.isEditMode()?-1:6),l(3),v(!n.variantService.isMultiple()&&!n.service.isEditMode()?9:10))},dependencies:[N,ve,E,$,k,O,we,De,Ve,wt,Pe,Me,Se,I,T,It,Ot,Ft,Te,ke],styles:["[_nghost-%COMP%] input[_ngcontent-%COMP%]{height:2.375rem;border-radius:.25rem!important;padding:.375rem .75rem!important;font-size:.75rem}[_nghost-%COMP%] label[_ngcontent-%COMP%]{font-size:.813rem}"],changeDetection:0})};var ge=class o{productFormService=b(P);outletStocks=y(()=>this.productFormService.outletStocks());entities=y(()=>this.productFormService.options()?.Entities??[]);update(t){let e=[...this.outletStocks()],n=t(e);this.productFormService.updateOutletStocks(n)}updateStockField(t,e,n){this.update(i=>i.map(r=>r.EntityID===t?u(p({},r),{[e]:n}):r))}updateAllStockField(t,e){this.update(n=>n.map(i=>u(p({},i),{[t]:e})))}static \u0275fac=function(e){return new(e||o)};static \u0275prov=oe({token:o,factory:o.\u0275fac})};var ei=o=>({"bg-light":o}),ti=(o,t)=>t.EntityID;function ni(o,t){if(o&1&&x(0,"span",14),o&2){let e=c(3);C("ngClass",fe(1,ei,!e.role.inventory.Edit))}}function ii(o,t){if(o&1){let e=M();a(0,"input",18),g("ngModelChange",function(i){_(e);let r=c().$implicit,m=c(2);return f(m.onUpdateField(r.EntityID,"OnHand",i))}),d()}if(o&2){let e=c().$implicit;C("ngModel",e.OnHand)}}function oi(o,t){if(o&1){let e=M();a(0,"tr")(1,"td",13),s(2),d(),a(3,"td"),s(4,":"),d(),a(5,"td"),h(6,ni,1,3,"span",14),h(7,ii,1,1,"input",15),d(),a(8,"td")(9,"input",16),g("ngModelChange",function(i){let r=_(e).$implicit,m=c(2);return f(m.onUpdateField(r.EntityID,"MinStock",i))}),d()(),a(10,"td")(11,"input",17),g("ngModelChange",function(i){let r=_(e).$implicit,m=c(2);return f(m.onUpdateField(r.EntityID,"MaxStock",i))}),d()()()}if(o&2){let e=t.$implicit,n=c(2);l(2),R(e.Name),l(4),v(n.role.inventory.Edit?-1:6),l(),v(n.role.inventory.Edit?7:-1),l(2),C("ngModel",e.MinStock),l(2),C("ngModel",e.MaxStock)}}function ri(o,t){if(o&1){let e=M();a(0,"input",23),g("ngModelChange",function(i){_(e);let r=c(3);return r.bulkOnHand.set(i),f(r.onUpdateAllField("OnHand",i))}),d()}if(o&2){let e=c(3);C("ngModel",e.bulkOnHand())}}function ai(o,t){if(o&1){let e=M();a(0,"tfoot")(1,"tr"),x(2,"td",19),a(3,"td"),h(4,ri,1,1,"input",20),d(),a(5,"td")(6,"input",21),g("ngModelChange",function(i){_(e);let r=c(2);return r.bulkMinStock.set(i),f(r.onUpdateAllField("MinStock",i))}),d()(),a(7,"td")(8,"input",22),g("ngModelChange",function(i){_(e);let r=c(2);return r.bulkMaxStock.set(i),f(r.onUpdateAllField("MaxStock",i))}),d()()()()}if(o&2){let e=c(2);l(4),v(e.role.inventory.Edit?4:-1),l(2),C("ngModel",e.bulkMinStock()),l(2),C("ngModel",e.bulkMaxStock())}}function di(o,t){if(o&1){let e=M();a(0,"div",5)(1,"table",6),g("matSortChange",function(i){_(e);let r=c();return f(r.onSortStocks(i))}),a(2,"thead",7)(3,"tr")(4,"th",8),s(5," Outlet "),d(),x(6,"th",9),a(7,"th",10),s(8," On Hand "),d(),a(9,"th",11),s(10," ROP "),d(),a(11,"th",12),s(12," Max "),d()()(),a(13,"tbody"),G(14,oi,12,5,"tr",null,ti),d(),h(16,ai,9,3,"tfoot"),d()()}if(o&2){let e=c();l(14),H(e.outletStocks()),l(2),v(e.hasMultipleEntities()?16:-1)}}var Re=class o{service=b(P);inventoryService=b(ge);role=b(J);isExpanded=w(!1);outletStocks=y(()=>this.inventoryService.outletStocks());hasMultipleEntities=y(()=>this.inventoryService.outletStocks().length>1);bulkOnHand=w(null);bulkMinStock=w(null);bulkMaxStock=w(null);onUpdateField(t,e,n){this.inventoryService.updateStockField(t,e,n)}onUpdateAllField(t,e){this.inventoryService.updateAllStockField(t,e)}onSortStocks(t){if(!t.direction)return;let e=[...this.outletStocks()].sort((n,i)=>{let r=n.Name.localeCompare(i.Name);return t.direction==="asc"?r:-r});this.service.updateOutletStocks(e)}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-inventory-card"]],features:[_e([ge])],decls:6,vars:2,consts:[[1,"card","mb-12"],[2,"box-shadow","none !important",3,"opened","closed","expanded"],["matTooltipPosition","above",2,"height","60px",3,"matTooltip"],[1,"fw-normal",2,"color","#4d4d4d"],["matExpansionPanelContent",""],[1,"table-responsive"],["matSort","",1,"table","table-bordered",3,"matSortChange"],[1,"thead-light"],["mat-sort-header","Name","matTooltipPosition","above","matTooltip","Outlet list",1,"border-end"],[1,"border-end",2,"width","10px"],["matTooltipPosition","above","matTooltip","Number of inventory in the outlet",1,"text-end","border-end",2,"width","120px"],["matTooltipPosition","above","matTooltip","Number of minimum inventory before it needs to be reordered",1,"text-end","border-end",2,"width","120px"],["matTooltipPosition","above","matTooltip","Number of maximum inventory to be kept in the outlet",1,"text-end","border-end",2,"width","120px"],[1,"align-middle"],[1,"form-control","text-end",3,"ngClass"],["type","text","matTooltipPosition","above","matTooltip","Input On Hand Inventory for this outlet","autoNum","",1,"form-control","text-end",3,"ngModel"],["type","text","matTooltipPosition","above","matTooltip","Input Reorder Inventory for this outlet","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["type","text","matTooltipPosition","above","matTooltip","Input Maximum Inventory for this outlet","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["type","text","matTooltipPosition","above","matTooltip","Input On Hand Inventory for this outlet","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["colspan","2"],["type","text","placeholder","Set all outlet","matTooltipPosition","above","matTooltip","Input On Hand Inventory for all outlets","autoNum","",1,"form-control","text-end",3,"ngModel"],["type","text","placeholder","Set all outlet","matTooltipPosition","above","matTooltip","Input Reorder Inventory for all outlets","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["type","text","placeholder","Set all outlet","matTooltipPosition","above","matTooltip","Input Maximum Inventory for all outlets","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"],["type","text","placeholder","Set all outlet","matTooltipPosition","above","matTooltip","Input On Hand Inventory for all outlets","autoNum","",1,"form-control","text-end",3,"ngModelChange","ngModel"]],template:function(e,n){e&1&&(a(0,"div",0)(1,"mat-expansion-panel",1),g("opened",function(){return n.isExpanded.set(!0)})("closed",function(){return n.isExpanded.set(!1)}),a(2,"mat-expansion-panel-header",2)(3,"h3",3),s(4,"Inventory"),d()(),Q(5,di,17,1,"ng-template",4),d()()),e&2&&(l(),C("expanded",n.isExpanded()),l(),C("matTooltip",n.isExpanded()?"Click to collapse":"Click to expand"))},dependencies:[N,ve,E,$,k,O,an,on,rn,nn,I,T,Pe,Me,Se,Te],encapsulation:2,changeDetection:0})};function li(o,t){if(o&1&&(a(0,"div",18)(1,"p",21),s(2),d()()),o&2){let e=c();l(2),j(" ",e.generatedDescription()," ")}}function ci(o,t){o&1&&s(0," Generating... ")}function si(o,t){o&1&&s(0," Generate ")}function pi(o,t){if(o&1){let e=M();a(0,"button",22),g("click",function(){_(e);let i=c(),r=me(12);return f(i.onGenerateDescription(r))}),h(1,ci,1,0)(2,si,1,0),d()}if(o&2){let e=c();C("disabled",e.isGenerating()),l(),v(e.isGenerating()?1:2)}}function mi(o,t){if(o&1){let e=M();a(0,"button",23),g("click",function(){_(e);let i=c(),r=me(12);return f(i.onGenerateDescription(r))}),s(1," Regenerate "),d(),a(2,"button",24),g("click",function(){_(e);let i=c(),r=me(12);return f(i.onAcceptDescription(r))}),s(3," Accept "),d()}}var Ae=class o{service=b(P);dropdownEvent;description=y(()=>this.service.product()?.Description??"");maxLength=this.service.productDescriptionMaxCharacter;keywords=w("");selectedLanguage=w(this.service.language());generatedDescription=w(null);isGenerating=w(!1);onDescriptionChange(t){this.service.updateProductDesc(t)}onGenerateDescription(t){this.dropdownEvent=t,this.isGenerating.set(!0),this.service.getProductDescSuggestion(this.selectedLanguage(),this.keywords()).subscribe({next:e=>{this.generatedDescription.set(e.Message??e.message??""),this.isGenerating.set(!1)},error:()=>this.isGenerating.set(!1)})}onAcceptDescription(t){let e=this.generatedDescription();e&&(this.service.updateProductDesc(e),this.generatedDescription.set(null),this.keywords.set(""),t.hide())}ngOnDestroy(){this.dropdownEvent&&this.dropdownEvent?.hide()}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-description"]],decls:26,vars:8,consts:[["op",""],["height","250px",3,"ngModelChange","ngModel","maxLength"],[1,"mt-8","d-flex","align-items-center","justify-content-end"],[1,"d-flex","align-items-center","gap-2"],[1,"btn","btn-gradient-ai","btn-sm",3,"click"],["matTooltipPosition","above","matTooltip","Generate product description with DealPOS AI",1,"fa-regular","fa-sparkles"],[1,"ms-2"],["href","https://support.dealpos.com/en/articles/10152475-generate-product-description-with-dealpos-ai","target","_blank","matTooltipPosition","above","matTooltip","Learn more about AI description"],[1,"fa-solid","fa-circle-info"],[1,"p-0"],[2,"max-width","400px"],[1,"mb-3"],[1,"fw-bold","mb-1"],["name","keywords","id","keywords","placeholder","Enter additional keywords (e.g., color, size, material)","cols","80","rows","3",1,"form-control",3,"ngModelChange","ngModel"],[1,"d-flex","align-items-center","gap-3","mb-3"],["bindLabel","Value","bindValue","Value","placeholder","Language",2,"min-width","130px",3,"ngModelChange","items","ngModel","clearable"],[1,"border-bottom","flex-grow-1"],[1,"fa-regular","fa-sparkles"],[1,"border","rounded","p-3","mb-3","bg-light"],[1,"d-flex","justify-content-end","gap-2"],[1,"btn","btn-success","btn-sm",3,"disabled"],[1,"mb-0",2,"white-space","pre-wrap"],[1,"btn","btn-success","btn-sm",3,"click","disabled"],[1,"btn","btn-outline-secondary","btn-sm",3,"click"],[1,"btn","btn-success","btn-sm",3,"click"]],template:function(e,n){if(e&1){let i=M();a(0,"div")(1,"POS-tinymce-editor",1),g("ngModelChange",function(m){return n.onDescriptionChange(m)}),d()(),a(2,"div",2)(3,"div",3)(4,"button",4),g("click",function(m){_(i);let S=me(12);return f(S.toggle(m))}),x(5,"i",5),a(6,"span",6),s(7,"Generate with AI"),d()(),a(8,"h3")(9,"a",7),x(10,"i",8),d()()(),a(11,"p-popover",9,0)(13,"div",10)(14,"div",11)(15,"label",12),s(16,"Additional Keywords"),d(),a(17,"textarea",13),g("ngModelChange",function(m){return n.keywords.set(m)}),d()(),a(18,"div",14)(19,"ng-select",15),g("ngModelChange",function(m){return n.selectedLanguage.set(m)}),d(),x(20,"div",16)(21,"i",17),d(),h(22,li,3,1,"div",18),a(23,"div",19),h(24,pi,3,2,"button",20)(25,mi,4,0),d()()()()}if(e&2){let i;l(),C("ngModel",n.description())("maxLength",n.maxLength),l(16),C("ngModel",n.keywords()),l(2),C("items",(i=n.service.productForm())==null||i.Options==null?null:i.Options.LanguageOptions)("ngModel",n.selectedLanguage())("clearable",!1),l(3),v(n.generatedDescription()?22:-1),l(2),v(n.generatedDescription()?25:24)}},dependencies:[N,E,$,k,O,ee,X,I,T,Lt,Ut,zt],encapsulation:2,changeDetection:0})};var ui=(o,t)=>t.ID;function gi(o,t){o&1&&(a(0,"div"),s(1,"Outlet"),d())}function Ci(o,t){if(o&1){let e=M();a(0,"input",14),g("ngModelChange",function(i){_(e);let r=c();return f(r.outletQuery.set(i))})("click",function(i){return i.stopPropagation()}),d()}if(o&2){let e=c();C("ngModel",e.outletQuery())}}function _i(o,t){if(o&1){let e=M();a(0,"tr")(1,"td"),s(2),d(),a(3,"td")(4,"ng-select",15),g("change",function(i){let r=_(e).$implicit,m=c(2);return f(m.onSelectStorage(r.ID,i))}),d()()()}if(o&2){let e=t.$implicit,n=c(2);l(2),R(e.Name),l(2),C("items",n.storages())("ngModel",n.selectedStoragesMap().get(e.ID))}}function fi(o,t){if(o&1&&G(0,_i,5,3,"tr",null,ui),o&2){let e=c();H(e.filteredEntities())}}function hi(o,t){o&1&&(a(0,"tr")(1,"td",16),x(2,"app-empty-state"),d()())}var $e=class o{service=b(P);entities=y(()=>this.service.options()?.Entities??[]);storages=y(()=>this.service.options()?.Storages??[]);selectedStoragesMap=y(()=>{let t=this.service.productLocations(),e=new Map;return t.forEach(n=>{e.set(n.OutletID,n.StorageID??null)}),e});filterToggle=w(!1);outletQuery=w("");filteredEntities=y(()=>{let t=this.outletQuery().trim().toLowerCase();return t?this.entities().filter(e=>e.Name?.toLowerCase().includes(t)):this.entities()});onSelectStorage(t,e){let n=e?.Key??null;this.service.updateStorageLocation(n,t)}toggleSearch(){this.filterToggle.update(t=>!t),this.outletQuery.set("")}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-storage-location"]],decls:25,vars:7,consts:[[1,"row"],[1,"col-md-8"],[1,"table-responsive"],[1,"table",2,"position","relative"],[1,"thead-light"],["matTooltipPosition","above","matTooltip","Outlet List",1,"border-end",2,"width","40%"],[1,"d-flex","align-items-center","justify-content-between"],["type","text","placeholder","Search Outlet by Name","autofocus","",1,"txtFilter","form-control","me-4",3,"ngModel"],[1,"fa-solid","pointer",3,"click"],["matTooltipPosition","above","matTooltip","Storage location for the outlet"],[1,"col-md-4"],[1,"alert","d-flex","gap-3","align-items-start","border"],[1,"fa-solid","fa-circle-info","mt-1","flex-shrink-0"],[1,"text-secondary-emphasis","mt-2"],["type","text","placeholder","Search Outlet by Name","autofocus","",1,"txtFilter","form-control","me-4",3,"ngModelChange","click","ngModel"],["bindLabel","Value","bindValue","Key","matTooltipPosition","above","matTooltip","Select storage location for this outlet","appendTo","body",3,"change","items","ngModel"],["colspan","2",1,"text-center","py-5"]],template:function(e,n){e&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"table",3)(4,"thead",4)(5,"tr")(6,"th",5)(7,"div",6),h(8,gi,2,0,"div")(9,Ci,1,1,"input",7),a(10,"i",8),g("click",function(r){return r.stopPropagation(),n.toggleSearch()}),d()()(),a(11,"th",9),s(12," Storage "),d()()(),a(13,"tbody"),h(14,fi,2,0)(15,hi,3,0,"tr"),d()()()(),a(16,"div",10)(17,"div",11),x(18,"i",12),a(19,"div")(20,"strong"),s(21,"Information"),d(),x(22,"br"),a(23,"div",13),s(24," You can add storage locations by going to the Product menu, selecting More Settings, and then choosing Storage Location under the Setup section. "),d()()()()()),e&2&&(l(8),v(n.filterToggle()?9:8),l(2),Y("fa-filter",!n.filterToggle())("fa-filter-slash",n.filterToggle()),ot("title",n.filterToggle()?"Hide search":"Search outlet"),l(4),v(n.filteredEntities().length>0?14:15))},dependencies:[N,E,$,k,O,ee,X,I,T,jt],encapsulation:2,changeDetection:0})};function vi(o,t){if(o&1){let e=M();a(0,"div",1)(1,"label",10),s(2,"Units of Measurement"),d(),a(3,"ng-select",11),g("ngModelChange",function(i){_(e);let r=c();return f(r.onUOMChange(i))}),d()()}if(o&2){let e,n,i=c();l(3),C("clearable",!1)("ngModel",(e=i.product())==null?null:e.VariantUOM)("items",(n=i.options())==null?null:n.UOMs)}}function yi(o,t){if(o&1&&(a(0,"div",12)(1,"span",13),s(2),d(),a(3,"span"),s(4),d()()),o&2){let e=t.item;l(2),j("",e.Symbol," - "),l(2),R(e.Name)}}function xi(o,t){if(o&1&&(a(0,"div",12)(1,"span",13),s(2),d(),a(3,"span"),s(4),d()()),o&2){let e=t.item;l(2),R(e.Symbol),l(2),R(e.Name)}}var Be=class o{service=b(P);product=y(()=>this.service.product());options=y(()=>this.service.options());nextProductName=y(()=>this.service.nextProductName());onReleaseDateChange(t){let e=t?new Date(t).toISOString().split("T")[0]:null;this.service.updateProductReleaseDate(e)}onUOMChange(t){this.service.updateProductUOM(t)}onCurrencyChange(t){this.service.updateProductCurrency(t)}onNextProductSelected(t){try{let e=JSON.parse(t);this.service.updateNextProductWithName(e.Key??null,e.Value??null)}catch(e){}}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-more-settings"]],decls:16,vars:8,consts:[[1,"row"],[1,"col-6","mb-6"],[1,"mb-2"],["placeholder","Release Date","matTooltipPosition","above","matTooltip","Input released date for this product",3,"dateChange","date","isFloatingLabel"],["for","inputCostCurrency",1,"mb-2"],["id","inputCostCurrency","bindLabel","DisplayName","bindValue","ID","placeholder","Select currency","matTooltipPosition","above","matTooltip","Select cost currency used for this variant","appendTo","body",3,"ngModelChange","items","clearable","ngModel"],["ng-option-tmp",""],["ng-label-tmp",""],["for","inputNextProduct",1,"mb-2"],["id","inputNextProduct","appendTo","body","placeholder","Search product...","requestUrl","/API/AC/GetProductSuggestion","matTooltipPosition","above","matTooltip","Select next product to upsell after this product",1,"w-100",3,"optionSelected","ngModel","inputTextValue"],["for","inputUOM",1,"mb-2"],["id","inputUOM","bindLabel","Name","bindValue","ID","placeholder","Select UOM","matTooltipPosition","above","matTooltip","Select UOM for this product e.g. gram, meter, pcs, etc.","appendTo","body",3,"ngModelChange","clearable","ngModel","items"],[1,"d-flex","align-items-center","gap-2"],[1,"fw-semibold"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"div",1)(2,"label",2),s(3,"Release Date"),d(),a(4,"datepicker",3),g("dateChange",function(r){return n.onReleaseDateChange(r)}),d()(),h(5,vi,4,3,"div",1),a(6,"div",1)(7,"label",4),s(8,"Cost Currency"),d(),a(9,"ng-select",5),g("ngModelChange",function(r){return n.onCurrencyChange(r)}),Q(10,yi,5,2,"ng-template",6)(11,xi,5,2,"ng-template",7),d()(),a(12,"div",1)(13,"label",8),s(14,"Cross Sell Product"),d(),a(15,"autocompleteV2",9),g("optionSelected",function(r){return n.onNextProductSelected(r)}),d()()()),e&2){let i,r,m,S;l(4),C("date",(i=n.product())==null?null:i.Released)("isFloatingLabel",!1),l(),v(n.service.isEditMode()?-1:5),l(4),C("items",(r=n.options())==null?null:r.Currencies)("clearable",!1)("ngModel",(m=n.product())==null?null:m.CostCurrencyID),l(6),C("ngModel",(S=n.product())==null?null:S.NextProductID)("inputTextValue",n.nextProductName())}},dependencies:[N,E,k,O,ee,X,Nt,kt,I,T,Ht,Ne,Ie],styles:["label[_ngcontent-%COMP%]{font-size:.813rem}[_nghost-%COMP%] .ng-select .ng-select-container{border-color:#dee2e6;border-radius:.25rem;min-height:2.375rem}[_nghost-%COMP%] .ng-select.ng-select-single .ng-select-container{height:2.375rem}[_nghost-%COMP%] .ng-select input{padding-top:0!important}[_nghost-%COMP%] .ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#86b7fe;box-shadow:0 0 0 .25rem #0d6efd40}[_nghost-%COMP%] datepicker{display:block;--mdc-filled-text-field-container-color: white;--mdc-filled-text-field-active-indicator-color: transparent;--mdc-filled-text-field-hover-active-indicator-color: transparent;--mdc-filled-text-field-focus-active-indicator-color: transparent;--mdc-filled-text-field-active-indicator-height: 0px}[_nghost-%COMP%] datepicker mat-form-field{width:100%}[_nghost-%COMP%] datepicker .mat-mdc-text-field-wrapper{height:2.375rem;padding:0!important;background:#fff!important}[_nghost-%COMP%] datepicker .mat-mdc-form-field-flex{height:100%;padding:0 .75rem!important;align-items:center}[_nghost-%COMP%] datepicker .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:unset!important;width:100%;display:flex;align-items:center}[_nghost-%COMP%] datepicker .mat-mdc-form-field-infix input{font-size:.75rem}[_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix{padding:0!important;display:flex;align-items:center}[_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix button.mat-mdc-icon-button{width:1.75rem;height:1.75rem;padding:0;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix button.mat-mdc-icon-button .mat-icon, [_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix button.mat-mdc-icon-button mat-icon{font-size:1rem;width:1rem;height:1rem;line-height:1rem}[_nghost-%COMP%] datepicker .mat-mdc-form-field-icon-suffix button.mat-mdc-icon-button svg{width:1rem;height:1rem}[_nghost-%COMP%] datepicker .mdc-line-ripple{display:none}[_nghost-%COMP%] datepicker .mat-mdc-form-field-subscript-wrapper{display:none}[_nghost-%COMP%] datepicker label{display:none!important}[_nghost-%COMP%] datepicker:focus-within .mat-mdc-text-field-wrapper{border-color:#86b7fe!important;box-shadow:0 0 0 .25rem #0d6efd40!important}[_nghost-%COMP%] autocompleteV2{display:block}[_nghost-%COMP%] autocompleteV2 .mat-mdc-text-field-wrapper{height:2.375rem;padding:0!important;border:1px solid #dee2e6!important;border-radius:.25rem!important;background:#fff!important}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-flex{height:100%;padding:0 .75rem!important;align-items:center}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:unset!important;width:100%;display:flex;align-items:center}[_nghost-%COMP%] autocompleteV2 label{display:none!important}[_nghost-%COMP%] autocompleteV2 input.form-control{border-radius:4px!important;background:transparent!important;box-shadow:none!important;height:2.375rem;font-size:.75rem}[_nghost-%COMP%] autocompleteV2 .mdc-line-ripple{display:none}[_nghost-%COMP%] autocompleteV2 .mat-mdc-form-field-subscript-wrapper{display:none}[_nghost-%COMP%] autocompleteV2:focus-within .mat-mdc-text-field-wrapper{border-color:#86b7fe!important;box-shadow:0 0 0 .25rem #0d6efd40!important}"],changeDetection:0})};function bi(o,t){o&1&&(x(0,"i",5),a(1,"span",6),s(2,"Description"),d())}function Mi(o,t){o&1&&x(0,"POS-description")}function Si(o,t){o&1&&(x(0,"i",7),a(1,"span",6),s(2,"Storage Location"),d())}function Pi(o,t){o&1&&(x(0,"i",8),a(1,"span",6),s(2,"More Settings"),d())}var We=class o{activeTab=w(0);static \u0275fac=function(e){return new(e||o)};static \u0275cmp=D({type:o,selectors:[["POS-tabs-card"]],decls:15,vars:2,consts:[[1,"card","mb-12"],[1,"card-body"],[1,"product-info-tab",3,"selectedIndexChange","mat-stretch-tabs"],["mat-tab-label",""],[1,"p-6"],[1,"fa-solid","fa-text","me-3","me-2"],[1,"fs-5"],[1,"fa-solid","fa-warehouse","me-2"],[1,"fa-solid","fa-circle-info","me-2"]],template:function(e,n){e&1&&(a(0,"div",0)(1,"div",1)(2,"mat-tab-group",2),g("selectedIndexChange",function(r){return n.activeTab.set(r)}),a(3,"mat-tab"),Q(4,bi,3,0,"ng-template",3),a(5,"div",4),h(6,Mi,1,0,"POS-description"),d()(),a(7,"mat-tab"),Q(8,Si,3,0,"ng-template",3),a(9,"div",4),x(10,"POS-storage-location"),d()(),a(11,"mat-tab"),Q(12,Pi,3,0,"ng-template",3),a(13,"div",4),x(14,"POS-more-settings"),d()()()()()),e&2&&(l(2),C("mat-stretch-tabs",!1),l(4),v(n.activeTab()===0?6:-1))},dependencies:[Vt,Mt,St,Pt,Ae,$e,Be],styles:["mat-tab-group.product-info-tab mat-tab-header{border-bottom:1px solid #e0e0e0}"],changeDetection:0})};var Vi=()=>["/menu/Products/Catalog/Products"];function Di(o,t){o&1&&(a(0,"div",8),x(1,"POS-inventory-card"),d())}var sn=class o extends dn{service=b(P);variantService=b(ne);submitBtnDisabled=y(()=>this.variantService.isMultipleWithEmptyVariant());router=b(ft);route=b(_t);product=this.service.product;menu$=this.menuData$.pipe(W(t=>{let e=this.route.snapshot.queryParams;return this.service.loadForm(e).pipe(L(n=>(n&&(t.H=n.PageTitle),t)))}));constructor(t){super(t)}onSave(){this.service.onSave().pipe(ie(t=>V.IsNotEmpty(t))).subscribe(t=>{t.RedirectTo=="Variant"?this.router.navigate(["/menu/Products/Catalog/Variants/Form"],{queryParams:{ID:t.FirstVariantID}}):this.router.navigate(["/menu/Products/Catalog/Products"])})}onCancel(){this.router.navigate(["/menu/Products/Catalog/Products"])}static \u0275fac=function(e){return new(e||o)(nt(Et))};static \u0275cmp=D({type:o,selectors:[["POS-product-form-v2"]],features:[_e([P,ne]),it],decls:22,vars:9,consts:[[3,"pageData","hideSearchDropdown","hideSearchBox"],["role","button","matTooltipPosition","above","matTooltip","Cancel this product",1,"btn","btn-outline-secondary","me-2",3,"routerLink"],["type","button","role","button","matTooltipPosition","above","matTooltip","Save this product",1,"btn","btn-success",3,"click","disabled"],[1,"container-fluid","bg-light-gray","pt-5"],[1,"row"],[1,"col-md-8","d-flex"],[1,"w-100"],[1,"col-md-4","d-flex","ps-5"],[1,"col-md-12"]],template:function(e,n){e&1&&(a(0,"mainpanel-cmp",0),mt(1,"async"),a(2,"actions")(3,"a",1),s(4,"Cancel"),d(),a(5,"button",2),g("click",function(){return n.onSave()}),s(6," Save "),d()(),a(7,"content")(8,"div",3)(9,"div",4)(10,"div",5),x(11,"POS-general-card",6),d(),a(12,"div",7),x(13,"POS-properties-card",6),d()(),a(14,"div",4)(15,"div",8),x(16,"POS-variant-card"),d()(),a(17,"div",4),h(18,Di,2,0,"div",8),d(),a(19,"div",4)(20,"div",8),x(21,"POS-tabs-card"),d()()()()()),e&2&&(C("pageData",ut(1,6,n.menu$))("hideSearchDropdown",!0)("hideSearchBox",!0),l(3),C("routerLink",pt(8,Vi)),l(2),C("disabled",n.submitBtnDisabled()),l(13),v(n.service.isEditMode()?-1:18))},dependencies:[N,ht,ye,Oe,Ue,Le,Re,We,At,Rt,Ct],styles:[".pf2-shell[_ngcontent-%COMP%]{background:#fff}"],changeDetection:0})};export{sn as ProductFormV2Component};
|