@openmrs/esm-billing-app 1.3.2-pre.2111 → 1.3.2-pre.2113

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.
@@ -0,0 +1 @@
1
+ {"hash":"aa0c82696bb888ef","duration":10622}
@@ -4,4 +4,4 @@
4
4
  │ 5215.js (611.021 KiB)
5
5
  
6
6
 
7
- Rspack compiled with 1 warning in 13.26 s
7
+ Rspack compiled with 1 warning in 9.64 s
package/dist/1026.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["1026"],{5657(e,t,i){i.r(t),i.d(t,{default:()=>f});var n=i(5275),a=i.n(n),l=i(8395),r=i(6335),s=i.n(r),o=i(1752),c=i(3137),u=i(7003),m=i(4476),d=i(3285),g=i(9785),p=i(1362);let b={sectionContainer:"-esm-billing__visit-attributes-form__sectionContainer___aj98I",sectionTitle:"-esm-billing__visit-attributes-form__sectionTitle___kol0c",visitAttributesContainer:"-esm-billing__visit-attributes-form__visitAttributesContainer___ArSYD",radioButtonGroup:"-esm-billing__visit-attributes-form__radioButtonGroup___mSIc2",stack:"-esm-billing__visit-attributes-form__stack___HU1se",paymentDetailsLegend:"-esm-billing__visit-attributes-form__paymentDetailsLegend___uTIXR"},y=m.z.object({paymentDetails:m.z.string(),paymentMethods:m.z.string(),insuranceSchema:m.z.string(),policyNumber:m.z.string(),patientCategory:m.z.string()}),_=({setAttributes:e,setPaymentMethod:t})=>{let{t:i}=(0,l.useTranslation)(),{patientCategory:r,categoryConcepts:m,nonPayingPatientCategories:_}=(0,c.useConfig)(),{control:h,getValues:v,watch:f}=(0,g.mN)({mode:"all",defaultValues:{},resolver:(0,d.u)(y)}),[C,E,S,T,D]=f(["paymentDetails","paymentMethods","insuranceScheme","policyNumber","patientCategory"]),{paymentModes:B,isLoading:I}=(()=>{let e=`${u.B}paymentMode`,{data:t,isLoading:i,error:n}=s()(e,c.openmrsFetch);return{isLoading:i,error:n,paymentModes:t?.data?.results??[]}})(),P=(0,n.useMemo)(()=>Object.entries(_??{}).map(([e,t])=>({text:i(e),uuid:t})),[_,i]),k=(0,n.useCallback)(()=>{let{paymentDetails:e,paymentMethods:i,insuranceScheme:n,policyNumber:a,patientCategory:l}=v();return t?.(i),Object.entries([{uuid:r.paymentDetails,value:e},{uuid:r.paymentMethods,value:i},{uuid:r.insuranceScheme,value:n},{uuid:r.policyNumber,value:a},{uuid:r.patientCategory,value:l}].filter(e=>void 0!==e.value&&null!==e.value&&""!==e.value)).map(([e,t])=>({attributeType:t.uuid,value:t.value}))},[v,r.insuranceScheme,r.patientCategory,r.paymentDetails,r.paymentMethods,r.policyNumber,t]);return((0,n.useEffect)(()=>{e(k())},[C,E,S,T,D,e,k]),I)?a().createElement(o.InlineLoading,{status:"active",iconDescription:i("loadingDescription","Loading"),description:i("loading","Loading data")+"..."}):a().createElement(o.Stack,{className:b.stack,gap:5},a().createElement(g.xI,{name:"paymentDetails",control:h,render:({field:e})=>a().createElement(o.RadioButtonGroup,{className:b.radioButtonGroup,legendText:a().createElement("div",{className:b.paymentDetailsLegend},i("paymentDetails","Payment details"),a().createElement(o.Toggletip,{autoAlign:!0,align:"bottom"},a().createElement(o.ToggletipButton,{label:i("showInformation","Show information")},a().createElement(p.$$,null)),a().createElement(o.ToggletipContent,null,a().createElement("p",null,i("nonPayingInfo","Any services rendered to non-paying patients will not be billed"))))),name:"payment-details",onChange:t=>e.onChange(t),orientation:"vertical"},a().createElement(o.RadioButton,{labelText:i("paying","Paying"),value:m.payingDetails,id:"payment-details-paying"}),a().createElement(o.RadioButton,{labelText:i("nonPaying","Non paying"),value:m.nonPayingDetails,id:"payment-details-non-paying"}))}),C===m.payingDetails&&a().createElement(g.xI,{control:h,name:"paymentMethods",render:({field:e})=>a().createElement(o.ComboBox,{id:"paymentMethods",items:B,itemToString:e=>e?e.name:"",onChange:({selectedItem:t})=>e.onChange(t?.uuid),placeholder:i("selectPaymentMethod","Select payment method"),titleText:i("paymentMethod","Payment method")})}),E===m.insuranceDetails&&C===m.payingDetails&&a().createElement(a().Fragment,null,a().createElement(g.xI,{control:h,name:"insuranceScheme",render:({field:e})=>a().createElement(o.TextInput,{id:"insurance-scheme",labelText:i("insuranceScheme","Insurance scheme"),onChange:t=>e.onChange(t.target.value),type:"text"})}),a().createElement(g.xI,{control:h,name:"policyNumber",render:({field:e})=>a().createElement(o.TextInput,{...e,id:"policy-number",labelText:i("policyNumber","Policy number"),onChange:t=>e.onChange(t.target.value),type:"text"})})),C===m.nonPayingDetails&&a().createElement(g.xI,{control:h,name:"patientCategory",render:({field:e})=>a().createElement(o.ComboBox,{className:b.sectionField,onChange:({selectedItem:t})=>e.onChange(t?.uuid),id:"patientCategory",items:P,itemToString:e=>e?e.text:"",titleText:i("patientCategory","Patient category"),placeholder:i("selectPatientCategory","Select patient category")})}))};var h=i(5084),v=i(6199);let f=a().memo(({patientUuid:e,setExtraVisitInfo:t})=>{let{t:i}=(0,l.useTranslation)(),{mutate:m}=(0,r.useSWRConfig)(),{categoryConcepts:d}=(0,c.useConfig)(),{lastVisitInfo:g,isLoading:p,error:b}=(e=>{let t=`${c.restBaseUrl}/visit?patient=${e}&v=default&limit=1&sort=desc:startDatetime`,{data:i,isLoading:a,error:l}=s()(e?t:null,c.openmrsFetch);return{lastVisitInfo:(0,n.useMemo)(()=>{let e=i?.data?.results;if(!e?.length)return null;let t=e[0],n=new Date(t.startDatetime);return isNaN(n.getTime())?null:{diffDays:Math.floor(Math.abs(Date.now()-n.getTime())/864e5),type:t.visitType?.display??"",location:t.location?.display??""}},[i]),isLoading:a,error:l}})(e);(0,n.useEffect)(()=>{b&&(0,c.showSnackbar)({title:i("lastVisitError","Last visit error"),subtitle:i("errorLoadingLastVisit","An error occurred while loading the last visit"),kind:"error"})},[b,i]);let{cashPoints:y,isLoading:f,error:C}=(()=>{let e=`${u.B}cashPoint`,{data:t,isLoading:i,error:n}=s()(e,c.openmrsFetch);return{isLoading:i,error:n,cashPoints:t?.data?.results??[]}})(),{lineItems:E,isLoading:S,error:T}=(()=>{let e=`${u.B}billableService?v=custom:(uuid,name,shortName,serviceStatus,serviceType:(display),servicePrices:(uuid,name,price,paymentMode))`,{data:t,isLoading:i,error:n}=s()(e,c.openmrsFetch);return{lineItems:t?.data?.results??[],isLoading:i,error:n}})(),[D,B]=(0,n.useState)([]),[I,P]=(0,n.useState)(null),[k,N]=(0,n.useState)(null),x=(0,n.useRef)(D);(0,n.useEffect)(()=>{x.current=D},[D]);let M=(0,n.useMemo)(()=>!!d?.nonPayingDetails&&!!D?.length&&D.some(e=>e.value===d.nonPayingDetails),[D,d]),L=(0,n.useMemo)(()=>!M&&I&&E?.length?E.filter(e=>e.servicePrices.some(e=>e.paymentMode?.uuid===I)):[],[E,I,M]);(0,n.useEffect)(()=>{t({createBillPayload:null,handleCreateExtraVisitInfo:null,attributes:x.current}),N(null)},[I,M,t]);let w=(0,n.useCallback)(async t=>{try{let n;await (n=`${u.B}bill`,(0,c.openmrsFetch)(n,{method:"POST",headers:{"Content-Type":"application/json"},body:t})),m((0,v.Z5)(e)),(0,c.showSnackbar)({title:i("patientBill","Patient bill"),subtitle:i("billCreatedSuccessfully","Bill created successfully"),kind:"success"})}catch(e){(0,c.showSnackbar)({title:i("billCreationError","Bill creation error"),subtitle:i("errorCreatingBill","An error occurred while creating the bill"),kind:"error"})}},[m,i,e]),$=(0,n.useCallback)(({selectedItem:i})=>{N(i);let n=y?.[0]?.uuid??"",a=i?.uuid??"",l=i.servicePrices.find(e=>e.paymentMode?.uuid===I)||i?.servicePrices[0],r={lineItems:[{billableService:a,quantity:1,price:l?l.price:"0.000",priceName:"Default",priceUuid:l?l.uuid:"",lineItemOrder:0,status:h.zk.PENDING}],cashPoint:n,patient:e,status:h.ih.PENDING,payments:[]};t({createBillPayload:r,handleCreateExtraVisitInfo:()=>w(r),attributes:D})},[D,y,w,I,e,t]);return S||f?a().createElement(o.InlineLoading,{status:"active",iconDescription:(0,c.getCoreTranslation)("loading"),description:`${i("loadingBillingServices","Loading billing services")}...`}):C||T?a().createElement(o.InlineNotification,{kind:"error",lowContrast:!0,title:i("billErrorService","Billing service error"),subtitle:i("errorLoadingBillServices","Error loading bill services")}):a().createElement("section",{className:"-esm-billing__billing-checkin-form__sectionContainer___TLb4u"},a().createElement("h1",{className:"-esm-billing__billing-checkin-form__sectionLabel___1H1hH"},i("billingDetails","Billing details")),a().createElement("div",{className:"-esm-billing__billing-checkin-form__sectionField___AUKom"},!p&&!b&&g&&a().createElement("div",{className:"-esm-billing__billing-checkin-form__lastVisitBanner___Bh8FX"},a().createElement(o.InlineNotification,{hideCloseButton:!0,kind:"info",title:i("lastVisitInfo","Last Visit Information"),subtitle:i("lastVisitMsg","The last visit was a {{type}} {{count}} days ago at {{location}}",{count:g.diffDays,type:g.type,location:g.location}),lowContrast:!0})),a().createElement(_,{setAttributes:B,setPaymentMethod:P}),L.length>0&&a().createElement(o.Dropdown,{key:`billable-${I}`,id:"billable-items",items:L,itemToString:e=>{let t;return e?`${e.name} ${(t=e.servicePrices.find(e=>e.paymentMode?.uuid===I))?`(${t.name}: ${t.price})`:""}`:""},label:i("selectBillableService","Select a billable service"),onChange:$,selectedItem:k,titleText:i("billableService","Billable service")})))})}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["1026"],{5657(e,t,i){i.r(t),i.d(t,{default:()=>f});var n=i(5275),a=i.n(n),l=i(8395),r=i(6335),s=i.n(r),o=i(1752),c=i(9124),u=i(7003),m=i(4476),d=i(3285),g=i(9785),p=i(1362);let b={sectionContainer:"-esm-billing__visit-attributes-form__sectionContainer___aj98I",sectionTitle:"-esm-billing__visit-attributes-form__sectionTitle___kol0c",visitAttributesContainer:"-esm-billing__visit-attributes-form__visitAttributesContainer___ArSYD",radioButtonGroup:"-esm-billing__visit-attributes-form__radioButtonGroup___mSIc2",stack:"-esm-billing__visit-attributes-form__stack___HU1se",paymentDetailsLegend:"-esm-billing__visit-attributes-form__paymentDetailsLegend___uTIXR"},y=m.z.object({paymentDetails:m.z.string(),paymentMethods:m.z.string(),insuranceSchema:m.z.string(),policyNumber:m.z.string(),patientCategory:m.z.string()}),_=({setAttributes:e,setPaymentMethod:t})=>{let{t:i}=(0,l.useTranslation)(),{patientCategory:r,categoryConcepts:m,nonPayingPatientCategories:_}=(0,c.useConfig)(),{control:h,getValues:v,watch:f}=(0,g.mN)({mode:"all",defaultValues:{},resolver:(0,d.u)(y)}),[C,E,S,T,D]=f(["paymentDetails","paymentMethods","insuranceScheme","policyNumber","patientCategory"]),{paymentModes:B,isLoading:I}=(()=>{let e=`${u.B}paymentMode`,{data:t,isLoading:i,error:n}=s()(e,c.openmrsFetch);return{isLoading:i,error:n,paymentModes:t?.data?.results??[]}})(),P=(0,n.useMemo)(()=>Object.entries(_??{}).map(([e,t])=>({text:i(e),uuid:t})),[_,i]),k=(0,n.useCallback)(()=>{let{paymentDetails:e,paymentMethods:i,insuranceScheme:n,policyNumber:a,patientCategory:l}=v();return t?.(i),Object.entries([{uuid:r.paymentDetails,value:e},{uuid:r.paymentMethods,value:i},{uuid:r.insuranceScheme,value:n},{uuid:r.policyNumber,value:a},{uuid:r.patientCategory,value:l}].filter(e=>void 0!==e.value&&null!==e.value&&""!==e.value)).map(([e,t])=>({attributeType:t.uuid,value:t.value}))},[v,r.insuranceScheme,r.patientCategory,r.paymentDetails,r.paymentMethods,r.policyNumber,t]);return((0,n.useEffect)(()=>{e(k())},[C,E,S,T,D,e,k]),I)?a().createElement(o.InlineLoading,{status:"active",iconDescription:i("loadingDescription","Loading"),description:i("loading","Loading data")+"..."}):a().createElement(o.Stack,{className:b.stack,gap:5},a().createElement(g.xI,{name:"paymentDetails",control:h,render:({field:e})=>a().createElement(o.RadioButtonGroup,{className:b.radioButtonGroup,legendText:a().createElement("div",{className:b.paymentDetailsLegend},i("paymentDetails","Payment details"),a().createElement(o.Toggletip,{autoAlign:!0,align:"bottom"},a().createElement(o.ToggletipButton,{label:i("showInformation","Show information")},a().createElement(p.$$,null)),a().createElement(o.ToggletipContent,null,a().createElement("p",null,i("nonPayingInfo","Any services rendered to non-paying patients will not be billed"))))),name:"payment-details",onChange:t=>e.onChange(t),orientation:"vertical"},a().createElement(o.RadioButton,{labelText:i("paying","Paying"),value:m.payingDetails,id:"payment-details-paying"}),a().createElement(o.RadioButton,{labelText:i("nonPaying","Non paying"),value:m.nonPayingDetails,id:"payment-details-non-paying"}))}),C===m.payingDetails&&a().createElement(g.xI,{control:h,name:"paymentMethods",render:({field:e})=>a().createElement(o.ComboBox,{id:"paymentMethods",items:B,itemToString:e=>e?e.name:"",onChange:({selectedItem:t})=>e.onChange(t?.uuid),placeholder:i("selectPaymentMethod","Select payment method"),titleText:i("paymentMethod","Payment method")})}),E===m.insuranceDetails&&C===m.payingDetails&&a().createElement(a().Fragment,null,a().createElement(g.xI,{control:h,name:"insuranceScheme",render:({field:e})=>a().createElement(o.TextInput,{id:"insurance-scheme",labelText:i("insuranceScheme","Insurance scheme"),onChange:t=>e.onChange(t.target.value),type:"text"})}),a().createElement(g.xI,{control:h,name:"policyNumber",render:({field:e})=>a().createElement(o.TextInput,{...e,id:"policy-number",labelText:i("policyNumber","Policy number"),onChange:t=>e.onChange(t.target.value),type:"text"})})),C===m.nonPayingDetails&&a().createElement(g.xI,{control:h,name:"patientCategory",render:({field:e})=>a().createElement(o.ComboBox,{className:b.sectionField,onChange:({selectedItem:t})=>e.onChange(t?.uuid),id:"patientCategory",items:P,itemToString:e=>e?e.text:"",titleText:i("patientCategory","Patient category"),placeholder:i("selectPatientCategory","Select patient category")})}))};var h=i(5084),v=i(6199);let f=a().memo(({patientUuid:e,setExtraVisitInfo:t})=>{let{t:i}=(0,l.useTranslation)(),{mutate:m}=(0,r.useSWRConfig)(),{categoryConcepts:d}=(0,c.useConfig)(),{lastVisitInfo:g,isLoading:p,error:b}=(e=>{let t=`${c.restBaseUrl}/visit?patient=${e}&v=default&limit=1&sort=desc:startDatetime`,{data:i,isLoading:a,error:l}=s()(e?t:null,c.openmrsFetch);return{lastVisitInfo:(0,n.useMemo)(()=>{let e=i?.data?.results;if(!e?.length)return null;let t=e[0],n=new Date(t.startDatetime);return isNaN(n.getTime())?null:{diffDays:Math.floor(Math.abs(Date.now()-n.getTime())/864e5),type:t.visitType?.display??"",location:t.location?.display??""}},[i]),isLoading:a,error:l}})(e);(0,n.useEffect)(()=>{b&&(0,c.showSnackbar)({title:i("lastVisitError","Last visit error"),subtitle:i("errorLoadingLastVisit","An error occurred while loading the last visit"),kind:"error"})},[b,i]);let{cashPoints:y,isLoading:f,error:C}=(()=>{let e=`${u.B}cashPoint`,{data:t,isLoading:i,error:n}=s()(e,c.openmrsFetch);return{isLoading:i,error:n,cashPoints:t?.data?.results??[]}})(),{lineItems:E,isLoading:S,error:T}=(()=>{let e=`${u.B}billableService?v=custom:(uuid,name,shortName,serviceStatus,serviceType:(display),servicePrices:(uuid,name,price,paymentMode))`,{data:t,isLoading:i,error:n}=s()(e,c.openmrsFetch);return{lineItems:t?.data?.results??[],isLoading:i,error:n}})(),[D,B]=(0,n.useState)([]),[I,P]=(0,n.useState)(null),[k,N]=(0,n.useState)(null),x=(0,n.useRef)(D);(0,n.useEffect)(()=>{x.current=D},[D]);let M=(0,n.useMemo)(()=>!!d?.nonPayingDetails&&!!D?.length&&D.some(e=>e.value===d.nonPayingDetails),[D,d]),L=(0,n.useMemo)(()=>!M&&I&&E?.length?E.filter(e=>e.servicePrices.some(e=>e.paymentMode?.uuid===I)):[],[E,I,M]);(0,n.useEffect)(()=>{t({createBillPayload:null,handleCreateExtraVisitInfo:null,attributes:x.current}),N(null)},[I,M,t]);let w=(0,n.useCallback)(async t=>{try{let n;await (n=`${u.B}bill`,(0,c.openmrsFetch)(n,{method:"POST",headers:{"Content-Type":"application/json"},body:t})),m((0,v.Z5)(e)),(0,c.showSnackbar)({title:i("patientBill","Patient bill"),subtitle:i("billCreatedSuccessfully","Bill created successfully"),kind:"success"})}catch(e){(0,c.showSnackbar)({title:i("billCreationError","Bill creation error"),subtitle:i("errorCreatingBill","An error occurred while creating the bill"),kind:"error"})}},[m,i,e]),$=(0,n.useCallback)(({selectedItem:i})=>{N(i);let n=y?.[0]?.uuid??"",a=i?.uuid??"",l=i.servicePrices.find(e=>e.paymentMode?.uuid===I)||i?.servicePrices[0],r={lineItems:[{billableService:a,quantity:1,price:l?l.price:"0.000",priceName:"Default",priceUuid:l?l.uuid:"",lineItemOrder:0,status:h.zk.PENDING}],cashPoint:n,patient:e,status:h.ih.PENDING,payments:[]};t({createBillPayload:r,handleCreateExtraVisitInfo:()=>w(r),attributes:D})},[D,y,w,I,e,t]);return S||f?a().createElement(o.InlineLoading,{status:"active",iconDescription:(0,c.getCoreTranslation)("loading"),description:`${i("loadingBillingServices","Loading billing services")}...`}):C||T?a().createElement(o.InlineNotification,{kind:"error",lowContrast:!0,title:i("billErrorService","Billing service error"),subtitle:i("errorLoadingBillServices","Error loading bill services")}):a().createElement("section",{className:"-esm-billing__billing-checkin-form__sectionContainer___TLb4u"},a().createElement("h1",{className:"-esm-billing__billing-checkin-form__sectionLabel___1H1hH"},i("billingDetails","Billing details")),a().createElement("div",{className:"-esm-billing__billing-checkin-form__sectionField___AUKom"},!p&&!b&&g&&a().createElement("div",{className:"-esm-billing__billing-checkin-form__lastVisitBanner___Bh8FX"},a().createElement(o.InlineNotification,{hideCloseButton:!0,kind:"info",title:i("lastVisitInfo","Last Visit Information"),subtitle:i("lastVisitMsg","The last visit was a {{type}} {{count}} days ago at {{location}}",{count:g.diffDays,type:g.type,location:g.location}),lowContrast:!0})),a().createElement(_,{setAttributes:B,setPaymentMethod:P}),L.length>0&&a().createElement(o.Dropdown,{key:`billable-${I}`,id:"billable-items",items:L,itemToString:e=>{let t;return e?`${e.name} ${(t=e.servicePrices.find(e=>e.paymentMode?.uuid===I))?`(${t.name}: ${t.price})`:""}`:""},label:i("selectBillableService","Select a billable service"),onChange:$,selectedItem:k,titleText:i("billableService","Billable service")})))})}}]);
package/dist/1564.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["1564"],{4352(e,t,l){l.d(t,{A:()=>n});let n={spinner:"-esm-billing__delete-line-item-confirmation__spinner___4aqIs",modalBody:"-esm-billing__delete-line-item-confirmation__modalBody___yKwtP",sectionTitle:"-esm-billing__delete-line-item-confirmation__sectionTitle___u+XCL"}},6903(e,t,l){l.r(t),l.d(t,{default:()=>m});var n=l(5275),i=l.n(n),a=l(1752),r=l(8395),o=l(3137),s=l(6199),d=l(4352);let m=({closeModal:e,item:t,onMutate:l})=>{let{t:m}=(0,r.useTranslation)(),[c,u]=(0,n.useState)(!1),[_,g]=(0,n.useState)(""),b=t.billableService||t.item,p=async()=>{u(!0);try{await (0,s.mi)(t.uuid,_.trim()),l?.(),(0,o.showSnackbar)({title:m("lineItemDeleted","Line item deleted"),subtitle:m("lineItemDeleteSuccess","Bill line item deleted successfully"),kind:"success"}),e()}catch(t){let e=t?.responseBody?.error?.message||t?.message||m("deleteFailedTryAgain","Unable to delete line item. Please try again.");(0,o.showSnackbar)({title:m("lineItemDeleteFailed","Failed to delete line item"),subtitle:e,kind:"error"})}finally{u(!1)}};return i().createElement(i().Fragment,null,i().createElement(a.ModalHeader,{className:d.A.sectionTitle,closeModal:e,title:m("deleteLineItem","Delete line item")}),i().createElement(a.ModalBody,{className:d.A.modalBody},i().createElement(a.Stack,{gap:5},i().createElement("p",null,m("deleteConfirmation",'Are you sure you want to delete "{{itemName}}" from this bill?',{itemName:b})),i().createElement(a.TextArea,{enableCounter:!0,id:"deleteReason",labelText:m("deleteReason","Reason for deletion"),maxCount:255,onChange:e=>g(e.target.value),placeholder:m("deleteReasonPlaceholder","Enter the reason for removing this line item from the bill"),required:!0,rows:3,value:_}))),i().createElement(a.ModalFooter,null,i().createElement(a.Button,{kind:"secondary",onClick:e},(0,o.getCoreTranslation)("cancel")),i().createElement(a.Button,{kind:"danger",onClick:p,disabled:c||!_.trim()},c?i().createElement(a.InlineLoading,{className:d.A.spinner,description:m("deleting","Deleting")+"..."}):i().createElement("span",null,(0,o.getCoreTranslation)("delete")))))}}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["1564"],{4352(e,t,l){l.d(t,{A:()=>n});let n={spinner:"-esm-billing__delete-line-item-confirmation__spinner___4aqIs",modalBody:"-esm-billing__delete-line-item-confirmation__modalBody___yKwtP",sectionTitle:"-esm-billing__delete-line-item-confirmation__sectionTitle___u+XCL"}},6903(e,t,l){l.r(t),l.d(t,{default:()=>m});var n=l(5275),i=l.n(n),a=l(1752),r=l(8395),o=l(9124),s=l(6199),d=l(4352);let m=({closeModal:e,item:t,onMutate:l})=>{let{t:m}=(0,r.useTranslation)(),[c,u]=(0,n.useState)(!1),[_,g]=(0,n.useState)(""),b=t.billableService||t.item,p=async()=>{u(!0);try{await (0,s.mi)(t.uuid,_.trim()),l?.(),(0,o.showSnackbar)({title:m("lineItemDeleted","Line item deleted"),subtitle:m("lineItemDeleteSuccess","Bill line item deleted successfully"),kind:"success"}),e()}catch(t){let e=t?.responseBody?.error?.message||t?.message||m("deleteFailedTryAgain","Unable to delete line item. Please try again.");(0,o.showSnackbar)({title:m("lineItemDeleteFailed","Failed to delete line item"),subtitle:e,kind:"error"})}finally{u(!1)}};return i().createElement(i().Fragment,null,i().createElement(a.ModalHeader,{className:d.A.sectionTitle,closeModal:e,title:m("deleteLineItem","Delete line item")}),i().createElement(a.ModalBody,{className:d.A.modalBody},i().createElement(a.Stack,{gap:5},i().createElement("p",null,m("deleteConfirmation",'Are you sure you want to delete "{{itemName}}" from this bill?',{itemName:b})),i().createElement(a.TextArea,{enableCounter:!0,id:"deleteReason",labelText:m("deleteReason","Reason for deletion"),maxCount:255,onChange:e=>g(e.target.value),placeholder:m("deleteReasonPlaceholder","Enter the reason for removing this line item from the bill"),required:!0,rows:3,value:_}))),i().createElement(a.ModalFooter,null,i().createElement(a.Button,{kind:"secondary",onClick:e},(0,o.getCoreTranslation)("cancel")),i().createElement(a.Button,{kind:"danger",onClick:p,disabled:c||!_.trim()},c?i().createElement(a.InlineLoading,{className:d.A.spinner,description:m("deleting","Deleting")+"..."}):i().createElement("span",null,(0,o.getCoreTranslation)("delete")))))}}}]);
package/dist/1899.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["1899"],{6994(e,t,i){i.d(t,{MH:()=>m,OS:()=>d,WJ:()=>o,bb:()=>c,cW:()=>_,j2:()=>u,ly:()=>s,vv:()=>b});var l=i(6335),a=i.n(l),n=i(3137),r=i(7003);let s=()=>{let e=`${r.B}billableService?v=custom:(uuid,name,shortName,serviceStatus,concept:(uuid,display,name:(name)),serviceType:(display,uuid),servicePrices:(uuid,name,price,paymentMode:(uuid,name)))`,{data:t,isLoading:i,isValidating:l,error:a,mutate:s}=(0,n.useOpenmrsFetchAll)(e);return{billableServices:t??[],isLoading:i,isValidating:l,error:a,mutate:s}};function m(){let{serviceTypes:e}=(0,n.useConfig)(),t=e.billableService,i=`${n.restBaseUrl}/concept/${t}?v=custom:(setMembers:(uuid,display))`,{data:l,error:r,isLoading:s}=a()(i,n.openmrsFetch);return{serviceTypes:l?.data.setMembers?[...l.data.setMembers].sort((e,t)=>e.display.localeCompare(t.display)):[],error:r,isLoadingServiceTypes:s}}let o=()=>{let e=`${r.B}paymentMode`,{data:t,error:i,isLoading:l,mutate:s}=a()(e,n.openmrsFetch);return{paymentModes:t?.data.results?[...t.data.results].sort((e,t)=>e.name.localeCompare(t.name)):[],error:i,isLoadingPaymentModes:l,mutate:s}};function c(e){let t=`${n.restBaseUrl}/conceptsearch?q=${e}`,{data:i,error:l,isLoading:r}=a()(e?t:null,n.openmrsFetch);return{searchResults:i?.data?.results??[],error:l,isSearching:r}}let u=async e=>{let t=`${r.B}api/billable-service`;return await (0,n.openmrsFetch)(t,{method:"POST",body:e,headers:{"Content-Type":"application/json"}})},d=async(e,t)=>{let i=`${r.B}billableService/${e}`;return await (0,n.openmrsFetch)(i,{method:"POST",body:t,headers:{"Content-Type":"application/json"}})},_=e=>{let t=`${n.restBaseUrl}/billing/paymentMode`;return(0,n.openmrsFetch)(t,{method:"POST",body:e,headers:{"Content-Type":"application/json"}})},b=(e,t)=>{let i=`${n.restBaseUrl}/billing/paymentMode/${e}`;return(0,n.openmrsFetch)(i,{method:"POST",body:t,headers:{"Content-Type":"application/json"}})}},662(e,t,i){i.r(t),i.d(t,{default:()=>y});var l=i(5275),a=i.n(l),n=i(8395),r=i(6335),s=i(1752),m=i(3137),o=i(6199),c=i(6994),u=i(7661),d=i(2373),_=i(5084);let b="-esm-billing__billing-form__button___miCYp",p="-esm-billing__billing-form__sectionHeading___f9Y8R",g="-esm-billing__billing-form__controlSection___vBeep",y=({workspaceProps:{patientUuid:e,onMutate:t,billUuid:i},closeWorkspace:y})=>{let h="tablet"===(0,m.useLayoutType)(),{t:v}=(0,n.useTranslation)(),{mutate:f}=(0,r.useSWRConfig)(),{defaultCurrency:E,postBilledItems:N}=(0,m.useConfig)(),[S,I]=(0,l.useState)(!1),[C,T]=(0,l.useState)([]),{data:P,error:B,isLoading:M}=(0,o.ly)(),{bill:k,isLoading:w,error:q}=(0,o.DX)(i),{billableServices:L,isLoading:F,error:$}=(0,c.ly)(),x=!!i&&!!k,{activeVisit:U}=(0,m.useVisit)(e),D=(0,l.useMemo)(()=>x?(0,d.Zz)(k.lineItems):0,[x,k?.lineItems]),A=(0,l.useMemo)(()=>{if(!P)return[];if(!x)return P;let e=new Set((k.lineItems??[]).flatMap(e=>[e.billableService,e.item].filter(Boolean)));return P.filter(t=>t.name&&!e.has(t.name))},[P,x,k?.lineItems]),O=async()=>{if(S||0===C.length||x&&(F||$)||!(()=>{if(0===C.length)return!1;for(let e of C){if(e.availablePaymentMethods&&e.availablePaymentMethods.length>1&&!e.selectedPaymentMethod)return(0,m.showSnackbar)({title:v("validationError","Validation error"),subtitle:v("paymentMethodRequired","Payment method is required for all items"),kind:"error"}),!1;if(!e.quantity||e.quantity<1)return!1}return!0})())return;I(!0);let i=C.map(e=>({quantity:e.quantity,price:e.price,lineItemOrder:0,status:_.zk.PENDING,billableService:e.uuid}));try{if(x){let e=k.lineItems.map(e=>{let t=(0,u.e)(L,e.billableService||e.item);if(!t)throw Error(v("serviceResolutionError",'Could not resolve service "{{service}}"',{service:e.billableService||e.item}));return{uuid:e.uuid,quantity:e.quantity,price:e.price,lineItemOrder:e.lineItemOrder,status:e.status,billableService:t,priceName:e.priceName,priceUuid:e.priceUuid}}),t={cashPoint:k.cashPointUuid,cashier:k.cashier.uuid,lineItems:[...e,...i],patient:k.patientUuid,status:k.status,uuid:k.uuid};await (0,o.FR)(t)}else{let t={cashPoint:N.cashPoint,cashier:N.cashier,lineItems:i,payments:[],patient:e,status:_.ih.PENDING,...U?.uuid&&{visit:U.uuid}};await (0,o.Xn)(t)}y({discardUnsavedChanges:!0}),t?.(),f((0,o.Z5)(e)),(0,m.showSnackbar)({title:x?v("itemsAddedToBill","Items added to bill"):v("billProcessed","Bill processed"),subtitle:x?v("itemsAddedToBillSuccessfully","Items have been added to the bill successfully"):v("billProcessedSuccessfully","Bill processed successfully"),kind:"success"})}catch(e){(0,m.showSnackbar)({title:v("billProcessingError","Bill processing error"),kind:"error",subtitle:e instanceof Error?e.message:v("unknownBillError","An unexpected error occurred")})}finally{I(!1)}};return a().createElement(m.Workspace2,{title:x?v("addItemsToBill","Add items to bill"):v("addBillItems","Add bill items"),hasUnsavedChanges:C.length>0},a().createElement(s.Form,{className:"-esm-billing__billing-form__form___ECl9X",onSubmit:e=>{e.preventDefault(),O()}},a().createElement("div",{className:"-esm-billing__billing-form__grid___qXtbW"},i&&w?a().createElement(s.InlineLoading,{description:(0,m.getCoreTranslation)("loading")+"..."}):i&&q?a().createElement(s.InlineNotification,{kind:"error",lowContrast:!0,title:v("errorLoadingBill","Error loading bill"),subtitle:q?.message}):x&&$?a().createElement(s.InlineNotification,{kind:"error",lowContrast:!0,title:v("errorLoadingBillableServices","Error loading billable services"),subtitle:$?.message}):a().createElement(a().Fragment,null,x&&a().createElement("div",{className:"-esm-billing__billing-form__existingItemsContainer___cfzXU"},a().createElement("h4",{className:p},v("existingItems","Existing items")),k.lineItems.map(e=>a().createElement("div",{key:e.uuid,className:"-esm-billing__billing-form__existingItemRow___RMcu1"},a().createElement("span",{className:"-esm-billing__billing-form__existingItemName___md4qn"},e.billableService||e.item||e.display),a().createElement("span",{className:"-esm-billing__billing-form__existingItemDetail___uwWSZ"},e.quantity," x ",(0,d.aL)(e.price,E)),a().createElement("span",{className:"-esm-billing__billing-form__existingItemTotal___+vdv7"},(0,d.aL)(e.price*e.quantity,E)))),a().createElement("div",{className:"-esm-billing__billing-form__existingItemsSubtotal___abWhv"},a().createElement("strong",null,v("subtotal","Subtotal"),": ",(0,d.aL)(D,E)))),x&&a().createElement("h4",{className:p},v("newItems","New items")),M?a().createElement(s.InlineLoading,{description:(0,m.getCoreTranslation)("loading")+"..."}):B?a().createElement(s.InlineNotification,{kind:"error",lowContrast:!0,title:v("errorLoadingBillableServices","Error loading billable services"),subtitle:B?.message}):a().createElement(s.ComboBox,{id:"searchItems",onChange:({selectedItem:e})=>(e=>{if(!e)return;let t=C.find(t=>t.uuid===e.uuid);if(t){let i={...t,quantity:t.quantity+1};T([...C].map(t=>t.uuid===e.uuid?i:t));return}let i=e.servicePrices||[],l=0,a=null;if(1===i.length){let e=i[0].price;l="number"==typeof e?e:parseFloat(e),a=i[0]}T([...C,{uuid:e.uuid,display:e.name,quantity:1,price:l,billableService:e.uuid,status:_.zk.PENDING,lineItemOrder:0,selectedPaymentMethod:a,availablePaymentMethods:i}])})(e),itemToString:e=>e?.name||"",items:A,titleText:v("searchItems","Search items and services")})),C&&C.length>0&&a().createElement("div",{className:"-esm-billing__billing-form__selectedItemsContainer___Wfu4P"},a().createElement("h4",{className:p},v("selectedItems","Selected items")),C.map(e=>a().createElement("div",{key:e.uuid,className:"-esm-billing__billing-form__itemCard___JpDpA"},a().createElement("div",{className:"-esm-billing__billing-form__itemHeader___FwNiq"},a().createElement("span",{className:"-esm-billing__billing-form__itemName___jVlbU"},e.display),a().createElement(s.IconButton,{align:"top-end",kind:"ghost",label:v("remove","Remove"),onClick:()=>{var t;return t=e.uuid,void T([...C].filter(e=>e.uuid!==t))}},a().createElement(m.TrashCanIcon,{size:16}))),a().createElement("div",{className:"-esm-billing__billing-form__itemControls___zsB6m"},e.availablePaymentMethods&&e.availablePaymentMethods.length>1?a().createElement("div",{className:g},a().createElement("label",null,v("selectPaymentMethod","Select payment method")),a().createElement(s.ComboBox,{id:`payment-method-${e.uuid}`,items:e.availablePaymentMethods,itemToString:e=>e?`${e.name} - ${(0,d.aL)("number"==typeof e.price?e.price:parseFloat(e.price),E)}`:"",selectedItem:e.selectedPaymentMethod,onChange:({selectedItem:t})=>{var i;t&&(i=e.uuid,T([...C].map(e=>e.uuid===i?{...e,selectedPaymentMethod:t,price:"number"==typeof t.price?t.price:parseFloat(t.price),priceName:t.name,priceUuid:t.uuid}:e)))},placeholder:v("selectPaymentMethod","Select payment method"),titleText:""})):a().createElement("div",{className:g},a().createElement("label",null,v("unitPrice","Unit price")),a().createElement("span",{className:"-esm-billing__billing-form__priceDisplay___2f6BZ"},(0,d.aL)(e.price,E))),a().createElement("div",{className:g},a().createElement("label",null,v("quantity","Quantity")),a().createElement(s.NumberInput,{allowEmpty:!0,disableWheel:!0,hideSteppers:!0,id:`quantity-${e.uuid}`,invalid:!e.quantity||e.quantity<1,invalidText:v("quantityMustBeAtLeastOne","Quantity must be at least 1"),onChange:(t,{value:i})=>{var l,a;let n=parseFloat(String(i));l=e.uuid,a=isNaN(n)?0:n,T([...C].map(e=>e.uuid===l?{...e,quantity:a}:e))},value:e.quantity||""})),a().createElement("div",{className:g},a().createElement("label",null,v("total","Total")),a().createElement("span",{className:"-esm-billing__billing-form__totalDisplay___RJjsD"},(0,d.aL)(e.price*e.quantity,E)))))),a().createElement("div",{className:"-esm-billing__billing-form__grandTotal___eRlcF"},a().createElement("strong",null,v("grandTotal","Grand total"),":"," ",(0,d.aL)(D+(0,d.Zz)(C),E))))),a().createElement(s.ButtonSet,{className:h?"-esm-billing__billing-form__tablet___MG9Xm":"-esm-billing__billing-form__desktop___CL1X8"},a().createElement(s.Button,{className:b,kind:"secondary",disabled:S,onClick:()=>y({discardUnsavedChanges:!1})},v("discard","Discard")),a().createElement(s.Button,{className:b,kind:"primary",disabled:S||0===C.length||x&&F,type:"submit"},S?a().createElement(s.InlineLoading,{description:v("saving","Saving")+"..."}):v("saveAndClose","Save and close")))))}},2373(e,t,i){i.d(t,{Zz:()=>a,aL:()=>n,o_:()=>r});var l=i(3137);function a(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let n=(e,t)=>{let i=window.i18next?.language?.substring(0,2)??"",l=new Intl.NumberFormat(i,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(l=`(${l})`),l},r=(e,t)=>{switch(e){case"male":return(0,l.getCoreTranslation)("male");case"female":return(0,l.getCoreTranslation)("female");case"other":return(0,l.getCoreTranslation)("other");case"unknown":return(0,l.getCoreTranslation)("unknown");default:return e}}},7661(e,t,i){i.d(t,{e:()=>l});let l=(e,t)=>{if(!e.length)return null;let i=e.find(e=>e.name===t);return i?.uuid??null}}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["1899"],{6994(e,t,i){i.d(t,{MH:()=>m,OS:()=>d,WJ:()=>o,bb:()=>c,cW:()=>_,j2:()=>u,ly:()=>s,vv:()=>b});var l=i(6335),a=i.n(l),n=i(9124),r=i(7003);let s=()=>{let e=`${r.B}billableService?v=custom:(uuid,name,shortName,serviceStatus,concept:(uuid,display,name:(name)),serviceType:(display,uuid),servicePrices:(uuid,name,price,paymentMode:(uuid,name)))`,{data:t,isLoading:i,isValidating:l,error:a,mutate:s}=(0,n.useOpenmrsFetchAll)(e);return{billableServices:t??[],isLoading:i,isValidating:l,error:a,mutate:s}};function m(){let{serviceTypes:e}=(0,n.useConfig)(),t=e.billableService,i=`${n.restBaseUrl}/concept/${t}?v=custom:(setMembers:(uuid,display))`,{data:l,error:r,isLoading:s}=a()(i,n.openmrsFetch);return{serviceTypes:l?.data.setMembers?[...l.data.setMembers].sort((e,t)=>e.display.localeCompare(t.display)):[],error:r,isLoadingServiceTypes:s}}let o=()=>{let e=`${r.B}paymentMode`,{data:t,error:i,isLoading:l,mutate:s}=a()(e,n.openmrsFetch);return{paymentModes:t?.data.results?[...t.data.results].sort((e,t)=>e.name.localeCompare(t.name)):[],error:i,isLoadingPaymentModes:l,mutate:s}};function c(e){let t=`${n.restBaseUrl}/conceptsearch?q=${e}`,{data:i,error:l,isLoading:r}=a()(e?t:null,n.openmrsFetch);return{searchResults:i?.data?.results??[],error:l,isSearching:r}}let u=async e=>{let t=`${r.B}api/billable-service`;return await (0,n.openmrsFetch)(t,{method:"POST",body:e,headers:{"Content-Type":"application/json"}})},d=async(e,t)=>{let i=`${r.B}billableService/${e}`;return await (0,n.openmrsFetch)(i,{method:"POST",body:t,headers:{"Content-Type":"application/json"}})},_=e=>{let t=`${n.restBaseUrl}/billing/paymentMode`;return(0,n.openmrsFetch)(t,{method:"POST",body:e,headers:{"Content-Type":"application/json"}})},b=(e,t)=>{let i=`${n.restBaseUrl}/billing/paymentMode/${e}`;return(0,n.openmrsFetch)(i,{method:"POST",body:t,headers:{"Content-Type":"application/json"}})}},662(e,t,i){i.r(t),i.d(t,{default:()=>y});var l=i(5275),a=i.n(l),n=i(8395),r=i(6335),s=i(1752),m=i(9124),o=i(6199),c=i(6994),u=i(7661),d=i(2373),_=i(5084);let b="-esm-billing__billing-form__button___miCYp",p="-esm-billing__billing-form__sectionHeading___f9Y8R",g="-esm-billing__billing-form__controlSection___vBeep",y=({workspaceProps:{patientUuid:e,onMutate:t,billUuid:i},closeWorkspace:y})=>{let h="tablet"===(0,m.useLayoutType)(),{t:v}=(0,n.useTranslation)(),{mutate:f}=(0,r.useSWRConfig)(),{defaultCurrency:E,postBilledItems:N}=(0,m.useConfig)(),[S,I]=(0,l.useState)(!1),[C,T]=(0,l.useState)([]),{data:P,error:B,isLoading:M}=(0,o.ly)(),{bill:k,isLoading:w,error:q}=(0,o.DX)(i),{billableServices:L,isLoading:F,error:$}=(0,c.ly)(),x=!!i&&!!k,{activeVisit:U}=(0,m.useVisit)(e),D=(0,l.useMemo)(()=>x?(0,d.Zz)(k.lineItems):0,[x,k?.lineItems]),A=(0,l.useMemo)(()=>{if(!P)return[];if(!x)return P;let e=new Set((k.lineItems??[]).flatMap(e=>[e.billableService,e.item].filter(Boolean)));return P.filter(t=>t.name&&!e.has(t.name))},[P,x,k?.lineItems]),O=async()=>{if(S||0===C.length||x&&(F||$)||!(()=>{if(0===C.length)return!1;for(let e of C){if(e.availablePaymentMethods&&e.availablePaymentMethods.length>1&&!e.selectedPaymentMethod)return(0,m.showSnackbar)({title:v("validationError","Validation error"),subtitle:v("paymentMethodRequired","Payment method is required for all items"),kind:"error"}),!1;if(!e.quantity||e.quantity<1)return!1}return!0})())return;I(!0);let i=C.map(e=>({quantity:e.quantity,price:e.price,lineItemOrder:0,status:_.zk.PENDING,billableService:e.uuid}));try{if(x){let e=k.lineItems.map(e=>{let t=(0,u.e)(L,e.billableService||e.item);if(!t)throw Error(v("serviceResolutionError",'Could not resolve service "{{service}}"',{service:e.billableService||e.item}));return{uuid:e.uuid,quantity:e.quantity,price:e.price,lineItemOrder:e.lineItemOrder,status:e.status,billableService:t,priceName:e.priceName,priceUuid:e.priceUuid}}),t={cashPoint:k.cashPointUuid,cashier:k.cashier.uuid,lineItems:[...e,...i],patient:k.patientUuid,status:k.status,uuid:k.uuid};await (0,o.FR)(t)}else{let t={cashPoint:N.cashPoint,cashier:N.cashier,lineItems:i,payments:[],patient:e,status:_.ih.PENDING,...U?.uuid&&{visit:U.uuid}};await (0,o.Xn)(t)}y({discardUnsavedChanges:!0}),t?.(),f((0,o.Z5)(e)),(0,m.showSnackbar)({title:x?v("itemsAddedToBill","Items added to bill"):v("billProcessed","Bill processed"),subtitle:x?v("itemsAddedToBillSuccessfully","Items have been added to the bill successfully"):v("billProcessedSuccessfully","Bill processed successfully"),kind:"success"})}catch(e){(0,m.showSnackbar)({title:v("billProcessingError","Bill processing error"),kind:"error",subtitle:e instanceof Error?e.message:v("unknownBillError","An unexpected error occurred")})}finally{I(!1)}};return a().createElement(m.Workspace2,{title:x?v("addItemsToBill","Add items to bill"):v("addBillItems","Add bill items"),hasUnsavedChanges:C.length>0},a().createElement(s.Form,{className:"-esm-billing__billing-form__form___ECl9X",onSubmit:e=>{e.preventDefault(),O()}},a().createElement("div",{className:"-esm-billing__billing-form__grid___qXtbW"},i&&w?a().createElement(s.InlineLoading,{description:(0,m.getCoreTranslation)("loading")+"..."}):i&&q?a().createElement(s.InlineNotification,{kind:"error",lowContrast:!0,title:v("errorLoadingBill","Error loading bill"),subtitle:q?.message}):x&&$?a().createElement(s.InlineNotification,{kind:"error",lowContrast:!0,title:v("errorLoadingBillableServices","Error loading billable services"),subtitle:$?.message}):a().createElement(a().Fragment,null,x&&a().createElement("div",{className:"-esm-billing__billing-form__existingItemsContainer___cfzXU"},a().createElement("h4",{className:p},v("existingItems","Existing items")),k.lineItems.map(e=>a().createElement("div",{key:e.uuid,className:"-esm-billing__billing-form__existingItemRow___RMcu1"},a().createElement("span",{className:"-esm-billing__billing-form__existingItemName___md4qn"},e.billableService||e.item||e.display),a().createElement("span",{className:"-esm-billing__billing-form__existingItemDetail___uwWSZ"},e.quantity," x ",(0,d.aL)(e.price,E)),a().createElement("span",{className:"-esm-billing__billing-form__existingItemTotal___+vdv7"},(0,d.aL)(e.price*e.quantity,E)))),a().createElement("div",{className:"-esm-billing__billing-form__existingItemsSubtotal___abWhv"},a().createElement("strong",null,v("subtotal","Subtotal"),": ",(0,d.aL)(D,E)))),x&&a().createElement("h4",{className:p},v("newItems","New items")),M?a().createElement(s.InlineLoading,{description:(0,m.getCoreTranslation)("loading")+"..."}):B?a().createElement(s.InlineNotification,{kind:"error",lowContrast:!0,title:v("errorLoadingBillableServices","Error loading billable services"),subtitle:B?.message}):a().createElement(s.ComboBox,{id:"searchItems",onChange:({selectedItem:e})=>(e=>{if(!e)return;let t=C.find(t=>t.uuid===e.uuid);if(t){let i={...t,quantity:t.quantity+1};T([...C].map(t=>t.uuid===e.uuid?i:t));return}let i=e.servicePrices||[],l=0,a=null;if(1===i.length){let e=i[0].price;l="number"==typeof e?e:parseFloat(e),a=i[0]}T([...C,{uuid:e.uuid,display:e.name,quantity:1,price:l,billableService:e.uuid,status:_.zk.PENDING,lineItemOrder:0,selectedPaymentMethod:a,availablePaymentMethods:i}])})(e),itemToString:e=>e?.name||"",items:A,titleText:v("searchItems","Search items and services")})),C&&C.length>0&&a().createElement("div",{className:"-esm-billing__billing-form__selectedItemsContainer___Wfu4P"},a().createElement("h4",{className:p},v("selectedItems","Selected items")),C.map(e=>a().createElement("div",{key:e.uuid,className:"-esm-billing__billing-form__itemCard___JpDpA"},a().createElement("div",{className:"-esm-billing__billing-form__itemHeader___FwNiq"},a().createElement("span",{className:"-esm-billing__billing-form__itemName___jVlbU"},e.display),a().createElement(s.IconButton,{align:"top-end",kind:"ghost",label:v("remove","Remove"),onClick:()=>{var t;return t=e.uuid,void T([...C].filter(e=>e.uuid!==t))}},a().createElement(m.TrashCanIcon,{size:16}))),a().createElement("div",{className:"-esm-billing__billing-form__itemControls___zsB6m"},e.availablePaymentMethods&&e.availablePaymentMethods.length>1?a().createElement("div",{className:g},a().createElement("label",null,v("selectPaymentMethod","Select payment method")),a().createElement(s.ComboBox,{id:`payment-method-${e.uuid}`,items:e.availablePaymentMethods,itemToString:e=>e?`${e.name} - ${(0,d.aL)("number"==typeof e.price?e.price:parseFloat(e.price),E)}`:"",selectedItem:e.selectedPaymentMethod,onChange:({selectedItem:t})=>{var i;t&&(i=e.uuid,T([...C].map(e=>e.uuid===i?{...e,selectedPaymentMethod:t,price:"number"==typeof t.price?t.price:parseFloat(t.price),priceName:t.name,priceUuid:t.uuid}:e)))},placeholder:v("selectPaymentMethod","Select payment method"),titleText:""})):a().createElement("div",{className:g},a().createElement("label",null,v("unitPrice","Unit price")),a().createElement("span",{className:"-esm-billing__billing-form__priceDisplay___2f6BZ"},(0,d.aL)(e.price,E))),a().createElement("div",{className:g},a().createElement("label",null,v("quantity","Quantity")),a().createElement(s.NumberInput,{allowEmpty:!0,disableWheel:!0,hideSteppers:!0,id:`quantity-${e.uuid}`,invalid:!e.quantity||e.quantity<1,invalidText:v("quantityMustBeAtLeastOne","Quantity must be at least 1"),onChange:(t,{value:i})=>{var l,a;let n=parseFloat(String(i));l=e.uuid,a=isNaN(n)?0:n,T([...C].map(e=>e.uuid===l?{...e,quantity:a}:e))},value:e.quantity||""})),a().createElement("div",{className:g},a().createElement("label",null,v("total","Total")),a().createElement("span",{className:"-esm-billing__billing-form__totalDisplay___RJjsD"},(0,d.aL)(e.price*e.quantity,E)))))),a().createElement("div",{className:"-esm-billing__billing-form__grandTotal___eRlcF"},a().createElement("strong",null,v("grandTotal","Grand total"),":"," ",(0,d.aL)(D+(0,d.Zz)(C),E))))),a().createElement(s.ButtonSet,{className:h?"-esm-billing__billing-form__tablet___MG9Xm":"-esm-billing__billing-form__desktop___CL1X8"},a().createElement(s.Button,{className:b,kind:"secondary",disabled:S,onClick:()=>y({discardUnsavedChanges:!1})},v("discard","Discard")),a().createElement(s.Button,{className:b,kind:"primary",disabled:S||0===C.length||x&&F,type:"submit"},S?a().createElement(s.InlineLoading,{description:v("saving","Saving")+"..."}):v("saveAndClose","Save and close")))))}},2373(e,t,i){i.d(t,{Zz:()=>a,aL:()=>n,o_:()=>r});var l=i(9124);function a(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let n=(e,t)=>{let i=window.i18next?.language?.substring(0,2)??"",l=new Intl.NumberFormat(i,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(l=`(${l})`),l},r=(e,t)=>{switch(e){case"male":return(0,l.getCoreTranslation)("male");case"female":return(0,l.getCoreTranslation)("female");case"other":return(0,l.getCoreTranslation)("other");case"unknown":return(0,l.getCoreTranslation)("unknown");default:return e}}},7661(e,t,i){i.d(t,{e:()=>l});let l=(e,t)=>{if(!e.length)return null;let i=e.find(e=>e.name===t);return i?.uuid??null}}}]);
package/dist/203.js CHANGED
@@ -1 +1 @@
1
- (globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["203"],{4751(e){var t;e.exports=t={},t.simpleFilter=function(e,l){return l.filter(function(l){return t.test(e,l)})},t.test=function(e,l){return null!==t.match(e,l)},t.match=function(e,t,l){l=l||{};var a,i=0,n=[],r=t.length,s=0,o=0,u=l.pre||"",m=l.post||"",c=l.caseSensitive&&t||t.toLowerCase();e=l.caseSensitive&&e||e.toLowerCase();for(var d=0;d<r;d++)a=t[d],c[d]===e[i]?(a=u+a+m,i+=1,o+=1+o):o=0,s+=o,n[n.length]=a;return i===e.length?(s=c===e?1/0:s,{rendered:n.join(""),score:s}):null},t.filter=function(e,l,a){return l&&0!==l.length?"string"!=typeof e?l:(a=a||{},l.reduce(function(l,i,n,r){var s=i;a.extract&&(s=a.extract(i));var o=t.match(e,s,a);return null!=o&&(l[l.length]={string:o.rendered,score:o.score,index:n,original:i}),l},[]).sort(function(e,t){var l=t.score-e.score;return l||e.index-t.index})):[]}},9686(e,t,l){"use strict";l.r(t),l.d(t,{default:()=>p});var a=l(5275),i=l.n(a),n=l(8395),r=l(1752),s=l(2137),o=l(3137),u=l(6199),m=l(1772),c=l(5084);let d="-esm-billing__bill-action-menu__menuItem___IEXNy",b=({bill:e,patientUuid:t,onMutate:l})=>{let{t:a}=(0,n.useTranslation)(),s=(0,o.useLayoutType)(),u=e?.status===c.ih.PENDING;return i().createElement(r.Layer,null,i().createElement(r.OverflowMenu,{align:"left",flipped:!0,size:(0,o.isDesktop)(s)?"sm":"lg","data-testid":`action-menu-${e.uuid}`},i().createElement(r.OverflowMenuItem,{className:d,itemText:a("addItemsToBill","Add items to bill"),onClick:()=>(0,o.launchWorkspace2)("patient-chart-billing-form-workspace",{patientUuid:t,billUuid:e.uuid,onMutate:l})}),u&&i().createElement(r.OverflowMenuItem,{className:d,hasDivider:!0,isDelete:!0,itemText:a("deleteBill","Delete bill"),onClick:()=>{let t=(0,o.showModal)("delete-bill-confirmation-modal",{bill:e,onSuccess:l,closeModal:()=>t()})}})))};var _=l(6762);let p=({patientUuid:e})=>{let{t}=(0,n.useTranslation)(),{bills:l,error:d,isLoading:p,isValidating:h,mutate:g}=(0,u.u1)(e),{paginated:E,goTo:y,results:f,currentPage:T}=(0,o.usePagination)(l),{pageSize:v,defaultCurrency:w}=(0,o.useConfig)(),[k,N]=(0,a.useState)(v),{pageSizes:C}=(0,o.usePaginationInfo)(v,l?.length,T,f?.length),I=(0,a.useMemo)(()=>new Map(l?.map(e=>[e.uuid,e])),[l]),D=[{header:t("billDate","Bill date"),key:"billDate"},{header:t("invoiceNumber","Invoice number"),key:"invoiceNumber"},{header:t("billedItems","Billed items"),key:"billedItems"},{header:t("billTotal","Bill total"),key:"billTotal"}],M=f?.map(e=>({id:e.uuid,uuid:e.uuid,billTotal:(0,m.aL)(e?.totalAmount,w),billDate:(0,o.formatDate)((0,o.parseDate)(e.dateCreated),{mode:"wide"}),invoiceNumber:e.receiptNumber,billedItems:e?.lineItems?.map(e=>e?.billableService||e?.item).filter(Boolean).join(" & ")}));return p?i().createElement("div",{className:"-esm-billing__bill-history__loaderContainer___KePhb"},i().createElement(r.DataTableSkeleton,{showHeader:!1,showToolbar:!1,zebra:!0})):d?i().createElement("div",{className:"-esm-billing__bill-history__errorContainer___j-G7W"},i().createElement(r.Layer,null,i().createElement(o.ErrorState,{error:d,headerTitle:t("billList","Bill list")}))):0===l.length?i().createElement(r.Layer,{className:"-esm-billing__bill-history__emptyStateContainer___udoC8"},i().createElement(r.Tile,{className:"-esm-billing__bill-history__tile___hj7H+"},i().createElement("div",{className:"-esm-billing__bill-history__illo___SEucs"},i().createElement(o.EmptyCardIllustration,null)),i().createElement("p",{className:"-esm-billing__bill-history__content___YJZdv"},t("noBillsToDisplay","There are no bills to display.")),i().createElement(r.Button,{onClick:()=>(0,o.launchWorkspace2)("patient-chart-billing-form-workspace",{patientUuid:e,onMutate:g}),kind:"ghost"},t("createBill","Create bill")))):i().createElement("div",null,i().createElement(o.CardHeader,{title:t("billingHistory","Billing History")},h&&i().createElement("span",null,i().createElement(r.InlineLoading,{status:"active"})),i().createElement(r.Button,{kind:"ghost",onClick:()=>(0,o.launchWorkspace2)("patient-chart-billing-form-workspace",{patientUuid:e,onMutate:g}),renderIcon:s.OM},t("createBill","Create bill"))),i().createElement("div",{className:"-esm-billing__bill-history__billHistoryContainer___yTHIn"},i().createElement(r.DataTable,{isSortable:!0,rows:M,headers:D,size:"md",useZebraStyles:!0},({getExpandHeaderProps:l,getHeaderProps:a,getRowProps:n,getTableContainerProps:s,getTableProps:u,headers:m,rows:d})=>i().createElement(r.TableContainer,s,i().createElement(r.Table,{className:"-esm-billing__bill-history__table___TYYPG",...u(),"aria-label":t("billList","Bill list")},i().createElement(r.TableHead,null,i().createElement(r.TableRow,null,i().createElement(r.TableExpandHeader,{enableToggle:!0,...l()}),m.map((e,t)=>i().createElement(r.TableHeader,{key:t,...a({header:e})},e.header)),i().createElement(r.TableHeader,{"aria-label":(0,o.getCoreTranslation)("actions")}))),i().createElement(r.TableBody,null,d.map((t,l)=>{let a=I.get(t.id);return i().createElement(i().Fragment,{key:t.id},i().createElement(r.TableExpandRow,n({row:t}),t.cells.map(e=>i().createElement(r.TableCell,{key:e.id,className:"-esm-billing__bill-history__tableCells___ySiYL"},e.value)),i().createElement(r.TableCell,{className:"cds--table-column-menu"},a?.status===c.ih.PENDING&&i().createElement(b,{bill:a,patientUuid:e,onMutate:g}))),t.isExpanded?i().createElement(r.TableExpandedRow,{colSpan:m.length+2},i().createElement("div",{className:"-esm-billing__bill-history__container___6+v1E",key:l},i().createElement(_.A,{bill:a,onMutate:g,isLoadingBill:h}))):i().createElement(r.TableExpandedRow,{className:"-esm-billing__bill-history__hiddenRow___p94zi",colSpan:m.length+2}))}))))),E&&i().createElement(r.Pagination,{forwardText:t("nextPage","Next page"),backwardText:t("previousPage","Previous page"),page:T,pageSize:k,pageSizes:C,totalItems:l.length,className:"-esm-billing__bill-history__pagination___Tosqe",size:"md",onChange:({page:e,pageSize:t})=>{e!==T&&y(e),N(t)}})))}},2373(e,t,l){"use strict";l.d(t,{Zz:()=>i,aL:()=>n,o_:()=>r});var a=l(3137);function i(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let n=(e,t)=>{let l=window.i18next?.language?.substring(0,2)??"",a=new Intl.NumberFormat(l,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(a=`(${a})`),a},r=(e,t)=>{switch(e){case"male":return(0,a.getCoreTranslation)("male");case"female":return(0,a.getCoreTranslation)("female");case"other":return(0,a.getCoreTranslation)("other");case"unknown":return(0,a.getCoreTranslation)("unknown");default:return e}}},1772(e,t,l){"use strict";l.d(t,{aL:()=>a.aL,o_:()=>a.o_});var a=l(2373)},6762(e,t,l){"use strict";l.d(t,{A:()=>g});var a=l(5275),i=l.n(a),n=l(6942),r=l.n(n),s=l(8395),o=l(4751),u=l.n(o),m=l(1752),c=l(3137),d=l(5084);let b="-esm-billing__line-item-action-menu__menuitem___lOuJD",_=({bill:e,item:t,onMutate:l,showDiscountRequest:n,onDiscountRequest:r,showRefundRequest:o,onRefundRequest:u})=>{let{t:_}=(0,s.useTranslation)(),p=(0,c.useLayoutType)(),h=(0,a.useCallback)(()=>{let a=(0,c.showModal)("edit-bill-line-item-modal",{bill:e,item:t,closeModal:()=>a(),onMutate:l})},[e,t,l]),g=(0,a.useCallback)(()=>{let e=(0,c.showModal)("delete-line-item-confirmation-modal",{item:t,closeModal:()=>e(),onMutate:l})},[t,l]),E=e?.status===d.ih.PENDING;return i().createElement(m.Layer,null,i().createElement(m.OverflowMenu,{align:"left",flipped:!0,size:(0,c.isDesktop)(p)?"sm":"lg","data-testid":`action-menu-${t.uuid}`},i().createElement(m.OverflowMenuItem,{className:b,"data-testid":`edit-button-${t.uuid}`,disabled:!E,itemText:(0,c.getCoreTranslation)("edit"),onClick:h}),i().createElement(m.OverflowMenuItem,{className:b,"data-testid":`delete-button-${t.uuid}`,disabled:!E,isDelete:!0,itemText:(0,c.getCoreTranslation)("delete"),onClick:g}),n&&i().createElement(m.OverflowMenuItem,{className:b,"data-testid":`request-discount-button-${t.uuid}`,itemText:_("requestDiscount","Request discount"),onClick:r}),o&&i().createElement(m.OverflowMenuItem,{className:b,"data-testid":`request-refund-button-${t.uuid}`,itemText:_("requestRefund","Request refund"),onClick:u})))};var p=l(1772);let h=e=>(e.price??0)*(e.quantity??0),g=({bill:e,isLoadingBill:t,onMutate:l,viewOnly:n})=>{let{t:o}=(0,s.useTranslation)(),{defaultCurrency:b}=(0,c.useConfig)(),g=(0,c.useLayoutType)(),E=(0,a.useMemo)(()=>e?.lineItems??[],[e?.lineItems]),y=(0,c.isDesktop)(g)?"sm":"lg",[f,T]=(0,a.useState)(""),v=(0,c.useDebounce)(f),w=(0,a.useMemo)(()=>(e?.discounts??[]).filter(e=>!e.voided),[e?.discounts]),k=e?.status===d.ih.PENDING||e?.status===d.ih.POSTED,N=w.some(e=>!e.lineItemUuid),C=(0,a.useMemo)(()=>(e?.refunds??[]).filter(e=>!e.voided),[e?.refunds]),I=e?.status===d.ih.PAID||e?.status===d.ih.PARTIALLY_REFUNDED||e?.status===d.ih.REFUND_REQUESTED,D=C.filter(e=>e.status===d.fH.REQUESTED||e.status===d.fH.APPROVED),M=D.some(e=>!e.lineItemUuid),S=(0,a.useMemo)(()=>v?u().filter(v,E,{extract:e=>`${e.billableService} ${e.item}`}).sort((e,t)=>e.score-t.score).map(e=>e.original):E,[v,E]),x=(0,a.useMemo)(()=>new Map(E.map(e=>[e.uuid,e])),[E]),L=[{header:o("number","Number"),key:"no",width:7},{header:o("billItem","Bill item"),key:"billItem",width:25},{header:o("status","Status"),key:"status",width:25},{header:o("quantity","Quantity"),key:"quantity",width:15},{header:o("price","Price"),key:"price",width:24},{header:o("total","Total"),key:"total",width:15}],R=(0,a.useMemo)(()=>S?.map((e,t)=>({no:`${t+1}`,id:`${e.uuid}`,billItem:e.billableService?e.billableService:e?.item,status:e.status,quantity:e.quantity,price:(0,p.aL)(e.price,b),total:(0,p.aL)(h(e),b)}))??[],[S,b]);return t?i().createElement(m.DataTableSkeleton,{"data-testid":"loader",columnCount:L.length,showHeader:!1,showToolbar:!1,zebra:!0}):i().createElement("div",{className:"-esm-billing__invoice-table__lineItemsWrapper___ABU3I"},i().createElement(m.DataTable,{headers:L,rows:R,size:y,useZebraStyles:!0,overflowMenuOnHover:(0,c.isDesktop)(g)},({rows:t,headers:a,getRowProps:s,getTableProps:u})=>i().createElement(m.TableContainer,{description:i().createElement("span",{className:"-esm-billing__invoice-table__tableDescription___JKz3j"},i().createElement("span",null,o("itemsToBeBilled","Items to be billed"))),title:o("lineItems","Line items")},!n&&i().createElement(m.TableToolbarSearch,{className:"-esm-billing__invoice-table__searchbox___oxEnj",expanded:!0,onChange:e=>T(e.target.value),placeholder:o("searchThisTable","Search this table"),size:y}),i().createElement(m.Table,{...u(),"aria-label":o("invoiceLineItems","Invoice line items"),className:r()("-esm-billing__invoice-table__invoiceTable___2hd71","billingTable")},i().createElement(m.TableHead,null,i().createElement(m.TableRow,null,a.map(e=>i().createElement(m.TableHeader,{key:e.key},e.header)),!n&&i().createElement(m.TableHeader,{"aria-label":(0,c.getCoreTranslation)("actions")}))),i().createElement(m.TableBody,null,t.map(t=>{let a,r,o=x.get(t.id);return i().createElement(m.TableRow,{key:t.id,...s({row:t})},t.cells.map(e=>i().createElement(m.TableCell,{key:e.id},e.value)),!n&&i().createElement(m.TableCell,{className:"cds--table-column-menu"},o&&i().createElement(_,{bill:e,item:o,onMutate:l,showDiscountRequest:k&&!N&&(a=o.uuid,!w.some(e=>e.lineItemUuid===a)),onDiscountRequest:()=>{let t;t=(0,c.showModal)("request-discount-modal",{bill:{uuid:e.uuid,total:e.totalAmount??0,amountDue:Math.max(0,(e.netAmount??e.totalAmount??0)-(e.tenderedAmount??0)),receiptNumber:e.receiptNumber,lineItemCount:E.length},lineItem:{uuid:o.uuid,display:o.item||o.billableService||"--",total:h(o),quantity:o.quantity,price:o.price},onMutate:()=>l?.(),closeModal:()=>t()})},showRefundRequest:I&&!M&&(r=o.uuid??"",!D.some(e=>e.lineItemUuid===r))&&!!o.uuid,onRefundRequest:()=>(t=>{if(!t.uuid)return;let a=h(t),i=a-C.filter(e=>e.lineItemUuid===t.uuid&&(e.status===d.fH.APPROVED||e.status===d.fH.COMPLETED)).reduce((e,t)=>e+t.refundAmount,0),n=(0,c.showModal)("request-refund-modal",{bill:{uuid:e.uuid,total:e.totalAmount??0,amountAfterDiscount:e.netAmount??e.totalAmount??0},lineItem:{uuid:t.uuid,display:t.item||t.billableService||"--",total:a,quantity:t.quantity,price:t.price},remainingRefundable:Math.max(0,i),onMutate:()=>l?.(),closeModal:()=>n()})})(o)})))}))))),S?.length===0&&i().createElement("div",{className:"-esm-billing__invoice-table__filterEmptyState___ZtVBH"},i().createElement(m.Layer,null,i().createElement(m.Tile,{className:"-esm-billing__invoice-table__filterEmptyStateTile___j92yY"},i().createElement("p",{className:"-esm-billing__invoice-table__filterEmptyStateContent___41NoP"},o("noMatchingItemsToDisplay","No matching items to display")),!n&&i().createElement("p",{className:"-esm-billing__invoice-table__filterEmptyStateHelper___+DQR2"},o("checkFilters","Check the filters above"))))))}},6942(e){!function(){"use strict";var t={}.hasOwnProperty;function l(){for(var e="",i=0;i<arguments.length;i++){var n=arguments[i];n&&(e=a(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return l.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var i="";for(var n in e)t.call(e,n)&&e[n]&&(i=a(i,n));return i}(n)))}return e}function a(e,t){return t?e?e+" "+t:e+t:e}e.exports?(l.default=l,e.exports=l):"function"==typeof define&&"object"==typeof define.amd&&define.amd?define("classnames",[],function(){return l}):window.classNames=l}()}}]);
1
+ (globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["203"],{4751(e){var t;e.exports=t={},t.simpleFilter=function(e,l){return l.filter(function(l){return t.test(e,l)})},t.test=function(e,l){return null!==t.match(e,l)},t.match=function(e,t,l){l=l||{};var a,i=0,n=[],r=t.length,s=0,o=0,u=l.pre||"",m=l.post||"",c=l.caseSensitive&&t||t.toLowerCase();e=l.caseSensitive&&e||e.toLowerCase();for(var d=0;d<r;d++)a=t[d],c[d]===e[i]?(a=u+a+m,i+=1,o+=1+o):o=0,s+=o,n[n.length]=a;return i===e.length?(s=c===e?1/0:s,{rendered:n.join(""),score:s}):null},t.filter=function(e,l,a){return l&&0!==l.length?"string"!=typeof e?l:(a=a||{},l.reduce(function(l,i,n,r){var s=i;a.extract&&(s=a.extract(i));var o=t.match(e,s,a);return null!=o&&(l[l.length]={string:o.rendered,score:o.score,index:n,original:i}),l},[]).sort(function(e,t){var l=t.score-e.score;return l||e.index-t.index})):[]}},9686(e,t,l){"use strict";l.r(t),l.d(t,{default:()=>p});var a=l(5275),i=l.n(a),n=l(8395),r=l(1752),s=l(2137),o=l(9124),u=l(6199),m=l(1772),c=l(5084);let d="-esm-billing__bill-action-menu__menuItem___IEXNy",b=({bill:e,patientUuid:t,onMutate:l})=>{let{t:a}=(0,n.useTranslation)(),s=(0,o.useLayoutType)(),u=e?.status===c.ih.PENDING;return i().createElement(r.Layer,null,i().createElement(r.OverflowMenu,{align:"left",flipped:!0,size:(0,o.isDesktop)(s)?"sm":"lg","data-testid":`action-menu-${e.uuid}`},i().createElement(r.OverflowMenuItem,{className:d,itemText:a("addItemsToBill","Add items to bill"),onClick:()=>(0,o.launchWorkspace2)("patient-chart-billing-form-workspace",{patientUuid:t,billUuid:e.uuid,onMutate:l})}),u&&i().createElement(r.OverflowMenuItem,{className:d,hasDivider:!0,isDelete:!0,itemText:a("deleteBill","Delete bill"),onClick:()=>{let t=(0,o.showModal)("delete-bill-confirmation-modal",{bill:e,onSuccess:l,closeModal:()=>t()})}})))};var _=l(6762);let p=({patientUuid:e})=>{let{t}=(0,n.useTranslation)(),{bills:l,error:d,isLoading:p,isValidating:h,mutate:g}=(0,u.u1)(e),{paginated:E,goTo:y,results:f,currentPage:T}=(0,o.usePagination)(l),{pageSize:v,defaultCurrency:w}=(0,o.useConfig)(),[k,N]=(0,a.useState)(v),{pageSizes:C}=(0,o.usePaginationInfo)(v,l?.length,T,f?.length),I=(0,a.useMemo)(()=>new Map(l?.map(e=>[e.uuid,e])),[l]),D=[{header:t("billDate","Bill date"),key:"billDate"},{header:t("invoiceNumber","Invoice number"),key:"invoiceNumber"},{header:t("billedItems","Billed items"),key:"billedItems"},{header:t("billTotal","Bill total"),key:"billTotal"}],M=f?.map(e=>({id:e.uuid,uuid:e.uuid,billTotal:(0,m.aL)(e?.totalAmount,w),billDate:(0,o.formatDate)((0,o.parseDate)(e.dateCreated),{mode:"wide"}),invoiceNumber:e.receiptNumber,billedItems:e?.lineItems?.map(e=>e?.billableService||e?.item).filter(Boolean).join(" & ")}));return p?i().createElement("div",{className:"-esm-billing__bill-history__loaderContainer___KePhb"},i().createElement(r.DataTableSkeleton,{showHeader:!1,showToolbar:!1,zebra:!0})):d?i().createElement("div",{className:"-esm-billing__bill-history__errorContainer___j-G7W"},i().createElement(r.Layer,null,i().createElement(o.ErrorState,{error:d,headerTitle:t("billList","Bill list")}))):0===l.length?i().createElement(r.Layer,{className:"-esm-billing__bill-history__emptyStateContainer___udoC8"},i().createElement(r.Tile,{className:"-esm-billing__bill-history__tile___hj7H+"},i().createElement("div",{className:"-esm-billing__bill-history__illo___SEucs"},i().createElement(o.EmptyCardIllustration,null)),i().createElement("p",{className:"-esm-billing__bill-history__content___YJZdv"},t("noBillsToDisplay","There are no bills to display.")),i().createElement(r.Button,{onClick:()=>(0,o.launchWorkspace2)("patient-chart-billing-form-workspace",{patientUuid:e,onMutate:g}),kind:"ghost"},t("createBill","Create bill")))):i().createElement("div",null,i().createElement(o.CardHeader,{title:t("billingHistory","Billing History")},h&&i().createElement("span",null,i().createElement(r.InlineLoading,{status:"active"})),i().createElement(r.Button,{kind:"ghost",onClick:()=>(0,o.launchWorkspace2)("patient-chart-billing-form-workspace",{patientUuid:e,onMutate:g}),renderIcon:s.OM},t("createBill","Create bill"))),i().createElement("div",{className:"-esm-billing__bill-history__billHistoryContainer___yTHIn"},i().createElement(r.DataTable,{isSortable:!0,rows:M,headers:D,size:"md",useZebraStyles:!0},({getExpandHeaderProps:l,getHeaderProps:a,getRowProps:n,getTableContainerProps:s,getTableProps:u,headers:m,rows:d})=>i().createElement(r.TableContainer,s,i().createElement(r.Table,{className:"-esm-billing__bill-history__table___TYYPG",...u(),"aria-label":t("billList","Bill list")},i().createElement(r.TableHead,null,i().createElement(r.TableRow,null,i().createElement(r.TableExpandHeader,{enableToggle:!0,...l()}),m.map((e,t)=>i().createElement(r.TableHeader,{key:t,...a({header:e})},e.header)),i().createElement(r.TableHeader,{"aria-label":(0,o.getCoreTranslation)("actions")}))),i().createElement(r.TableBody,null,d.map((t,l)=>{let a=I.get(t.id);return i().createElement(i().Fragment,{key:t.id},i().createElement(r.TableExpandRow,n({row:t}),t.cells.map(e=>i().createElement(r.TableCell,{key:e.id,className:"-esm-billing__bill-history__tableCells___ySiYL"},e.value)),i().createElement(r.TableCell,{className:"cds--table-column-menu"},a?.status===c.ih.PENDING&&i().createElement(b,{bill:a,patientUuid:e,onMutate:g}))),t.isExpanded?i().createElement(r.TableExpandedRow,{colSpan:m.length+2},i().createElement("div",{className:"-esm-billing__bill-history__container___6+v1E",key:l},i().createElement(_.A,{bill:a,onMutate:g,isLoadingBill:h}))):i().createElement(r.TableExpandedRow,{className:"-esm-billing__bill-history__hiddenRow___p94zi",colSpan:m.length+2}))}))))),E&&i().createElement(r.Pagination,{forwardText:t("nextPage","Next page"),backwardText:t("previousPage","Previous page"),page:T,pageSize:k,pageSizes:C,totalItems:l.length,className:"-esm-billing__bill-history__pagination___Tosqe",size:"md",onChange:({page:e,pageSize:t})=>{e!==T&&y(e),N(t)}})))}},2373(e,t,l){"use strict";l.d(t,{Zz:()=>i,aL:()=>n,o_:()=>r});var a=l(9124);function i(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let n=(e,t)=>{let l=window.i18next?.language?.substring(0,2)??"",a=new Intl.NumberFormat(l,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(a=`(${a})`),a},r=(e,t)=>{switch(e){case"male":return(0,a.getCoreTranslation)("male");case"female":return(0,a.getCoreTranslation)("female");case"other":return(0,a.getCoreTranslation)("other");case"unknown":return(0,a.getCoreTranslation)("unknown");default:return e}}},1772(e,t,l){"use strict";l.d(t,{aL:()=>a.aL,o_:()=>a.o_});var a=l(2373)},6762(e,t,l){"use strict";l.d(t,{A:()=>g});var a=l(5275),i=l.n(a),n=l(6942),r=l.n(n),s=l(8395),o=l(4751),u=l.n(o),m=l(1752),c=l(9124),d=l(5084);let b="-esm-billing__line-item-action-menu__menuitem___lOuJD",_=({bill:e,item:t,onMutate:l,showDiscountRequest:n,onDiscountRequest:r,showRefundRequest:o,onRefundRequest:u})=>{let{t:_}=(0,s.useTranslation)(),p=(0,c.useLayoutType)(),h=(0,a.useCallback)(()=>{let a=(0,c.showModal)("edit-bill-line-item-modal",{bill:e,item:t,closeModal:()=>a(),onMutate:l})},[e,t,l]),g=(0,a.useCallback)(()=>{let e=(0,c.showModal)("delete-line-item-confirmation-modal",{item:t,closeModal:()=>e(),onMutate:l})},[t,l]),E=e?.status===d.ih.PENDING;return i().createElement(m.Layer,null,i().createElement(m.OverflowMenu,{align:"left",flipped:!0,size:(0,c.isDesktop)(p)?"sm":"lg","data-testid":`action-menu-${t.uuid}`},i().createElement(m.OverflowMenuItem,{className:b,"data-testid":`edit-button-${t.uuid}`,disabled:!E,itemText:(0,c.getCoreTranslation)("edit"),onClick:h}),i().createElement(m.OverflowMenuItem,{className:b,"data-testid":`delete-button-${t.uuid}`,disabled:!E,isDelete:!0,itemText:(0,c.getCoreTranslation)("delete"),onClick:g}),n&&i().createElement(m.OverflowMenuItem,{className:b,"data-testid":`request-discount-button-${t.uuid}`,itemText:_("requestDiscount","Request discount"),onClick:r}),o&&i().createElement(m.OverflowMenuItem,{className:b,"data-testid":`request-refund-button-${t.uuid}`,itemText:_("requestRefund","Request refund"),onClick:u})))};var p=l(1772);let h=e=>(e.price??0)*(e.quantity??0),g=({bill:e,isLoadingBill:t,onMutate:l,viewOnly:n})=>{let{t:o}=(0,s.useTranslation)(),{defaultCurrency:b}=(0,c.useConfig)(),g=(0,c.useLayoutType)(),E=(0,a.useMemo)(()=>e?.lineItems??[],[e?.lineItems]),y=(0,c.isDesktop)(g)?"sm":"lg",[f,T]=(0,a.useState)(""),v=(0,c.useDebounce)(f),w=(0,a.useMemo)(()=>(e?.discounts??[]).filter(e=>!e.voided),[e?.discounts]),k=e?.status===d.ih.PENDING||e?.status===d.ih.POSTED,N=w.some(e=>!e.lineItemUuid),C=(0,a.useMemo)(()=>(e?.refunds??[]).filter(e=>!e.voided),[e?.refunds]),I=e?.status===d.ih.PAID||e?.status===d.ih.PARTIALLY_REFUNDED||e?.status===d.ih.REFUND_REQUESTED,D=C.filter(e=>e.status===d.fH.REQUESTED||e.status===d.fH.APPROVED),M=D.some(e=>!e.lineItemUuid),S=(0,a.useMemo)(()=>v?u().filter(v,E,{extract:e=>`${e.billableService} ${e.item}`}).sort((e,t)=>e.score-t.score).map(e=>e.original):E,[v,E]),x=(0,a.useMemo)(()=>new Map(E.map(e=>[e.uuid,e])),[E]),L=[{header:o("number","Number"),key:"no",width:7},{header:o("billItem","Bill item"),key:"billItem",width:25},{header:o("status","Status"),key:"status",width:25},{header:o("quantity","Quantity"),key:"quantity",width:15},{header:o("price","Price"),key:"price",width:24},{header:o("total","Total"),key:"total",width:15}],R=(0,a.useMemo)(()=>S?.map((e,t)=>({no:`${t+1}`,id:`${e.uuid}`,billItem:e.billableService?e.billableService:e?.item,status:e.status,quantity:e.quantity,price:(0,p.aL)(e.price,b),total:(0,p.aL)(h(e),b)}))??[],[S,b]);return t?i().createElement(m.DataTableSkeleton,{"data-testid":"loader",columnCount:L.length,showHeader:!1,showToolbar:!1,zebra:!0}):i().createElement("div",{className:"-esm-billing__invoice-table__lineItemsWrapper___ABU3I"},i().createElement(m.DataTable,{headers:L,rows:R,size:y,useZebraStyles:!0,overflowMenuOnHover:(0,c.isDesktop)(g)},({rows:t,headers:a,getRowProps:s,getTableProps:u})=>i().createElement(m.TableContainer,{description:i().createElement("span",{className:"-esm-billing__invoice-table__tableDescription___JKz3j"},i().createElement("span",null,o("itemsToBeBilled","Items to be billed"))),title:o("lineItems","Line items")},!n&&i().createElement(m.TableToolbarSearch,{className:"-esm-billing__invoice-table__searchbox___oxEnj",expanded:!0,onChange:e=>T(e.target.value),placeholder:o("searchThisTable","Search this table"),size:y}),i().createElement(m.Table,{...u(),"aria-label":o("invoiceLineItems","Invoice line items"),className:r()("-esm-billing__invoice-table__invoiceTable___2hd71","billingTable")},i().createElement(m.TableHead,null,i().createElement(m.TableRow,null,a.map(e=>i().createElement(m.TableHeader,{key:e.key},e.header)),!n&&i().createElement(m.TableHeader,{"aria-label":(0,c.getCoreTranslation)("actions")}))),i().createElement(m.TableBody,null,t.map(t=>{let a,r,o=x.get(t.id);return i().createElement(m.TableRow,{key:t.id,...s({row:t})},t.cells.map(e=>i().createElement(m.TableCell,{key:e.id},e.value)),!n&&i().createElement(m.TableCell,{className:"cds--table-column-menu"},o&&i().createElement(_,{bill:e,item:o,onMutate:l,showDiscountRequest:k&&!N&&(a=o.uuid,!w.some(e=>e.lineItemUuid===a)),onDiscountRequest:()=>{let t;t=(0,c.showModal)("request-discount-modal",{bill:{uuid:e.uuid,total:e.totalAmount??0,amountDue:Math.max(0,(e.netAmount??e.totalAmount??0)-(e.tenderedAmount??0)),receiptNumber:e.receiptNumber,lineItemCount:E.length},lineItem:{uuid:o.uuid,display:o.item||o.billableService||"--",total:h(o),quantity:o.quantity,price:o.price},onMutate:()=>l?.(),closeModal:()=>t()})},showRefundRequest:I&&!M&&(r=o.uuid??"",!D.some(e=>e.lineItemUuid===r))&&!!o.uuid,onRefundRequest:()=>(t=>{if(!t.uuid)return;let a=h(t),i=a-C.filter(e=>e.lineItemUuid===t.uuid&&(e.status===d.fH.APPROVED||e.status===d.fH.COMPLETED)).reduce((e,t)=>e+t.refundAmount,0),n=(0,c.showModal)("request-refund-modal",{bill:{uuid:e.uuid,total:e.totalAmount??0,amountAfterDiscount:e.netAmount??e.totalAmount??0},lineItem:{uuid:t.uuid,display:t.item||t.billableService||"--",total:a,quantity:t.quantity,price:t.price},remainingRefundable:Math.max(0,i),onMutate:()=>l?.(),closeModal:()=>n()})})(o)})))}))))),S?.length===0&&i().createElement("div",{className:"-esm-billing__invoice-table__filterEmptyState___ZtVBH"},i().createElement(m.Layer,null,i().createElement(m.Tile,{className:"-esm-billing__invoice-table__filterEmptyStateTile___j92yY"},i().createElement("p",{className:"-esm-billing__invoice-table__filterEmptyStateContent___41NoP"},o("noMatchingItemsToDisplay","No matching items to display")),!n&&i().createElement("p",{className:"-esm-billing__invoice-table__filterEmptyStateHelper___+DQR2"},o("checkFilters","Check the filters above"))))))}},6942(e){!function(){"use strict";var t={}.hasOwnProperty;function l(){for(var e="",i=0;i<arguments.length;i++){var n=arguments[i];n&&(e=a(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return l.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var i="";for(var n in e)t.call(e,n)&&e[n]&&(i=a(i,n));return i}(n)))}return e}function a(e,t){return t?e?e+" "+t:e+t:e}e.exports?(l.default=l,e.exports=l):"function"==typeof define&&"object"==typeof define.amd&&define.amd?define("classnames",[],function(){return l}):window.classNames=l}()}}]);
package/dist/2269.js CHANGED
@@ -1 +1 @@
1
- (globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["2269"],{2373(e,t,l){"use strict";l.d(t,{Zz:()=>n,aL:()=>r,o_:()=>i});var a=l(3137);function n(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let r=(e,t)=>{let l=window.i18next?.language?.substring(0,2)??"",a=new Intl.NumberFormat(l,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(a=`(${a})`),a},i=(e,t)=>{switch(e){case"male":return(0,a.getCoreTranslation)("male");case"female":return(0,a.getCoreTranslation)("female");case"other":return(0,a.getCoreTranslation)("other");case"unknown":return(0,a.getCoreTranslation)("unknown");default:return e}}},1772(e,t,l){"use strict";l.d(t,{aL:()=>a.aL,o_:()=>a.o_});var a=l(2373)},2220(e,t,l){"use strict";l.r(t),l.d(t,{default:()=>H});var a=l(5275),n=l.n(a),r=l(1752),i=l(8395),s=l(3137),d=l(1772);let u="-esm-billing__bill-line-items-table__right___6w4Y-",m=({lineItems:e})=>{let{t}=(0,i.useTranslation)(),{defaultCurrency:l}=(0,s.useConfig)();return n().createElement("section",{className:"-esm-billing__bill-line-items-table__ledger___EJC5W"},n().createElement("h3",{className:"-esm-billing__bill-line-items-table__ledgerHeading___CifwU"},t("lineItems","Line items")),n().createElement("table",{className:"-esm-billing__bill-line-items-table__ledgerTable___sK9UW"},n().createElement("thead",null,n().createElement("tr",null,n().createElement("th",null,t("item","Item")),n().createElement("th",null,t("qty","Qty")),n().createElement("th",{className:u},t("price","Price")))),n().createElement("tbody",null,e.map((e,t)=>n().createElement("tr",{key:e.uuid??t},n().createElement("td",{className:"-esm-billing__bill-line-items-table__itemName___+cgyW"},e.item||e.billableService||"--"),n().createElement("td",null,e.quantity),n().createElement("td",{className:u},(0,d.aL)(e.price??0,l)))))))},c="-esm-billing__bill-payments-table__right___kF7ai",_=({payments:e})=>{let{t}=(0,i.useTranslation)(),{defaultCurrency:l}=(0,s.useConfig)();return 0===e.length?null:n().createElement("section",{className:"-esm-billing__bill-payments-table__ledger___spI9F"},n().createElement("h3",{className:"-esm-billing__bill-payments-table__ledgerHeading___u2Fy+"},t("payments","Payments")),n().createElement("table",{className:"-esm-billing__bill-payments-table__ledgerTable___fDtLs"},n().createElement("thead",null,n().createElement("tr",null,n().createElement("th",null,t("method","Method")),n().createElement("th",null,t("date","Date")),n().createElement("th",{className:c},t("tendered","Tendered")))),n().createElement("tbody",null,e.map(e=>n().createElement("tr",{key:e.uuid},n().createElement("td",null,n().createElement("span",{className:"-esm-billing__bill-payments-table__paymentKind___VmhoJ"},e.instanceType?.name??"--")),n().createElement("td",null,n().createElement("span",{className:"-esm-billing__bill-payments-table__paymentDate___1IUvg"},e.dateCreated?(0,s.formatDate)(new Date(e.dateCreated),{mode:"wide"}):"--")),n().createElement("td",{className:c},(0,d.aL)(e.amountTendered??0,l)))))))};var o=l(6942),f=l.n(o);let p="-esm-billing__bill-totals-summary__totalsRow___y13jP",E="-esm-billing__bill-totals-summary__totalsRowAdd___ZFaIZ",b="-esm-billing__bill-totals-summary__totalsRule___R6Ti5",g="-esm-billing__bill-totals-summary__totalsRuleStrong___Em9ac",y="-esm-billing__bill-totals-summary__totalsOutstanding___kDSpo",v="-esm-billing__bill-totals-summary__totalsOutstandingAmount___A0KI+",h=({subtotal:e,paymentsTotal:t,totalApprovedRefunds:l,approvedRefunds:a,completedRefunds:r,totalCompletedRefunds:u})=>{let{t:m}=(0,i.useTranslation)(),{defaultCurrency:c}=(0,s.useConfig)();return n().createElement("section",{className:"-esm-billing__bill-totals-summary__totals___SyyVy"},n().createElement("div",{className:f()(p,"-esm-billing__bill-totals-summary__totalsSubtotal___ldvSS")},n().createElement("span",null,m("billTotal","Bill total")),n().createElement("span",null,(0,d.aL)(e,c))),n().createElement("div",{className:f()(p,E)},n().createElement("span",null,m("totalPaid","Total paid")),n().createElement("span",null,(0,d.aL)(t,c))),r.length>0&&n().createElement(n().Fragment,null,n().createElement("hr",{className:b}),r.map(e=>n().createElement("div",{key:e.uuid,className:f()(p,E)},n().createElement("span",null,"✓ ",m("refundPaidOut","Refund paid out")),n().createElement("span",null,(0,d.aL)(e.refundAmount,c)))),n().createElement("hr",{className:g}),n().createElement("div",{className:f()(p,y)},n().createElement("span",null,m("totalRefunded","Total refunded")),n().createElement("span",{className:v},(0,d.aL)(u,c)))),a.length>0&&n().createElement(n().Fragment,null,n().createElement("hr",{className:b}),a.map(e=>n().createElement("div",{key:e.uuid,className:f()(p,"-esm-billing__bill-totals-summary__totalsRowMinus___gK+AS")},n().createElement("span",null,"↑ ",m("approvedRefundPendingPayout","Approved refund (pending payout)")),n().createElement("span",null,(0,d.aL)(e.refundAmount,c)))),n().createElement("hr",{className:g}),n().createElement("div",{className:f()(p,y)},n().createElement("span",null,m("totalPendingPayout","Total pending payout")),n().createElement("span",{className:v},(0,d.aL)(l,c)))))},R=n().memo(({bill:e,lineItems:t,payments:l,paymentsTotal:a,subtotal:d,totalApprovedRefunds:u,approvedRefunds:c,completedRefunds:o,totalCompletedRefunds:f})=>{let{t:p}=(0,i.useTranslation)();return n().createElement("aside",{className:"-esm-billing__bill-receipt-rail__receipt___mlrZ5"},n().createElement("div",{className:"-esm-billing__bill-receipt-rail__patient___d9g-B"},n().createElement("div",null,n().createElement("p",{className:"-esm-billing__bill-receipt-rail__patientName___beQLI"},e.patient?.display),n().createElement("p",{className:"-esm-billing__bill-receipt-rail__patientId___T+KHs"},p("receiptNumber","Receipt #"),": ",e.receiptNumber)),e.status&&n().createElement(r.Tag,{type:"blue",size:"sm"},p(String(e.status).toLowerCase(),String(e.status)))),n().createElement("dl",{className:"-esm-billing__bill-receipt-rail__meta___9EGgG"},n().createElement("dt",null,p("issued","Issued")),n().createElement("dd",null,e.dateCreated?(0,s.formatDate)((0,s.parseDate)(e.dateCreated),{mode:"wide"}):"--"),n().createElement("dt",null,p("cashier","Cashier")),n().createElement("dd",null,e.cashier?.display??"--")),n().createElement(m,{lineItems:t}),n().createElement(_,{payments:l}),n().createElement(h,{subtotal:d,paymentsTotal:a,totalApprovedRefunds:u,approvedRefunds:c,completedRefunds:o,totalCompletedRefunds:f}))});var N=l(5084);let C="-esm-billing__refund-card__confirmRow___SRwSx",w="-esm-billing__refund-card__confirmCopy___9Btfv",k="-esm-billing__refund-card__confirmButtons___OW-te",T={REQUESTED:"gray",APPROVED:"green",REJECTED:"red",COMPLETED:"purple"},S=({refund:e,lineItems:t,processingRefundId:l,disabled:a,rejectingId:u,voidingId:m,onApprove:c,onStartReject:_,onCancelReject:o,onConfirmReject:p,onStartVoid:E,onCancelVoid:b,onConfirmVoid:g})=>{let{t:y}=(0,i.useTranslation)(),{defaultCurrency:v}=(0,s.useConfig)(),h=u===e.uuid,R=m===e.uuid,S=!h&&!R,A=f()("-esm-billing__refund-card__card___r7KR3",{"-esm-billing__refund-card__cardRequested___ZKm6E":e.status===N.fH.REQUESTED,"-esm-billing__refund-card__cardApproved___4rM-D":e.status===N.fH.APPROVED,"-esm-billing__refund-card__cardRejected___+6rcc":e.status===N.fH.REJECTED,"-esm-billing__refund-card__cardCompleted___AXcIs":e.status===N.fH.COMPLETED}),D=e.lineItemUuid?t.find(t=>t.uuid===e.lineItemUuid)?.item||t.find(t=>t.uuid===e.lineItemUuid)?.billableService||"--":y("wholeBill","Whole bill");return n().createElement("article",{className:A},n().createElement("header",{className:"-esm-billing__refund-card__cardTop___5INoY"},n().createElement("div",{className:"-esm-billing__refund-card__cardScope___+y8dF"},n().createElement("span",{className:"-esm-billing__refund-card__cardScopeName___PL1wT"},D)),e.status!==N.fH.REQUESTED&&n().createElement(r.Tag,{type:T[e.status],size:"sm"},y(e.status.toLowerCase(),e.status))),n().createElement("div",{className:"-esm-billing__refund-card__cardFigure___zKm7d"},n().createElement("span",{className:f()("-esm-billing__refund-card__cardAmount___n0v+p",{"-esm-billing__refund-card__cardAmountVoided___tEQvN":e.status===N.fH.REJECTED})},n().createElement("span",{className:"-esm-billing__refund-card__cardAmountMinus___vGAkH"},"−"),(0,d.aL)(e.refundAmount,v))),n().createElement("div",null,y("reasonForRefund","Reason for refund"),": ",n().createElement("p",{className:"-esm-billing__refund-card__cardJustification___Ed87K"},e.reason)),e.status===N.fH.APPROVED&&n().createElement("p",{className:"-esm-billing__refund-card__awaitingLabel___CCzWI"},y("awaitingCashierProcessing","Awaiting cashier processing")),n().createElement("footer",{className:"-esm-billing__refund-card__cardFooter___7FaFL"},n().createElement("div",{className:"-esm-billing__refund-card__cardByline___KrYTS"},y("requestedBy","Requested by")," ",n().createElement("strong",null,e.initiator?.display),n().createElement("span",{className:"-esm-billing__refund-card__cardBylineSep___iBty6"},"\xb7"),(0,s.formatDate)((0,s.parseDate)(e.dateCreated),{mode:"wide"})),n().createElement("div",{className:"-esm-billing__refund-card__cardActions___aipyg"},S&&e.status===N.fH.REQUESTED&&n().createElement(n().Fragment,null,n().createElement(r.Button,{kind:"danger--tertiary",size:"sm",disabled:a||!!l,onClick:()=>_(e.uuid)},y("reject","Reject")),n().createElement(r.Button,{kind:"primary",size:"sm",disabled:a||!!l,onClick:()=>c(e)},y("approve","Approve"))),S&&n().createElement(r.Button,{kind:"danger",size:"sm",disabled:a||!!l,onClick:()=>E(e.uuid)},y("delete","Delete")),h&&n().createElement("div",{className:C},n().createElement("span",{className:w},y("rejectConfirmRefund","Reject this refund?")),n().createElement("div",{className:k},n().createElement(r.Button,{kind:"ghost",size:"sm",onClick:o},(0,s.getCoreTranslation)("cancel")),n().createElement(r.Button,{kind:"danger",size:"sm",disabled:a||!!l,onClick:()=>p(e)},y("confirmReject","Confirm reject")))),R&&n().createElement("div",{className:C},n().createElement("span",{className:w},y("deleteConfirmRefund","Delete this refund?")),n().createElement("div",{className:k},n().createElement(r.Button,{kind:"ghost",size:"sm",onClick:b},(0,s.getCoreTranslation)("cancel")),n().createElement(r.Button,{kind:"danger",size:"sm",disabled:a||!!l,onClick:()=>g(e)},y("confirmDelete","Confirm delete")))))))},A="-esm-billing__refund-review-stack__groupHeader___h2s6z",D="-esm-billing__refund-review-stack__groupTitle___VL3Q4",I="-esm-billing__refund-review-stack__groupCount___FBPO0",P="-esm-billing__refund-review-stack__stack___gSytw",L=n().memo(({requestedRefunds:e,decidedRefunds:t,lineItems:l,processingRefundId:a,disabled:r,rejectingId:s,voidingId:d,onApprove:u,onStartReject:m,onCancelReject:c,onConfirmReject:_,onStartVoid:o,onCancelVoid:f,onConfirmVoid:p})=>{let{t:E}=(0,i.useTranslation)(),b=e=>n().createElement(S,{key:e.uuid,refund:e,lineItems:l,processingRefundId:a,disabled:r,rejectingId:s,voidingId:d,onApprove:u,onStartReject:m,onCancelReject:c,onConfirmReject:_,onStartVoid:o,onCancelVoid:f,onConfirmVoid:p});return n().createElement("section",{className:"-esm-billing__refund-review-stack__review___1ymio"},e.length>0&&n().createElement("div",null,n().createElement("div",{className:A},n().createElement("h3",{className:D},E("requestedRefunds","Requested refunds")),n().createElement("span",{className:I},e.length)),n().createElement("div",{className:P},e.map(b))),t.length>0&&n().createElement("div",null,n().createElement("div",{className:A},n().createElement("h3",{className:D},E("decidedRefunds","Decided refunds")),n().createElement("span",{className:I},t.length)),n().createElement("div",{className:P},t.map(b))))});var B=l(6199),F=l(8683);let j=e=>e?.responseBody?.error?.message??(e instanceof Error?e.message:String(e)),H=({closeModal:e,bill:t,onMutate:l})=>{let{t:d}=(0,i.useTranslation)(),u=(0,s.useSession)(),{bill:m,mutate:c,isLoading:_,isValidating:o,error:f}=(0,B.DX)(t.uuid,!1),p=m??t,[E,b]=(0,a.useState)(null),[g,y]=(0,a.useState)(null),[v,h]=(0,a.useState)(null),{activeRefunds:C,requestedRefunds:w,decidedRefunds:k,approvedRefunds:T,completedRefunds:S,totalApprovedRefunds:A,totalCompletedRefunds:D,lineItems:I,payments:P,paymentsTotal:H,subtotal:O}=function(e){let t=(0,a.useMemo)(()=>(e.refunds??[]).filter(e=>!e.voided),[e.refunds]),{requestedRefunds:l,decidedRefunds:n,approvedRefunds:r,completedRefunds:i,totalApprovedRefunds:s,totalCompletedRefunds:d,totalCommittedRefunds:u,lineItems:m,payments:c,paymentsTotal:_,subtotal:o}=(0,a.useMemo)(()=>{let l=t.filter(e=>e.status===N.fH.REQUESTED),a=t.filter(e=>e.status!==N.fH.REQUESTED),n=t.filter(e=>e.status===N.fH.APPROVED),r=t.filter(e=>e.status===N.fH.COMPLETED),i=n.reduce((e,t)=>e+t.refundAmount,0),s=r.reduce((e,t)=>e+t.refundAmount,0),d=(e.lineItems??[]).filter(e=>!e.voided),u=(e.payments??[]).filter(e=>!e.voided),m=u.reduce((e,t)=>e+(t.amountTendered??0),0);return{requestedRefunds:l,decidedRefunds:a,approvedRefunds:n,completedRefunds:r,totalApprovedRefunds:i,totalCompletedRefunds:s,totalCommittedRefunds:i+s,lineItems:d,payments:u,paymentsTotal:m,subtotal:e.amountAfterDiscount}},[t,e.lineItems,e.payments,e.amountAfterDiscount]);return{activeRefunds:t,requestedRefunds:l,decidedRefunds:n,approvedRefunds:r,completedRefunds:i,totalApprovedRefunds:s,totalCompletedRefunds:d,totalCommittedRefunds:u,lineItems:m,payments:c,paymentsTotal:_,subtotal:o}}(p),U=(0,a.useCallback)(async e=>{let t=e=>e===N.fH.REQUESTED||e===N.fH.APPROVED||e===N.fH.COMPLETED,a=C.filter(l=>l.uuid!==e.uuid&&t(l.status)).reduce((e,t)=>e+t.refundAmount,0);if(null!=e.lineItemUuid){let l=I.find(t=>t.uuid===e.lineItemUuid);if(null!=l){let a=l.price*l.quantity;if(C.filter(l=>l.uuid!==e.uuid&&l.lineItemUuid===e.lineItemUuid&&t(l.status)).reduce((e,t)=>e+t.refundAmount,0)+e.refundAmount>a)return void(0,s.showSnackbar)({title:d("approveBlockedRefund","Cannot approve refund"),subtitle:d("approveBlockedExceedsLineTotal","Approving this refund would exceed the line item total."),kind:"error"})}}if(a+e.refundAmount>p.amountAfterDiscount)return void(0,s.showSnackbar)({title:d("approveBlockedRefund","Cannot approve refund"),subtitle:d("approveBlockedExceedsTotal","Approving this refund would exceed the bill total."),kind:"error"});b(e.uuid);try{await (0,F.eK)(e.uuid,{status:N.fH.APPROVED,approver:u.user?.uuid}),(0,s.showSnackbar)({title:d("refundApproved","Refund approved"),kind:"success"}),await c(),l()}catch(e){(0,s.showSnackbar)({title:d("approveFailed","Approve failed"),subtitle:j(e),kind:"error"})}finally{b(null)}},[C,p.amountAfterDiscount,I,d,u.user?.uuid,c,l]),V=(0,a.useCallback)(async e=>{b(e.uuid);try{await (0,F.eK)(e.uuid,{status:N.fH.REJECTED,approver:u.user?.uuid}),(0,s.showSnackbar)({title:d("refundRejected","Refund rejected"),kind:"success"}),await c(),l()}catch(e){(0,s.showSnackbar)({title:d("rejectFailed","Reject failed"),subtitle:j(e),kind:"error"})}finally{b(null),y(null)}},[d,u.user?.uuid,c,l]),z=(0,a.useCallback)(async e=>{b(e.uuid);try{await (0,F.zb)(e.uuid,"Voided by admin"),(0,s.showSnackbar)({title:d("refundDeleted","Refund deleted"),kind:"success"}),await c(),l()}catch(e){(0,s.showSnackbar)({title:d("deleteFailed","Delete failed"),subtitle:j(e),kind:"error"})}finally{b(null),h(null)}},[d,c,l]),K=!!E||_||o;return n().createElement(n().Fragment,null,n().createElement(r.ModalHeader,{closeModal:e,title:d("reviewRefunds","Review refunds")}),n().createElement(r.ModalBody,null,f?n().createElement(r.InlineNotification,{kind:"error",title:d("billLoadFailed","Failed to load bill"),subtitle:d("billLoadFailedSubtitle","Bill data could not be loaded. Please close and try again."),lowContrast:!0,hideCloseButton:!0}):n().createElement(n().Fragment,null,K&&n().createElement(r.ProgressBar,{label:"",hideLabel:!0}),n().createElement("div",{className:"-esm-billing__review-bill-refunds-modal__layout___gUa0x"},n().createElement(R,{bill:p,lineItems:I,payments:P,paymentsTotal:H,subtotal:O,totalApprovedRefunds:A,approvedRefunds:T,completedRefunds:S,totalCompletedRefunds:D}),n().createElement(L,{requestedRefunds:w,decidedRefunds:k,lineItems:I,processingRefundId:E,disabled:_||o,rejectingId:g,voidingId:v,onApprove:U,onStartReject:y,onCancelReject:()=>y(null),onConfirmReject:V,onStartVoid:h,onCancelVoid:()=>h(null),onConfirmVoid:z})))))}},8683(e,t,l){"use strict";l.d(t,{KY:()=>s,eK:()=>u,qC:()=>d,zb:()=>m});var a=l(3137),n=l(7003);let r=`${n.B}billRefund`,i=`${n.B}bill`;function s({statuses:e}){let t=new URLSearchParams({refundStatus:e.join(","),v:"default"}),l=`${i}?${t.toString()}`,{data:n,isLoading:r,error:d,mutate:u,isValidating:m}=(0,a.useOpenmrsFetchAll)(l);return{bills:n??[],isLoading:r,error:d,mutate:u,isValidating:m}}async function d(e){return(await (0,a.openmrsFetch)(r,{method:"POST",headers:{"Content-Type":"application/json"},body:e})).data}async function u(e,t){return(await (0,a.openmrsFetch)(`${r}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:t})).data}async function m(e,t){await (0,a.openmrsFetch)(`${r}/${e}?reason=${encodeURIComponent(t)}`,{method:"DELETE"})}},6942(e){!function(){"use strict";var t={}.hasOwnProperty;function l(){for(var e="",n=0;n<arguments.length;n++){var r=arguments[n];r&&(e=a(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return l.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var n="";for(var r in e)t.call(e,r)&&e[r]&&(n=a(n,r));return n}(r)))}return e}function a(e,t){return t?e?e+" "+t:e+t:e}e.exports?(l.default=l,e.exports=l):"function"==typeof define&&"object"==typeof define.amd&&define.amd?define("classnames",[],function(){return l}):window.classNames=l}()}}]);
1
+ (globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["2269"],{2373(e,t,l){"use strict";l.d(t,{Zz:()=>n,aL:()=>r,o_:()=>i});var a=l(9124);function n(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let r=(e,t)=>{let l=window.i18next?.language?.substring(0,2)??"",a=new Intl.NumberFormat(l,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(a=`(${a})`),a},i=(e,t)=>{switch(e){case"male":return(0,a.getCoreTranslation)("male");case"female":return(0,a.getCoreTranslation)("female");case"other":return(0,a.getCoreTranslation)("other");case"unknown":return(0,a.getCoreTranslation)("unknown");default:return e}}},1772(e,t,l){"use strict";l.d(t,{aL:()=>a.aL,o_:()=>a.o_});var a=l(2373)},2220(e,t,l){"use strict";l.r(t),l.d(t,{default:()=>H});var a=l(5275),n=l.n(a),r=l(1752),i=l(8395),s=l(9124),d=l(1772);let u="-esm-billing__bill-line-items-table__right___6w4Y-",m=({lineItems:e})=>{let{t}=(0,i.useTranslation)(),{defaultCurrency:l}=(0,s.useConfig)();return n().createElement("section",{className:"-esm-billing__bill-line-items-table__ledger___EJC5W"},n().createElement("h3",{className:"-esm-billing__bill-line-items-table__ledgerHeading___CifwU"},t("lineItems","Line items")),n().createElement("table",{className:"-esm-billing__bill-line-items-table__ledgerTable___sK9UW"},n().createElement("thead",null,n().createElement("tr",null,n().createElement("th",null,t("item","Item")),n().createElement("th",null,t("qty","Qty")),n().createElement("th",{className:u},t("price","Price")))),n().createElement("tbody",null,e.map((e,t)=>n().createElement("tr",{key:e.uuid??t},n().createElement("td",{className:"-esm-billing__bill-line-items-table__itemName___+cgyW"},e.item||e.billableService||"--"),n().createElement("td",null,e.quantity),n().createElement("td",{className:u},(0,d.aL)(e.price??0,l)))))))},c="-esm-billing__bill-payments-table__right___kF7ai",_=({payments:e})=>{let{t}=(0,i.useTranslation)(),{defaultCurrency:l}=(0,s.useConfig)();return 0===e.length?null:n().createElement("section",{className:"-esm-billing__bill-payments-table__ledger___spI9F"},n().createElement("h3",{className:"-esm-billing__bill-payments-table__ledgerHeading___u2Fy+"},t("payments","Payments")),n().createElement("table",{className:"-esm-billing__bill-payments-table__ledgerTable___fDtLs"},n().createElement("thead",null,n().createElement("tr",null,n().createElement("th",null,t("method","Method")),n().createElement("th",null,t("date","Date")),n().createElement("th",{className:c},t("tendered","Tendered")))),n().createElement("tbody",null,e.map(e=>n().createElement("tr",{key:e.uuid},n().createElement("td",null,n().createElement("span",{className:"-esm-billing__bill-payments-table__paymentKind___VmhoJ"},e.instanceType?.name??"--")),n().createElement("td",null,n().createElement("span",{className:"-esm-billing__bill-payments-table__paymentDate___1IUvg"},e.dateCreated?(0,s.formatDate)(new Date(e.dateCreated),{mode:"wide"}):"--")),n().createElement("td",{className:c},(0,d.aL)(e.amountTendered??0,l)))))))};var o=l(6942),f=l.n(o);let p="-esm-billing__bill-totals-summary__totalsRow___y13jP",E="-esm-billing__bill-totals-summary__totalsRowAdd___ZFaIZ",b="-esm-billing__bill-totals-summary__totalsRule___R6Ti5",g="-esm-billing__bill-totals-summary__totalsRuleStrong___Em9ac",y="-esm-billing__bill-totals-summary__totalsOutstanding___kDSpo",v="-esm-billing__bill-totals-summary__totalsOutstandingAmount___A0KI+",h=({subtotal:e,paymentsTotal:t,totalApprovedRefunds:l,approvedRefunds:a,completedRefunds:r,totalCompletedRefunds:u})=>{let{t:m}=(0,i.useTranslation)(),{defaultCurrency:c}=(0,s.useConfig)();return n().createElement("section",{className:"-esm-billing__bill-totals-summary__totals___SyyVy"},n().createElement("div",{className:f()(p,"-esm-billing__bill-totals-summary__totalsSubtotal___ldvSS")},n().createElement("span",null,m("billTotal","Bill total")),n().createElement("span",null,(0,d.aL)(e,c))),n().createElement("div",{className:f()(p,E)},n().createElement("span",null,m("totalPaid","Total paid")),n().createElement("span",null,(0,d.aL)(t,c))),r.length>0&&n().createElement(n().Fragment,null,n().createElement("hr",{className:b}),r.map(e=>n().createElement("div",{key:e.uuid,className:f()(p,E)},n().createElement("span",null,"✓ ",m("refundPaidOut","Refund paid out")),n().createElement("span",null,(0,d.aL)(e.refundAmount,c)))),n().createElement("hr",{className:g}),n().createElement("div",{className:f()(p,y)},n().createElement("span",null,m("totalRefunded","Total refunded")),n().createElement("span",{className:v},(0,d.aL)(u,c)))),a.length>0&&n().createElement(n().Fragment,null,n().createElement("hr",{className:b}),a.map(e=>n().createElement("div",{key:e.uuid,className:f()(p,"-esm-billing__bill-totals-summary__totalsRowMinus___gK+AS")},n().createElement("span",null,"↑ ",m("approvedRefundPendingPayout","Approved refund (pending payout)")),n().createElement("span",null,(0,d.aL)(e.refundAmount,c)))),n().createElement("hr",{className:g}),n().createElement("div",{className:f()(p,y)},n().createElement("span",null,m("totalPendingPayout","Total pending payout")),n().createElement("span",{className:v},(0,d.aL)(l,c)))))},R=n().memo(({bill:e,lineItems:t,payments:l,paymentsTotal:a,subtotal:d,totalApprovedRefunds:u,approvedRefunds:c,completedRefunds:o,totalCompletedRefunds:f})=>{let{t:p}=(0,i.useTranslation)();return n().createElement("aside",{className:"-esm-billing__bill-receipt-rail__receipt___mlrZ5"},n().createElement("div",{className:"-esm-billing__bill-receipt-rail__patient___d9g-B"},n().createElement("div",null,n().createElement("p",{className:"-esm-billing__bill-receipt-rail__patientName___beQLI"},e.patient?.display),n().createElement("p",{className:"-esm-billing__bill-receipt-rail__patientId___T+KHs"},p("receiptNumber","Receipt #"),": ",e.receiptNumber)),e.status&&n().createElement(r.Tag,{type:"blue",size:"sm"},p(String(e.status).toLowerCase(),String(e.status)))),n().createElement("dl",{className:"-esm-billing__bill-receipt-rail__meta___9EGgG"},n().createElement("dt",null,p("issued","Issued")),n().createElement("dd",null,e.dateCreated?(0,s.formatDate)((0,s.parseDate)(e.dateCreated),{mode:"wide"}):"--"),n().createElement("dt",null,p("cashier","Cashier")),n().createElement("dd",null,e.cashier?.display??"--")),n().createElement(m,{lineItems:t}),n().createElement(_,{payments:l}),n().createElement(h,{subtotal:d,paymentsTotal:a,totalApprovedRefunds:u,approvedRefunds:c,completedRefunds:o,totalCompletedRefunds:f}))});var N=l(5084);let C="-esm-billing__refund-card__confirmRow___SRwSx",w="-esm-billing__refund-card__confirmCopy___9Btfv",k="-esm-billing__refund-card__confirmButtons___OW-te",T={REQUESTED:"gray",APPROVED:"green",REJECTED:"red",COMPLETED:"purple"},S=({refund:e,lineItems:t,processingRefundId:l,disabled:a,rejectingId:u,voidingId:m,onApprove:c,onStartReject:_,onCancelReject:o,onConfirmReject:p,onStartVoid:E,onCancelVoid:b,onConfirmVoid:g})=>{let{t:y}=(0,i.useTranslation)(),{defaultCurrency:v}=(0,s.useConfig)(),h=u===e.uuid,R=m===e.uuid,S=!h&&!R,A=f()("-esm-billing__refund-card__card___r7KR3",{"-esm-billing__refund-card__cardRequested___ZKm6E":e.status===N.fH.REQUESTED,"-esm-billing__refund-card__cardApproved___4rM-D":e.status===N.fH.APPROVED,"-esm-billing__refund-card__cardRejected___+6rcc":e.status===N.fH.REJECTED,"-esm-billing__refund-card__cardCompleted___AXcIs":e.status===N.fH.COMPLETED}),D=e.lineItemUuid?t.find(t=>t.uuid===e.lineItemUuid)?.item||t.find(t=>t.uuid===e.lineItemUuid)?.billableService||"--":y("wholeBill","Whole bill");return n().createElement("article",{className:A},n().createElement("header",{className:"-esm-billing__refund-card__cardTop___5INoY"},n().createElement("div",{className:"-esm-billing__refund-card__cardScope___+y8dF"},n().createElement("span",{className:"-esm-billing__refund-card__cardScopeName___PL1wT"},D)),e.status!==N.fH.REQUESTED&&n().createElement(r.Tag,{type:T[e.status],size:"sm"},y(e.status.toLowerCase(),e.status))),n().createElement("div",{className:"-esm-billing__refund-card__cardFigure___zKm7d"},n().createElement("span",{className:f()("-esm-billing__refund-card__cardAmount___n0v+p",{"-esm-billing__refund-card__cardAmountVoided___tEQvN":e.status===N.fH.REJECTED})},n().createElement("span",{className:"-esm-billing__refund-card__cardAmountMinus___vGAkH"},"−"),(0,d.aL)(e.refundAmount,v))),n().createElement("div",null,y("reasonForRefund","Reason for refund"),": ",n().createElement("p",{className:"-esm-billing__refund-card__cardJustification___Ed87K"},e.reason)),e.status===N.fH.APPROVED&&n().createElement("p",{className:"-esm-billing__refund-card__awaitingLabel___CCzWI"},y("awaitingCashierProcessing","Awaiting cashier processing")),n().createElement("footer",{className:"-esm-billing__refund-card__cardFooter___7FaFL"},n().createElement("div",{className:"-esm-billing__refund-card__cardByline___KrYTS"},y("requestedBy","Requested by")," ",n().createElement("strong",null,e.initiator?.display),n().createElement("span",{className:"-esm-billing__refund-card__cardBylineSep___iBty6"},"\xb7"),(0,s.formatDate)((0,s.parseDate)(e.dateCreated),{mode:"wide"})),n().createElement("div",{className:"-esm-billing__refund-card__cardActions___aipyg"},S&&e.status===N.fH.REQUESTED&&n().createElement(n().Fragment,null,n().createElement(r.Button,{kind:"danger--tertiary",size:"sm",disabled:a||!!l,onClick:()=>_(e.uuid)},y("reject","Reject")),n().createElement(r.Button,{kind:"primary",size:"sm",disabled:a||!!l,onClick:()=>c(e)},y("approve","Approve"))),S&&n().createElement(r.Button,{kind:"danger",size:"sm",disabled:a||!!l,onClick:()=>E(e.uuid)},y("delete","Delete")),h&&n().createElement("div",{className:C},n().createElement("span",{className:w},y("rejectConfirmRefund","Reject this refund?")),n().createElement("div",{className:k},n().createElement(r.Button,{kind:"ghost",size:"sm",onClick:o},(0,s.getCoreTranslation)("cancel")),n().createElement(r.Button,{kind:"danger",size:"sm",disabled:a||!!l,onClick:()=>p(e)},y("confirmReject","Confirm reject")))),R&&n().createElement("div",{className:C},n().createElement("span",{className:w},y("deleteConfirmRefund","Delete this refund?")),n().createElement("div",{className:k},n().createElement(r.Button,{kind:"ghost",size:"sm",onClick:b},(0,s.getCoreTranslation)("cancel")),n().createElement(r.Button,{kind:"danger",size:"sm",disabled:a||!!l,onClick:()=>g(e)},y("confirmDelete","Confirm delete")))))))},A="-esm-billing__refund-review-stack__groupHeader___h2s6z",D="-esm-billing__refund-review-stack__groupTitle___VL3Q4",I="-esm-billing__refund-review-stack__groupCount___FBPO0",P="-esm-billing__refund-review-stack__stack___gSytw",L=n().memo(({requestedRefunds:e,decidedRefunds:t,lineItems:l,processingRefundId:a,disabled:r,rejectingId:s,voidingId:d,onApprove:u,onStartReject:m,onCancelReject:c,onConfirmReject:_,onStartVoid:o,onCancelVoid:f,onConfirmVoid:p})=>{let{t:E}=(0,i.useTranslation)(),b=e=>n().createElement(S,{key:e.uuid,refund:e,lineItems:l,processingRefundId:a,disabled:r,rejectingId:s,voidingId:d,onApprove:u,onStartReject:m,onCancelReject:c,onConfirmReject:_,onStartVoid:o,onCancelVoid:f,onConfirmVoid:p});return n().createElement("section",{className:"-esm-billing__refund-review-stack__review___1ymio"},e.length>0&&n().createElement("div",null,n().createElement("div",{className:A},n().createElement("h3",{className:D},E("requestedRefunds","Requested refunds")),n().createElement("span",{className:I},e.length)),n().createElement("div",{className:P},e.map(b))),t.length>0&&n().createElement("div",null,n().createElement("div",{className:A},n().createElement("h3",{className:D},E("decidedRefunds","Decided refunds")),n().createElement("span",{className:I},t.length)),n().createElement("div",{className:P},t.map(b))))});var B=l(6199),F=l(8683);let j=e=>e?.responseBody?.error?.message??(e instanceof Error?e.message:String(e)),H=({closeModal:e,bill:t,onMutate:l})=>{let{t:d}=(0,i.useTranslation)(),u=(0,s.useSession)(),{bill:m,mutate:c,isLoading:_,isValidating:o,error:f}=(0,B.DX)(t.uuid,!1),p=m??t,[E,b]=(0,a.useState)(null),[g,y]=(0,a.useState)(null),[v,h]=(0,a.useState)(null),{activeRefunds:C,requestedRefunds:w,decidedRefunds:k,approvedRefunds:T,completedRefunds:S,totalApprovedRefunds:A,totalCompletedRefunds:D,lineItems:I,payments:P,paymentsTotal:H,subtotal:O}=function(e){let t=(0,a.useMemo)(()=>(e.refunds??[]).filter(e=>!e.voided),[e.refunds]),{requestedRefunds:l,decidedRefunds:n,approvedRefunds:r,completedRefunds:i,totalApprovedRefunds:s,totalCompletedRefunds:d,totalCommittedRefunds:u,lineItems:m,payments:c,paymentsTotal:_,subtotal:o}=(0,a.useMemo)(()=>{let l=t.filter(e=>e.status===N.fH.REQUESTED),a=t.filter(e=>e.status!==N.fH.REQUESTED),n=t.filter(e=>e.status===N.fH.APPROVED),r=t.filter(e=>e.status===N.fH.COMPLETED),i=n.reduce((e,t)=>e+t.refundAmount,0),s=r.reduce((e,t)=>e+t.refundAmount,0),d=(e.lineItems??[]).filter(e=>!e.voided),u=(e.payments??[]).filter(e=>!e.voided),m=u.reduce((e,t)=>e+(t.amountTendered??0),0);return{requestedRefunds:l,decidedRefunds:a,approvedRefunds:n,completedRefunds:r,totalApprovedRefunds:i,totalCompletedRefunds:s,totalCommittedRefunds:i+s,lineItems:d,payments:u,paymentsTotal:m,subtotal:e.amountAfterDiscount}},[t,e.lineItems,e.payments,e.amountAfterDiscount]);return{activeRefunds:t,requestedRefunds:l,decidedRefunds:n,approvedRefunds:r,completedRefunds:i,totalApprovedRefunds:s,totalCompletedRefunds:d,totalCommittedRefunds:u,lineItems:m,payments:c,paymentsTotal:_,subtotal:o}}(p),U=(0,a.useCallback)(async e=>{let t=e=>e===N.fH.REQUESTED||e===N.fH.APPROVED||e===N.fH.COMPLETED,a=C.filter(l=>l.uuid!==e.uuid&&t(l.status)).reduce((e,t)=>e+t.refundAmount,0);if(null!=e.lineItemUuid){let l=I.find(t=>t.uuid===e.lineItemUuid);if(null!=l){let a=l.price*l.quantity;if(C.filter(l=>l.uuid!==e.uuid&&l.lineItemUuid===e.lineItemUuid&&t(l.status)).reduce((e,t)=>e+t.refundAmount,0)+e.refundAmount>a)return void(0,s.showSnackbar)({title:d("approveBlockedRefund","Cannot approve refund"),subtitle:d("approveBlockedExceedsLineTotal","Approving this refund would exceed the line item total."),kind:"error"})}}if(a+e.refundAmount>p.amountAfterDiscount)return void(0,s.showSnackbar)({title:d("approveBlockedRefund","Cannot approve refund"),subtitle:d("approveBlockedExceedsTotal","Approving this refund would exceed the bill total."),kind:"error"});b(e.uuid);try{await (0,F.eK)(e.uuid,{status:N.fH.APPROVED,approver:u.user?.uuid}),(0,s.showSnackbar)({title:d("refundApproved","Refund approved"),kind:"success"}),await c(),l()}catch(e){(0,s.showSnackbar)({title:d("approveFailed","Approve failed"),subtitle:j(e),kind:"error"})}finally{b(null)}},[C,p.amountAfterDiscount,I,d,u.user?.uuid,c,l]),V=(0,a.useCallback)(async e=>{b(e.uuid);try{await (0,F.eK)(e.uuid,{status:N.fH.REJECTED,approver:u.user?.uuid}),(0,s.showSnackbar)({title:d("refundRejected","Refund rejected"),kind:"success"}),await c(),l()}catch(e){(0,s.showSnackbar)({title:d("rejectFailed","Reject failed"),subtitle:j(e),kind:"error"})}finally{b(null),y(null)}},[d,u.user?.uuid,c,l]),z=(0,a.useCallback)(async e=>{b(e.uuid);try{await (0,F.zb)(e.uuid,"Voided by admin"),(0,s.showSnackbar)({title:d("refundDeleted","Refund deleted"),kind:"success"}),await c(),l()}catch(e){(0,s.showSnackbar)({title:d("deleteFailed","Delete failed"),subtitle:j(e),kind:"error"})}finally{b(null),h(null)}},[d,c,l]),K=!!E||_||o;return n().createElement(n().Fragment,null,n().createElement(r.ModalHeader,{closeModal:e,title:d("reviewRefunds","Review refunds")}),n().createElement(r.ModalBody,null,f?n().createElement(r.InlineNotification,{kind:"error",title:d("billLoadFailed","Failed to load bill"),subtitle:d("billLoadFailedSubtitle","Bill data could not be loaded. Please close and try again."),lowContrast:!0,hideCloseButton:!0}):n().createElement(n().Fragment,null,K&&n().createElement(r.ProgressBar,{label:"",hideLabel:!0}),n().createElement("div",{className:"-esm-billing__review-bill-refunds-modal__layout___gUa0x"},n().createElement(R,{bill:p,lineItems:I,payments:P,paymentsTotal:H,subtotal:O,totalApprovedRefunds:A,approvedRefunds:T,completedRefunds:S,totalCompletedRefunds:D}),n().createElement(L,{requestedRefunds:w,decidedRefunds:k,lineItems:I,processingRefundId:E,disabled:_||o,rejectingId:g,voidingId:v,onApprove:U,onStartReject:y,onCancelReject:()=>y(null),onConfirmReject:V,onStartVoid:h,onCancelVoid:()=>h(null),onConfirmVoid:z})))))}},8683(e,t,l){"use strict";l.d(t,{KY:()=>s,eK:()=>u,qC:()=>d,zb:()=>m});var a=l(9124),n=l(7003);let r=`${n.B}billRefund`,i=`${n.B}bill`;function s({statuses:e}){let t=new URLSearchParams({refundStatus:e.join(","),v:"default"}),l=`${i}?${t.toString()}`,{data:n,isLoading:r,error:d,mutate:u,isValidating:m}=(0,a.useOpenmrsFetchAll)(l);return{bills:n??[],isLoading:r,error:d,mutate:u,isValidating:m}}async function d(e){return(await (0,a.openmrsFetch)(r,{method:"POST",headers:{"Content-Type":"application/json"},body:e})).data}async function u(e,t){return(await (0,a.openmrsFetch)(`${r}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:t})).data}async function m(e,t){await (0,a.openmrsFetch)(`${r}/${e}?reason=${encodeURIComponent(t)}`,{method:"DELETE"})}},6942(e){!function(){"use strict";var t={}.hasOwnProperty;function l(){for(var e="",n=0;n<arguments.length;n++){var r=arguments[n];r&&(e=a(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return l.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var n="";for(var r in e)t.call(e,r)&&e[r]&&(n=a(n,r));return n}(r)))}return e}function a(e,t){return t?e?e+" "+t:e+t:e}e.exports?(l.default=l,e.exports=l):"function"==typeof define&&"object"==typeof define.amd&&define.amd?define("classnames",[],function(){return l}):window.classNames=l}()}}]);
package/dist/3461.js CHANGED
@@ -1 +1 @@
1
- (globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["3461"],{3588(e,t,l){"use strict";l.r(t),l.d(t,{default:()=>R});var a=l(5275),n=l.n(a),s=l(1752),i=l(8395),r=l(3137),c=l(1772);let m="-esm-billing__bill-line-items-table__right___TBXRJ",_=({lineItems:e})=>{let{t}=(0,i.useTranslation)(),{defaultCurrency:l}=(0,r.useConfig)();return n().createElement("section",{className:"-esm-billing__bill-line-items-table__ledger___qbKwi"},n().createElement("h3",{className:"-esm-billing__bill-line-items-table__ledgerHeading___M7DcA"},t("lineItems","Line items")),n().createElement("table",{className:"-esm-billing__bill-line-items-table__ledgerTable___Lw3pG"},n().createElement("thead",null,n().createElement("tr",null,n().createElement("th",null,t("item","Item")),n().createElement("th",null,t("qty","Qty")),n().createElement("th",{className:m},t("price","Price")))),n().createElement("tbody",null,e.map((e,t)=>n().createElement("tr",{key:e.uuid??t},n().createElement("td",{className:"-esm-billing__bill-line-items-table__itemName___dKItf"},e.item||e.billableService||"--"),n().createElement("td",null,e.quantity),n().createElement("td",{className:m},(0,c.aL)(e.price??0,l)))))))},o="-esm-billing__bill-payments-table__right___qD-5O",u=({payments:e})=>{let{t}=(0,i.useTranslation)(),{defaultCurrency:l}=(0,r.useConfig)();return 0===e.length?null:n().createElement("section",{className:"-esm-billing__bill-payments-table__ledger___Qc+ke"},n().createElement("h3",{className:"-esm-billing__bill-payments-table__ledgerHeading___ilV8F"},t("payments","Payments")),n().createElement("table",{className:"-esm-billing__bill-payments-table__ledgerTable___lHxsT"},n().createElement("thead",null,n().createElement("tr",null,n().createElement("th",null,t("method","Method")),n().createElement("th",null,t("date","Date")),n().createElement("th",{className:o},t("tendered","Tendered")))),n().createElement("tbody",null,e.map(e=>n().createElement("tr",{key:e.uuid},n().createElement("td",null,n().createElement("span",{className:"-esm-billing__bill-payments-table__paymentKind___TglOe"},e.instanceType?.name??"--")),n().createElement("td",null,n().createElement("span",{className:"-esm-billing__bill-payments-table__paymentDate___9NyEF"},e.dateCreated?(0,r.formatDate)(new Date(e.dateCreated),{mode:"wide"}):"--")),n().createElement("td",{className:o},(0,c.aL)(e.amountTendered??0,l)))))))};var d=l(6942),b=l.n(d),p=l(5084);let E="-esm-billing__bill-totals-summary__totalsRow___r3Lew",g="-esm-billing__bill-totals-summary__totalsRowMinus___2n1W4",y=({subtotal:e,currentNet:t,outstanding:l,paymentsTotal:a,approvedDiscounts:s,pendingDiscounts:m})=>{let{t:_}=(0,i.useTranslation)(),{defaultCurrency:o}=(0,r.useConfig)();return n().createElement("section",{className:"-esm-billing__bill-totals-summary__totals___6iaM7"},n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__totalsSubtotal___8mWZP")},n().createElement("span",null,_("subtotal","Subtotal")),n().createElement("span",null,(0,c.aL)(e,o))),s.map(e=>n().createElement("div",{key:e.uuid,className:b()(E,g)},n().createElement("span",null,"− ",_("discount","Discount")),n().createElement("span",null,(0,c.aL)(e.discountAmount,o)))),n().createElement("hr",{className:"-esm-billing__bill-totals-summary__totalsRule___LldMI"}),n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__totalsNet___0Bb1l")},n().createElement("span",null,_("currentNet","Current net")),n().createElement("span",{className:"-esm-billing__bill-totals-summary__totalsNetAmount___xvxJT"},(0,c.aL)(t,o))),a>0&&n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__totalsRowAdd___sbxAx")},n().createElement("span",null,"− ",_("paymentsReceived","Payments received")),n().createElement("span",null,(0,c.aL)(a,o))),n().createElement("hr",{className:"-esm-billing__bill-totals-summary__totalsRuleStrong___Kidyj"}),n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__totalsOutstanding___fP1bD")},n().createElement("span",null,_("outstanding","Outstanding")),n().createElement("span",{className:"-esm-billing__bill-totals-summary__totalsOutstandingAmount___qQXu3"},(0,c.aL)(l,o))),m.length>0&&n().createElement("div",{className:"-esm-billing__bill-totals-summary__preview___rPSsf"},n().createElement("p",{className:"-esm-billing__bill-totals-summary__previewLabel___mjNu2"},_("ifPendingApproved","If pending discounts approved")),m.map(e=>n().createElement("div",{key:e.uuid,className:b()(E,g)},n().createElement("span",null,"− ",_("discount","Discount")," (",e.discountType===p.Bp.PERCENTAGE?`${e.discountValue}%`:(0,c.aL)(e.discountValue,o),")"),n().createElement("span",null,(0,c.aL)(e.discountAmount,o)))),n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__previewProjected___bUPgY")},n().createElement("span",null,_("projectedNet","Projected net")),n().createElement("span",{className:"-esm-billing__bill-totals-summary__previewProjectedAmount___7yhBk"},(0,c.aL)(t-m.reduce((e,t)=>e+t.discountAmount,0),o)))))},N=n().memo(({bill:e,lineItems:t,payments:l,paymentsTotal:a,subtotal:c,currentNet:m,outstanding:o,approvedDiscounts:d,pendingDiscounts:b})=>{let{t:p}=(0,i.useTranslation)();return n().createElement("aside",{className:"-esm-billing__bill-receipt-rail__receipt___b5het"},n().createElement("div",{className:"-esm-billing__bill-receipt-rail__patient___gB6Df"},n().createElement("div",null,n().createElement("p",{className:"-esm-billing__bill-receipt-rail__patientName___dNAHq"},e.patient?.display),n().createElement("p",{className:"-esm-billing__bill-receipt-rail__patientId___2KJ7G"},p("receiptNumber","Receipt #"),": ",e.receiptNumber)),e.status&&n().createElement(s.Tag,{type:"blue",size:"sm"},p(String(e.status).toLowerCase(),String(e.status)))),n().createElement("dl",{className:"-esm-billing__bill-receipt-rail__meta___F8p9R"},n().createElement("dt",null,p("issued","Issued")),n().createElement("dd",null,e.dateCreated?(0,r.formatDate)((0,r.parseDate)(e.dateCreated),{mode:"wide"}):"--"),n().createElement("dt",null,p("cashier","Cashier")),n().createElement("dd",null,e.cashier?.display??"--")),n().createElement(_,{lineItems:t}),n().createElement(u,{payments:l}),n().createElement(y,{subtotal:c,currentNet:m,outstanding:o,paymentsTotal:a,approvedDiscounts:d,pendingDiscounts:b}))}),f="-esm-billing__discount-card__confirmCopy___tkMH1",v={PENDING:"gray",APPROVED:"green",REJECTED:"red"},h=({discount:e,lineItems:t,busy:l,rejectingId:a,deletingId:m,canDecide:_,onApprove:o,onStartReject:u,onCancelReject:d,onConfirmReject:E,onStartDelete:g,onCancelDelete:y,onConfirmDelete:N})=>{let{t:h}=(0,i.useTranslation)(),{defaultCurrency:D}=(0,r.useConfig)(),C=a===e.uuid,k=m===e.uuid,T=!C&&!k,w=b()("-esm-billing__discount-card__card___LKhCs",{"-esm-billing__discount-card__cardPending___kkfK0":e.status===p.nT.PENDING,"-esm-billing__discount-card__cardApproved___e22b2":e.status===p.nT.APPROVED,"-esm-billing__discount-card__cardRejected___RSYBZ":e.status===p.nT.REJECTED}),P=e.discountType===p.Bp.PERCENTAGE?`${e.discountValue}%`:(0,c.aL)(e.discountValue,D),S=e.lineItemUuid?t.find(t=>t.uuid===e.lineItemUuid)?.item||t.find(t=>t.uuid===e.lineItemUuid)?.billableService||"--":h("wholeBill","Whole bill");return n().createElement("article",{className:w},n().createElement("header",{className:"-esm-billing__discount-card__cardTop___2KfsR"},n().createElement("div",{className:"-esm-billing__discount-card__cardScope___DFbYt"},n().createElement("span",{className:"-esm-billing__discount-card__cardScopeName___e0Gom"},S),n().createElement("span",{className:"-esm-billing__discount-card__cardScopeKind___YgWB0"},e.discountType===p.Bp.PERCENTAGE?h("percentage","Percentage"):h("fixedAmount","Fixed amount"))),e.status!==p.nT.PENDING&&n().createElement(s.Tag,{type:v[e.status],size:"sm"},h(e.status.toLowerCase(),e.status))),n().createElement("div",{className:"-esm-billing__discount-card__cardFigure___2fn-w"},n().createElement("span",{className:b()("-esm-billing__discount-card__cardAmount___IsWoS",{"-esm-billing__discount-card__cardAmountVoided___VNogb":e.status===p.nT.REJECTED})},n().createElement("span",{className:"-esm-billing__discount-card__cardAmountMinus___eSUgX"},"−"),(0,c.aL)(e.discountAmount,D)),e.discountType===p.Bp.PERCENTAGE&&n().createElement("span",{className:"-esm-billing__discount-card__cardValue___pIy2C"},P)),n().createElement("div",null,h("reasonForDiscount","Reason for discount"),": ",n().createElement("p",{className:"-esm-billing__discount-card__cardJustification___ZbW6e"},e.justification)),n().createElement("footer",{className:"-esm-billing__discount-card__cardFooter___AlFbq"},n().createElement("div",{className:"-esm-billing__discount-card__cardByline___r8xcx"},h("requestedBy","Requested by")," ",n().createElement("strong",null,e.initiator?.display),n().createElement("span",{className:"-esm-billing__discount-card__cardBylineSep___VM4YL"},"\xb7"),(0,r.formatDate)((0,r.parseDate)(e.dateCreated),{mode:"wide"})),n().createElement("div",{className:"-esm-billing__discount-card__cardActions___bvhbQ"},T&&e.status===p.nT.PENDING&&n().createElement(n().Fragment,null,n().createElement(s.Button,{kind:"danger--tertiary",size:"sm",disabled:!!l||!_,onClick:()=>u(e.uuid)},h("reject","Reject")),n().createElement(s.Button,{kind:"primary",size:"sm",disabled:!!l||!_,onClick:()=>o(e)},h("approve","Approve"))),T&&n().createElement(s.Button,{kind:"danger",size:"sm",disabled:!!l,onClick:()=>g(e.uuid)},h("delete","Delete")),C&&n().createElement(n().Fragment,null,n().createElement("span",{className:f},h("rejectConfirm","Reject this discount?")),n().createElement(s.Button,{kind:"ghost",size:"sm",onClick:d},(0,r.getCoreTranslation)("cancel")),n().createElement(s.Button,{kind:"danger",size:"sm",disabled:!!l,onClick:()=>E(e)},h("confirmReject","Confirm reject"))),k&&n().createElement(n().Fragment,null,n().createElement("span",{className:f},h("deleteConfirm","Delete this discount?")),n().createElement(s.Button,{kind:"ghost",size:"sm",onClick:y},(0,r.getCoreTranslation)("cancel")),n().createElement(s.Button,{kind:"danger",size:"sm",disabled:!!l,onClick:()=>N(e)},h("confirmDelete","Confirm delete"))))))},D="-esm-billing__discount-review-stack__groupHeader___Ie7oM",C="-esm-billing__discount-review-stack__groupTitle___e80de",k="-esm-billing__discount-review-stack__groupCount___zrgwP",T="-esm-billing__discount-review-stack__stack___YgUv1",w=n().memo(({pendingDiscounts:e,confirmedDiscounts:t,lineItems:l,busy:a,rejectingId:s,deletingId:r,canDecide:c,onApprove:m,onStartReject:_,onCancelReject:o,onConfirmReject:u,onStartDelete:d,onCancelDelete:b,onConfirmDelete:p})=>{let{t:E}=(0,i.useTranslation)(),g=e=>n().createElement(h,{key:e.uuid,discount:e,lineItems:l,busy:a,rejectingId:s,deletingId:r,canDecide:c,onApprove:m,onStartReject:_,onCancelReject:o,onConfirmReject:u,onStartDelete:d,onCancelDelete:b,onConfirmDelete:p});return n().createElement("section",{className:"-esm-billing__discount-review-stack__review___7I6RE"},e.length>0&&n().createElement("div",null,n().createElement("div",{className:D},n().createElement("h3",{className:C},E("pendingDiscounts","Pending discounts")),n().createElement("span",{className:k},e.length)),n().createElement("div",{className:T},e.map(g))),t.length>0&&n().createElement("div",null,n().createElement("div",{className:D},n().createElement("h3",{className:C},E("confirmedDiscounts","Confirmed discounts")),n().createElement("span",{className:k},t.length)),n().createElement("div",{className:T},t.map(g))))});var P=l(6199),S=l(4571);let A=e=>e?.responseBody?.error?.message??(e instanceof Error?e.message:String(e)),R=({closeModal:e,bill:t,onMutate:l})=>{let c,m,_,o,u,d,b,E,g,{t:y}=(0,i.useTranslation)(),f=(0,r.useSession)(),{bill:v,mutate:h,isLoading:D,isValidating:C}=(0,P.DX)(t.uuid,!1),k=v??t,[T,R]=(0,a.useState)(null),[j,I]=(0,a.useState)(null),[B,L]=(0,a.useState)(null),F=k.status===p.ih.PENDING||k.status===p.ih.POSTED,{pendingDiscounts:G,confirmedDiscounts:O,approvedDiscounts:M,lineItems:V,payments:q,paymentsTotal:x,subtotal:z,currentNet:$,outstanding:H}=(m=(c=(0,a.useMemo)(()=>(k.discounts??[]).filter(e=>!e.voided),[k.discounts])).filter(e=>e.status===p.nT.PENDING),_=c.filter(e=>e.status!==p.nT.PENDING),o=c.filter(e=>e.status===p.nT.APPROVED),u=(k.lineItems??[]).filter(e=>!e.voided),b=(d=(k.payments??[]).filter(e=>!e.voided)).reduce((e,t)=>e+(t.amountTendered??0),0),E=k.total,{activeDiscounts:c,pendingDiscounts:m,confirmedDiscounts:_,approvedDiscounts:o,lineItems:u,payments:d,paymentsTotal:b,subtotal:E,currentNet:g=k.amountAfterDiscount,outstanding:g-b}),K=(0,a.useCallback)(async e=>{if(F){if(H-e.discountAmount<0)return void(0,r.showSnackbar)({title:y("approveBlocked","Cannot approve discount"),subtitle:y("approveBlockedNegativeDue","Approving this discount would push the amount due below zero."),kind:"error"});R(e.uuid);try{await (0,S.GH)(e.uuid,p.nT.APPROVED,f.user.uuid),(0,r.showSnackbar)({title:y("discountApproved","Discount approved"),kind:"success"}),await h(),l()}catch(e){(0,r.showSnackbar)({title:y("approveFailed","Approve failed"),subtitle:A(e),kind:"error"})}finally{R(null)}}},[F,H,y,f.user.uuid,h,l]),J=(0,a.useCallback)(async e=>{if(F){R(e.uuid);try{await (0,S.GH)(e.uuid,p.nT.REJECTED,f.user.uuid),(0,r.showSnackbar)({title:y("discountRejected","Discount rejected"),kind:"success"}),await h(),l()}catch(e){(0,r.showSnackbar)({title:y("rejectFailed","Reject failed"),subtitle:A(e),kind:"error"})}finally{R(null),I(null)}}},[F,y,f.user.uuid,h,l]),U=(0,a.useCallback)(async e=>{if(e.status===p.nT.APPROVED&&H<=0){(0,r.showSnackbar)({title:y("deleteBlocked","Cannot delete discount"),subtitle:y("deleteBlockedFullyPaid","An approved discount cannot be removed once the bill is fully paid."),kind:"error"}),L(null);return}R(e.uuid);try{await (0,S.qu)(e.uuid,"Deleted by admin"),(0,r.showSnackbar)({title:y("discountDeleted","Discount deleted"),kind:"success"}),await h(),l()}catch(e){(0,r.showSnackbar)({title:y("deleteFailed","Delete failed"),subtitle:A(e),kind:"error"})}finally{R(null),L(null)}},[H,y,h,l]),W=(0,a.useCallback)(()=>I(null),[]),Y=(0,a.useCallback)(()=>L(null),[]),Z=!!T||D||C;return n().createElement(n().Fragment,null,n().createElement(s.ModalHeader,{closeModal:e,title:y("reviewDiscounts","Review discounts")}),n().createElement(s.ModalBody,null,Z?n().createElement(s.ProgressBar,{label:"",hideLabel:!0}):n().createElement("div",{className:"-esm-billing__review-bill-discounts-modal__layout___gF7VM"},n().createElement(N,{bill:k,lineItems:V,payments:q,paymentsTotal:x,subtotal:z,currentNet:$,outstanding:H,approvedDiscounts:M,pendingDiscounts:G}),n().createElement(w,{pendingDiscounts:G,confirmedDiscounts:O,lineItems:V,busy:T,rejectingId:j,deletingId:B,canDecide:F,onApprove:K,onStartReject:I,onCancelReject:W,onConfirmReject:J,onStartDelete:L,onCancelDelete:Y,onConfirmDelete:U}))))}},4571(e,t,l){"use strict";l.d(t,{GH:()=>m,Zi:()=>r,jb:()=>c,qu:()=>_}),l(6335);var a=l(3137),n=l(7003);let s=`${n.B}billDiscount`,i=`${n.B}bill`;function r({statuses:e}){let t=new URLSearchParams({discountStatus:e.join(","),v:"default"}),l=`${i}?${t.toString()}`,{data:n,isLoading:s,error:c,mutate:m,isValidating:_}=(0,a.useOpenmrsFetchAll)(l);return{bills:n??[],isLoading:s,error:c,mutate:m,isValidating:_}}async function c(e){return(await (0,a.openmrsFetch)(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})).data}async function m(e,t,l){return(await (0,a.openmrsFetch)(`${s}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{status:t,approver:l}})).data}async function _(e,t){await (0,a.openmrsFetch)(`${s}/${e}?reason=${encodeURIComponent(t)}`,{method:"DELETE"})}},2373(e,t,l){"use strict";l.d(t,{Zz:()=>n,aL:()=>s,o_:()=>i});var a=l(3137);function n(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let s=(e,t)=>{let l=window.i18next?.language?.substring(0,2)??"",a=new Intl.NumberFormat(l,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(a=`(${a})`),a},i=(e,t)=>{switch(e){case"male":return(0,a.getCoreTranslation)("male");case"female":return(0,a.getCoreTranslation)("female");case"other":return(0,a.getCoreTranslation)("other");case"unknown":return(0,a.getCoreTranslation)("unknown");default:return e}}},1772(e,t,l){"use strict";l.d(t,{aL:()=>a.aL,o_:()=>a.o_});var a=l(2373)},6942(e){!function(){"use strict";var t={}.hasOwnProperty;function l(){for(var e="",n=0;n<arguments.length;n++){var s=arguments[n];s&&(e=a(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return l.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var n="";for(var s in e)t.call(e,s)&&e[s]&&(n=a(n,s));return n}(s)))}return e}function a(e,t){return t?e?e+" "+t:e+t:e}e.exports?(l.default=l,e.exports=l):"function"==typeof define&&"object"==typeof define.amd&&define.amd?define("classnames",[],function(){return l}):window.classNames=l}()}}]);
1
+ (globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["3461"],{3588(e,t,l){"use strict";l.r(t),l.d(t,{default:()=>R});var a=l(5275),n=l.n(a),s=l(1752),i=l(8395),r=l(9124),c=l(1772);let m="-esm-billing__bill-line-items-table__right___TBXRJ",_=({lineItems:e})=>{let{t}=(0,i.useTranslation)(),{defaultCurrency:l}=(0,r.useConfig)();return n().createElement("section",{className:"-esm-billing__bill-line-items-table__ledger___qbKwi"},n().createElement("h3",{className:"-esm-billing__bill-line-items-table__ledgerHeading___M7DcA"},t("lineItems","Line items")),n().createElement("table",{className:"-esm-billing__bill-line-items-table__ledgerTable___Lw3pG"},n().createElement("thead",null,n().createElement("tr",null,n().createElement("th",null,t("item","Item")),n().createElement("th",null,t("qty","Qty")),n().createElement("th",{className:m},t("price","Price")))),n().createElement("tbody",null,e.map((e,t)=>n().createElement("tr",{key:e.uuid??t},n().createElement("td",{className:"-esm-billing__bill-line-items-table__itemName___dKItf"},e.item||e.billableService||"--"),n().createElement("td",null,e.quantity),n().createElement("td",{className:m},(0,c.aL)(e.price??0,l)))))))},o="-esm-billing__bill-payments-table__right___qD-5O",u=({payments:e})=>{let{t}=(0,i.useTranslation)(),{defaultCurrency:l}=(0,r.useConfig)();return 0===e.length?null:n().createElement("section",{className:"-esm-billing__bill-payments-table__ledger___Qc+ke"},n().createElement("h3",{className:"-esm-billing__bill-payments-table__ledgerHeading___ilV8F"},t("payments","Payments")),n().createElement("table",{className:"-esm-billing__bill-payments-table__ledgerTable___lHxsT"},n().createElement("thead",null,n().createElement("tr",null,n().createElement("th",null,t("method","Method")),n().createElement("th",null,t("date","Date")),n().createElement("th",{className:o},t("tendered","Tendered")))),n().createElement("tbody",null,e.map(e=>n().createElement("tr",{key:e.uuid},n().createElement("td",null,n().createElement("span",{className:"-esm-billing__bill-payments-table__paymentKind___TglOe"},e.instanceType?.name??"--")),n().createElement("td",null,n().createElement("span",{className:"-esm-billing__bill-payments-table__paymentDate___9NyEF"},e.dateCreated?(0,r.formatDate)(new Date(e.dateCreated),{mode:"wide"}):"--")),n().createElement("td",{className:o},(0,c.aL)(e.amountTendered??0,l)))))))};var d=l(6942),b=l.n(d),p=l(5084);let E="-esm-billing__bill-totals-summary__totalsRow___r3Lew",g="-esm-billing__bill-totals-summary__totalsRowMinus___2n1W4",y=({subtotal:e,currentNet:t,outstanding:l,paymentsTotal:a,approvedDiscounts:s,pendingDiscounts:m})=>{let{t:_}=(0,i.useTranslation)(),{defaultCurrency:o}=(0,r.useConfig)();return n().createElement("section",{className:"-esm-billing__bill-totals-summary__totals___6iaM7"},n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__totalsSubtotal___8mWZP")},n().createElement("span",null,_("subtotal","Subtotal")),n().createElement("span",null,(0,c.aL)(e,o))),s.map(e=>n().createElement("div",{key:e.uuid,className:b()(E,g)},n().createElement("span",null,"− ",_("discount","Discount")),n().createElement("span",null,(0,c.aL)(e.discountAmount,o)))),n().createElement("hr",{className:"-esm-billing__bill-totals-summary__totalsRule___LldMI"}),n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__totalsNet___0Bb1l")},n().createElement("span",null,_("currentNet","Current net")),n().createElement("span",{className:"-esm-billing__bill-totals-summary__totalsNetAmount___xvxJT"},(0,c.aL)(t,o))),a>0&&n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__totalsRowAdd___sbxAx")},n().createElement("span",null,"− ",_("paymentsReceived","Payments received")),n().createElement("span",null,(0,c.aL)(a,o))),n().createElement("hr",{className:"-esm-billing__bill-totals-summary__totalsRuleStrong___Kidyj"}),n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__totalsOutstanding___fP1bD")},n().createElement("span",null,_("outstanding","Outstanding")),n().createElement("span",{className:"-esm-billing__bill-totals-summary__totalsOutstandingAmount___qQXu3"},(0,c.aL)(l,o))),m.length>0&&n().createElement("div",{className:"-esm-billing__bill-totals-summary__preview___rPSsf"},n().createElement("p",{className:"-esm-billing__bill-totals-summary__previewLabel___mjNu2"},_("ifPendingApproved","If pending discounts approved")),m.map(e=>n().createElement("div",{key:e.uuid,className:b()(E,g)},n().createElement("span",null,"− ",_("discount","Discount")," (",e.discountType===p.Bp.PERCENTAGE?`${e.discountValue}%`:(0,c.aL)(e.discountValue,o),")"),n().createElement("span",null,(0,c.aL)(e.discountAmount,o)))),n().createElement("div",{className:b()(E,"-esm-billing__bill-totals-summary__previewProjected___bUPgY")},n().createElement("span",null,_("projectedNet","Projected net")),n().createElement("span",{className:"-esm-billing__bill-totals-summary__previewProjectedAmount___7yhBk"},(0,c.aL)(t-m.reduce((e,t)=>e+t.discountAmount,0),o)))))},N=n().memo(({bill:e,lineItems:t,payments:l,paymentsTotal:a,subtotal:c,currentNet:m,outstanding:o,approvedDiscounts:d,pendingDiscounts:b})=>{let{t:p}=(0,i.useTranslation)();return n().createElement("aside",{className:"-esm-billing__bill-receipt-rail__receipt___b5het"},n().createElement("div",{className:"-esm-billing__bill-receipt-rail__patient___gB6Df"},n().createElement("div",null,n().createElement("p",{className:"-esm-billing__bill-receipt-rail__patientName___dNAHq"},e.patient?.display),n().createElement("p",{className:"-esm-billing__bill-receipt-rail__patientId___2KJ7G"},p("receiptNumber","Receipt #"),": ",e.receiptNumber)),e.status&&n().createElement(s.Tag,{type:"blue",size:"sm"},p(String(e.status).toLowerCase(),String(e.status)))),n().createElement("dl",{className:"-esm-billing__bill-receipt-rail__meta___F8p9R"},n().createElement("dt",null,p("issued","Issued")),n().createElement("dd",null,e.dateCreated?(0,r.formatDate)((0,r.parseDate)(e.dateCreated),{mode:"wide"}):"--"),n().createElement("dt",null,p("cashier","Cashier")),n().createElement("dd",null,e.cashier?.display??"--")),n().createElement(_,{lineItems:t}),n().createElement(u,{payments:l}),n().createElement(y,{subtotal:c,currentNet:m,outstanding:o,paymentsTotal:a,approvedDiscounts:d,pendingDiscounts:b}))}),f="-esm-billing__discount-card__confirmCopy___tkMH1",v={PENDING:"gray",APPROVED:"green",REJECTED:"red"},h=({discount:e,lineItems:t,busy:l,rejectingId:a,deletingId:m,canDecide:_,onApprove:o,onStartReject:u,onCancelReject:d,onConfirmReject:E,onStartDelete:g,onCancelDelete:y,onConfirmDelete:N})=>{let{t:h}=(0,i.useTranslation)(),{defaultCurrency:D}=(0,r.useConfig)(),C=a===e.uuid,k=m===e.uuid,T=!C&&!k,w=b()("-esm-billing__discount-card__card___LKhCs",{"-esm-billing__discount-card__cardPending___kkfK0":e.status===p.nT.PENDING,"-esm-billing__discount-card__cardApproved___e22b2":e.status===p.nT.APPROVED,"-esm-billing__discount-card__cardRejected___RSYBZ":e.status===p.nT.REJECTED}),P=e.discountType===p.Bp.PERCENTAGE?`${e.discountValue}%`:(0,c.aL)(e.discountValue,D),S=e.lineItemUuid?t.find(t=>t.uuid===e.lineItemUuid)?.item||t.find(t=>t.uuid===e.lineItemUuid)?.billableService||"--":h("wholeBill","Whole bill");return n().createElement("article",{className:w},n().createElement("header",{className:"-esm-billing__discount-card__cardTop___2KfsR"},n().createElement("div",{className:"-esm-billing__discount-card__cardScope___DFbYt"},n().createElement("span",{className:"-esm-billing__discount-card__cardScopeName___e0Gom"},S),n().createElement("span",{className:"-esm-billing__discount-card__cardScopeKind___YgWB0"},e.discountType===p.Bp.PERCENTAGE?h("percentage","Percentage"):h("fixedAmount","Fixed amount"))),e.status!==p.nT.PENDING&&n().createElement(s.Tag,{type:v[e.status],size:"sm"},h(e.status.toLowerCase(),e.status))),n().createElement("div",{className:"-esm-billing__discount-card__cardFigure___2fn-w"},n().createElement("span",{className:b()("-esm-billing__discount-card__cardAmount___IsWoS",{"-esm-billing__discount-card__cardAmountVoided___VNogb":e.status===p.nT.REJECTED})},n().createElement("span",{className:"-esm-billing__discount-card__cardAmountMinus___eSUgX"},"−"),(0,c.aL)(e.discountAmount,D)),e.discountType===p.Bp.PERCENTAGE&&n().createElement("span",{className:"-esm-billing__discount-card__cardValue___pIy2C"},P)),n().createElement("div",null,h("reasonForDiscount","Reason for discount"),": ",n().createElement("p",{className:"-esm-billing__discount-card__cardJustification___ZbW6e"},e.justification)),n().createElement("footer",{className:"-esm-billing__discount-card__cardFooter___AlFbq"},n().createElement("div",{className:"-esm-billing__discount-card__cardByline___r8xcx"},h("requestedBy","Requested by")," ",n().createElement("strong",null,e.initiator?.display),n().createElement("span",{className:"-esm-billing__discount-card__cardBylineSep___VM4YL"},"\xb7"),(0,r.formatDate)((0,r.parseDate)(e.dateCreated),{mode:"wide"})),n().createElement("div",{className:"-esm-billing__discount-card__cardActions___bvhbQ"},T&&e.status===p.nT.PENDING&&n().createElement(n().Fragment,null,n().createElement(s.Button,{kind:"danger--tertiary",size:"sm",disabled:!!l||!_,onClick:()=>u(e.uuid)},h("reject","Reject")),n().createElement(s.Button,{kind:"primary",size:"sm",disabled:!!l||!_,onClick:()=>o(e)},h("approve","Approve"))),T&&n().createElement(s.Button,{kind:"danger",size:"sm",disabled:!!l,onClick:()=>g(e.uuid)},h("delete","Delete")),C&&n().createElement(n().Fragment,null,n().createElement("span",{className:f},h("rejectConfirm","Reject this discount?")),n().createElement(s.Button,{kind:"ghost",size:"sm",onClick:d},(0,r.getCoreTranslation)("cancel")),n().createElement(s.Button,{kind:"danger",size:"sm",disabled:!!l,onClick:()=>E(e)},h("confirmReject","Confirm reject"))),k&&n().createElement(n().Fragment,null,n().createElement("span",{className:f},h("deleteConfirm","Delete this discount?")),n().createElement(s.Button,{kind:"ghost",size:"sm",onClick:y},(0,r.getCoreTranslation)("cancel")),n().createElement(s.Button,{kind:"danger",size:"sm",disabled:!!l,onClick:()=>N(e)},h("confirmDelete","Confirm delete"))))))},D="-esm-billing__discount-review-stack__groupHeader___Ie7oM",C="-esm-billing__discount-review-stack__groupTitle___e80de",k="-esm-billing__discount-review-stack__groupCount___zrgwP",T="-esm-billing__discount-review-stack__stack___YgUv1",w=n().memo(({pendingDiscounts:e,confirmedDiscounts:t,lineItems:l,busy:a,rejectingId:s,deletingId:r,canDecide:c,onApprove:m,onStartReject:_,onCancelReject:o,onConfirmReject:u,onStartDelete:d,onCancelDelete:b,onConfirmDelete:p})=>{let{t:E}=(0,i.useTranslation)(),g=e=>n().createElement(h,{key:e.uuid,discount:e,lineItems:l,busy:a,rejectingId:s,deletingId:r,canDecide:c,onApprove:m,onStartReject:_,onCancelReject:o,onConfirmReject:u,onStartDelete:d,onCancelDelete:b,onConfirmDelete:p});return n().createElement("section",{className:"-esm-billing__discount-review-stack__review___7I6RE"},e.length>0&&n().createElement("div",null,n().createElement("div",{className:D},n().createElement("h3",{className:C},E("pendingDiscounts","Pending discounts")),n().createElement("span",{className:k},e.length)),n().createElement("div",{className:T},e.map(g))),t.length>0&&n().createElement("div",null,n().createElement("div",{className:D},n().createElement("h3",{className:C},E("confirmedDiscounts","Confirmed discounts")),n().createElement("span",{className:k},t.length)),n().createElement("div",{className:T},t.map(g))))});var P=l(6199),S=l(4571);let A=e=>e?.responseBody?.error?.message??(e instanceof Error?e.message:String(e)),R=({closeModal:e,bill:t,onMutate:l})=>{let c,m,_,o,u,d,b,E,g,{t:y}=(0,i.useTranslation)(),f=(0,r.useSession)(),{bill:v,mutate:h,isLoading:D,isValidating:C}=(0,P.DX)(t.uuid,!1),k=v??t,[T,R]=(0,a.useState)(null),[j,I]=(0,a.useState)(null),[B,L]=(0,a.useState)(null),F=k.status===p.ih.PENDING||k.status===p.ih.POSTED,{pendingDiscounts:G,confirmedDiscounts:O,approvedDiscounts:M,lineItems:V,payments:q,paymentsTotal:x,subtotal:z,currentNet:$,outstanding:H}=(m=(c=(0,a.useMemo)(()=>(k.discounts??[]).filter(e=>!e.voided),[k.discounts])).filter(e=>e.status===p.nT.PENDING),_=c.filter(e=>e.status!==p.nT.PENDING),o=c.filter(e=>e.status===p.nT.APPROVED),u=(k.lineItems??[]).filter(e=>!e.voided),b=(d=(k.payments??[]).filter(e=>!e.voided)).reduce((e,t)=>e+(t.amountTendered??0),0),E=k.total,{activeDiscounts:c,pendingDiscounts:m,confirmedDiscounts:_,approvedDiscounts:o,lineItems:u,payments:d,paymentsTotal:b,subtotal:E,currentNet:g=k.amountAfterDiscount,outstanding:g-b}),K=(0,a.useCallback)(async e=>{if(F){if(H-e.discountAmount<0)return void(0,r.showSnackbar)({title:y("approveBlocked","Cannot approve discount"),subtitle:y("approveBlockedNegativeDue","Approving this discount would push the amount due below zero."),kind:"error"});R(e.uuid);try{await (0,S.GH)(e.uuid,p.nT.APPROVED,f.user.uuid),(0,r.showSnackbar)({title:y("discountApproved","Discount approved"),kind:"success"}),await h(),l()}catch(e){(0,r.showSnackbar)({title:y("approveFailed","Approve failed"),subtitle:A(e),kind:"error"})}finally{R(null)}}},[F,H,y,f.user.uuid,h,l]),J=(0,a.useCallback)(async e=>{if(F){R(e.uuid);try{await (0,S.GH)(e.uuid,p.nT.REJECTED,f.user.uuid),(0,r.showSnackbar)({title:y("discountRejected","Discount rejected"),kind:"success"}),await h(),l()}catch(e){(0,r.showSnackbar)({title:y("rejectFailed","Reject failed"),subtitle:A(e),kind:"error"})}finally{R(null),I(null)}}},[F,y,f.user.uuid,h,l]),U=(0,a.useCallback)(async e=>{if(e.status===p.nT.APPROVED&&H<=0){(0,r.showSnackbar)({title:y("deleteBlocked","Cannot delete discount"),subtitle:y("deleteBlockedFullyPaid","An approved discount cannot be removed once the bill is fully paid."),kind:"error"}),L(null);return}R(e.uuid);try{await (0,S.qu)(e.uuid,"Deleted by admin"),(0,r.showSnackbar)({title:y("discountDeleted","Discount deleted"),kind:"success"}),await h(),l()}catch(e){(0,r.showSnackbar)({title:y("deleteFailed","Delete failed"),subtitle:A(e),kind:"error"})}finally{R(null),L(null)}},[H,y,h,l]),W=(0,a.useCallback)(()=>I(null),[]),Y=(0,a.useCallback)(()=>L(null),[]),Z=!!T||D||C;return n().createElement(n().Fragment,null,n().createElement(s.ModalHeader,{closeModal:e,title:y("reviewDiscounts","Review discounts")}),n().createElement(s.ModalBody,null,Z?n().createElement(s.ProgressBar,{label:"",hideLabel:!0}):n().createElement("div",{className:"-esm-billing__review-bill-discounts-modal__layout___gF7VM"},n().createElement(N,{bill:k,lineItems:V,payments:q,paymentsTotal:x,subtotal:z,currentNet:$,outstanding:H,approvedDiscounts:M,pendingDiscounts:G}),n().createElement(w,{pendingDiscounts:G,confirmedDiscounts:O,lineItems:V,busy:T,rejectingId:j,deletingId:B,canDecide:F,onApprove:K,onStartReject:I,onCancelReject:W,onConfirmReject:J,onStartDelete:L,onCancelDelete:Y,onConfirmDelete:U}))))}},4571(e,t,l){"use strict";l.d(t,{GH:()=>m,Zi:()=>r,jb:()=>c,qu:()=>_}),l(6335);var a=l(9124),n=l(7003);let s=`${n.B}billDiscount`,i=`${n.B}bill`;function r({statuses:e}){let t=new URLSearchParams({discountStatus:e.join(","),v:"default"}),l=`${i}?${t.toString()}`,{data:n,isLoading:s,error:c,mutate:m,isValidating:_}=(0,a.useOpenmrsFetchAll)(l);return{bills:n??[],isLoading:s,error:c,mutate:m,isValidating:_}}async function c(e){return(await (0,a.openmrsFetch)(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})).data}async function m(e,t,l){return(await (0,a.openmrsFetch)(`${s}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{status:t,approver:l}})).data}async function _(e,t){await (0,a.openmrsFetch)(`${s}/${e}?reason=${encodeURIComponent(t)}`,{method:"DELETE"})}},2373(e,t,l){"use strict";l.d(t,{Zz:()=>n,aL:()=>s,o_:()=>i});var a=l(9124);function n(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let s=(e,t)=>{let l=window.i18next?.language?.substring(0,2)??"",a=new Intl.NumberFormat(l,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(a=`(${a})`),a},i=(e,t)=>{switch(e){case"male":return(0,a.getCoreTranslation)("male");case"female":return(0,a.getCoreTranslation)("female");case"other":return(0,a.getCoreTranslation)("other");case"unknown":return(0,a.getCoreTranslation)("unknown");default:return e}}},1772(e,t,l){"use strict";l.d(t,{aL:()=>a.aL,o_:()=>a.o_});var a=l(2373)},6942(e){!function(){"use strict";var t={}.hasOwnProperty;function l(){for(var e="",n=0;n<arguments.length;n++){var s=arguments[n];s&&(e=a(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return l.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var n="";for(var s in e)t.call(e,s)&&e[s]&&(n=a(n,s));return n}(s)))}return e}function a(e,t){return t?e?e+" "+t:e+t:e}e.exports?(l.default=l,e.exports=l):"function"==typeof define&&"object"==typeof define.amd&&define.amd?define("classnames",[],function(){return l}):window.classNames=l}()}}]);
package/dist/350.js CHANGED
@@ -1 +1 @@
1
- (globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["350"],{6994(e,t,a){"use strict";a.d(t,{MH:()=>o,OS:()=>u,WJ:()=>c,bb:()=>m,cW:()=>_,j2:()=>d,ly:()=>s,vv:()=>p});var l=a(6335),n=a.n(l),r=a(3137),i=a(7003);let s=()=>{let e=`${i.B}billableService?v=custom:(uuid,name,shortName,serviceStatus,concept:(uuid,display,name:(name)),serviceType:(display,uuid),servicePrices:(uuid,name,price,paymentMode:(uuid,name)))`,{data:t,isLoading:a,isValidating:l,error:n,mutate:s}=(0,r.useOpenmrsFetchAll)(e);return{billableServices:t??[],isLoading:a,isValidating:l,error:n,mutate:s}};function o(){let{serviceTypes:e}=(0,r.useConfig)(),t=e.billableService,a=`${r.restBaseUrl}/concept/${t}?v=custom:(setMembers:(uuid,display))`,{data:l,error:i,isLoading:s}=n()(a,r.openmrsFetch);return{serviceTypes:l?.data.setMembers?[...l.data.setMembers].sort((e,t)=>e.display.localeCompare(t.display)):[],error:i,isLoadingServiceTypes:s}}let c=()=>{let e=`${i.B}paymentMode`,{data:t,error:a,isLoading:l,mutate:s}=n()(e,r.openmrsFetch);return{paymentModes:t?.data.results?[...t.data.results].sort((e,t)=>e.name.localeCompare(t.name)):[],error:a,isLoadingPaymentModes:l,mutate:s}};function m(e){let t=`${r.restBaseUrl}/conceptsearch?q=${e}`,{data:a,error:l,isLoading:i}=n()(e?t:null,r.openmrsFetch);return{searchResults:a?.data?.results??[],error:l,isSearching:i}}let d=async e=>{let t=`${i.B}api/billable-service`;return await (0,r.openmrsFetch)(t,{method:"POST",body:e,headers:{"Content-Type":"application/json"}})},u=async(e,t)=>{let a=`${i.B}billableService/${e}`;return await (0,r.openmrsFetch)(a,{method:"POST",body:t,headers:{"Content-Type":"application/json"}})},_=e=>{let t=`${r.restBaseUrl}/billing/paymentMode`;return(0,r.openmrsFetch)(t,{method:"POST",body:e,headers:{"Content-Type":"application/json"}})},p=(e,t)=>{let a=`${r.restBaseUrl}/billing/paymentMode/${e}`;return(0,r.openmrsFetch)(a,{method:"POST",body:t,headers:{"Content-Type":"application/json"}})}},7485(e,t,a){"use strict";a.r(t),a.d(t,{default:()=>D});var l=a(5275),n=a.n(l),r=a(6942),i=a.n(r),s=a(9335),o=a(8395),c=a(3137),m=a(1752),d=a(2137),u=a(6994);function _({layout:e,handleSearch:t,isValidating:a,launchBillableServiceForm:l,responsiveSize:r,t:s}){return n().createElement(n().Fragment,null,n().createElement("div",{className:"-esm-billing__billable-services__headerContainer___Jom5Q"},n().createElement("div",{className:i()({"-esm-billing__billable-services__tabletHeading___DjbOL":!(0,c.isDesktop)(e),"-esm-billing__billable-services__desktopHeading___JApyg":(0,c.isDesktop)(e)})},n().createElement("h4",null,s("servicesList","Services list"))),n().createElement("div",{className:"-esm-billing__billable-services__backgroundDataFetchingIndicator___Icc-9"},n().createElement("span",null,a?n().createElement(m.InlineLoading,null):null))),n().createElement("div",{className:"-esm-billing__billable-services__actionsContainer___gjC3h"},n().createElement(m.Search,{labelText:"",placeholder:s("filterTable","Filter table"),onChange:t,size:r}),n().createElement(m.Button,{size:r,kind:"primary",renderIcon:e=>n().createElement(d.Qp,{size:16,...e}),onClick:l,iconDescription:s("addNewBillableService","Add new billable service")},s("addNewService","Add new service"))))}let p=()=>{let{t:e}=(0,o.useTranslation)(),{billableServices:t,isLoading:a,isValidating:r,error:i,mutate:s}=(0,u.ly)(),d=(0,c.useLayoutType)(),{pageSize:p}=(0,c.useConfig)(),[b,g]=(0,l.useState)(""),h=(0,c.isDesktop)(d)?"lg":"sm",[E,y]=(0,l.useState)(p??10),f=[{header:e("serviceName","Service name"),key:"serviceName"},{header:e("shortName","Short name"),key:"shortName"},{header:e("serviceType","Service type"),key:"serviceType"},{header:e("serviceStatus","Service status"),key:"status"},{header:e("prices","Prices"),key:"prices"}],v=(0,l.useCallback)(()=>{(0,c.launchWorkspace2)("billable-service-form",{onWorkspaceClose:s})},[s]),C=(0,l.useMemo)(()=>{let e=Array.isArray(t)?t.flat():t;if(void 0!==e&&e.length>0){let t=b.trim();if(t){let a=t.toLowerCase();return e.filter(e=>Object.entries(e).some(([e,t])=>"uuid"!==e&&`${t}`.toLowerCase().includes(a)))}}return e},[b,t]),{paginated:T,goTo:S,results:w,currentPage:k}=(0,c.usePagination)(C,E),N=[];w&&w.forEach(e=>{let t={id:e.uuid,uuid:e.uuid,serviceName:e.name,shortName:e.shortName,serviceType:e?.serviceType?.display,status:e.serviceStatus,prices:e.servicePrices.map(e=>`${e.name} (${e.price})`).join(", ")||"--"};N.push(t)});let q=(0,l.useCallback)(e=>{S(1),g(e.target.value)},[S,g]),L=(0,l.useCallback)(e=>{(0,c.launchWorkspace2)("billable-service-form",{serviceToEdit:e,onWorkspaceClose:s})},[s]);return a?n().createElement(m.InlineLoading,{status:"active",iconDescription:(0,c.getCoreTranslation)("loading"),description:e("loading","Loading data")+"..."}):i?n().createElement(c.ErrorState,{headerTitle:e("billableService","Billable service"),error:i}):0===t.length?n().createElement(c.EmptyCard,{displayText:e("billableServices__lower","billable services"),headerTitle:e("billableService","Billable service"),launchForm:v}):n().createElement("div",{className:"-esm-billing__billable-services__serviceContainer___x-Geg"},n().createElement(_,{handleSearch:q,isValidating:r,launchBillableServiceForm:v,layout:d,responsiveSize:h,t:e}),n().createElement(m.DataTable,{isSortable:!0,rows:N,headers:f,overflowMenuOnHover:(0,c.isDesktop)(d),size:h,useZebraStyles:N?.length>1},({rows:t,headers:a,getHeaderProps:l,getRowProps:r,getTableProps:i})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{...i(),"aria-label":e("serviceList","Service list")},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,a.map(e=>n().createElement(m.TableHeader,{...l({header:e}),key:e.key},e.header)),n().createElement(m.TableHeader,{"aria-label":(0,c.getCoreTranslation)("actions")}))),n().createElement(m.TableBody,null,t.map(t=>n().createElement(m.TableRow,{key:t.id,...r({row:t})},t.cells.map(e=>n().createElement(m.TableCell,{key:e.id},e.value)),n().createElement(m.TableCell,{className:"cds--table-column-menu"},n().createElement(m.OverflowMenu,{size:"lg",flipped:!0},n().createElement(m.OverflowMenuItem,{className:"-esm-billing__billable-services__menuItem___yk74T",itemText:e("editBillableService","Edit billable service"),onClick:()=>L(w.find(e=>e.uuid===t.id))}))))))))),C?.length===0&&n().createElement("div",{className:"-esm-billing__billable-services__filterEmptyState___Gklg-"},n().createElement(m.Layer,{level:0},n().createElement(m.Tile,{className:"-esm-billing__billable-services__filterEmptyStateTile___DHTbi"},n().createElement("p",{className:"-esm-billing__billable-services__filterEmptyStateContent___n3TI3"},e("noMatchingServicesToDisplay","No matching services to display")),n().createElement("p",{className:"-esm-billing__billable-services__filterEmptyStateHelper___pVBoH"},e("checkFilters","Check the filters above"))))),T&&n().createElement(m.Pagination,{forwardText:e("nextPage","Next page"),backwardText:e("previousPage","Previous page"),page:k,pageSize:E,pageSizes:[10,20,30,40,50],totalItems:C?.length,className:"-esm-billing__billable-services__pagination___UwJIA",size:h,onChange:({pageSize:e,page:t})=>{e!==E&&y(e),t!==k&&S(t)}}))};function b(){return n().createElement("main",{className:"-esm-billing__dashboard__container___PDlGf"},n().createElement("main",{className:"-esm-billing__dashboard__servicesTableContainer___m7wfM"},n().createElement(p,null)))}var g=a(8730);let h=()=>{let{t:e}=(0,o.useTranslation)(),[t,a]=(0,l.useState)([]),r=(0,l.useCallback)(async()=>{try{let e=await (0,c.openmrsFetch)(`${c.restBaseUrl}/billing/cashPoint?v=full`);a(e.data.results||[])}catch(t){(0,c.showSnackbar)({title:(0,c.getCoreTranslation)("error"),subtitle:e("errorFetchingCashPoints","An error occurred while fetching cash points."),kind:"error",isLowContrast:!1})}},[e]);(0,l.useEffect)(()=>{r()},[r]);let i=t.map(e=>({id:e.uuid,name:e.name,uuid:e.uuid,location:e.location?e.location.display:"None"})),s=[{key:"name",header:e("name","Name")},{key:"uuid",header:e("uuid","UUID")},{key:"location",header:e("location","Location")}];return n().createElement("div",{className:"-esm-billing__cash-point-configuration__container___-hvwr"},n().createElement("div",{className:"-esm-billing__cash-point-configuration__card___ytTem"},n().createElement(c.CardHeader,{title:e("cashPointHistory","Cash point history")},n().createElement(m.Button,{renderIcon:d.OM,onClick:()=>{let e=(0,c.showModal)("add-cash-point-modal",{onCashPointAdded:r,closeModal:()=>e()})},kind:"ghost"},e("addNewCashPoint","Add new cash point"))),n().createElement("div",null,n().createElement(m.DataTable,{rows:i,headers:s,isSortable:!0,size:"lg"},({rows:e,headers:t,getTableProps:a,getHeaderProps:l,getRowProps:r})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{className:"-esm-billing__cash-point-configuration__table___x+kW9",...a()},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,t.map(e=>n().createElement(m.TableHeader,{key:e.key,...l({header:e})},e.header)))),n().createElement(m.TableBody,null,e.map(e=>n().createElement(m.TableRow,{key:e.id,...r({row:e})},e.cells.map(e=>n().createElement(m.TableCell,{key:e.id},e.value)))))))))))},E="-esm-billing__payment-modes-config__menuItem___7qBhO",y=()=>{let{t:e}=(0,o.useTranslation)(),{paymentModes:t,error:a,isLoadingPaymentModes:l}=(0,u.WJ)(),r=t.map(e=>({id:e.uuid,name:e.name,description:e.description||"--"})),i=[{key:"name",header:e("name","Name")},{key:"description",header:e("description","Description")},{key:"actions",header:(0,c.getCoreTranslation)("actions")}];return l?n().createElement(m.InlineLoading,{status:"active",iconDescription:(0,c.getCoreTranslation)("loading"),description:e("loading","Loading data")+"..."}):a?n().createElement(c.ErrorState,{headerTitle:e("paymentMode","Payment mode"),error:a}):n().createElement("div",{className:"-esm-billing__payment-modes-config__container___hB7Cc"},n().createElement("div",{className:"-esm-billing__payment-modes-config__card___FGL9q"},n().createElement(c.CardHeader,{title:e("paymentModeHistory","Payment mode history")},n().createElement(m.Button,{renderIcon:d.OM,onClick:()=>{let e=(0,c.showModal)("payment-mode-form-modal",{closeModal:()=>e()})},kind:"ghost"},e("addNewPaymentMode","Add new payment mode"))),n().createElement(m.DataTable,{rows:r,headers:i,isSortable:!0,size:"lg"},({rows:e,headers:a,getTableProps:l,getHeaderProps:r,getRowProps:i})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{className:"-esm-billing__payment-modes-config__table___Zs7R+",...l()},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,a.map(e=>n().createElement(m.TableHeader,{key:e.key,...r({header:e})},e.header)))),n().createElement(m.TableBody,null,e.map(e=>n().createElement(m.TableRow,{key:e.id,...i({row:e})},e.cells.map(a=>"actions"!==a.info.header?n().createElement(m.TableCell,{key:a.id},a.value):n().createElement(m.TableCell,{key:a.id},n().createElement(m.OverflowMenu,null,n().createElement(m.OverflowMenuItem,{className:E,itemText:(0,c.getCoreTranslation)("edit"),onClick:()=>{let a,l=t.find(t=>t.uuid===e.id);l&&(a=(0,c.showModal)("payment-mode-form-modal",{editPaymentMode:l,closeModal:()=>a()}))}}),n().createElement(m.OverflowMenuItem,{className:E,itemText:(0,c.getCoreTranslation)("delete"),onClick:()=>{let a,l=t.find(t=>t.uuid===e.id);l&&(a=(0,c.showModal)("delete-payment-mode-modal",{paymentModeUuid:l.uuid,paymentModeName:l.name,closeModal:()=>a()}))}}))))))))))))};var f=a(1772),v=a(4571),C=a(5084);let T={container:"-esm-billing__discount-requests__container___Oz7Sy",servicesTableContainer:"-esm-billing__discount-requests__servicesTableContainer___LRvfc",sectionMargin:"-esm-billing__discount-requests__sectionMargin___xsMap",emptyStateContainer:"-esm-billing__discount-requests__emptyStateContainer___5+u6v",loaderContainer:"-esm-billing__discount-requests__loaderContainer___UxUmn",errorContainer:"-esm-billing__discount-requests__errorContainer___lTCUs",billListContainer:"-esm-billing__discount-requests__billListContainer___Iy16I",filterEmptyState:"-esm-billing__discount-requests__filterEmptyState___OqM0-",filterContainer:"-esm-billing__discount-requests__filterContainer___4mog+",headerContainer:"-esm-billing__discount-requests__headerContainer___OQEp3",row:"-esm-billing__discount-requests__row___yW0Qk",statusTags:"-esm-billing__discount-requests__statusTags___lGmnm",illo:"-esm-billing__discount-requests__illo___f7Xua",content:"-esm-billing__discount-requests__content___FlVLI",desktopHeading:"-esm-billing__discount-requests__desktopHeading___jySob",tabletHeading:"-esm-billing__discount-requests__tabletHeading___LE23P",tile:"-esm-billing__discount-requests__tile___pM5j8",filterEmptyStateTile:"-esm-billing__discount-requests__filterEmptyStateTile___0XhKz",filterEmptyStateContent:"-esm-billing__discount-requests__filterEmptyStateContent___8LzTm",filterEmptyStateHelper:"-esm-billing__discount-requests__filterEmptyStateHelper___G-NDy"};function S({layout:e,handleSearch:t,isValidating:a,responsiveSize:l,searchString:r,t:s}){return n().createElement(n().Fragment,null,n().createElement("div",{className:T.headerContainer},n().createElement("div",{className:i()({[T.tabletHeading]:!(0,c.isDesktop)(e),[T.desktopHeading]:(0,c.isDesktop)(e)})},n().createElement("h4",null,s("discountRequests","Discount requests"))),a&&n().createElement("div",{className:T.backgroundDataFetchingIndicator},n().createElement("span",null,n().createElement(m.InlineLoading,null)))),n().createElement(m.Search,{closeButtonLabelText:s("clearSearch","Clear"),"data-testid":"discountRequestsSearchBar",labelText:s("searchDiscountRequests","Search discount requests"),placeholder:s("searchByPatientOrBill","Search by patient name or bill #"),value:r,onChange:t,size:l}))}let w=()=>{var e;let{t}=(0,o.useTranslation)(),{defaultCurrency:a,pageSize:r}=(0,c.useConfig)(),i=(0,c.useLayoutType)(),s=(0,c.isDesktop)(i)?"sm":"lg",d=(0,l.useMemo)(()=>[{id:"PENDING",text:t("pending","Pending")},{id:"APPROVED",text:t("approved","Approved")},{id:"REJECTED",text:t("rejected","Rejected")},{id:"ALL",text:t("all","All")}],[t]),[u,_]=(0,l.useState)(d[0]),[p,b]=(0,l.useState)(r??10),[g,h]=(0,l.useState)(""),{bills:E,isLoading:y,error:w,mutate:k,isValidating:N}=(0,v.Zi)({statuses:"ALL"===(e=u.id)?[C.nT.PENDING,C.nT.APPROVED,C.nT.REJECTED]:[e]}),q=(0,l.useMemo)(()=>{let e=g.trim().toLowerCase();return e?E.filter(t=>t.patient?.display?.toLowerCase().includes(e)||t.receiptNumber?.toLowerCase().includes(e)):E},[E,g]),{paginated:L,goTo:D,results:P,currentPage:M}=(0,c.usePagination)(q,p),{pageSizes:R}=(0,c.usePaginationInfo)(p,q.length,M,P.length),H=(0,l.useMemo)(()=>[{key:"dateCreated",header:t("date","Date")},{key:"receiptNumber",header:t("invoiceNo","Invoice #")},{key:"patient",header:t("patient","Patient")},{key:"billAmount",header:t("billAmount","Bill amount")},{key:"cashier",header:t("cashier","Cashier")}],[t]),B=(0,l.useCallback)(e=>{let t=(0,c.showModal)("review-bill-discounts-modal",{bill:e,onMutate:k,closeModal:()=>t()})},[k]),x=(0,l.useMemo)(()=>P.map(e=>({id:e.uuid,dateCreated:e.dateCreated?(0,c.formatDate)((0,c.parseDate)(e.dateCreated),{mode:"wide"}):"--",patient:e.patient?.display??"--",receiptNumber:e.receiptNumber?n().createElement(m.Link,{href:"#",onClick:t=>{t.preventDefault(),t.stopPropagation(),B(e)}},e.receiptNumber):"--",billAmount:(0,f.aL)(e.total??0,a),cashier:e.cashier?.display??"--",_raw:e})),[P,a,B]),A=(0,l.useCallback)(e=>{h(e.target.value),D(1)},[D]);return n().createElement("main",{className:T.container},n().createElement("main",{className:T.servicesTableContainer},n().createElement("div",{className:T.filterContainer},n().createElement(m.Dropdown,{className:T.filterDropdown,direction:"bottom",id:"discount-status-filter",selectedItem:u,items:d,itemToString:e=>e?e.text:"",label:"",onChange:({selectedItem:e})=>{_(e),D(1)},size:s,titleText:t("filterBy","Filter by:"),type:"inline"})),n().createElement("div",{className:T.billListContainer},n().createElement(S,{handleSearch:A,isValidating:N,layout:i,responsiveSize:s,searchString:g,t:t}),y&&!E?.length?n().createElement("div",{className:T.loaderContainer,role:"progressbar","aria-label":t("loadingDescription","Loading")},n().createElement(m.DataTableSkeleton,{rowCount:p,showHeader:!1,showToolbar:!1,zebra:!0,columnCount:H.length})):w?n().createElement("div",{className:T.errorContainer},n().createElement(m.Layer,null,n().createElement(c.ErrorState,{error:w,headerTitle:t("discountRequests","Discount requests")}))):x.length>0?n().createElement(n().Fragment,null,n().createElement(m.DataTable,{isSortable:!0,rows:x,headers:H,size:s,useZebraStyles:x.length>1},({rows:e,headers:a,getRowProps:l,getTableProps:r})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{...r(),"aria-label":t("discountRequests","Discount requests")},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,a.map(e=>n().createElement(m.TableHeader,{key:e.key},e.header)))),n().createElement(m.TableBody,null,e.map(e=>n().createElement(m.TableRow,{key:e.id,...l({row:e}),className:T.row,onClick:()=>{let t=x.find(t=>t.id===e.id);t&&B(t._raw)}},e.cells.map(e=>n().createElement(m.TableCell,{key:e.id},e.value)))))))),L&&n().createElement(m.Pagination,{forwardText:t("nextPage","Next page"),backwardText:t("previousPage","Previous page"),page:M,pageSize:p,pageSizes:R,totalItems:q.length,size:s,onChange:({pageSize:e,page:t})=>{e!==p&&b(e),t!==M&&D(t)}})):n().createElement(m.Layer,{className:T.emptyStateContainer},n().createElement(m.Tile,{className:T.tile},n().createElement("div",{className:T.illo},n().createElement(c.EmptyCardIllustration,null)),n().createElement("p",{className:T.content},t("noDiscountRequestsToDisplay","There are no discount requests to display.")))))))};var k=a(8683);let N={container:"-esm-billing__refund-requests__container___Wt9xd",servicesTableContainer:"-esm-billing__refund-requests__servicesTableContainer___IChqx",sectionMargin:"-esm-billing__refund-requests__sectionMargin___aL-4-",emptyStateContainer:"-esm-billing__refund-requests__emptyStateContainer___UcXAt",loaderContainer:"-esm-billing__refund-requests__loaderContainer___ImaKM",errorContainer:"-esm-billing__refund-requests__errorContainer___WvLOw",billListContainer:"-esm-billing__refund-requests__billListContainer___fs+ZV",filterEmptyState:"-esm-billing__refund-requests__filterEmptyState___KAwFs",filterContainer:"-esm-billing__refund-requests__filterContainer___hP1MN",headerContainer:"-esm-billing__refund-requests__headerContainer___ooxMR",row:"-esm-billing__refund-requests__row___yKZOb",statusTags:"-esm-billing__refund-requests__statusTags___J2Aq7",illo:"-esm-billing__refund-requests__illo___CafiD",content:"-esm-billing__refund-requests__content___H+jeh",desktopHeading:"-esm-billing__refund-requests__desktopHeading___brWKR",tabletHeading:"-esm-billing__refund-requests__tabletHeading___GlO5d",tile:"-esm-billing__refund-requests__tile___gu7cO",filterEmptyStateTile:"-esm-billing__refund-requests__filterEmptyStateTile___5HpOu",filterEmptyStateContent:"-esm-billing__refund-requests__filterEmptyStateContent___wE5s3",filterEmptyStateHelper:"-esm-billing__refund-requests__filterEmptyStateHelper___m2t8f"};function q({layout:e,handleSearch:t,isValidating:a,responsiveSize:l,searchString:r,t:s}){return n().createElement(n().Fragment,null,n().createElement("div",{className:N.headerContainer},n().createElement("div",{className:i()({[N.tabletHeading]:!(0,c.isDesktop)(e),[N.desktopHeading]:(0,c.isDesktop)(e)})},n().createElement("h4",null,s("refundRequests","Refund requests"))),a&&n().createElement("span",null,n().createElement(m.InlineLoading,null))),n().createElement(m.Search,{closeButtonLabelText:s("clearSearch","Clear"),"data-testid":"refundRequestsSearchBar",labelText:s("searchRefundRequests","Search refund requests"),placeholder:s("searchByPatientOrBill","Search by patient name or bill #"),value:r,onChange:t,size:l}))}let L=()=>{var e;let t,{t:a}=(0,o.useTranslation)(),{defaultCurrency:r,pageSize:i}=(0,c.useConfig)(),s=(0,c.useLayoutType)(),d=(0,c.isDesktop)(s)?"sm":"lg",u=(0,l.useMemo)(()=>[{id:"REQUESTED",text:a("requested","Requested")},{id:"APPROVED",text:a("approved","Approved")},{id:"REJECTED",text:a("rejected","Rejected")},{id:"COMPLETED",text:a("completed","Completed")},{id:"ALL",text:a("all","All")}],[a]),[_,p]=(0,l.useState)(u[0]),[b,g]=(0,l.useState)(i??10),[h,E]=(0,l.useState)(""),{bills:y,isLoading:v,error:T,mutate:S,isValidating:w}=(0,k.KY)({statuses:"ALL"===(e=_.id)?[C.fH.REQUESTED,C.fH.APPROVED,C.fH.REJECTED,C.fH.COMPLETED]:[e]}),L=(0,l.useMemo)(()=>{let e=h.trim().toLowerCase();return e?y.filter(t=>t.patient?.display?.toLowerCase().includes(e)||t.receiptNumber?.toLowerCase().includes(e)):y},[y,h]),{paginated:D,goTo:P,results:M,currentPage:R}=(0,c.usePagination)(L,b),{pageSizes:H}=(0,c.usePaginationInfo)(b,L.length,R,M.length),B=(0,l.useMemo)(()=>[{key:"dateCreated",header:a("date","Date")},{key:"receiptNumber",header:a("invoiceNo","Invoice #")},{key:"patient",header:a("patient","Patient")},{key:"billAmount",header:a("billAmount","Bill amount")},{key:"cashier",header:a("cashier","Cashier")}],[a]),x=(0,l.useCallback)(e=>{let t=(0,c.showModal)("review-bill-refunds-modal",{bill:e,onMutate:S,closeModal:()=>t()})},[S]),A=(0,l.useMemo)(()=>M.map(e=>({id:e.uuid,dateCreated:e.dateCreated?(0,c.formatDate)((0,c.parseDate)(e.dateCreated),{mode:"wide"}):"--",patient:e.patient?.display??"--",receiptNumber:e.receiptNumber?n().createElement(m.Link,{href:"#",onClick:t=>{t.preventDefault(),t.stopPropagation(),x(e)}},e.receiptNumber):"--",billAmount:(0,f.aL)(e.total??0,r),cashier:e.cashier?.display??"--",_raw:e})),[M,r,x]),I=(0,l.useCallback)(e=>{E(e.target.value),P(1)},[P]),O=(0,l.useCallback)(e=>{let t=A.find(t=>t.id===e);t&&x(t._raw)},[A,x]);return t=v&&!y?.length?n().createElement("div",{className:N.loaderContainer,"aria-busy":"true","aria-label":a("loading","Loading")},n().createElement(m.DataTableSkeleton,{rowCount:b,showHeader:!1,showToolbar:!1,zebra:!0,columnCount:B.length})):T?n().createElement("div",{className:N.errorContainer},n().createElement(m.Layer,null,n().createElement(c.ErrorState,{error:T,headerTitle:a("refundRequests","Refund requests")}))):A.length>0?n().createElement(n().Fragment,null,n().createElement(m.DataTable,{isSortable:!0,rows:A,headers:B,size:d,useZebraStyles:A.length>1},({rows:e,headers:t,getRowProps:l,getTableProps:r})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{...r(),"aria-label":a("refundRequests","Refund requests")},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,t.map(e=>n().createElement(m.TableHeader,{key:e.key},e.header)))),n().createElement(m.TableBody,null,e.map(e=>n().createElement(m.TableRow,{key:e.id,...l({row:e}),className:N.row,onClick:()=>O(e.id)},e.cells.map(e=>n().createElement(m.TableCell,{key:e.id},e.value)))))))),D&&n().createElement(m.Pagination,{forwardText:a("nextPage","Next page"),backwardText:a("previousPage","Previous page"),page:R,pageSize:b,pageSizes:H,totalItems:L.length,size:d,onChange:({pageSize:e,page:t})=>{e!==b&&g(e),t!==R&&P(t)}})):n().createElement(m.Layer,{className:N.emptyStateContainer},n().createElement(m.Tile,{className:N.tile},n().createElement("div",{className:N.illo},n().createElement(c.EmptyCardIllustration,null)),n().createElement("p",{className:N.content},a("noRefundRequestsToDisplay","There are no refund requests to display.")))),n().createElement("main",{className:N.container},n().createElement("div",{className:N.servicesTableContainer},n().createElement("div",{className:N.filterContainer},n().createElement(m.Dropdown,{className:N.filterDropdown,direction:"bottom",id:"refund-status-filter",selectedItem:_,items:u,itemToString:e=>e?e.text:"",label:"",onChange:({selectedItem:e})=>{p(e),P(1)},size:d,titleText:a("filterBy","Filter by:"),type:"inline"})),n().createElement("div",{className:N.billListContainer},n().createElement(q,{handleSearch:I,isValidating:w,layout:s,responsiveSize:d,searchString:h,t:a}),t)))},D=()=>{let{t:e}=(0,o.useTranslation)(),t=(0,c.useLayoutType)(),a=`${window.spaBase}/billable-services`;return(0,c.useLeftNav)({name:"billable-services-left-panel-slot",basePath:a}),n().createElement(s.BrowserRouter,{basename:a},n().createElement("div",{className:"-esm-billing__billable-services__pageWrapper___jBBH1"},n().createElement("main",{className:i()("-esm-billing__billable-services__pageContent___bnbzA",{"-esm-billing__billable-services__hasLeftNav___3svGW":(0,c.isDesktop)(t)})},n().createElement(g.A,{title:e("billingAdministration","Billing administration")}),n().createElement(s.Routes,null,n().createElement(s.Route,{path:"/",element:n().createElement(b,null)}),n().createElement(s.Route,{path:"/cash-point-config",element:n().createElement(h,null)}),n().createElement(s.Route,{path:"/payment-modes-config",element:n().createElement(y,null)}),n().createElement(s.Route,{path:"/discount-requests",element:n().createElement(w,null)}),n().createElement(s.Route,{path:"/refund-requests",element:n().createElement(L,null)})))))}},8730(e,t,a){"use strict";a.d(t,{A:()=>i});var l=a(5275),n=a.n(l),r=a(3137);let i=({title:e})=>n().createElement(r.PageHeader,{className:"-esm-billing__billing-header__header___P+PIw","data-testid":"billing-header"},n().createElement(r.PageHeaderContent,{illustration:n().createElement(r.PaymentsDeskPictogram,null),title:e}))},4571(e,t,a){"use strict";a.d(t,{GH:()=>c,Zi:()=>s,jb:()=>o,qu:()=>m}),a(6335);var l=a(3137),n=a(7003);let r=`${n.B}billDiscount`,i=`${n.B}bill`;function s({statuses:e}){let t=new URLSearchParams({discountStatus:e.join(","),v:"default"}),a=`${i}?${t.toString()}`,{data:n,isLoading:r,error:o,mutate:c,isValidating:m}=(0,l.useOpenmrsFetchAll)(a);return{bills:n??[],isLoading:r,error:o,mutate:c,isValidating:m}}async function o(e){return(await (0,l.openmrsFetch)(r,{method:"POST",headers:{"Content-Type":"application/json"},body:e})).data}async function c(e,t,a){return(await (0,l.openmrsFetch)(`${r}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{status:t,approver:a}})).data}async function m(e,t){await (0,l.openmrsFetch)(`${r}/${e}?reason=${encodeURIComponent(t)}`,{method:"DELETE"})}},2373(e,t,a){"use strict";a.d(t,{Zz:()=>n,aL:()=>r,o_:()=>i});var l=a(3137);function n(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let r=(e,t)=>{let a=window.i18next?.language?.substring(0,2)??"",l=new Intl.NumberFormat(a,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(l=`(${l})`),l},i=(e,t)=>{switch(e){case"male":return(0,l.getCoreTranslation)("male");case"female":return(0,l.getCoreTranslation)("female");case"other":return(0,l.getCoreTranslation)("other");case"unknown":return(0,l.getCoreTranslation)("unknown");default:return e}}},1772(e,t,a){"use strict";a.d(t,{aL:()=>l.aL,o_:()=>l.o_});var l=a(2373)},8683(e,t,a){"use strict";a.d(t,{KY:()=>s,eK:()=>c,qC:()=>o,zb:()=>m});var l=a(3137),n=a(7003);let r=`${n.B}billRefund`,i=`${n.B}bill`;function s({statuses:e}){let t=new URLSearchParams({refundStatus:e.join(","),v:"default"}),a=`${i}?${t.toString()}`,{data:n,isLoading:r,error:o,mutate:c,isValidating:m}=(0,l.useOpenmrsFetchAll)(a);return{bills:n??[],isLoading:r,error:o,mutate:c,isValidating:m}}async function o(e){return(await (0,l.openmrsFetch)(r,{method:"POST",headers:{"Content-Type":"application/json"},body:e})).data}async function c(e,t){return(await (0,l.openmrsFetch)(`${r}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:t})).data}async function m(e,t){await (0,l.openmrsFetch)(`${r}/${e}?reason=${encodeURIComponent(t)}`,{method:"DELETE"})}},6942(e){!function(){"use strict";var t={}.hasOwnProperty;function a(){for(var e="",n=0;n<arguments.length;n++){var r=arguments[n];r&&(e=l(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return a.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var n="";for(var r in e)t.call(e,r)&&e[r]&&(n=l(n,r));return n}(r)))}return e}function l(e,t){return t?e?e+" "+t:e+t:e}e.exports?(a.default=a,e.exports=a):"function"==typeof define&&"object"==typeof define.amd&&define.amd?define("classnames",[],function(){return a}):window.classNames=a}()}}]);
1
+ (globalThis.webpackChunk_openmrs_esm_billing_app=globalThis.webpackChunk_openmrs_esm_billing_app||[]).push([["350"],{6994(e,t,a){"use strict";a.d(t,{MH:()=>o,OS:()=>u,WJ:()=>c,bb:()=>m,cW:()=>_,j2:()=>d,ly:()=>s,vv:()=>p});var l=a(6335),n=a.n(l),r=a(9124),i=a(7003);let s=()=>{let e=`${i.B}billableService?v=custom:(uuid,name,shortName,serviceStatus,concept:(uuid,display,name:(name)),serviceType:(display,uuid),servicePrices:(uuid,name,price,paymentMode:(uuid,name)))`,{data:t,isLoading:a,isValidating:l,error:n,mutate:s}=(0,r.useOpenmrsFetchAll)(e);return{billableServices:t??[],isLoading:a,isValidating:l,error:n,mutate:s}};function o(){let{serviceTypes:e}=(0,r.useConfig)(),t=e.billableService,a=`${r.restBaseUrl}/concept/${t}?v=custom:(setMembers:(uuid,display))`,{data:l,error:i,isLoading:s}=n()(a,r.openmrsFetch);return{serviceTypes:l?.data.setMembers?[...l.data.setMembers].sort((e,t)=>e.display.localeCompare(t.display)):[],error:i,isLoadingServiceTypes:s}}let c=()=>{let e=`${i.B}paymentMode`,{data:t,error:a,isLoading:l,mutate:s}=n()(e,r.openmrsFetch);return{paymentModes:t?.data.results?[...t.data.results].sort((e,t)=>e.name.localeCompare(t.name)):[],error:a,isLoadingPaymentModes:l,mutate:s}};function m(e){let t=`${r.restBaseUrl}/conceptsearch?q=${e}`,{data:a,error:l,isLoading:i}=n()(e?t:null,r.openmrsFetch);return{searchResults:a?.data?.results??[],error:l,isSearching:i}}let d=async e=>{let t=`${i.B}api/billable-service`;return await (0,r.openmrsFetch)(t,{method:"POST",body:e,headers:{"Content-Type":"application/json"}})},u=async(e,t)=>{let a=`${i.B}billableService/${e}`;return await (0,r.openmrsFetch)(a,{method:"POST",body:t,headers:{"Content-Type":"application/json"}})},_=e=>{let t=`${r.restBaseUrl}/billing/paymentMode`;return(0,r.openmrsFetch)(t,{method:"POST",body:e,headers:{"Content-Type":"application/json"}})},p=(e,t)=>{let a=`${r.restBaseUrl}/billing/paymentMode/${e}`;return(0,r.openmrsFetch)(a,{method:"POST",body:t,headers:{"Content-Type":"application/json"}})}},7485(e,t,a){"use strict";a.r(t),a.d(t,{default:()=>D});var l=a(5275),n=a.n(l),r=a(6942),i=a.n(r),s=a(9335),o=a(8395),c=a(9124),m=a(1752),d=a(2137),u=a(6994);function _({layout:e,handleSearch:t,isValidating:a,launchBillableServiceForm:l,responsiveSize:r,t:s}){return n().createElement(n().Fragment,null,n().createElement("div",{className:"-esm-billing__billable-services__headerContainer___Jom5Q"},n().createElement("div",{className:i()({"-esm-billing__billable-services__tabletHeading___DjbOL":!(0,c.isDesktop)(e),"-esm-billing__billable-services__desktopHeading___JApyg":(0,c.isDesktop)(e)})},n().createElement("h4",null,s("servicesList","Services list"))),n().createElement("div",{className:"-esm-billing__billable-services__backgroundDataFetchingIndicator___Icc-9"},n().createElement("span",null,a?n().createElement(m.InlineLoading,null):null))),n().createElement("div",{className:"-esm-billing__billable-services__actionsContainer___gjC3h"},n().createElement(m.Search,{labelText:"",placeholder:s("filterTable","Filter table"),onChange:t,size:r}),n().createElement(m.Button,{size:r,kind:"primary",renderIcon:e=>n().createElement(d.Qp,{size:16,...e}),onClick:l,iconDescription:s("addNewBillableService","Add new billable service")},s("addNewService","Add new service"))))}let p=()=>{let{t:e}=(0,o.useTranslation)(),{billableServices:t,isLoading:a,isValidating:r,error:i,mutate:s}=(0,u.ly)(),d=(0,c.useLayoutType)(),{pageSize:p}=(0,c.useConfig)(),[b,g]=(0,l.useState)(""),h=(0,c.isDesktop)(d)?"lg":"sm",[E,y]=(0,l.useState)(p??10),f=[{header:e("serviceName","Service name"),key:"serviceName"},{header:e("shortName","Short name"),key:"shortName"},{header:e("serviceType","Service type"),key:"serviceType"},{header:e("serviceStatus","Service status"),key:"status"},{header:e("prices","Prices"),key:"prices"}],v=(0,l.useCallback)(()=>{(0,c.launchWorkspace2)("billable-service-form",{onWorkspaceClose:s})},[s]),C=(0,l.useMemo)(()=>{let e=Array.isArray(t)?t.flat():t;if(void 0!==e&&e.length>0){let t=b.trim();if(t){let a=t.toLowerCase();return e.filter(e=>Object.entries(e).some(([e,t])=>"uuid"!==e&&`${t}`.toLowerCase().includes(a)))}}return e},[b,t]),{paginated:T,goTo:S,results:w,currentPage:k}=(0,c.usePagination)(C,E),N=[];w&&w.forEach(e=>{let t={id:e.uuid,uuid:e.uuid,serviceName:e.name,shortName:e.shortName,serviceType:e?.serviceType?.display,status:e.serviceStatus,prices:e.servicePrices.map(e=>`${e.name} (${e.price})`).join(", ")||"--"};N.push(t)});let q=(0,l.useCallback)(e=>{S(1),g(e.target.value)},[S,g]),L=(0,l.useCallback)(e=>{(0,c.launchWorkspace2)("billable-service-form",{serviceToEdit:e,onWorkspaceClose:s})},[s]);return a?n().createElement(m.InlineLoading,{status:"active",iconDescription:(0,c.getCoreTranslation)("loading"),description:e("loading","Loading data")+"..."}):i?n().createElement(c.ErrorState,{headerTitle:e("billableService","Billable service"),error:i}):0===t.length?n().createElement(c.EmptyCard,{displayText:e("billableServices__lower","billable services"),headerTitle:e("billableService","Billable service"),launchForm:v}):n().createElement("div",{className:"-esm-billing__billable-services__serviceContainer___x-Geg"},n().createElement(_,{handleSearch:q,isValidating:r,launchBillableServiceForm:v,layout:d,responsiveSize:h,t:e}),n().createElement(m.DataTable,{isSortable:!0,rows:N,headers:f,overflowMenuOnHover:(0,c.isDesktop)(d),size:h,useZebraStyles:N?.length>1},({rows:t,headers:a,getHeaderProps:l,getRowProps:r,getTableProps:i})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{...i(),"aria-label":e("serviceList","Service list")},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,a.map(e=>n().createElement(m.TableHeader,{...l({header:e}),key:e.key},e.header)),n().createElement(m.TableHeader,{"aria-label":(0,c.getCoreTranslation)("actions")}))),n().createElement(m.TableBody,null,t.map(t=>n().createElement(m.TableRow,{key:t.id,...r({row:t})},t.cells.map(e=>n().createElement(m.TableCell,{key:e.id},e.value)),n().createElement(m.TableCell,{className:"cds--table-column-menu"},n().createElement(m.OverflowMenu,{size:"lg",flipped:!0},n().createElement(m.OverflowMenuItem,{className:"-esm-billing__billable-services__menuItem___yk74T",itemText:e("editBillableService","Edit billable service"),onClick:()=>L(w.find(e=>e.uuid===t.id))}))))))))),C?.length===0&&n().createElement("div",{className:"-esm-billing__billable-services__filterEmptyState___Gklg-"},n().createElement(m.Layer,{level:0},n().createElement(m.Tile,{className:"-esm-billing__billable-services__filterEmptyStateTile___DHTbi"},n().createElement("p",{className:"-esm-billing__billable-services__filterEmptyStateContent___n3TI3"},e("noMatchingServicesToDisplay","No matching services to display")),n().createElement("p",{className:"-esm-billing__billable-services__filterEmptyStateHelper___pVBoH"},e("checkFilters","Check the filters above"))))),T&&n().createElement(m.Pagination,{forwardText:e("nextPage","Next page"),backwardText:e("previousPage","Previous page"),page:k,pageSize:E,pageSizes:[10,20,30,40,50],totalItems:C?.length,className:"-esm-billing__billable-services__pagination___UwJIA",size:h,onChange:({pageSize:e,page:t})=>{e!==E&&y(e),t!==k&&S(t)}}))};function b(){return n().createElement("main",{className:"-esm-billing__dashboard__container___PDlGf"},n().createElement("main",{className:"-esm-billing__dashboard__servicesTableContainer___m7wfM"},n().createElement(p,null)))}var g=a(8730);let h=()=>{let{t:e}=(0,o.useTranslation)(),[t,a]=(0,l.useState)([]),r=(0,l.useCallback)(async()=>{try{let e=await (0,c.openmrsFetch)(`${c.restBaseUrl}/billing/cashPoint?v=full`);a(e.data.results||[])}catch(t){(0,c.showSnackbar)({title:(0,c.getCoreTranslation)("error"),subtitle:e("errorFetchingCashPoints","An error occurred while fetching cash points."),kind:"error",isLowContrast:!1})}},[e]);(0,l.useEffect)(()=>{r()},[r]);let i=t.map(e=>({id:e.uuid,name:e.name,uuid:e.uuid,location:e.location?e.location.display:"None"})),s=[{key:"name",header:e("name","Name")},{key:"uuid",header:e("uuid","UUID")},{key:"location",header:e("location","Location")}];return n().createElement("div",{className:"-esm-billing__cash-point-configuration__container___-hvwr"},n().createElement("div",{className:"-esm-billing__cash-point-configuration__card___ytTem"},n().createElement(c.CardHeader,{title:e("cashPointHistory","Cash point history")},n().createElement(m.Button,{renderIcon:d.OM,onClick:()=>{let e=(0,c.showModal)("add-cash-point-modal",{onCashPointAdded:r,closeModal:()=>e()})},kind:"ghost"},e("addNewCashPoint","Add new cash point"))),n().createElement("div",null,n().createElement(m.DataTable,{rows:i,headers:s,isSortable:!0,size:"lg"},({rows:e,headers:t,getTableProps:a,getHeaderProps:l,getRowProps:r})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{className:"-esm-billing__cash-point-configuration__table___x+kW9",...a()},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,t.map(e=>n().createElement(m.TableHeader,{key:e.key,...l({header:e})},e.header)))),n().createElement(m.TableBody,null,e.map(e=>n().createElement(m.TableRow,{key:e.id,...r({row:e})},e.cells.map(e=>n().createElement(m.TableCell,{key:e.id},e.value)))))))))))},E="-esm-billing__payment-modes-config__menuItem___7qBhO",y=()=>{let{t:e}=(0,o.useTranslation)(),{paymentModes:t,error:a,isLoadingPaymentModes:l}=(0,u.WJ)(),r=t.map(e=>({id:e.uuid,name:e.name,description:e.description||"--"})),i=[{key:"name",header:e("name","Name")},{key:"description",header:e("description","Description")},{key:"actions",header:(0,c.getCoreTranslation)("actions")}];return l?n().createElement(m.InlineLoading,{status:"active",iconDescription:(0,c.getCoreTranslation)("loading"),description:e("loading","Loading data")+"..."}):a?n().createElement(c.ErrorState,{headerTitle:e("paymentMode","Payment mode"),error:a}):n().createElement("div",{className:"-esm-billing__payment-modes-config__container___hB7Cc"},n().createElement("div",{className:"-esm-billing__payment-modes-config__card___FGL9q"},n().createElement(c.CardHeader,{title:e("paymentModeHistory","Payment mode history")},n().createElement(m.Button,{renderIcon:d.OM,onClick:()=>{let e=(0,c.showModal)("payment-mode-form-modal",{closeModal:()=>e()})},kind:"ghost"},e("addNewPaymentMode","Add new payment mode"))),n().createElement(m.DataTable,{rows:r,headers:i,isSortable:!0,size:"lg"},({rows:e,headers:a,getTableProps:l,getHeaderProps:r,getRowProps:i})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{className:"-esm-billing__payment-modes-config__table___Zs7R+",...l()},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,a.map(e=>n().createElement(m.TableHeader,{key:e.key,...r({header:e})},e.header)))),n().createElement(m.TableBody,null,e.map(e=>n().createElement(m.TableRow,{key:e.id,...i({row:e})},e.cells.map(a=>"actions"!==a.info.header?n().createElement(m.TableCell,{key:a.id},a.value):n().createElement(m.TableCell,{key:a.id},n().createElement(m.OverflowMenu,null,n().createElement(m.OverflowMenuItem,{className:E,itemText:(0,c.getCoreTranslation)("edit"),onClick:()=>{let a,l=t.find(t=>t.uuid===e.id);l&&(a=(0,c.showModal)("payment-mode-form-modal",{editPaymentMode:l,closeModal:()=>a()}))}}),n().createElement(m.OverflowMenuItem,{className:E,itemText:(0,c.getCoreTranslation)("delete"),onClick:()=>{let a,l=t.find(t=>t.uuid===e.id);l&&(a=(0,c.showModal)("delete-payment-mode-modal",{paymentModeUuid:l.uuid,paymentModeName:l.name,closeModal:()=>a()}))}}))))))))))))};var f=a(1772),v=a(4571),C=a(5084);let T={container:"-esm-billing__discount-requests__container___Oz7Sy",servicesTableContainer:"-esm-billing__discount-requests__servicesTableContainer___LRvfc",sectionMargin:"-esm-billing__discount-requests__sectionMargin___xsMap",emptyStateContainer:"-esm-billing__discount-requests__emptyStateContainer___5+u6v",loaderContainer:"-esm-billing__discount-requests__loaderContainer___UxUmn",errorContainer:"-esm-billing__discount-requests__errorContainer___lTCUs",billListContainer:"-esm-billing__discount-requests__billListContainer___Iy16I",filterEmptyState:"-esm-billing__discount-requests__filterEmptyState___OqM0-",filterContainer:"-esm-billing__discount-requests__filterContainer___4mog+",headerContainer:"-esm-billing__discount-requests__headerContainer___OQEp3",row:"-esm-billing__discount-requests__row___yW0Qk",statusTags:"-esm-billing__discount-requests__statusTags___lGmnm",illo:"-esm-billing__discount-requests__illo___f7Xua",content:"-esm-billing__discount-requests__content___FlVLI",desktopHeading:"-esm-billing__discount-requests__desktopHeading___jySob",tabletHeading:"-esm-billing__discount-requests__tabletHeading___LE23P",tile:"-esm-billing__discount-requests__tile___pM5j8",filterEmptyStateTile:"-esm-billing__discount-requests__filterEmptyStateTile___0XhKz",filterEmptyStateContent:"-esm-billing__discount-requests__filterEmptyStateContent___8LzTm",filterEmptyStateHelper:"-esm-billing__discount-requests__filterEmptyStateHelper___G-NDy"};function S({layout:e,handleSearch:t,isValidating:a,responsiveSize:l,searchString:r,t:s}){return n().createElement(n().Fragment,null,n().createElement("div",{className:T.headerContainer},n().createElement("div",{className:i()({[T.tabletHeading]:!(0,c.isDesktop)(e),[T.desktopHeading]:(0,c.isDesktop)(e)})},n().createElement("h4",null,s("discountRequests","Discount requests"))),a&&n().createElement("div",{className:T.backgroundDataFetchingIndicator},n().createElement("span",null,n().createElement(m.InlineLoading,null)))),n().createElement(m.Search,{closeButtonLabelText:s("clearSearch","Clear"),"data-testid":"discountRequestsSearchBar",labelText:s("searchDiscountRequests","Search discount requests"),placeholder:s("searchByPatientOrBill","Search by patient name or bill #"),value:r,onChange:t,size:l}))}let w=()=>{var e;let{t}=(0,o.useTranslation)(),{defaultCurrency:a,pageSize:r}=(0,c.useConfig)(),i=(0,c.useLayoutType)(),s=(0,c.isDesktop)(i)?"sm":"lg",d=(0,l.useMemo)(()=>[{id:"PENDING",text:t("pending","Pending")},{id:"APPROVED",text:t("approved","Approved")},{id:"REJECTED",text:t("rejected","Rejected")},{id:"ALL",text:t("all","All")}],[t]),[u,_]=(0,l.useState)(d[0]),[p,b]=(0,l.useState)(r??10),[g,h]=(0,l.useState)(""),{bills:E,isLoading:y,error:w,mutate:k,isValidating:N}=(0,v.Zi)({statuses:"ALL"===(e=u.id)?[C.nT.PENDING,C.nT.APPROVED,C.nT.REJECTED]:[e]}),q=(0,l.useMemo)(()=>{let e=g.trim().toLowerCase();return e?E.filter(t=>t.patient?.display?.toLowerCase().includes(e)||t.receiptNumber?.toLowerCase().includes(e)):E},[E,g]),{paginated:L,goTo:D,results:P,currentPage:M}=(0,c.usePagination)(q,p),{pageSizes:R}=(0,c.usePaginationInfo)(p,q.length,M,P.length),H=(0,l.useMemo)(()=>[{key:"dateCreated",header:t("date","Date")},{key:"receiptNumber",header:t("invoiceNo","Invoice #")},{key:"patient",header:t("patient","Patient")},{key:"billAmount",header:t("billAmount","Bill amount")},{key:"cashier",header:t("cashier","Cashier")}],[t]),B=(0,l.useCallback)(e=>{let t=(0,c.showModal)("review-bill-discounts-modal",{bill:e,onMutate:k,closeModal:()=>t()})},[k]),x=(0,l.useMemo)(()=>P.map(e=>({id:e.uuid,dateCreated:e.dateCreated?(0,c.formatDate)((0,c.parseDate)(e.dateCreated),{mode:"wide"}):"--",patient:e.patient?.display??"--",receiptNumber:e.receiptNumber?n().createElement(m.Link,{href:"#",onClick:t=>{t.preventDefault(),t.stopPropagation(),B(e)}},e.receiptNumber):"--",billAmount:(0,f.aL)(e.total??0,a),cashier:e.cashier?.display??"--",_raw:e})),[P,a,B]),A=(0,l.useCallback)(e=>{h(e.target.value),D(1)},[D]);return n().createElement("main",{className:T.container},n().createElement("main",{className:T.servicesTableContainer},n().createElement("div",{className:T.filterContainer},n().createElement(m.Dropdown,{className:T.filterDropdown,direction:"bottom",id:"discount-status-filter",selectedItem:u,items:d,itemToString:e=>e?e.text:"",label:"",onChange:({selectedItem:e})=>{_(e),D(1)},size:s,titleText:t("filterBy","Filter by:"),type:"inline"})),n().createElement("div",{className:T.billListContainer},n().createElement(S,{handleSearch:A,isValidating:N,layout:i,responsiveSize:s,searchString:g,t:t}),y&&!E?.length?n().createElement("div",{className:T.loaderContainer,role:"progressbar","aria-label":t("loadingDescription","Loading")},n().createElement(m.DataTableSkeleton,{rowCount:p,showHeader:!1,showToolbar:!1,zebra:!0,columnCount:H.length})):w?n().createElement("div",{className:T.errorContainer},n().createElement(m.Layer,null,n().createElement(c.ErrorState,{error:w,headerTitle:t("discountRequests","Discount requests")}))):x.length>0?n().createElement(n().Fragment,null,n().createElement(m.DataTable,{isSortable:!0,rows:x,headers:H,size:s,useZebraStyles:x.length>1},({rows:e,headers:a,getRowProps:l,getTableProps:r})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{...r(),"aria-label":t("discountRequests","Discount requests")},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,a.map(e=>n().createElement(m.TableHeader,{key:e.key},e.header)))),n().createElement(m.TableBody,null,e.map(e=>n().createElement(m.TableRow,{key:e.id,...l({row:e}),className:T.row,onClick:()=>{let t=x.find(t=>t.id===e.id);t&&B(t._raw)}},e.cells.map(e=>n().createElement(m.TableCell,{key:e.id},e.value)))))))),L&&n().createElement(m.Pagination,{forwardText:t("nextPage","Next page"),backwardText:t("previousPage","Previous page"),page:M,pageSize:p,pageSizes:R,totalItems:q.length,size:s,onChange:({pageSize:e,page:t})=>{e!==p&&b(e),t!==M&&D(t)}})):n().createElement(m.Layer,{className:T.emptyStateContainer},n().createElement(m.Tile,{className:T.tile},n().createElement("div",{className:T.illo},n().createElement(c.EmptyCardIllustration,null)),n().createElement("p",{className:T.content},t("noDiscountRequestsToDisplay","There are no discount requests to display.")))))))};var k=a(8683);let N={container:"-esm-billing__refund-requests__container___Wt9xd",servicesTableContainer:"-esm-billing__refund-requests__servicesTableContainer___IChqx",sectionMargin:"-esm-billing__refund-requests__sectionMargin___aL-4-",emptyStateContainer:"-esm-billing__refund-requests__emptyStateContainer___UcXAt",loaderContainer:"-esm-billing__refund-requests__loaderContainer___ImaKM",errorContainer:"-esm-billing__refund-requests__errorContainer___WvLOw",billListContainer:"-esm-billing__refund-requests__billListContainer___fs+ZV",filterEmptyState:"-esm-billing__refund-requests__filterEmptyState___KAwFs",filterContainer:"-esm-billing__refund-requests__filterContainer___hP1MN",headerContainer:"-esm-billing__refund-requests__headerContainer___ooxMR",row:"-esm-billing__refund-requests__row___yKZOb",statusTags:"-esm-billing__refund-requests__statusTags___J2Aq7",illo:"-esm-billing__refund-requests__illo___CafiD",content:"-esm-billing__refund-requests__content___H+jeh",desktopHeading:"-esm-billing__refund-requests__desktopHeading___brWKR",tabletHeading:"-esm-billing__refund-requests__tabletHeading___GlO5d",tile:"-esm-billing__refund-requests__tile___gu7cO",filterEmptyStateTile:"-esm-billing__refund-requests__filterEmptyStateTile___5HpOu",filterEmptyStateContent:"-esm-billing__refund-requests__filterEmptyStateContent___wE5s3",filterEmptyStateHelper:"-esm-billing__refund-requests__filterEmptyStateHelper___m2t8f"};function q({layout:e,handleSearch:t,isValidating:a,responsiveSize:l,searchString:r,t:s}){return n().createElement(n().Fragment,null,n().createElement("div",{className:N.headerContainer},n().createElement("div",{className:i()({[N.tabletHeading]:!(0,c.isDesktop)(e),[N.desktopHeading]:(0,c.isDesktop)(e)})},n().createElement("h4",null,s("refundRequests","Refund requests"))),a&&n().createElement("span",null,n().createElement(m.InlineLoading,null))),n().createElement(m.Search,{closeButtonLabelText:s("clearSearch","Clear"),"data-testid":"refundRequestsSearchBar",labelText:s("searchRefundRequests","Search refund requests"),placeholder:s("searchByPatientOrBill","Search by patient name or bill #"),value:r,onChange:t,size:l}))}let L=()=>{var e;let t,{t:a}=(0,o.useTranslation)(),{defaultCurrency:r,pageSize:i}=(0,c.useConfig)(),s=(0,c.useLayoutType)(),d=(0,c.isDesktop)(s)?"sm":"lg",u=(0,l.useMemo)(()=>[{id:"REQUESTED",text:a("requested","Requested")},{id:"APPROVED",text:a("approved","Approved")},{id:"REJECTED",text:a("rejected","Rejected")},{id:"COMPLETED",text:a("completed","Completed")},{id:"ALL",text:a("all","All")}],[a]),[_,p]=(0,l.useState)(u[0]),[b,g]=(0,l.useState)(i??10),[h,E]=(0,l.useState)(""),{bills:y,isLoading:v,error:T,mutate:S,isValidating:w}=(0,k.KY)({statuses:"ALL"===(e=_.id)?[C.fH.REQUESTED,C.fH.APPROVED,C.fH.REJECTED,C.fH.COMPLETED]:[e]}),L=(0,l.useMemo)(()=>{let e=h.trim().toLowerCase();return e?y.filter(t=>t.patient?.display?.toLowerCase().includes(e)||t.receiptNumber?.toLowerCase().includes(e)):y},[y,h]),{paginated:D,goTo:P,results:M,currentPage:R}=(0,c.usePagination)(L,b),{pageSizes:H}=(0,c.usePaginationInfo)(b,L.length,R,M.length),B=(0,l.useMemo)(()=>[{key:"dateCreated",header:a("date","Date")},{key:"receiptNumber",header:a("invoiceNo","Invoice #")},{key:"patient",header:a("patient","Patient")},{key:"billAmount",header:a("billAmount","Bill amount")},{key:"cashier",header:a("cashier","Cashier")}],[a]),x=(0,l.useCallback)(e=>{let t=(0,c.showModal)("review-bill-refunds-modal",{bill:e,onMutate:S,closeModal:()=>t()})},[S]),A=(0,l.useMemo)(()=>M.map(e=>({id:e.uuid,dateCreated:e.dateCreated?(0,c.formatDate)((0,c.parseDate)(e.dateCreated),{mode:"wide"}):"--",patient:e.patient?.display??"--",receiptNumber:e.receiptNumber?n().createElement(m.Link,{href:"#",onClick:t=>{t.preventDefault(),t.stopPropagation(),x(e)}},e.receiptNumber):"--",billAmount:(0,f.aL)(e.total??0,r),cashier:e.cashier?.display??"--",_raw:e})),[M,r,x]),I=(0,l.useCallback)(e=>{E(e.target.value),P(1)},[P]),O=(0,l.useCallback)(e=>{let t=A.find(t=>t.id===e);t&&x(t._raw)},[A,x]);return t=v&&!y?.length?n().createElement("div",{className:N.loaderContainer,"aria-busy":"true","aria-label":a("loading","Loading")},n().createElement(m.DataTableSkeleton,{rowCount:b,showHeader:!1,showToolbar:!1,zebra:!0,columnCount:B.length})):T?n().createElement("div",{className:N.errorContainer},n().createElement(m.Layer,null,n().createElement(c.ErrorState,{error:T,headerTitle:a("refundRequests","Refund requests")}))):A.length>0?n().createElement(n().Fragment,null,n().createElement(m.DataTable,{isSortable:!0,rows:A,headers:B,size:d,useZebraStyles:A.length>1},({rows:e,headers:t,getRowProps:l,getTableProps:r})=>n().createElement(m.TableContainer,null,n().createElement(m.Table,{...r(),"aria-label":a("refundRequests","Refund requests")},n().createElement(m.TableHead,null,n().createElement(m.TableRow,null,t.map(e=>n().createElement(m.TableHeader,{key:e.key},e.header)))),n().createElement(m.TableBody,null,e.map(e=>n().createElement(m.TableRow,{key:e.id,...l({row:e}),className:N.row,onClick:()=>O(e.id)},e.cells.map(e=>n().createElement(m.TableCell,{key:e.id},e.value)))))))),D&&n().createElement(m.Pagination,{forwardText:a("nextPage","Next page"),backwardText:a("previousPage","Previous page"),page:R,pageSize:b,pageSizes:H,totalItems:L.length,size:d,onChange:({pageSize:e,page:t})=>{e!==b&&g(e),t!==R&&P(t)}})):n().createElement(m.Layer,{className:N.emptyStateContainer},n().createElement(m.Tile,{className:N.tile},n().createElement("div",{className:N.illo},n().createElement(c.EmptyCardIllustration,null)),n().createElement("p",{className:N.content},a("noRefundRequestsToDisplay","There are no refund requests to display.")))),n().createElement("main",{className:N.container},n().createElement("div",{className:N.servicesTableContainer},n().createElement("div",{className:N.filterContainer},n().createElement(m.Dropdown,{className:N.filterDropdown,direction:"bottom",id:"refund-status-filter",selectedItem:_,items:u,itemToString:e=>e?e.text:"",label:"",onChange:({selectedItem:e})=>{p(e),P(1)},size:d,titleText:a("filterBy","Filter by:"),type:"inline"})),n().createElement("div",{className:N.billListContainer},n().createElement(q,{handleSearch:I,isValidating:w,layout:s,responsiveSize:d,searchString:h,t:a}),t)))},D=()=>{let{t:e}=(0,o.useTranslation)(),t=(0,c.useLayoutType)(),a=`${window.spaBase}/billable-services`;return(0,c.useLeftNav)({name:"billable-services-left-panel-slot",basePath:a}),n().createElement(s.BrowserRouter,{basename:a},n().createElement("div",{className:"-esm-billing__billable-services__pageWrapper___jBBH1"},n().createElement("main",{className:i()("-esm-billing__billable-services__pageContent___bnbzA",{"-esm-billing__billable-services__hasLeftNav___3svGW":(0,c.isDesktop)(t)})},n().createElement(g.A,{title:e("billingAdministration","Billing administration")}),n().createElement(s.Routes,null,n().createElement(s.Route,{path:"/",element:n().createElement(b,null)}),n().createElement(s.Route,{path:"/cash-point-config",element:n().createElement(h,null)}),n().createElement(s.Route,{path:"/payment-modes-config",element:n().createElement(y,null)}),n().createElement(s.Route,{path:"/discount-requests",element:n().createElement(w,null)}),n().createElement(s.Route,{path:"/refund-requests",element:n().createElement(L,null)})))))}},8730(e,t,a){"use strict";a.d(t,{A:()=>i});var l=a(5275),n=a.n(l),r=a(9124);let i=({title:e})=>n().createElement(r.PageHeader,{className:"-esm-billing__billing-header__header___P+PIw","data-testid":"billing-header"},n().createElement(r.PageHeaderContent,{illustration:n().createElement(r.PaymentsDeskPictogram,null),title:e}))},4571(e,t,a){"use strict";a.d(t,{GH:()=>c,Zi:()=>s,jb:()=>o,qu:()=>m}),a(6335);var l=a(9124),n=a(7003);let r=`${n.B}billDiscount`,i=`${n.B}bill`;function s({statuses:e}){let t=new URLSearchParams({discountStatus:e.join(","),v:"default"}),a=`${i}?${t.toString()}`,{data:n,isLoading:r,error:o,mutate:c,isValidating:m}=(0,l.useOpenmrsFetchAll)(a);return{bills:n??[],isLoading:r,error:o,mutate:c,isValidating:m}}async function o(e){return(await (0,l.openmrsFetch)(r,{method:"POST",headers:{"Content-Type":"application/json"},body:e})).data}async function c(e,t,a){return(await (0,l.openmrsFetch)(`${r}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{status:t,approver:a}})).data}async function m(e,t){await (0,l.openmrsFetch)(`${r}/${e}?reason=${encodeURIComponent(t)}`,{method:"DELETE"})}},2373(e,t,a){"use strict";a.d(t,{Zz:()=>n,aL:()=>r,o_:()=>i});var l=a(9124);function n(e){return Array.isArray(e)?e.reduce((e,t)=>"number"==typeof t.price&&"number"==typeof t.quantity&&!0!==t.voided?e+t.price*t.quantity:e,0):0}let r=(e,t)=>{let a=window.i18next?.language?.substring(0,2)??"",l=new Intl.NumberFormat(a,{style:"currency",currency:t,minimumFractionDigits:2}).format(Math.abs(e));return e<0&&(l=`(${l})`),l},i=(e,t)=>{switch(e){case"male":return(0,l.getCoreTranslation)("male");case"female":return(0,l.getCoreTranslation)("female");case"other":return(0,l.getCoreTranslation)("other");case"unknown":return(0,l.getCoreTranslation)("unknown");default:return e}}},1772(e,t,a){"use strict";a.d(t,{aL:()=>l.aL,o_:()=>l.o_});var l=a(2373)},8683(e,t,a){"use strict";a.d(t,{KY:()=>s,eK:()=>c,qC:()=>o,zb:()=>m});var l=a(9124),n=a(7003);let r=`${n.B}billRefund`,i=`${n.B}bill`;function s({statuses:e}){let t=new URLSearchParams({refundStatus:e.join(","),v:"default"}),a=`${i}?${t.toString()}`,{data:n,isLoading:r,error:o,mutate:c,isValidating:m}=(0,l.useOpenmrsFetchAll)(a);return{bills:n??[],isLoading:r,error:o,mutate:c,isValidating:m}}async function o(e){return(await (0,l.openmrsFetch)(r,{method:"POST",headers:{"Content-Type":"application/json"},body:e})).data}async function c(e,t){return(await (0,l.openmrsFetch)(`${r}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:t})).data}async function m(e,t){await (0,l.openmrsFetch)(`${r}/${e}?reason=${encodeURIComponent(t)}`,{method:"DELETE"})}},6942(e){!function(){"use strict";var t={}.hasOwnProperty;function a(){for(var e="",n=0;n<arguments.length;n++){var r=arguments[n];r&&(e=l(e,function(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return a.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var n="";for(var r in e)t.call(e,r)&&e[r]&&(n=l(n,r));return n}(r)))}return e}function l(e,t){return t?e?e+" "+t:e+t:e}e.exports?(a.default=a,e.exports=a):"function"==typeof define&&"object"==typeof define.amd&&define.amd?define("classnames",[],function(){return a}):window.classNames=a}()}}]);