PageSourceSearch

https://biznas.com/chunk-MM6VOK3G.js

js biznas.com collected 2026-10-03 22:22:33 UTC 81,250 bytes, 1 lines download raw bytes

1import{a as Ht}from"./chunk-24TH6WOA.js";import{f as Kt,g as $t,h as Gt,o as Jt}from"./chunk-I43TBCCP.js";import"./chunk-2YJDS7I7.js";import{a as jt,b as zt}from"./chunk-OVYHK5U3.js";import{a as Lt,b as Ot,c as At,d as Bt,e as Rt,f as Wt}from"./chunk-PKO4K2NN.js";import{a as Ut,b as qt}from"./chunk-N7HCJULI.js";import{b as Vt}from"./chunk-ZCJARKK7.js";import{b as Nt,c as Dt}from"./chunk-IP3PUWFP.js";import"./chunk-AB427IMW.js";import{a as Ct,b as xt}from"./chunk-GDCGXIZB.js";import"./chunk-SEN64KOF.js";import{a as Tt,b as It}from"./chunk-4GAUJ5KF.js";import"./chunk-GC4IZX5C.js";import{a as Ft}from"./chunk-AD5TJUXP.js";import"./chunk-K2JPOUCJ.js";import{a as Pt}from"./chunk-DFNSSQ7G.js";import"./chunk-FDMELVMQ.js";import{c as fe,d as Ce}from"./chunk-D4TCOIRS.js";import{a as xe,b as ye}from"./chunk-MRHPGF4Z.js";import{a as U,b as q}from"./chunk-FI5HDU2M.js";import{a as kt}from"./chunk-WFYLT4GY.js";import{c as wt,d as Mt}from"./chunk-RD6CMMYT.js";import"./chunk-43QSOUEJ.js";import{a as yt,b as ht,c as vt,d as bt}from"./chunk-EYQMV3B5.js";import{a as _e,b as ge}from"./chunk-IRF7SSK4.js";import"./chunk-RJTNPJVP.js";import"./chunk-ZEKO3T4C.js";import{b as ft}from"./chunk-CMNKNHZM.js";import{a as ce,b as ue}from"./chunk-KGLUFYAO.js";import"./chunk-PHU7DBHH.js";import"./chunk-V5KNXL3X.js";import{a as _t,b as gt}from"./chunk-DP2Z6ZZS.js";import"./chunk-SXHDWJCP.js";import"./chunk-ZV4QY222.js";import{e as he,f as ve}from"./chunk-N6A7VSM7.js";import{a as W}from"./chunk-XGGGEBNP.js";import{a as Fe}from"./chunk-DVCUWZW7.js";import{a as St,b as Et}from"./chunk-JQRWBCXI.js";import"./chunk-FM6R6SQV.js";import"./chunk-YT3SJKED.js";import"./chunk-TBYF2LDC.js";import{a as mt}from"./chunk-LIN4B557.js";import{c as pe,d as I,f as L,g as Xe,i as Ie,j as O,k as et,l as tt,m as it,n as nt,q as ot,u as at,v as lt,x as rt,y as st,z as A}from"./chunk-K6JXWQGF.js";import{e as B,f as R}from"./chunk-K6TR4ND5.js";import"./chunk-LBKYIKKB.js";import{a as ut}from"./chunk-AXSTNJ5P.js";import{c as ct}from"./chunk-IL35P5P5.js";import"./chunk-PYW5YBKR.js";import"./chunk-SXGGSGOW.js";import{a as pt}from"./chunk-DVBSY2HJ.js";import{a as dt}from"./chunk-HTVQYICE.js";import{a as Ze}from"./chunk-GYMQPV7B.js";import{ma as Ye,qa as N,ua as Qe}from"./chunk-355THWVV.js";import{d as He}from"./chunk-UYEVN2YS.js";import"./chunk-HMPDWT3T.js";import{e as Je}from"./chunk-UD64SC5Q.js";import{B as de,j as Ke,l as se,m as $e,w as me,y as Ge}from"./chunk-LXYQMMEZ.js";import{$b as p,Ac as je,Bc as V,Db as x,Eb as y,Gb as Oe,Hb as Y,Ib as Q,Jb as m,Kb as o,Lb as n,Lc as F,Mb as c,Mc as ze,Nc as P,Pc as k,Qb as Ae,Rb as Be,Tb as h,Va as H,Yb as C,_a as r,db as w,dc as Re,ec as We,fc as Ue,ic as we,jc as qe,kc as Me,la as u,lb as D,lc as ae,ma as _,mc as Te,nc as s,oc as v,pc as T,qc as le,rb as f,tb as Le,uc as b,vc as S,wc as E,ya as oe,yc as re}from"./chunk-E4JUGTIV.js";import{a as G,b as J}from"./chunk-WWX6BADO.js";var si=()=>[1,2,3],mi=(i,t)=>t.featureKey;function di(i,t){i&1&&(o(0,"div",9),c(1,"p-skeleton",10),o(2,"div",11),c(3,"p-skeleton",12)(4,"p-skeleton",13),n()())}function pi(i,t){i&1&&(o(0,"div",5),c(1,"p-skeleton",7),f(2,di,5,0,"div",8),n()),i&2&&(r(2),m("ngForOf",V(1,si)))}function ci(i,t){if(i&1){let e=h();o(0,"div",6),c(1,"i",14),o(2,"p",15),s(3),n(),o(4,"p-button",16),C("onClick",function(){u(e);let l=p();return _(l.load())}),n()()}if(i&2){let e=p();r(3),v(e.loadError),r(),m("outlined",!0)}}function ui(i,t){i&1&&c(0,"p-tag",22)}function _i(i,t){if(i&1&&(o(0,"span"),s(1),F(2,"date"),n()),i&2){let e=p(2);r(),T(" \xB7 Renews ",P(2,1,e.plan.nextRenewalDate,"MMM d, y"))}}function gi(i,t){i&1&&(o(0,"div",26),c(1,"i",27),o(2,"p",28),s(3,"This plan has no configurable limits."),n()())}function fi(i,t){i&1&&(o(0,"small",39),s(1,"Enter a limit or mark as unlimited"),n())}function Ci(i,t){if(i&1&&(o(0,"span",47),s(1),F(2,"number"),n()),i&2){let e=p();r(),T("",P(2,1,e.used,"1.0-2")," used \xB7 Unlimited")}}function xi(i,t){if(i&1&&(o(0,"div",48)(1,"div",49)(2,"span",42),s(3),F(4,"number"),F(5,"number"),n(),o(6,"span",42),s(7),n()(),o(8,"div",50),c(9,"div",51),n()()),i&2){let e=p(),a=p(4);r(3),le("",P(4,6,e.used,"1.0-2")," / ",ze(5,9,e.limit)),r(4),T("",a.usagePercent(e),"%"),r(2),qe("width",a.usagePercent(e),"%"),m("ngClass",a.usageBarClass(e))}}function yi(i,t){i&1&&x(0,Ci,3,4,"span",47)(1,xi,10,11,"div",48),i&2&&y(t.isUnlimited?0:1)}function hi(i,t){i&1&&(o(0,"span",40),s(1,"\u2014"),n())}function vi(i,t){i&1&&(o(0,"span",42),s(1,"\u221E"),n())}function bi(i,t){if(i&1&&(o(0,"span",52),s(1),F(2,"number"),n()),i&2){let e=p(),a=p(4);m("ngClass",a.remainingClass(e)),r(),v(P(2,2,e.remaining,"1.0-2"))}}function Si(i,t){i&1&&x(0,vi,2,0,"span",42)(1,bi,3,5,"span",52),i&2&&y(t.isUnlimited?0:1)}function Ei(i,t){i&1&&(o(0,"span",42),s(1,"\u2014"),n())}function wi(i,t){if(i&1){let e=h();o(0,"tr",36)(1,"td",38)(2,"div",3),s(3),n(),x(4,fi,2,0,"small",39),n(),o(5,"td",38),x(6,yi,2,1)(7,hi,2,0,"span",40),n(),o(8,"td",41),x(9,Si,2,1)(10,Ei,2,0,"span",42),n(),o(11,"td",38)(12,"div",43)(13,"p-inputnumber",44),E("ngModelChange",function(l){let d=u(e).$implicit;return S(d.limit,l)||(d.limit=l),_(l)}
1),C("ngModelChange",function(){u(e);let l=p(3);return _(l.onEdit())}),n(),o(14,"label",45)(15,"p-checkbox",46),E("ngModelChange",function(l){let d=u(e).$implicit;return S(d.unlimited,l)||(d.unlimited=l),_(l)}),C("ngModelChange",function(){u(e);let l=p(3);return _(l.onEdit())}),n(),s(16," Unlimited "),n()()()()}if(i&2){let e,a,l=t.$implicit,d=p(3);r(3),v(l.name),r(),y(d.rowInvalid(l)?4:-1),r(2),y((e=d.usageFor(l.featureKey))?6:7,e),r(3),y((a=d.usageFor(l.featureKey))?9:10,a),r(4),b("ngModel",l.limit),m("disabled",l.unlimited)("min",0)("useGrouping",!0)("placeholder",l.unlimited?"Unlimited":"Enter limit"),r(2),b("ngModel",l.unlimited),m("binary",!0)}}function Mi(i,t){i&1&&(c(0,"i",53),o(1,"span",42),s(2,"Saving\u2026"),n())}function Ti(i,t){i&1&&(c(0,"i",54),o(1,"span",42),s(2,"All changes saved"),n())}function Ii(i,t){if(i&1){let e=h();c(0,"i",55),o(1,"span",39),s(2,"Couldn't save changes."),n(),o(3,"p-button",56),C("onClick",function(){u(e);let l=p(3);return _(l.saveNow())}),n()}i&2&&(r(3),m("text",!0))}function Fi(i,t){i&1&&(c(0,"i",57),o(1,"span",42),s(2,"Fix the highlighted limit to save."),n())}function Pi(i,t){if(i&1&&(o(0,"div",29)(1,"table",30)(2,"thead")(3,"tr",31)(4,"th",32),s(5,"Feature"),n(),o(6,"th",33),s(7,"Usage"),n(),o(8,"th",34),s(9,"Remaining"),n(),o(10,"th",35),s(11,"Limit"),n()()(),o(12,"tbody"),Y(13,wi,17,11,"tr",36,mi),n()()(),o(15,"div",37),x(16,Mi,3,0)(17,Ti,3,0)(18,Ii,4,1)(19,Fi,3,0),n()),i&2){let e=p(2);r(13),Q(e.rows),r(3),y(e.saveState==="saving"?16:e.saveState==="saved"?17:e.saveState==="error"?18:e.isValid?-1:19)}}function ki(i,t){if(i&1&&(o(0,"div",17)(1,"div",18)(2,"div",19)(3,"span",20),s(4),n(),c(5,"p-tag",21),x(6,ui,1,0,"p-tag",22),n(),o(7,"div",23),s(8),x(9,_i,3,4,"span"),n()()(),o(10,"div",24),c(11,"i",25),o(12,"span"),s(13,"Overrides apply to this company only and last for the current subscription term \u2014 a renewal or plan change resets them to the plan defaults."),n()(),x(14,gi,4,0,"div",26)(15,Pi,20,1)),i&2){let e=p();r(4),v(e.plan.planNameSnapshot),r(),m("value",e.cycleLabel),r(),y(e.plan.isCancelled?6:-1),r(2),T(" ",e.priceLabel," "),r(),y(e.isOpenEnded?-1:9),r(5),y(e.rows.length===0?14:15)}}var be=class i{constructor(t,e){this.api=t;this.messageService=e}companyId=null;module=null;loading=!1;saving=!1;loadError=null;plan=null;rows=[];saveState="idle";saveTimer=null;pendingSave=!1;SAVE_DEBOUNCE_MS=700;usageByKey=new Map;originalLimits=new Map;ngOnChanges(t){let e=t.module&&t.module.previousValue?.id!==t.module.currentValue?.id,a=t.companyId&&t.companyId.previousValue!==t.companyId.currentValue;(e||a)&&this.load()}load(){if(!this.companyId||!this.module){this.reset();return}this.loading=!0,this.loadError=null,this.plan=null,this.rows=[],this.originalLimits.clear(),this.usageByKey.clear(),this.cancelPendingSave(),this.saveState="idle",this.loadUsage(),this.api.getActiveCompanyModulePlan(this.companyId,this.module.id).subscribe({next:t=>{this.plan=t,this.rows=this.parseSnapshot(t.featuresJsonSnapshot),this.rows.forEach(e=>this.originalLimits.set(e.featureKey,e.unlimited?null:e.limit)),this.loading=!1},error:t=>{this.loadError=t?.error?.error||"Failed to load plan information.",this.loading=!1}})}reset(){this.plan=null,this.rows=[],this.loadError=null,this.originalLimits.clear(),this.usageByKey.clear()}loadUsage(){!this.companyId||!this.module||this.api.getCompanyModuleFeatureUsage(this.companyId,this.module.id).subscribe({next:t=>{this.usageByKey.clear(),(t||[]).forEach(e=>this.usageByKey.set(e.featureKey,e))},error:()=>this.usageByKey.clear()})}usageFor(t){return this.usageByKey.get(t)}usagePercent(t){return t.isUnlimited||!t.limit||t.limit<=0?0:Math.min(100,Math.round(t.used/t.limit*100))}usageBarClass(t){if(t.isUnlimited)return"bg-primary-400";let e=this.usagePercent(t);return e>=90?"bg-red-500":e>=75?"bg-amber-500":"bg-green-500"}remainingClass(t){return t.isUnlimited?"text-muted-color":(t.remaining??0)<=0?"text-red-500 font-semibold":this.usagePercent(t)>=75?"text-amber-500 font-semibold":"text-green-600 dark:text-green-400 font-semibold"}parseSnapshot(t){try{let e=JSON.parse(t||"[]");return Array.isArray(e)?e.map(a=>{let l=a.limitValue!==void 0?a.limitValue:a.LimitValue??null;return{name:a.name??a.Name??"",featureKey:a.featureKey??a.FeatureKe
1y??"",limit:l,unlimited:l==null}}):[]}catch{return[]}}get isFreePlan(){return!!this.plan&&this.plan.monthlyPriceSnapshot===0&&this.plan.yearlyPriceSnapshot===0}get isOpenEnded(){return this.plan?.nextRenewalDate?new Date(this.plan.nextRenewalDate).getFullYear()>new Date().getFullYear()+50:!0}get cycleLabel(){return this.isFreePlan?"Free":this.plan?.isYearlyBilling?"Yearly":"Monthly"}get priceLabel(){return this.plan?this.isFreePlan?"No charge":this.plan.isYearlyBilling?`$${this.plan.yearlyPriceSnapshot}/yr`:`$${this.plan.monthlyPriceSnapshot}/mo`:""}rowInvalid(t){return!t.unlimited&&(t.limit===null||t.limit===void 0)}get isValid(){return this.rows.every(t=>!this.rowInvalid(t))}get isDirty(){return this.rows.some(t=>(t.unlimited?null:t.limit)!==this.originalLimits.get(t.featureKey))}ngOnDestroy(){this.cancelPendingSave()}onEdit(){if(!this.isValid||!this.isDirty){this.cancelPendingSave();return}this.saveTimer&&clearTimeout(this.saveTimer),this.saveTimer=setTimeout(()=>this.autoSave(),this.SAVE_DEBOUNCE_MS)}saveNow(){this.cancelPendingSave(),this.autoSave()}cancelPendingSave(){this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),this.pendingSave=!1}autoSave(){if(this.saveTimer=null,!(!this.plan||!this.isValid||!this.isDirty)){if(this.saving){this.pendingSave=!0;return}this.commitSave()}}commitSave(){if(!this.plan)return;let t=this.rows.map(e=>({featureKey:e.featureKey,limitValue:e.unlimited?null:e.limit}));this.saving=!0,this.pendingSave=!1,this.saveState="saving",this.api.updateCompanyModulePlanFeatureLimits(this.plan.id,t).subscribe({next:e=>{this.saving=!1,this.plan=e,t.forEach(a=>this.originalLimits.set(a.featureKey,a.limitValue)),this.loadUsage(),this.pendingSave&&this.isValid&&this.isDirty?this.commitSave():(this.pendingSave=!1,this.saveState="saved")},error:e=>{this.saving=!1,this.pendingSave=!1,this.saveState="error",this.messageService.add({severity:"error",summary:"Error",detail:e?.error?.error||"Failed to save limits."})}})}static \u0275fac=function(e){return new(e||i)(w(W),w(N))};static \u0275cmp=D({type:i,selectors:[["module-limits-panel"]],inputs:{companyId:"companyId",module:"module"},features:[oe],decls:9,vars:1,consts:[[1,"rounded-lg","border","border-surface-200","dark:border-surface-700"],[1,"flex","items-center","gap-2","px-4","py-3","border-b","border-surface-200","dark:border-surface-700"],[1,"pi","pi-sliders-h","text-muted-color"],[1,"font-medium"],[1,"p-4"],[1,"flex","flex-col","gap-3"],[1,"flex","flex-col","items-center","text-center","gap-3","py-6"],["height","3.5rem","borderRadius","8px"],["class","flex items-center justify-between gap-3",4,"ngFor","ngForOf"],[1,"flex","items-center","justify-between","gap-3"],["width","10rem","height","1.25rem"],[1,"flex","items-center","gap-3"],["width","8rem","height","2.25rem","borderRadius","6px"],["width","5.5rem","height","1.25rem"],[1,"pi","pi-exclamation-circle","text-2xl","text-muted-color"],[1,"m-0","text-muted-color",2,"max-width","24rem"],["label","Retry","icon","pi pi-refresh","size","small",3,"onClick","outlined"],[1,"flex","items-center","justify-between","gap-3","p-3","mb-3","rounded-lg","border","border-surface-200","dark:border-surface-700","bg-surface-50","dark:bg-surface-800"],[1,"min-w-0"],[1,"flex","items-center","gap-2","flex-wrap"],[1,"font-bold","truncate"],["severity","info",3,"value"],["value","Cancelled","severity","warn"],[1,"text-sm","text-muted-color","mt-1"],[1,"flex","items-start","gap-2","text-sm","text-muted-color","mb-4"],[1,"pi","pi-info-circle",2,"margin-top","2px"],[1,"flex","flex-col","items-center","text-center","gap-2","py-6","rounded-lg","border","border-dashed","border-surface-200","dark:border-surface-700"],[1,"pi","pi-sliders-h","text-2xl","text-muted-color"],[1,"m-0","text-muted-color"],[1,"overflow-x-auto","rounded-lg","border","border-surface-200","dark:border-surface-700"],[1,"w-full","text-sm","border-collapse"],[1,"text-xs","font-semibold","uppercase","tracking-wide","text-muted-color","bg-surface-50","dark:bg-surface-800"],[1,"text-left","font-semibold","px-4","py-3"],[1,"text-left","font-semibold","px-4","py-3","w-44"],[1,"text-right","font-semibold","px-4","py-3","w-28"],[1,"text-right","font-semibold","px-4","py-3","w-56"],[1,"border-t","border-surface-200","dark:border-surface-700","align-middle"],[1,"flex","justify-end","items-center","gap-2","mt-4","text-sm","min-h-[1.75rem]"],[1,"px-4","py-3"],[1,"text-red-500"],[1,"text-xs","text-muted-color"],[1,"px-4","py-3","text-right","tabular-nums"],[1,"text-muted-color"],[1,"flex","items-center","justify-end","gap-3"],["inputStyleClass","w-24 text-right",3,"ngModelChange","ngModel","disabled","min","useGrouping","placeholder"],[1,"flex","items-center","gap-2","cursor-pointer","text-xs","text-muted-color","whitespace-nowrap"],[3,"ngModelChange","ngModel","binary"],[1,"text-xs","text-muted-color","italic"],[1,"flex","flex-col","gap-1"],[1,"flex","items-center","justify-between","text-xs","tabular-nums"],[1,"h-2","rounded-full","bg-surface-200","dark:bg-surface-700","overflow-hidden"],[1,"h-full","rounded-full","transition-all",3,"ngClass"],[3,"ngClass"],[1,"pi","pi-spin","pi-spinner","text-muted-color"],[1,"pi","pi-check-circle","text-green-600","dark:text-green-400"],[1,"pi","pi-exclamation-circle","text-red-500"],["label","Retry","icon","pi pi-refresh","size","small",3,"onClick","text"],[1,"pi","pi-info-circle","text-amber-500"]],template:function(e,a){e&1&&(o(0,"div",0)(1,"div",1),c(2,"i",2),o(3,"span",3),s(4,"Plan & Limits"),n()(),o(5,"div",4),x(6,pi,3,2,"div",5)(7,ci,5,2,"div",6)(8,ki,16,6),n()()),e&2&&(r(6),y(a.loading?6:a.loadError?7:a.plan?8:-1))},dependencies:[de,Ke,se,A,L,O,R,B,Ce,fe,ge,_e,ye,xe,q,U,Ge,me],encapsulation:2})};var Di=()=>({width:"480px",maxWidth:"95vw"});function Li(i,t){i&1&&(o(0,"div",1),c(1,"p-skeleton",4)(2,"p-skeleton",4)(3,"p-skeleton",4),n())}function Oi(i,t){if(i&1&&(o(0,"div",2),c(1,"i",5),o(2,"p",6),s(3),n()()),i&2){let e=p();r(3),v(e.loadError)}}function Ai(i,t){i&1&&(o(0,"div",8),c(1,"i",17),o(2,"span"),s(3,"Numbering has already started for this company, so these settings are locked to keep existing codes consistent."),n()())}function Bi(i,t){if(i&1){let e=h();o(0,"p",7),s(1," Every expense this company logs gets a unique code, e.g. "),o(2,"strong"),s(3),n(),s(4,". "),n(),x(5,Ai,4,0,"div",8),o(6,"div",9)(7,"div")(8,"label",10),s(9,"Prefix"),n(),o(10,"input",11),E("ngModelChange",function(l){u(e);let d=p();return S(d.form.prefix,l)||(d.form.prefix=l),_(l)}
1),n(),o(11,"small",12),s(12,"Defaults to the company code if left blank."),n()(),o(13,"div")(14,"label",13),s(15,"Digits (padding)"),n(),o(16,"p-inputnumber",14),E("ngModelChange",function(l){u(e);let d=p();return S(d.form.padding,l)||(d.form.padding=l),_(l)}),n(),o(17,"small",12),s(18,"e.g. 4 digits \u2192 DC0001."),n()(),o(19,"div")(20,"label",15),s(21,"Start Number"),n(),o(22,"p-inputnumber",16),E("ngModelChange",function(l){u(e);let d=p();return S(d.form.startNumber,l)||(d.form.startNumber=l),_(l)}),n(),o(23,"small",12),s(24,"The first number this company's expenses will use."),n()()()}if(i&2){let e=p();r(3),v(e.previewCode),r(2),y(e.settings.isEditable?-1:5),r(5),b("ngModel",e.form.prefix),m("disabled",!e.settings.isEditable),r(6),b("ngModel",e.form.padding),m("disabled",!e.settings.isEditable)("min",0)("max",12)("showButtons",!0),r(6),b("ngModel",e.form.startNumber),m("disabled",!e.settings.isEditable)("min",0)("useGrouping",!1)}}function Ri(i,t){if(i&1){let e=h();o(0,"p-button",19),C("onClick",function(){u(e);let l=p(2);return _(l.close())}),n(),o(1,"p-button",20),C("onClick",function(){u(e);let l=p(2);return _(l.save())}),n()}if(i&2){let e=p(2);m("text",!0),r(),m("loading",e.saving)("disabled",!e.isValid)}}function Wi(i,t){if(i&1){let e=h();o(0,"p-button",21),C("onClick",function(){u(e);let l=p(2);return _(l.close())}),n()}}function Ui(i,t){if(i&1&&x(0,Ri,2,3)(1,Wi,1,0,"p-button",18),i&2){let e=p();y(e.settings&&e.settings.isEditable?0:1)}}var Se=class i{constructor(t,e){this.api=t;this.messageService=e}visible=!1;visibleChange=new Le;companyId=null;loading=!1;saving=!1;loadError=null;settings=null;form={prefix:"",padding:4,startNumber:1};ngOnChanges(t){t.visible&&t.visible.currentValue===!0&&this.companyId&&this.load()}load(){this.companyId&&(this.loading=!0,this.loadError=null,this.settings=null,this.api.getExpenseTransactionSettings(this.companyId).subscribe({next:t=>{this.settings=t,this.form={prefix:t.prefix||"",padding:t.padding,startNumber:t.startNumber},this.loading=!1},error:t=>{this.loadError=t?.error?.error||t?.error?.message||"Failed to load expense numbering settings.",this.loading=!1}}))}get previewCode(){if(!this.settings)return"";if(!this.settings.isEditable)return this.settings.sample;let t=this.form.padding??0,e=String(this.form.startNumber??1).padStart(Math.max(0,t),"0");return`${this.form.prefix||""}${e}`}get isValid(){return this.form.startNumber!==null&&this.form.startNumber!==void 0&&this.form.startNumber>=0&&this.form.padding!==null&&this.form.padding!==void 0&&this.form.padding>=0&&this.form.padding<=12}save(){!this.companyId||!this.settings||!this.settings.isEditable||!this.isValid||(this.saving=!0,this.api.updateExpenseTransactionSettings(this.companyId,{startNumber:this.form.startNumber,padding:this.form.padding,prefix:this.form.prefix?.trim()||null}).subscribe({next:()=>{this.saving=!1,this.messageService.add({severity:"success",summary:"Saved",detail:"Expense numbering settings updated."}),this.close()},error:t=>{this.saving=!1;let e=Ft(t);this.messageService.add({severity:"error",summary:"Error",detail:e.message||"Failed to save expense numbering settings."})}}))}close(){this.visible=!1,this.visibleChange.emit(!1)}onVisibleChange(t){this.visible=t,this.visibleChange.emit(t)}static \u0275fac=function(e){return new(e||i)(w(W),w(N))};static \u0275cmp=D({type:i,selectors:[["app-expense-setup-dialog"]],inputs:{visible:"visible",companyId:"companyId"},outputs:{visibleChange:"visibleChange"},features:[oe],decls:5,vars:9,consts:[["header","Expense Numbering Setup",3,"visibleChange","visible","modal","closable","dismissableMask","draggable"],[1,"flex","flex-col","gap-3"],[1,"flex","flex-col","items-center","text-center","gap-3","py-4"],["pTemplate","footer"],["height","2.25rem","borderRadius","6px"],[1,"pi","pi-exclamation-circle","text-2xl","text-muted-color"],[1,"m-0","text-muted-color"],[1,"text-sm","text-muted-color","mb-4"],[1,"flex","items-start","gap-2","text-sm","mb-4","p-3","rounded-lg","border","border-amber-200","dark:border-amber-800","bg-amber-50","dark:bg-amber-900/20","text-amber-700","dark:text-amber-300"],[1,"flex","flex-col","gap-4"],["for","expensePrefix",1,"block","text-sm","font-medium","mb-1"],["pInputText","","id","expensePrefix","type","text","maxlength","20","placeholder","Company code",1,"w-full",3,"ngModelChange","ngModel","disabled"],[1,"text-muted-color"],["for","expensePadding",1,"block","text-sm","font-medium","mb-1"],["
1inputId","expensePadding","inputStyleClass","w-full","styleClass","w-full",3,"ngModelChange","ngModel","disabled","min","max","showButtons"],["for","expenseStartNumber",1,"block","text-sm","font-medium","mb-1"],["inputId","expenseStartNumber","inputStyleClass","w-full","styleClass","w-full",3,"ngModelChange","ngModel","disabled","min","useGrouping"],[1,"pi","pi-lock",2,"margin-top","2px"],["label","Close","icon","pi pi-times","severity","secondary"],["label","Cancel","icon","pi pi-times","severity","secondary",3,"onClick","text"],["label","Save","icon","pi pi-check",3,"onClick","loading","disabled"],["label","Close","icon","pi pi-times","severity","secondary",3,"onClick"]],template:function(e,a){e&1&&(o(0,"p-dialog",0),C("visibleChange",function(d){return a.onVisibleChange(d)}),x(1,Li,4,0,"div",1)(2,Oi,4,1,"div",2)(3,Bi,25,13),f(4,Ui,2,1,"ng-template",3),n()),e&2&&(ae(V(8,Di)),m("visible",a.visible)("modal",!0)("closable",!0)("dismissableMask",!0)("draggable",!1),r(),y(a.loading?1:a.loadError?2:a.settings?3:-1))},dependencies:[de,A,pe,L,rt,O,ve,he,Qe,R,B,ue,ce,Ce,fe,q,U],encapsulation:2})};var qi=["dt"],ji=()=>[100,500,1e3],zi=()=>({width:"1000px",maxWidth:"95vw"}),Ki=()=>[1,2,3,4,5,6,7],$i=(i,t)=>t.id;function Gi(i,t){if(i&1){let e=h();o(0,"div",16)(1,"div",17)(2,"div",18)(3,"p-datepicker",19),E("ngModelChange",function(l){u(e);let d=p();return S(d.fromDate,l)||(d.fromDate=l),_(l)}),n()(),o(4,"div",18)(5,"p-datepicker",20),E("ngModelChange",function(l){u(e);let d=p();return S(d.toDate,l)||(d.toDate=l),_(l)}),n()(),o(6,"div",18)(7,"p-select",21),E("ngModelChange",function(l){u(e);let d=p();return S(d.industryType,l)||(d.industryType=l),_(l)}),n()(),o(8,"div",18)(9,"p-select",22),E("ngModelChange",function(l){u(e);let d=p();return S(d.verifiedOnly,l)||(d.verifiedOnly=l),_(l)}),n()(),o(10,"div",18)(11,"p-multiselect",23),E("ngModelChange",function(l){u(e);let d=p();return S(d.filterModuleIds,l)||(d.filterModuleIds=l),_(l)}),n()(),o(12,"div",18)(13,"p-multiselect",24),E("ngModelChange",function(l){u(e);let d=p();return S(d.filterCountryIds,l)||(d.filterCountryIds=l),_(l)}),n()(),o(14,"div",18)(15,"p-select",25),E("ngModelChange",function(l){u(e);let d=p();return S(d.hasActiveModule,l)||(d.hasActiveModule=l),_(l)}),n()(),o(16,"div",18)(17,"p-iconfield",26)(18,"p-inputicon"),c(19,"i",27),n(),o(20,"input",28),E("ngModelChange",function(l){u(e);let d=p();return S(d.employeeEmail,l)||(d.employeeEmail=l),_(l)}),C("keydown.enter",function(){u(e);let l=p();return _(l.applyFilters())}),n()()(),o(21,"div",29)(22,"p-checkbox",30),E("ngModelChange",function(l){u(e);let d=p();return S(d.showDeleted,l)||(d.showDeleted=l),_(l)}),n(),o(23,"label",31),s(24,"Show Deleted"),n()()(),o(25,"div",32)(26,"p-button",33),C("onClick",function(){u(e);let l=p();return _(l.applyFilters())}),n(),o(27,"p-button",34),C("onClick",function(){u(e);let l=p();return _(l.resetFilters())}),n()()()}if(i&2){let e=p();r(3),b("ngModel",e.fromDate),r(2),b("ngModel",e.toDate),r(2),m("options",e.industries),b("ngModel",e.industryType),r(2),m("options",e.verifiedOptions),b("ngModel",e.verifiedOnly),r(2),m("options",e.availableFilterModules),b("ngModel",e.filterModuleIds),m("appendTo","body")("maxSelectedLabels",2),r(2),m("options",e.availableFilterCountries),b("ngModel",e.filterCountryIds),m("appendTo","body")("maxSelectedLabels",2),r(2),m("options",e.setupStatusOptions),b("ngModel",e.hasActiveModule),r(5),b("ngModel",e.employeeEmail),r(2),b("ngModel",e.showDeleted)}}function Ji(i,t){if(i&1){let e=h();o(0,"p-button",40),C("onClick",function(){u(e);let l=p(2);return _(l.clearAll())}),n()}i&2&&m("outlined",!0)}function Hi(i,t){if(i&1){let e=h();o(0,"div",35),f(1,Ji,1,1,"p-button",36),o(2,"p-iconfield",37)(3,"p-inputicon"),c(4,"i",38),n(),o(5,"input",39),E("ngModelChange",function(l){u(e);let d=p();return S(d.searchTerm,l)||(d.searchTerm=l),_(l)}),C("input",function(){u(e);let l=p();return _(l.onSearchChange())}),n()()()}if(i&2){let e=p();r(),m("ngIf",e.sortField||e.searchTerm),r(4),b("ngModel",e.searchTerm)}}function Yi(i,t){i&1&&(o(0,"tr")(1,"th",41),s(2,"S.No"),n(),o(3,"th",42),s(4,"Logo"),n(),o(5,"th",43),s(6,"Company Name "),c(7,"p-sortIcon",44),n(),o(8,"th",45),s(9,"Code"),n(),o(10,"th",46),s(11,"Status"),n(),o(12,"th",47),s(13,"Address"),n(),o(14,"th",48),s(15,"Created At "),c(16,"p-sortIcon",49),n(),o(17,"th"),s(18,"Actions"),n()())}function Qi(i,t){if(i&1&&c(0,"p-tag",54),i&2){let e=p().$implicit;m("value",re("Expenses: ",e.numberOfReceipts))}}function Zi(i,t){if(i&1&&c(0,"p-tag",55),i&2){let e=p().$implicit;m("value",re("Invoices: ",e.numberOfInvoices))}}function Xi(i,t){i&1&&c(0,"p-tag",61)}function en(i,t){if(i&1&&(o(0,"span"),s(1),n()),i&2){let e=p(2).$implicit;r(),T(", ",e.address.address2)}}function tn(i,t){if(i&1&&(o(0,"small",67),s(1),f(2,en,2,1,"span",68),c(3,"br"),s(4),n()),i&2){let e=p().$implicit;r(),T(" ",e.address.address1," "),r(),m("ngIf",e.address.address2),r(2),le(" ",e.address.city,", ",e.address.postalCode," ")}}function nn(i,t){i&1&&(o(0,"span",69),s(1,"No address"),n())}function on(i,t){if(i&1){let e=h();o(0,"p-button",70),C("onClick",function(){u(e);let l=p().$implicit,d=p();return _(d.changeCompanyStatus(l,!0))}),n()}}function an(i,t){if(i&1){let e=h();o(0,"p-button",71),C("onClick",function(){u(e);let l=p().$implicit,d=p();return _(d.changeCompanyStatus(l,!1))}),n()}}function ln(i,t){if(i&1){let e=h();o(0,"tr")(1,"td"),s(2),n(),o(3,"td",50),c(4,"img",51),n(),o(5,"td",52),s(6),o(7,"div",53),x(8,Qi,1,2,"p-tag",54),x(9,Zi,1,2,"p-tag",55),c(10,"p-tag",56),n()(),o(11,"td",57),s(12),n(),o(13,"td")(14,"div",58),c(15,"p-tag",59)(16,"p-tag",60),x(17,Xi,1,0,"p-tag",61),n()(),o(18,"td"),f(19,tn,5,4,"small",62)(20,nn,2,0,"ng-template",null,6,k),n(),o(22,"td"),s(23),F(24,"date"),n(),o(25,"td")(26,"p-button",63),C("onClick",function(){let l=u(e).$implicit,d=p();return _(d.editCompany(l))}),n(),o(27,"p-button",64),C("onClick",function(){let l=u(e).$implicit,d=p();return _(d.switchToCompany(l))}),n(),x(28,on,1,0,"p-button",65),x(29,an,1,0,"p-button",66),n()()}if(i&2){let e=t.$implicit,a=t.rowIndex,l=we(21),d=p();r(2),v(d.getSerialNumber(a)),r(2),m("src",e!=null&&e.logo?d.environment.apiBaseUrl+"/companies/"+e.id+"/preview":"assets/images/default_image.svg",H),r(2),T("",e.name," "),r(2),y(e.numberOfReceipts>0?8:-1),r(),y(e.numberOfInvoices>0?9:-1),r(),m("value",re("Employees: ",e.numberOfEmployees)),r(2),v(e.companyCode),r(3),m("value",d.getStatusText(e.status))("severity",d.get
1StatusClass(e.status)),r(),m("value",e.isVerified?"Verified":"Not Verified")("severity",e.isVerified?"success":"danger"),r(),y(e.hasActiveModule?-1:17),r(2),m("ngIf",e.address)("ngIfElse",l),r(4),v(P(24,18,e.createdAt,"mediumDate")),r(5),y(e.status===1?28:-1),r(),y(e.status===2?29:-1)}}function rn(i,t){i&1&&(o(0,"tr")(1,"td",72),s(2,"No companies found."),n()())}function sn(i,t){if(i&1){let e=h();o(0,"img",145),C("error",function(){u(e);let l=p(2);return _(l.onLogoError())}),n()}if(i&2){let e=p(2);m("src",e.companyLogoUrl,H)}}function mn(i,t){i&1&&(o(0,"div",146),c(1,"i",147),n())}function dn(i,t){i&1&&(o(0,"div",148),s(1,"Select a new logo image (max 1MB)"),n())}function pn(i,t){i&1&&(o(0,"small",149),s(1," Company name is required. "),n())}function cn(i,t){i&1&&(o(0,"small",149),s(1," Status is required. "),n())}function un(i,t){i&1&&(o(0,"small",149),s(1," Address Line 1 is required. "),n())}function _n(i,t){i&1&&(o(0,"small",149),s(1," City is required. "),n())}function gn(i,t){i&1&&(o(0,"small",149),s(1," Postal code is required. "),n())}function fn(i,t){i&1&&(o(0,"small",149),s(1," Country is required. "),n())}function Cn(i,t){i&1&&(o(0,"small",149),s(1," State is required. "),n())}function xn(i,t){i&1&&(o(0,"small",149),s(1," Timezone is required. "),n())}function yn(i,t){i&1&&(o(0,"span"),s(1,"Tax 1 Name is required."),n())}function hn(i,t){i&1&&(o(0,"span"),s(1,"Tax 1 Name must be less than 200 characters."),n())}function vn(i,t){if(i&1&&(o(0,"small",150),f(1,yn,2,0,"span",68)(2,hn,2,0,"span",68),n()),i&2){let e,a,l=p(2);r(),m("ngIf",(e=l.companyForm.get("tax1Name"))==null||e.errors==null?null:e.errors.required),r(),m("ngIf",(a=l.companyForm.get("tax1Name"))==null||a.errors==null?null:a.errors.maxlength)}}function bn(i,t){i&1&&(o(0,"span"),s(1,"Tax 1 Percentage is required."),n())}function Sn(i,t){i&1&&(o(0,"span"),s(1,"Tax 1 Percentage must be at least 0."),n())}function En(i,t){i&1&&(o(0,"span"),s(1,"Tax 1 Percentage must be at most 100."),n())}function wn(i,t){if(i&1&&(o(0,"small",150),f(1,bn,2,0,"span",68)(2,Sn,2,0,"span",68)(3,En,2,0,"span",68),n()),i&2){let e,a,l,d=p(2);r(),m("ngIf",(e=d.companyForm.get("tax1Percentage"))==null||e.errors==null?null:e.errors.required),r(),m("ngIf",(a=d.companyForm.get("tax1Percentage"))==null||a.errors==null?null:a.errors.min),r(),m("ngIf",(l=d.companyForm.get("tax1Percentage"))==null||l.errors==null?null:l.errors.max)}}function Mn(i,t){i&1&&(o(0,"span"),s(1,"Tax 2 Name is required."),n())}function Tn(i,t){i&1&&(o(0,"span"),s(1,"Tax 2 Name must be less than 200 characters."),n())}function In(i,t){if(i&1&&(o(0,"small",150),f(1,Mn,2,0,"span",68)(2,Tn,2,0,"span",68),n()),i&2){let e,a,l=p(2);r(),m("ngIf",(e=l.companyForm.get("tax2Name"))==null||e.errors==null?null:e.errors.required),r(),m("ngIf",(a=l.companyForm.get("tax2Name"))==null||a.errors==null?null:a.errors.maxlength)}}function Fn(i,t){i&1&&(o(0,"span"),s(1,"Tax 2 Percentage is required."),n())}function Pn(i,t){i&1&&(o(0,"span"),s(1,"Tax 2 Percentage must be at least 0."),n())}function kn(i,t){i&1&&(o(0,"span"),s(1,"Tax 2 Percentage must be at most 100."),n())}function Vn(i,t){if(i&1&&(o(0,"small",150),f(1,Fn,2,0,"span",68)(2,Pn,2,0,"span",68)(3,kn,2,0,"span",68),n()),i&2){let e,a,l,d=p(2);r(),m("ngIf",(e=d.companyForm.get("tax2Percentage"))==null||e.errors==null?null:e.errors.required),r(),m("ngIf",(a=d.companyForm.get("tax2Percentage"))==null||a.errors==null?null:a.errors.min),r(),m("ngIf",(l=d.companyForm.get("tax2Percentage"))==null||l.errors==null?null:l.errors.max)}}function Nn(i,t){i&1&&(o(0,"span"),s(1,"Tax 3 Name is required."),n())}function Dn(i,t){i&1&&(o(0,"span"),s(1,"Tax 3 Name must be less than 200 characters."),n())}function Ln(i,t){if(i&1&&(o(0,"small",150),f(1,Nn,2,0,"span",68)(2,Dn,2,0,"span",68),n()),i&2){let e,a,l=p(2);r(),m("ngIf",(e=l.companyForm.get("tax3Name"))==null||e.errors==null?null:e.errors.required),r(),m("ngIf",(a=l.companyForm.get("tax3Name"))==null||a.errors==null?null:a.errors.maxlength)}}function On(i,t){i&1&&(o(0,"span"),s(1,"Tax 3 Percentage is required."),n())}function An(i,t){i&1&&(o(0,"span"),s(1,"Tax 3 Percentage must be at least 0."),n())}function Bn(i,t){i&1&&(o(0,"span"),s(1,"Tax 3 Percentage must be at most 100."),n())}function Rn(i,t){if(i&1&&(o(0,"small",150),f(1,On,2,0,"span",68)(2,An,2,0,"span",68)(3,Bn,2,0,"span",68),n()),i&2){let e,a,l,d=
1p(2);r(),m("ngIf",(e=d.companyForm.get("tax3Percentage"))==null||e.errors==null?null:e.errors.required),r(),m("ngIf",(a=d.companyForm.get("tax3Percentage"))==null||a.errors==null?null:a.errors.min),r(),m("ngIf",(l=d.companyForm.get("tax3Percentage"))==null||l.errors==null?null:l.errors.max)}}function Wn(i,t){if(i&1&&(o(0,"div",151),c(1,"p-radioButton",152),o(2,"label",153),s(3),n()()),i&2){let e=t.$implicit,a=t.index;r(),m("value",e.id)("inputId","currency-"+a),r(),m("for","currency-"+a),r(),v(e.displayName)}}function Un(i,t){i&1&&(o(0,"small",149),s(1," Currency is required. "),n())}function qn(i,t){if(i&1&&c(0,"p-multiSelect",154),i&2){let e=p(2);m("options",e.additionalCurrenciesOptions)("optionDisabled","disabled")("appendTo","body")}}function jn(i,t){i&1&&c(0,"p-skeleton",161)}function zn(i,t){i&1&&(o(0,"div",134)(1,"div",155),f(2,jn,1,0,"p-skeleton",156),n(),o(3,"div",157),c(4,"p-skeleton",158)(5,"p-skeleton",159)(6,"p-skeleton",160)(7,"p-skeleton",160),n()()),i&2&&(r(2),m("ngForOf",V(1,Ki)))}function Kn(i,t){i&1&&(o(0,"div",135),c(1,"i",162),o(2,"p",163),s(3,"No modules found."),n()())}function $n(i,t){if(i&1){let e=h();o(0,"button",167),C("click",function(){let l=u(e).$implicit,d=p(3);return _(d.selectModule(l))}),c(1,"i"),o(2,"span",168),s(3),n(),c(4,"span",169),n()}if(i&2){let e=t.$implicit,a=p(3);Me("active",(a.selectedModule==null?null:a.selectedModule.id)===e.id),r(),Te(e.icon||"pi pi-box"),r(2),v(e.name),r(),Me("enabled",e.isEnabled),m("pTooltip",e.isEnabled?"Enabled":"Disabled")}}function Gn(i,t){if(i&1&&(o(0,"div",102),c(1,"module-limits-panel",181),n()),i&2){let e=p(4);r(),m("companyId",e.companyId)("module",e.selectedModule)}}function Jn(i,t){i&1&&(o(0,"div",179),c(1,"i",182),o(2,"span"),s(3,"Enable the module to view its plan and manage limits."),n()())}function Hn(i,t){if(i&1){let e=h();o(0,"p-button",184),C("onClick",function(){u(e);let l=p(5);return _(l.billingModuleSetup())}),n()}i&2&&m("outlined",!0)}function Yn(i,t){if(i&1){let e=h();o(0,"p-button",184),C("onClick",function(){u(e);let l=p(5);return _(l.donationModuleSetup())}),n()}i&2&&m("outlined",!0)}function Qn(i,t){if(i&1){let e=h();o(0,"p-button",184),C("onClick",function(){u(e);let l=p(5);return _(l.expenseModuleSetup())}),n()}i&2&&m("outlined",!0)}function Zn(i,t){if(i&1&&(o(0,"div",180)(1,"div")(2,"div",176),s(3,"Module Setup"),n(),o(4,"div",177),s(5),n()(),x(6,Hn,1,1,"p-button",183),x(7,Yn,1,1,"p-button",183),x(8,Qn,1,1,"p-button",183),n()),i&2){let e=p(4);r(5),T("Configure ",e.selectedModule.name," for this company."),r(),y(e.selectedModule.systemName==="Billing & Invoicing"?6:-1),r(),y(e.selectedModule.systemName==="Donation"?7:-1),r(),y(e.selectedModule.systemName==="Expense Management"?8:-1)}}function Xn(i,t){if(i&1){let e=h();o(0,"div",170)(1,"span",171),c(2,"i"),n(),o(3,"div",172)(4,"h5",173),s(5),n(),c(6,"p-tag",59),n()(),o(7,"p",174),s(8),n(),o(9,"div",175)(10,"div")(11,"div",176),s(12,"Module Access"),n(),o(13,"div",177),s(14),n()(),o(15,"p-toggleSwitch",178),C("onChange",function(){u(e);let l=p(3);return _(l.toggleModule(l.selectedModule))}),n()(),x(16,Gn,2,2,"div",102)(17,Jn,4,0,"div",179),x(18,Zn,9,4,"div",180)}if(i&2){let e=p(3);r(2),Te((e.selectedModule.icon||"pi pi-box")+" text-primary text-xl"),r(3),v(e.selectedModule.name),r(),m("value",e.selectedModule.isEnabled?"Enabled":"Disabled")("severity",e.selectedModule.isEnabled?"success":"secondary"),r(2),T(" ",e.selectedModule.description||"No description available for this module."," "),r(6),T("Allow this company to use ",e.selectedModule.name,"."),r(),m("formControl",e.getModuleFormControl(e.selectedModule.id.toString())),r(),y(e.selectedModule.isEnabled?16:17),r(2),y(e.selectedModule.isEnabled&&(e.selectedModule.systemName==="Billing & Invoicing"||e.selectedModule.systemName==="Donation"||e.selectedModule.systemName==="Expense Management")?18:-1)}}function eo(i,t){if(i&1&&(o(0,"div",136)(1,"div",164),Y(2,$n,5,8,"button",165,$i),n(),o(4,"div",166),x(5,Xn,19,10),n()()),i&2){let e=p(2);r(2),Q(e.availableModules),r(3),y(e.selectedModule?5:-1)}}function to(i,t){i&1&&(o(0,"div",138),c(1,"p-skeleton",160)(2,"p-skeleton",185),o(3,"div",17)(4,"div",87),c(5,"p-skeleton",186),n(),o(6,"div",87),c(7,"p-skeleton",186),n(),o(8,"div",87),c(9,"p-skeleton",186),n(),o(10,"div",87),c(11,"p-skeleton",186),n()()())}function io(i,t){i&1&&(o(0,"div",139),c(1,"i",187),o(2,"p",163),s(3,"No employee has been added to this company yet."),n(),o(4,"small",188),s(5,"There is nobody to follow up with until someone registers or is invited."),n()())}function no(i,t){if(i&1&&c(0,"p-tag",193),i&2){let e=t.$implicit;m("value",e)}}function oo(i,t){i&1&&c(0,"p-tag",194)}function ao(i,t){i&1&&(o(0,"div",195),c(1,"i",204),o(2,"span"),s(3,"No employee is marked as primary for this company. Showing the next best contact (an administrator, otherwise the first employee to join)."),n()())}function lo(i,t){i&1&&(o(0,"div",196),c(1,"i",205),o(2,"span"),s(3,"This company has not activated any module yet, so its setup is incomplete. Reach out to the contact below."),n()())}function ro(i,t){if(i&1&&(o(0,"a",206),s(1),n()),i&2){let e=p(3);m("href","mailto:"+e.primaryContact.email,H),r(),v(e.primaryContact.email)}}function so(i,t){i&1&&(o(0,"span",207),s(1,"Not provided"),n())}function mo(i,t){if(i&1){let e=h();o(0,"p-button",208),C("onClick",function(){u(e);let l=p(3);return _(l.copyToClipboard(l.primaryContact.email,"Email"))}),n()}i&2&&m("rounded",!0)("text",!0)}function po(i,t){if(i&1&&(o(0,"a",206),s(1),n()),i&2){let e=p(3);m("href","tel:"+e.primaryContact.phoneNumber,H),r(),v(e.primaryContact.phoneNumber)}}function co(i,t){i&1&&(o(0,"span",207),s(1,"Not provided"),n())}function uo(i,t){if(i&1){let e=h();o(0,"p-button",209),C("onClick",function(){u(e);let l=p(3);return _(l.copyToClipboard(l.primaryContact.phoneNumber,"Phone number"))}),n()}i&2&&m("rounded",!0)("text",!0)}function _o(i,t){if(i&1&&(Ae(0),s(1),F(2,"date"),Be()),i&2){let e=p(4);r(),T(" \xB7 accepted ",P(2,1,e.primaryContact.acceptedOn,"mediumDate")," ")}}function go(i,t){i&1&&(o(0,"span",188),s(1,"\xB7 not accepted yet"),n())}function fo(i,t){if(i&1&&(o(0,"div",197)(1,"label",88),s(2,"Invitation"),n(),o(3,"span"),s(4),F(5,"date"),f(6,_o,3,4,"ng-container",210)(7,go,2,0,"ng-template",null,8,k),n()()),i&2){let e=we(8),a=p(3);r(4),T(" Sent ",P(5,3,a.primaryContact.invitedOn,"mediumDate")," "),r(2),m("ngIf",a.primaryContact.acceptedOn)("ngIfElse",e)}}function Co(i,t){if(i&1&&(o(0,"div",140)(1,"div",189)(2,"span",190),c(3,"i",191),n(),o(4,"div",192)(5,"h5",173),s(6),n(),o(7,"div",53),c(8,"p-tag",59),Y(9,no,1,1,"p-tag",193,Oe),x(11,oo,1,0,"p-tag",194),n()()(),x(12,ao,4,0,"div",195),x(13,lo,4,0,"div",196),o(14,"div",17)(15,"div",197)(16,"label",88),s(17,"Email"),n(),o(18,"div",198),f(19,ro,2,2,"a",199)(20,so,2,0,"span",200)(21,mo,1,2,"p-button",201),n()(),o(22,"div",197)(23,"label",88),s(24,"Phone"),n(),o(25,"div",198),f(26,po,2,2,"a",199)(27,co,2,0,"span",200)(28,uo,1,2,"p-button",202),n()(),o(29,"div",197)(30,"label",88),s(31,"Employee Co
1de"),n(),o(32,"span"),s(33),n()(),o(34,"div",197)(35,"label",88),s(36,"Email Verified"),n(),c(37,"p-tag",59),F(38,"date"),n(),o(39,"div",197)(40,"label",88),s(41,"Password Set"),n(),c(42,"p-tag",59),n(),o(43,"div",197)(44,"label",88),s(45,"Last Login"),n(),o(46,"span"),s(47),F(48,"date"),n()(),f(49,fo,9,6,"div",203),n()()),i&2){let e=p(2);r(6),v(e.primaryContact.fullName),r(2),m("value",e.getEmployeeStatusText(e.primaryContact.status))("severity",e.getEmployeeStatusClass(e.primaryContact.status)),r(),Q(e.primaryContact.roles),r(2),y(e.primaryContact.isFallback?-1:11),r(),y(e.primaryContact.isFallback?12:-1),r(),y(!e.modulesLoading&&e.availableModules.length>0&&!e.hasAnyEnabledModule()?13:-1),r(6),m("ngIf",e.primaryContact.email),r(),m("ngIf",!e.primaryContact.email),r(),m("ngIf",e.primaryContact.email),r(5),m("ngIf",e.primaryContact.phoneNumber),r(),m("ngIf",!e.primaryContact.phoneNumber),r(),m("ngIf",e.primaryContact.phoneNumber),r(5),v(e.primaryContact.employeeCode||"Not assigned"),r(4),m("value",P(38,19,e.primaryContact.verifiedOn,"mediumDate")||"Not verified")("severity",e.primaryContact.verifiedOn?"success":"danger"),r(5),m("value",e.primaryContact.hasSetPassword?"Yes":"Never set")("severity",e.primaryContact.hasSetPassword?"success":"warn"),r(5),v(e.primaryContact.lastLoggedInAt?P(48,22,e.primaryContact.lastLoggedInAt,"medium"):"Never logged in"),r(2),m("ngIf",e.primaryContact.invitedOn)}}function xo(i,t){if(i&1){let e=h();o(0,"form",73),C("ngSubmit",function(){u(e);let l=p();return _(l.onSubmit())}),o(1,"p-tabs",74)(2,"p-tablist")(3,"p-tab",74),s(4,"Company Information"),n(),o(5,"p-tab",75),s(6,"Financial Settings"),n(),o(7,"p-tab",76),s(8,"Modules"),n(),o(9,"p-tab",77),s(10,"Primary Contact"),n()(),o(11,"p-tabpanels")(12,"p-tabpanel",78)(13,"div",16)(14,"div",79)(15,"div",80),f(16,sn,1,1,"img",81)(17,mn,2,0,"div",82),n()(),o(18,"div",83)(19,"p-fileUpload",84),C("onSelect",function(l){u(e);let d=p();return _(d.onFileChange(l))}),f(20,dn,2,0,"ng-template",null,7,k),n(),o(22,"small",85),s(23,"Supported formats: JPG, PNG, GIF"),n()()(),o(24,"div",86)(25,"div",87)(26,"label",88),s(27,"Company Name"),n(),c(28,"input",89),f(29,pn,2,0,"small",90),n(),o(30,"div",87)(31,"label",88),s(32,"Company Code"),n(),c(33,"input",91),o(34,"small",92),s(35,"System-generated \u2014 cannot be changed."),n()()(),o(36,"div",86)(37,"div",87)(38,"label",88),s(39,"Status"),n(),c(40,"p-select",93),f(41,cn,2,0,"small",90),n(),o(42,"div",87)(43,"label",88),s(44,"Display Order"),n(),c(45,"input",94),o(46,"small",67),s(47,"Lower number shows first. Leave blank for default sorting."),n()()(),o(48,"div",86)(49,"div",87)(50,"label",88),s(51,"Address Line 1"),n(),c(52,"input",95),f(53,un,2,0,"small",90),n(),o(54,"div",87)(55,"label",88),s(56,"Address Line 2"),n(),c(57,"input",96),n()(),o(58,"div",86)(59,"div",97)(60,"label",88),s(61,"City"),n(),c(62,"input",98),f(63,_n,2,0,"small",90),n(),o(64,"div",97)(65,"label",88),s(66,"ZIP / Postal Code"),n(),c(67,"input",99),f(68,gn,2,0,"small",90),n(),o(69,"div",97)(70,"label",88),s(71,"Country"),n(),o(72,"p-select",100),C("onChange",function(l){u(e);let d=p();return _(d.onCountryChange(l.value))}),n(),f(73,fn,2,0,"small",90),n(),o(74,"div",97)(75,"label",88),s(76,"State"),n(),c(77,"p-select",101),f(78,Cn,2,0,"small",90),n()(),o(79,"div",102)(80,"label",88),s(81,"Timezone"),n(),c(82,"p-select",103),f(83,xn,2,0,"small",90),n()(),o(84,"p-tabpanel",104)(85,"div",102)(86,"h4",105),s(87,"Tax Configuration"),n(),o(88,"div",102)(89,"div",106)(90,"div",107),c(91,"p-checkbox",108),o(92,"label",109),s(93,"Tax 1"),n()(),o(94,"div",110)(95,"label",111),s(96,"Name"),n(),c(97,"input",112),f(98,vn,3,2,"small",113),n(),o(99,"div",97)(100,"label",114),s(101,"Percentage"),n(),c(102,"input",115),f(103,wn,4,3,"small",113),n()()(),o(104,"div",102)(105,"div",106)(106,"div",107),c(107,"p-checkbox",116),o(108,"label",117),s(109,"Tax 2"),n()(),o(110,"div",110)(111,"label",118),s(112,"Name"),n(),c(113,"input",119),f(114,In,3,2,"small",113),n(),o(115,"div",97)(116,"label",120),s(117,"Percentage"),n(),c(118,"input",121),f(119,Vn,4,3,"small",113),n()()(),o(120,"div",102)(121,"div",106)(122,"div",107),c(123,"p-checkbox",122),o(124,"label",123),s(125,"Tax 3"),n()(),o(126,"div",110)(127,"label",124),s(128,"Name"),n(),c(129,"input",125),f(130,Ln,3,2,"small",113),n(),o(131,"div",97)(132,"label",126),s(133,"Percentage"),n(),c(134,"input",127),f(135,Rn,4,3,"small",113),n()()()(),o(136,"div",128)(137,"h4",105),s(138,"Currency Settings"),n(),o(139,"div",102)(140,"label",88),s(141,"Set Primary Currency"),n(),o(142,"div",129),f(143,Wn,4,4,"div",130),n(),f(144,Un,2,0,"small",90),n(),o(145,"div",102)(146,"label",88),s(147,"Additional Currencies"),n(),o(148,"p-button",131),C("onClick",function(){u(e);let l=p();return _(l.toggleAdditionalCurrencies())}),n(),f(149,qn,1,3,"p-multiSelect",132),n()()(),o(150,"p-tabpanel",133),x(151,zn,8,2,"div",134)(152,Kn,4,0,"div",135)(153,eo,6,1,"div",136),n(),o(154,"p-tabpanel",137),x(155,to,12,0,"div",138)(156,io,6,0,"div",139)(157,Co,50,25,"div",140),n()()()(),o(158,"div",141)(159,"div",142)(160,"p-button",143),C("click",function(){u(e);let l=p();return _(l.hideCompanyDialog())}),n(),o(161,"p-button",144),C("click",function(){u(e);let l=p();return _(l.onSubmit())}),n()()()}if(i&2){let e,a,l,d,M,j,z,K,Ee,$,Pe,Z,ke,X,Ve,ee,Ne,te,De,ie,ne,g=p();m("formGroup",g.companyForm),r(16),m("ngIf",g.companyLogoUrl),r(),m("ngIf",!g.companyLogoUrl),r(2),m("auto",!1)("multiple",!1),r(10),m("ngIf",((e=g.companyForm.get("name"))==null?null:e.invalid)&&
1((e=g.companyForm.get("name"))==null?null:e.touched)),r(11),m("options",g.statusList)("appendTo","body"),r(),m("ngIf",((a=g.companyForm.get("status"))==null?null:a.hasError("required"))&&((a=g.companyForm.get("status"))==null?null:a.touched)),r(12),m("ngIf",((l=g.companyForm.get("address1"))==null?null:l.hasError("required"))&&((l=g.companyForm.get("address1"))==null?null:l.touched)),r(10),m("ngIf",((d=g.companyForm.get("city"))==null?null:d.hasError("required"))&&((d=g.companyForm.get("city"))==null?null:d.touched)),r(5),m("ngIf",((M=g.companyForm.get("postalCode"))==null?null:M.hasError("required"))&&((M=g.companyForm.get("postalCode"))==null?null:M.touched)),r(4),m("options",g.countries)("appendTo","body"),r(),m("ngIf",((j=g.companyForm.get("countryId"))==null?null:j.hasError("required"))&&((j=g.companyForm.get("countryId"))==null?null:j.touched)),r(4),m("options",g.states)("appendTo","body"),r(),m("ngIf",((z=g.companyForm.get("stateId"))==null?null:z.hasError("required"))&&((z=g.companyForm.get("stateId"))==null?null:z.touched)),r(4),m("options",g.timezones)("appendTo","body"),r(),m("ngIf",((K=g.companyForm.get("timezone"))==null?null:K.invalid)&&((K=g.companyForm.get("timezone"))==null?null:K.touched)),r(14),m("disabled",!((Ee=g.companyForm.get("tax1Enabled"))!=null&&Ee.value)),r(),m("ngIf",(($=g.companyForm.get("tax1Name"))==null?null:$.invalid)&&(($=g.companyForm.get("tax1Name"))==null?null:$.touched)),r(4),m("disabled",!((Pe=g.companyForm.get("tax1Enabled"))!=null&&Pe.value)),r(),m("ngIf",((Z=g.companyForm.get("tax1Percentage"))==null?null:Z.invalid)&&((Z=g.companyForm.get("tax1Percentage"))==null?null:Z.touched)),r(10),m("disabled",!((ke=g.companyForm.get("tax2Enabled"))!=null&&ke.value)),r(),m("ngIf",((X=g.companyForm.get("tax2Name"))==null?null:X.invalid)&&((X=g.companyForm.get("tax2Name"))==null?null:X.touched)),r(4),m("disabled",!((Ve=g.companyForm.get("tax2Enabled"))!=null&&Ve.value)),r(),m("ngIf",((ee=g.companyForm.get("tax2Percentage"))==null?null:ee.invalid)&&((ee=g.companyForm.get("tax2Percentage"))==null?null:ee.touched)),r(10),m("disabled",!((Ne=g.companyForm.get("tax3Enabled"))!=null&&Ne.value)),r(),m("ngIf",((te=g.companyForm.get("tax3Name"))==null?null:te.invalid)&&((te=g.companyForm.get("tax3Name"))==null?null:te.touched)),r(4),m("disabled",!((De=g.companyForm.get("tax3Enabled"))!=null&&De.value)),r(),m("ngIf",((ie=g.companyForm.get("tax3Percentage"))==null?null:ie.invalid)&&((ie=g.companyForm.get("tax3Percentage"))==null?null:ie.touched)),r(8),m("ngForOf",g.companyCurrencies),r(),m("ngIf",((ne=g.companyForm.get("currencyId"))==null?null:ne.invalid)&&((ne=g.companyForm.get("currencyId"))==null?null:ne.touched)),r(5),m("ngIf",g.showAdditionalCurrencies),r(2),y(g.modulesLoading?151:g.availableModules.length===0?152:153),r(4),y(g.primaryContactLoading?155:g.primaryContactMissing||!g.primaryContact?156:157),r(6),m("disabled",!g.companyForm.valid)}}var ni=class i{constructor(t,e,a,l,d,M,j,z,K,Ee,$){this.httpService=t;this.http=e;this.fb=a;this.messageService=l;this.auth=d;this.router=M;this.companyContext=j;this.confirmationService=z;this.apiService=K;this.moduleService=Ee;this.registrationService=$;this.companyForm=this.fb.group({name:["",I.required],companyCode:[{value:"",disabled:!0}],status:[1,I.required],logo:[""],companyId:[""],displayOrder:[null],address1:["",I.required],address2:[""],city:["",I.required],postalCode:["",I.required],countryId:[null,I.required],stateId:[null,I.required],currencyId:[null,I.required],additionalCurrencies:[[]],timezone:[""],tax1Enabled:[!1],tax1Name:[""],tax1Percentage:[null],tax2Enabled:[!1],tax2Name:[""],tax2Percentage:[null],tax3Enabled:[!1],tax3Name:[""],tax3Percentage:[null]})}dt;pageSize=100;page=1;totalRecords=0;loading=!1;companies=[];searchTerm="";sortField="";sortDirection="asc";initialSortField="";initialSortOrder=1;showFilters=!1;fromDate;toDate;industryType;employeeEmail="";verifiedOnly=null;showDeleted=!1;industries=[];hasActiveModule=null;verifiedOptions=[{label:"Both",value:null},{label:"Verified Only",value:!0},{label:"Not Verified",value:!1}];setupStatusOptions=[{label:"Both",value:null},{label:"Incomplete Setup (No Active Module)",value:!1},{label:"Setup Complete (Has Active Module)",value:!0}];filterModules=[];filterModuleIds=[];availableFilterModules=[];filterCountryIds=[];availableFilterCountries=[];companyForm;company={};companyDialog=!1;companyId=null;companyLogoUrl="";states=[];countries=[];currencies=[];additionalCurrenciesOptions=[];originalAdditionalCurrenciesOptions=[];companyCurrencies=[];uploadedFiles=[];showAdditionalCurrencies=!1;timezones=Pt;statusList=[{label:"Active",value:1},{label:"Inactive",value:0},{label:"Suspended",value:2},{label:"Under Review",value:4},{label:"Deleted",value:5}];environment=Ze;modulesLoading=!1;availableModules=[];selectedModule=null;moduleFormControls=new Map;primaryContact=null;primaryContactLoading=!1;primaryContactMissing=!1;ngOnInit(){this.loadSortingPreferences(),this.fetchCompanies(),this.loadCountries(),this.loadCurrencies(),this.loadAdditionalCurrencies(),this.loadIndustries(),this.setupTaxValidators(),this.loadModulesForFilter(),this.loadCountriesForFilter()}loadSortingPreferences(){let t=localStorage.getItem("rc_companies_sort");if(t){let e=JSON.parse(t);e.sortField&&(this.sortField=e.sortField,this.sortDirection=e.sortDirection||"asc",this.initialSortField=this.sortField,this.initialSortOrder=this.sortDirection==="asc"?1:-1)}}saveSortingPreferences(){let t={sortField:this.sortField,sortDirection:this.sortDirection};localStorage.setItem("rc_companies_sort",JSON.stringify(t))}clearAll(){this.sortField="",this.sortDirection="asc",this.initialSortField="",this.initialSortOrder=1,this.searchTerm="",this.saveSortingPreferences(),this.dt.clear()}loadModulesForCompany(t){this.modulesLoading=!0,this.selectedModule=null,this.moduleService.getAllModulesForCompany(t).subscribe({next:e=>{this.availableModules=e,this.createModuleFormControls(),this.selectedModule=e.find(a=>a.isEnabled)??e[0]??null,this.modulesLoading=!1},error:e=>{console.error("Failed to load modules for company",e),this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load modules for company."}),this.modulesLoading=!1}})}createModuleFormControls(){this.moduleFormControls.clear(),this.availableModules.forEac
1h(t=>{let e=new Ie(t.isEnabled);this.moduleFormControls.set(t.id.toString(),e)})}getModuleFormControl(t){return this.moduleFormControls.get(t)||new Ie(!1)}hasAnyEnabledModule(){return this.availableModules.some(t=>t.isEnabled)}selectModule(t){this.selectedModule=t}toggleModule(t){if(!this.companyId)return;this.modulesLoading=!0;let e=this.getModuleFormControl(t.id.toString()),a=e.value;(a?this.moduleService.enableModuleForCompany(this.companyId.toString(),t.id):this.moduleService.disableModuleForCompany(this.companyId.toString(),t.id)).subscribe({next:()=>{t.isEnabled=a,this.messageService.add({severity:"success",summary:"Success",detail:`Module ${a?"enabled":"disabled"} successfully.`}),this.modulesLoading=!1},error:d=>{console.error("Failed to toggle module",d),e.setValue(!a),this.messageService.add({severity:"error",summary:"Error",detail:`Failed to ${a?"enable":"disable"} module.`}),this.modulesLoading=!1}})}onPageChange(t){this.page=Math.floor(t.first/t.rows)+1,this.pageSize=t.rows,t.sortField!==void 0&&t.sortField!==null&&(this.sortField=t.sortField,this.sortDirection=t.sortOrder===1?"asc":"desc",this.saveSortingPreferences()),this.fetchCompanies()}onSearchChange(){let t=this.searchTerm?.trim()??"";t.length>0&&t.length<2||(this.page=1,this.fetchCompanies())}toggleFilters(){this.showFilters=!this.showFilters}applyFilters(){this.page=1,this.dt&&(this.dt.first=0),this.fetchCompanies()}resetFilters(){this.fromDate=void 0,this.toDate=void 0,this.industryType=void 0,this.employeeEmail="",this.verifiedOnly=null,this.hasActiveModule=null,this.showDeleted=!1,this.filterModuleIds=[],this.filterCountryIds=[],this.page=1,this.dt&&(this.dt.first=0),this.fetchCompanies()}loadModulesForFilter(){this.moduleService.getAllModulesAdmin().subscribe({next:t=>{this.availableFilterModules=t},error:t=>{console.error("Failed to load modules for filter",t)}})}loadCountriesForFilter(){this.registrationService.getCountries().subscribe({next:t=>{this.availableFilterCountries=t},error:t=>{console.error("Failed to load countries for filter",t)}})}fetchCompanies(){this.loading=!0;let t={Page:this.page,PageSize:this.pageSize,Search:this.searchTerm||""};this.sortField&&(t.SortBy=this.sortField,t.SortDir=this.sortDirection),this.fromDate&&(t.FromDate=Fe(this.fromDate)),this.toDate&&(t.ToDate=Fe(this.toDate)),this.industryType&&(t.IndustryType=this.industryType);let e=this.employeeEmail?.trim();e&&(t.EmployeeEmail=e),this.verifiedOnly!==null&&(t.VerifiedOnly=this.verifiedOnly),this.hasActiveModule!==null&&(t.HasActiveModule=this.hasActiveModule),t.ShowDeleted=this.showDeleted,this.filterModuleIds&&this.filterModuleIds.length>0&&(t.ModuleIds=this.filterModuleIds),this.filterCountryIds&&this.filterCountryIds.length>0&&(t.CountryIds=this.filterCountryIds),this.httpService.getWithParams("Companies",t).subscribe({next:a=>{this.companies=a?.items??[],this.totalRecords=a.totalCount||0,this.loading=!1},error:a=>{this.companies=[],this.loading=!1,this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load companies."})}})}loadCountries(){this.httpService.get("lookup/countries").subscribe({next:t=>{this.countries=t},error:t=>{console.error("Failed to load countries",t),this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load countries."})}})}loadCurrencies(){let t=localStorage.getItem("rc_currencies");t?this.currencies=JSON.parse(t).map(e=>J(G({},e),{displayName:`${e.name} (${e.code})`})):this.httpService.get("lookup/currencies").subscribe({next:e=>{this.currencies=e.map(a=>J(G({},a),{displayName:`${a.name} (${a.code})`}))},error:e=>{console.error("Failed to load currencies",e),this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load currencies."})}})}loadAdditionalCurrencies(){this.httpService.get("lookup/currencies").subscribe({next:t=>{this.originalAdditionalCurrenciesOptions=t.map(e=>J(G({},e),{displayName:`${e.name} (${e.code})`})),this.additionalCurrenciesOptions=[...this.originalAdditionalCurrenciesOptions]},error:t=>{console.error("Failed to load additional currencies",t),this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load additional currencies."})}})}loadIndustries(){this.registrationService.getIndustries().subscribe({next:t=>{this.industries=t},error:t=>{console.error("Failed to load industries",t),this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load industries."})}})}onCountryChange(t){this.companyForm.patchValue({stateId:null}),this.states=[],t&&this.httpService.get(`lookup/states/${t}`).subscribe({next:e=>{this.states=e,!this.companyForm.value.stateId&&this.states.length>0&&this.companyForm.patchValue({stateId:this.states[0].id})},error:e=>{console.error("Failed to load states",e),this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load states."})}})}setupTaxValidators(){this.companyForm.get("tax1Enabled")?.valueChanges.subscribe(t=>{this.updateTaxValidators(1,t)}),this.companyForm.get("tax2Enabled")?.valueChanges.subscribe(t=>{this.updateTaxValidators(2,t)}),this.companyForm.get("tax3Enabled")?.valueChanges.subscribe(t=>{this.updateTaxValidators(3,t)})}updateTaxValidators(t,e){let a=this.companyForm.get(`tax${t}Name`),l=this.companyForm.get(`tax${t}Percentage`);e?(a?.setValidators([I.required,I.maxLength(200)]),l?.setValidators([I.required,I.min(0),I.max(100)]),a?.enable(),l?.enable()):(a?.clearValidators(),l?.clearValidators(),a?.setValue(""),l?.setValue(null),a?.disable(),l?.disable()),a?.updateValueAndValidity(),l?.updateValueAndValidity()}toggleAdditionalCurrencies(){this.showAdditionalCurrencies=!this.showAdditionalCurrencies}editCompany(t){this.companyId=t.id,this.loadModulesForCompany(t.id.toString()),this.loadPrimaryContact(t.id.toString()),this.companyCurrencies=this.additionalCurrenciesOptions.filter(l=>t.currencyIds?.includes(l.id)),this.companyForm.patchValue({name:t.name,companyCode:t.companyCode,companyId:t.id,status:t.status,displayOrder:t.displayOrder??null,address1:t.address?.address1??"",address2:t.address?.address2??"",city:t.address?.city??"",postalCode:t.address?.postalCode??"",countryId:t.address?.countryId??null,currencyId:t.primaryCurrency,additionalCurrencies:t.currencyIds||[],timezone:t.timeZone||"",tax1Enabled:!!t.tax1Name,tax1Name:t.tax1Name??"",tax1Percentage:t.tax1Percentage??null,tax2Enabled:!!t.tax2Name,tax2Name:t.tax2Name??"",tax2Percentage:t.tax2Percentage??null,tax3Enabled:!!t.tax3Name,tax3Name:t.tax3Name??"",tax3Percentage:t.tax3Percentage??null}),this.companyLogoUrl=t.logo?this.environment.apiBaseUrl+"/companies/"+t.id+"/preview":"";let e=t.address?.countryId,a=t.address?.stateId;if(e)this.httpService.get(`lookup/states/${e}`).subscribe({next:l=>{this.states=l,this.companyForm.patchValue({stateId:a??this.states[0]?.id??null})},error:l=>{console.error("Failed to load states",l),this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load states."})}});else if(this.countries.length===0)this.loadCountries();else{let l=this.countries[0].id;this.companyForm.patchValue({countryId:l}),this.onCountryChange(l)}this.originalAdditionalCurrenciesOptions.length>0&&(this.additionalCurrenciesOptions=this.originalAdditionalCurrenciesOptions.map(l=>l.id===t.primaryCurrency?J(G({},l),{disabled:!0}):l)),this.companyDialog=!0}hideCompanyDialog(){this.companyDialog=!1,this.companyForm.reset(),this.companyLogoUrl="",this.uploadedFiles=[],this.primaryContact=null,this.primaryContactMissing=!1}loadPrimaryContact(t){this.primaryContactLoading=!0,this.primaryContact=null,this.primaryContactMissing=!1,this.httpService.get(`Companies/${t}/primary-contact`).subscribe({next:e=>{this.primaryContact=e,this.primaryContactLoading=!1},error:e=>{this.primaryContactMissing=e?.status===404,this.primaryContactMissing||(console.error("Failed to load primary contact",e),this.messageService.add({severity:"error",summary:"Error",detail:"Failed to load primary employee information."})),this.primaryContactLoading=!1}})}getEmployeeStatusText(t){switch(t){case 0:return"Inactive";case 1:return"Active";case 2:return"Suspended";
1case 3:return"Deleted";case 4:return"Email Not Verified";case 5:return"Invited";case 6:return"Resigned";default:return"Unknown"}}getEmployeeStatusClass(t){switch(t){case 1:return"success";case 0:return"secondary";case 2:return"warn";case 3:return"danger";case 4:return"warn";case 5:return"info";case 6:return"secondary";default:return"secondary"}}copyToClipboard(t,e){t&&navigator.clipboard.writeText(t).then(()=>this.messageService.add({severity:"success",summary:"Copied",detail:`${e} copied to clipboard.`}),()=>this.messageService.add({severity:"error",summary:"Error",detail:`Could not copy ${e}.`}))}onSubmit(){if(this.companyForm.invalid){this.messageService.add({severity:"error",summary:"Error",detail:"Please fill all required fields."});return}let t=this.companyForm.value,e=new FormData;e.append("CompanyId",t.companyId),e.append("Name",t.name),e.append("CompanyCode",this.companyForm.getRawValue().companyCode??""),e.append("Status",t.status),e.append("Address1",t.address1),e.append("Address2",t.address2??""),e.append("PostalCode",t.postalCode),e.append("City",t.city),e.append("CountryId",t.countryId),e.append("StateId",t.stateId),e.append("Timezone",t.timezone),t.displayOrder!==null&&t.displayOrder!==void 0&&t.displayOrder!==""&&e.append("DisplayOrder",t.displayOrder.toString()),t.currencyId&&e.append("CurrencyId",t.currencyId),t.additionalCurrencies&&t.additionalCurrencies.length>0&&t.additionalCurrencies.forEach(a=>{e.append("AdditionalCurrencyIds",a)}),t.tax1Enabled&&t.tax1Name&&(e.append("Tax1Name",t.tax1Name),t.tax1Percentage!==null&&e.append("Tax1Percentage",t.tax1Percentage.toString())),t.tax2Enabled&&t.tax2Name&&(e.append("Tax2Name",t.tax2Name),t.tax2Percentage!==null&&e.append("Tax2Percentage",t.tax2Percentage.toString())),t.tax3Enabled&&t.tax3Name&&(e.append("Tax3Name",t.tax3Name),t.tax3Percentage!==null&&e.append("Tax3Percentage",t.tax3Percentage.toString())),t.logo instanceof File&&e.append("Logo",t.logo,t.logo.name),this.httpService.post("Companies/Update",e).subscribe({next:()=>{this.hideCompanyDialog(),this.fetchCompanies(),this.messageService.add({severity:"success",summary:"Success",detail:"Company Updated Successfully"});let a={tax1Name:t.tax1Name||null,tax1Percentage:t.tax1Percentage||null,tax2Name:t.tax2Name||null,tax2Percentage:t.tax2Percentage||null,tax3Name:t.tax3Name||null,tax3Percentage:t.tax3Percentage||null};localStorage.setItem("rc_taxes",JSON.stringify(a)),this.companyContext.notifyCompanyChanged()},error:a=>{this.messageService.add({severity:"error",summary:"Error",detail:"An error occurred while processing your request"})}})}onFileChange(t){let e=t.files[0];if(e){this.companyForm.patchValue({logo:e});let a=new FileReader;a.onload=()=>{this.companyLogoUrl=a.result},a.readAsDataURL(e)}}onLogoError(){this.companyLogoUrl=""}getStatusText(t){switch(t){case 1:return"Active";case 0:return"Inactive";case 2:return"Suspended";case 4:return"Under Review";case 5:return"Deleted";default:return"Unknown"}}getStatusClass(t){switch(t){case 1:return"success";case 0:return"secondary";case 2:return"warn";case 4:return"info";case 5:return"danger";default:return"light"}}getCompnayName(){return localStorage.getItem("rc_company")?JSON.parse(localStorage.getItem("rc_company")||"{}").name:""}getCompanyId(){return localStorage.getItem("rc_company")?JSON.parse(localStorage.getItem("rc_company")||"{}").id:null}getDialogHeader(){let t=this.companyForm.get("name")?.value||"",e=this.companyForm.get("companyCode")?.value||"";return t&&e?`Edit Company - ${t} (${e})`:t?`Edit Company - ${t}`:"Edit Company"}getSerialNumber(t){return t+1}switchToCompany(t){let e=JSON.parse(localStorage.getItem("rc_rememberMe")||"false");this.httpService.post(`Auth/switchcompany/${t.id}/${e}`,null).subscribe({next:a=>{if(this.auth.setSession(a.token,a.role,a.fullname,a.passwordSentOn,a.rememberMe,a.defaultTermsId,a.email,a.userId,a.expenseTypes,a.currencies,a.originalCompany,a.preferences,a.verifiedOn,a.imageUploadSize,a.isPrimary,a.primaryCurrency,a.primaryCurrencyCode,a.primaryCurrencySymbol,a.taxes,a.company),localStorage.removeItem("client_token"),localStorage.removeItem("client_profile"),a.clientAuth?.token&&(localStorage.setItem("client_token",a.clientAuth.token),a.clientAuth.profile&&localStorage.setItem("client_profile",JSON.stringify(a.clientAuth.profile))),this.messageService.add({severity:"success",summary:"Switched Company",detail
1:`Now working under company "${t.name}".`}),this.companyContext.notifyCompanyChanged(),a.enabledModules&&a.requiresModuleSelection)this.moduleService.setModulesData(a.enabledModules,a.requiresModuleSelection,a.selectedModuleId),this.moduleService.setRecentModuleIds(a.recentModuleIds||[]),this.router.navigateByUrl("/module-selection");else{this.moduleService.clearModuleData(),this.moduleService.setModulesData(a.enabledModules,a.requiresModuleSelection,a.selectedModuleId),this.moduleService.setRecentModuleIds(a.recentModuleIds||[]);var l=a.selectedModuleId?a.enabledModules?.find(d=>d.id===a.selectedModuleId):a.enabledModules?.filter(d=>d.isEnabled)[0];this.router.navigateByUrl(l?.url.toLocaleLowerCase()??"/expenses/manage-expense")}},error:()=>{this.messageService.add({severity:"error",summary:"Switch Failed",detail:`Could not switch to company "${t.name}".`})}})}changeCompanyStatus(t,e){let a=e?"suspend":"activate",l=e?"Suspended":"Active";this.confirmationService.confirm({message:`Are you sure you want to ${a} the company "${t.name}"?`,header:"Confirm Status Change",icon:"pi pi-exclamation-triangle",accept:()=>{this.apiService.changeCompanyStatus(t.id,e).subscribe({next:()=>{this.messageService.add({severity:"success",summary:"Success",detail:`Company status changed to ${l} successfully.`}),this.fetchCompanies()},error:d=>{this.messageService.add({severity:"error",summary:"Error",detail:"Failed to change company status."})}})}})}billingModuleSetup(){this.companyId&&this.router.navigate(["/admin/companies",this.companyId,"billing-setup"])}crmModuleSetup(){if(!this.companyId)return;if(this.companies.find(e=>e.id===this.companyId)?.crmResellerId){this.messageService.add({severity:"info",summary:"CRM Already Setup",detail:"This company is already configured for CRM. To edit, please access the CRM portal directly."});return}this.router.navigate(["/admin/companies",this.companyId,"crm-setup"])}donationModuleSetup(){this.companyId&&this.router.navigate(["/admin/companies",this.companyId,"donation-setup"])}showExpenseSetupDialog=!1;expenseModuleSetup(){this.companyId&&(this.showExpenseSetupDialog=!0)}static \u0275fac=function(e){return new(e||i)(w(dt),w(Je),w(st),w(N),w(ct),w(He),w(ut),w(Ye),w(W),w(pt),w(kt))};static \u0275cmp=D({type:i,selectors:[["companies"]],viewQuery:function(e,a){if(e&1&&Re(qi,5),e&2){let l;We(l=Ue())&&(a.dt=l.first)}},features:[je([N])],decls:22,vars:22,consts:[["dt",""],["caption",""],["header",""],["body",""],["emptymessage",""],["content",""],["noAddr",""],["empty",""],["pendingInvite",""],[1,"card","p-4"],[1,"font-semibold","text-xl","mb-4","flex","justify-between","items-center"],["icon","pi pi-sliders-h",3,"onClick","rounded","outlined"],["class","mb-4",4,"ngIf"],["currentPageReportTemplate","Showing {first} to {last} of {totalRecords} companies",3,"onLazyLoad","value","paginator","rows","totalRecords","lazy","loading","rowsPerPageOptions","sortField","sortOrder","showCurrentPageReport"],[3,"visibleChange","visible","header","modal"],[3,"visibleChange","visible","companyId"],[1,"mb-4"],[1,"grid","grid-cols-12","gap-4"],[1,"col-span-12","md:col-span-3"],["placeholder","From Date",1,"w-100",3,"ngModelChange","ngModel"],["placeholder","To Date",1,"w-100",3,"ngModelChange","ngModel"],["optionLabel","name","optionValue","id","placeholder","Select Industry",1,"w-100",3,"ngModelChange","options","ngModel"],["optionLabel","label","optionValue","value","placeholder","Select Verification Status",1,"w-100",3,"ngModelChange","options","ngModel"],["optionLabel","name","optionValue","id","placeholder","Filter by Module","display","chip","selectedItemsLabel","{0} modules selected",1,"w-100",3,"ngModelChange","options","ngModel","appendTo","maxSelectedLabels"],["optionLabel","name","optionValue","id","placeholder","Filter by Country","display","chip","selectedItemsLabel","{0} countries selected",1,"w-100",3,"ngModelChange","options","ngModel","appendTo","maxSelectedLabels"],["optionLabel","label","optionValue","value","placeholder","Select Setup Status",1,"w-100",3,"ngModelChange","options","ngModel"],["iconPosition","left"],[1,"pi","pi-envelope"],["pInputText","","type","text","placeholder","Employee email","pTooltip","Show only the companies this employee belongs to","tooltipPosition","top",1,"w-100",3,"ngModelChange","keydown.enter","ngModel"],[1,"col-span-12","md:col-span-3","flex","items-center"],["inputId","showDeleted","binary","true",3,"ngModelChange","ngModel"],["for","showDeleted",1,"ml-2"],[1,"flex","gap-2","mt-4"],["label","Apply",3,"onClick"],["label","Reset","severity","secondary","outlined","true",3,"onClick"],[1,"flex","justify-between","items-center","flex-column","sm:flex-row"],["label","Clear","icon","pi pi-filter-slash","severity","success",3,"outlined","onClick",4,"ngIf"],["iconPosition","left",1,"ml-auto"],[1,"pi","pi-search"],["pInputText","","type","text","placeholder","Search company...",3,"ngModelChange","input","ngModel"],["label","Clear","icon","pi pi-filter-slash","severity","success",3,"onClick","outlined"],[2,"width","50px"],[2,"width","64px"],["pSortableColumn","name","defaultSortOrder","1",2,"width","260px"],["field","name"],[2,"width","80px"],[2,"width","140px"],[2,"width","260px"],["pSortableColumn","createdAt"],["field","createdAt"],[1,"text-center","w-32"],["alt","logo",1,"rounded","shadow-sm","cursor-pointer","h-10","object-cover",3,"src"],[1,"fw-bold","text-dark"],[1,"flex","gap-1","mt-1","flex-wrap"],["severity","info","styleClass","text-xs py-0 px-2",3,"value"],["severity","success","styleClass","text-xs py-0 px-2",3,"value"],["severity","secondary","styleClass","text-xs py-0 px-2",3,"value"],[1,"text-center","w-12"],[1,"flex","gap-1","flex-wrap"],[3,"value","severity"],["pTooltip","Company email verification status","tooltipPosition","top",3,"value","severity"],["value","No Module","severity","warn","icon","pi pi-exclamation-triangle","pTooltip","This company has not activated any module yet","tooltipPosition","top"],["class","text-muted",4,"ngIf","ngIfElse"],["icon","pi pi-pencil","styleClass","p-button-rounded p-button-text p-button-info","pTooltip","Edit","tooltipPosition","top",3,"onClick"],["icon","pi pi-sign-in","styleClass","p-button-rounded p-button-text p-button-info","pTooltip","Switch Company","tooltipPosition","top",3,"onClick"],["icon","pi pi-ban","styleClass","p-button-rounded p-button-text p-button-danger","pTooltip","Suspend Company","tooltipPosition","top"],["icon","pi pi-check","styleClass","p-button-rounded p-button-text p-button-success","pTooltip","Activate Company","tooltipPosition","top"],[1,"text-muted"],[4,"ngIf"],[1,"text-muted","fst-italic"],["
1icon","pi pi-ban","styleClass","p-button-rounded p-button-text p-button-danger","pTooltip","Suspend Company","tooltipPosition","top",3,"onClick"],["icon","pi pi-check","styleClass","p-button-rounded p-button-text p-button-success","pTooltip","Activate Company","tooltipPosition","top",3,"onClick"],["colspan","8",1,"text-center"],[1,"min-h-[600px]",3,"ngSubmit","formGroup"],["value","0"],["value","1"],["value","2"],["value","3"],["value","0","header","Company Information"],[1,"text-center","mb-3"],[1,"inline-block","w-24","h-24","border-2","border-gray-300","rounded-lg","overflow-hidden","bg-gray-50","flex","items-center","justify-center","shadow-sm"],["alt","Company Logo","class","w-full h-full object-contain",3,"src","error",4,"ngIf"],["class","flex flex-col items-center justify-center text-gray-400",4,"ngIf"],[1,"text-center"],["name","logo","mode","basic","accept","image/*","maxFileSize","1000000","chooseLabel","Choose New Logo",3,"onSelect","auto","multiple"],[1,"text-gray-500","mt-1","block"],[1,"grid","grid-cols-12","gap-4","mb-3"],[1,"col-span-6"],[1,"block","font-bold","mb-2"],["pInputText","","type","text","formControlName","name",1,"w-full"],["class","text-red-500",4,"ngIf"],["pInputText","","type","text","formControlName","companyCode","readonly","",1,"w-full"],[1,"text-surface-500"],["optionLabel","label","optionValue","value","placeholder","Select Status","formControlName","status","styleClass","w-full",3,"options","appendTo"],["pInputText","","type","number","formControlName","displayOrder","placeholder","Leave blank for default order",1,"w-full"],["pInputText","","type","text","formControlName","address1",1,"w-full"],["pInputText","","type","text","formControlName","address2",1,"w-full"],[1,"col-span-3"],["pInputText","","type","text","formControlName","city",1,"w-full"],["pInputText","","type","text","formControlName","postalCode",1,"w-full"],["optionLabel","name","optionValue","id","formControlName","countryId","styleClass","w-full mb-4",3,"onChange","options","appendTo"],["optionLabel","name","optionValue","id","formControlName","stateId","styleClass","w-full mb-4",3,"options","appendTo"],[1,"mb-3"],["optionLabel","label","optionValue","value","placeholder","Select Timezone","formControlName","timezone","styleClass","w-full","filter","true",3,"options","appendTo"],["value","1","header","Financial Settings"],[1,"font-bold","mb-3"],[1,"grid","grid-cols-12","gap-4","items-end"],[1,"col-span-2"],["formControlName","tax1Enabled","binary","true","inputId","tax1Enabled"],["for","tax1Enabled",1,"ml-2","font-medium"],[1,"col-span-5"],["for","tax1Name",1,"block","text-sm","font-medium","mb-1"],["id","tax1Name","type","text","formControlName","tax1Name","placeholder","Tax 1 Name",1,"w-full","p-inputtext",3,"disabled"],["class","text-red-500 block",4,"ngIf"],["for","tax1Percentage",1,"block","text-sm","font-medium","mb-1"],["id","tax1Percentage","type","number","formControlName","tax1Percentage","placeholder","0.00","min","0","max","100","step","0.01",1,"w-full","p-inputtext",3,"disabled"],["formControlName","tax2Enabled","binary","true","inputId","tax2Enabled"],["for","tax2Enabled",1,"ml-2","font-medium"],["for","tax2Name",1,"block","text-sm","font-medium","mb-1"],["id","tax2Name","type","text","formControlName","tax2Name","placeholder","Tax 2 Name",1,"w-full","p-inputtext",3,"disabled"],["for","tax2Percentage",1,"block","text-sm","font-medium","mb-1"],["id","tax2Percentage","type","number","formControlName","tax2Percentage","placeholder","0.00","min","0","max","100","step","0.01",1,"w-full","p-inputtext",3,"disabled"],["formControlName","tax3Enabled","binary","true","inputId","tax3Enabled"],["for","tax3Enabled",1,"ml-2","font-medium"],["for","tax3Name",1,"block","text-sm","font-medium","mb-1"],["id","tax3Name","type","text","formControlName","tax3Name","placeholder","Tax 3 Name",1,"w-full","p-inputtext",3,"disabled"],["for","tax3Percentage",1,"block","text-sm","font-medium","mb-1"],["id","tax3Percentage","type","number","formControlName","tax3Percentage","placeholder","0.00","min","0","max","100","step","0.01",1,"w-full","p-inputtext",3,"disabled"],[1,"mb-3","mt-6"],[1,"flex","flex-wrap","gap-4"],["class","flex items-center",4,"ngFor","ngForOf"],["label","Add/Remove Currencies",3,"onClick"],["optionLabel","displayName","optionValue","id","formControlName","additionalCurrencies","styleClass","w-full mt-2",3,"options","optionDisabled","appendTo",4,"ngIf"],["value","2","header","Modules"],[1,"flex","gap-4",2,"min-height","420px"],[1,"flex","flex-col","items-center","justify-center","text-center","gap-2","py-8"],[1,"flex","rounded-lg","border","border-surface-200","dark:border-surface-700","overflow-hidden",2,"min-height","420px"],["value","3","header","Primary Contact"],[1,"flex","flex-col","gap-3",2,"min-height","420px"],[1,"flex","flex-col","items-center","justify-center","text-center","gap-2","py-8",2,"min-height","420px"],[2,"min-height","420px"],[1,"px-6","py-4"],[1,"flex","justify-end","gap-2"],["label","Cancel","icon","pi pi-times",1,"p-button-warning",3,"click"],["label","Update","icon","pi pi-check","type","submit",1,"p-button-primary",3,"click","disabled"],["alt","Company Logo",1,"w-full","h-full","object-contain",3,"error","src"],[1,"flex","flex-col","items-center","justify-center","text-gray-400"],[1,"pi","pi-building","text-2xl"],[1,"text-sm","text-gray-600"],[1,"text-red-500"],[1,"text-red-500","block"],[1,"flex","items-center"],["name","currency","formControlName","currencyId",3,"value","inputId"],[1,"ml-2","cursor-pointer",3,"for"],["optionLabel","displayName","optionValue","id","formControlName","additionalCurrencies","styleClass","w-full mt-2",3,"options","optionDisabled","appendTo"],[1,"flex","flex-col","gap-2","shrink-0",2,"width","240px"],["height","2.75rem","borderRadius","8px",4,"ngFor","ngForOf"],[1,"flex-1","flex","flex-col","gap-3"],["height","3.5rem","width","60%","borderRadius","8px"],["height","1.25rem","width","80%"],["height","4.5rem","borderRadius","8px"],["height","2.75rem","borderRadius","8px"],[1,"pi","pi-box","text-3xl","text-muted-color"],[1,"m-0","text-muted-color"],[1,"module-list","overflow-y-auto","shrink-0","border-r","border-surface-200","dark:border-surface-700","bg-surface-50","dark:bg-surface-800",2,"width","240px","max-height","520px"],["type","button",1,"module-list-item",3,"active"],[1,"flex-1","min-w-0","overflow-y-auto","p-5",2,"max-height","520px"],["type","button",1,"module-list-item",3,"click"],[1,"truncate","flex-1","text-left"],["tooltipPosition","left",1,"module-status-dot",3,"pTooltip"],[1,"flex","items-center","gap-3"],[1,"flex","items-center","justify-center","rounded-lg","bg-primary-100","dark:bg-primary-900","shrink-0",2,"width","3rem","height","3rem"],[1,"flex","items-center","gap-2","min-w-0"],[1,"m-0","font-bold","truncate"],[1,"text-muted-color","mt-3","mb-4"],[1,"flex","items-center","justify-between","gap-3","p-3","rounded-lg","border","border-surface-200","dark:border-surface-700","mb-3"],[1,"font-medium"],[1,"text-sm","text-muted-color"],[3,"onChange","formControl"],[1,"flex","items-center","gap-2","p-3","rounded-lg","border","border-dashed","border-surface-200","dark:border-surface-700","text-sm","text-muted-color","mb-3"],[1,"flex","items-center","justify-between","gap-3","p-3","rounded-lg","border","border-surface-200","dark:border-surface-700"],[3,"companyId","module"],[1,"pi","pi-lock"],["label","Setup","icon","pi pi-cog","severity","info",3,"outlined"],["label","Setup","icon","pi pi-cog","severity","info",3,"onClick","outlined"],["height","1.25rem","width","60%"],["height","3.5rem","borderRadius","8px"],[1,"pi","pi-user-minus","text-3xl","text-muted-color"],[1,"text-muted-color"],[1,"flex","items-center","gap-3","mb-4"],[1,"flex","items-center","justify-center","rounded-full","bg-primary-100","dark:bg-primary-900","shrink-0",2,"width","3.25rem","height","3.25rem"],[1,"pi","pi-user","text-primary","text-xl"],[1,"min-w-0"],["severity","info",3,"value"],["value","Primary","severity","success","icon","pi pi-star-fill"],[1,"flex","items-start","gap-2","p-3","mb-4","rounded-lg","border","border-dashed","border-surface-200","dark:border-surface-700","text-sm","text-muted-color"],[1,"flex","items-start","gap-2","p-3","mb-4","rounded-lg","border","border-orange-200","dark:border-orange-800","bg-orange-50","dark:bg-orange-950","text-sm"],[1,"col-span-12","md:col-span-6"],[1,"flex","items-center","gap-2"],["class","truncate",3,"href",4,"ngIf"],["class","text-muted-color fst-italic",4,"ngIf"],["icon","pi pi-copy","
1severity","secondary","pTooltip","Copy email","tooltipPosition","top",3,"rounded","text","onClick",4,"ngIf"],["icon","pi pi-copy","severity","secondary","pTooltip","Copy phone number","tooltipPosition","top",3,"rounded","text","onClick",4,"ngIf"],["class","col-span-12 md:col-span-6",4,"ngIf"],[1,"pi","pi-info-circle","mt-1"],[1,"pi","pi-exclamation-triangle","mt-1","text-orange-500"],[1,"truncate",3,"href"],[1,"text-muted-color","fst-italic"],["icon","pi pi-copy","severity","secondary","pTooltip","Copy email","tooltipPosition","top",3,"onClick","rounded","text"],["icon","pi pi-copy","severity","secondary","pTooltip","Copy phone number","tooltipPosition","top",3,"onClick","rounded","text"],[4,"ngIf","ngIfElse"]],template:function(e,a){if(e&1){let l=h();o(0,"div",9)(1,"div",10)(2,"h3"),s(3,"Company Directory"),n(),o(4,"p-button",11),C("onClick",function(){return u(l),_(a.toggleFilters())}),n()(),f(5,Gi,28,18,"div",12),o(6,"p-table",13,0),C("onLazyLoad",function(M){return u(l),_(a.onPageChange(M))}),f(8,Hi,6,2,"ng-template",null,1,k)(10,Yi,19,0,"ng-template",null,2,k)(12,ln,30,21,"ng-template",null,3,k)(14,rn,3,0,"ng-template",null,4,k),n()(),o(16,"p-dialog",14),E("visibleChange",function(M){return u(l),S(a.companyDialog,M)||(a.companyDialog=M),_(M)}),f(17,xo,162,39,"ng-template",null,5,k),n(),o(19,"app-expense-setup-dialog",15),E("visibleChange",function(M){return u(l),S(a.showExpenseSetupDialog,M)||(a.showExpenseSetupDialog=M),_(M)}),n(),c(20,"p-confirmDialog")(21,"p-toast")}e&2&&(r(4),m("rounded",!0)("outlined",!0),r(),m("ngIf",a.showFilters),r(),m("value",a.companies)("paginator",!0)("rows",a.pageSize)("totalRecords",a.totalRecords)("lazy",!0)("loading",a.loading)("rowsPerPageOptions",V(20,ji))("sortField",a.initialSortField)("sortOrder",a.initialSortOrder)("showCurrentPageReport",!0),r(10),ae(V(21,zi)),b("visible",a.companyDialog),m("header",a.getDialogHeader())("modal",!0),r(3),b("visible",a.showExpenseSetupDialog),m("companyId",a.companyId))},dependencies:[mt,se,$e,et,pe,tt,L,Xe,lt,at,O,it,nt,ot,A,Jt,Kt,$t,Gt,R,B,ht,yt,bt,vt,ue,ce,Vt,ye,xe,ve,he,zt,jt,Mt,wt,It,Tt,xt,Ct,gt,_t,ge,_e,qt,Ut,Et,St,Wt,Rt,Bt,At,Lt,Ot,ft,Ht,Dt,Nt,q,U,be,Se,me],styles:[".table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%], .table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{vertical-align:middle}h2[_ngcontent-%COMP%]{font-size:2rem;letter-spacing:1px}input.form-control[_ngcontent-%COMP%]{border-radius:5px;padding:10px 20px}.table-hover[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:hover{background-color:#f8f9fa;transition:.3s ease}.badge[_ngcontent-%COMP%]{font-size:.9rem;border-radius:8px}.btn-sm[_ngcontent-%COMP%]{border-radius:6px;padding:5px 8px}.module-list-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.625rem;width:100%;padding:.7rem 1rem;background:transparent;border:0;border-left:3px solid transparent;cursor:pointer;font:inherit;color:var(--p-text-color);transition:background-color .15s ease,color .15s ease}.module-list-item[_ngcontent-%COMP%]:hover{background:var(--p-content-hover-background)}.module-list-item.active[_ngcontent-%COMP%]{background:var(--p-content-hover-background);border-left-color:var(--p-primary-color);color:var(--p-primary-color);font-weight:600}.module-status-dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:50%;background:var(--p-surface-400);flex-shrink:0}.module-status-dot.enabled[_ngcontent-%COMP%]{background:var(--p-green-500)}"]})};export{ni as CompaniesComponent};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.