@accounter/client
Version:
Accounter client application
1 lines • 16.4 kB
JavaScript
import{s as e}from"./dist-ypP48_Ax.js";import{i as t,o as n}from"./utils-CbS-oR5I.js";import{r}from"./error-handling-CKe_iwSC.js";import{n as i}from"./routes-Cawu7UJi.js";import{t as a}from"./loader-circle-CfW9jOIr.js";import{E as o,Ft as s,Pt as c,R as l,_t as u,p as d}from"./common-D-vYt_Yl.js";import{c as f}from"./separator-BvKylNhK.js";import{t as p}from"./funnel-BrJTCiKR.js";import{t as m}from"./button-DUNsVBiu.js";import{$c as h,Jc as g,Ql as _,Ul as v,Xc as y,Zc as b,jl as x}from"./table-AJA7Uyxy.js";import{$i as S,D as C,Ji as w,Qi as T,Qo as E,Xi as D,Yi as O,Zi as k,ea as A,qi as j,ta as M}from"./graphql-DC5GYCFE.js";import{t as N}from"./MultiSelect-BRhx7whT.js";import{t as P}from"./use-url-query-Bb8ddrDs.js";import{t as F}from"./page-layout-DfY10rJx.js";var I=e(n(),1),L=e(x(),1),R=t();function z(){let e=new Date;return{fromDate:v(e,`yyyy-MM-dd`),toDate:v(_(e),`yyyy-MM-dd`)}}function B({filter:e,setFilter:t,closeModal:n}){let{control:i,handleSubmit:a,setValue:o}=y({defaultValues:{...e}}),[s,c]=(0,I.useState)([]),{userContext:l}=(0,I.useContext)(h),[{data:d,fetching:f,error:p},m]=E({query:C,variables:{employerId:l?.context.adminBusinessId??``},pause:!0});(0,I.useEffect)(()=>{m()},[l?.context.adminBusinessId,m]),(0,I.useEffect)(()=>{p&&r.error(`Error`,{description:`Oh no!, we have an error fetching employees! 🤥`})},[p]);let _=e=>{e.employeeIDs?.length===0&&delete e.employeeIDs,t(e),n()};function b(){t({...z()}),n()}(0,I.useEffect)(()=>{d?.employeesByEmployerId.length&&c(d.employeesByEmployerId.filter(e=>!e.name.toLocaleLowerCase().includes(`batched`)).map(e=>({value:e.id,label:e.name})).sort((e,t)=>e.label>t.label?1:-1))},[d,c]);function x([e,t]){if(t){let e=new Date(t.getFullYear(),t.getMonth()+1,0);o(`toDate`,v(e,`yyyy-MM-dd`))}if(e){let t=new Date(e.getFullYear(),e.getMonth(),1);o(`fromDate`,v(t,`yyyy-MM-dd`))}}let S=z();return(0,R.jsxs)(R.Fragment,{children:[f?(0,R.jsx)(`div`,{children:`Loading...`}):(0,R.jsx)(`div`,{}),(0,R.jsxs)(`form`,{onSubmit:a(_),children:[(0,R.jsx)(u,{type:`range`,numberOfColumns:2,defaultValue:[new Date(e?.fromDate??S.fromDate),new Date(e?.toDate??S.toDate)],defaultDate:new Date(e?.fromDate??S.fromDate),onChange:x,popoverProps:{withinPortal:!0}}),(0,R.jsx)(g,{name:`employeeIDs`,control:i,defaultValue:e.employeeIDs,render:({field:e,fieldState:t})=>(0,R.jsx)(N,{...e,data:s,value:e.value??[],disabled:f,label:`Employees`,placeholder:`Scroll to see all options`,maxDropdownHeight:160,searchable:!0,error:t.error?.message})}),(0,R.jsxs)(`div`,{className:`flex justify-center mt-5 gap-3`,children:[(0,R.jsx)(`button`,{type:`submit`,disabled:f,className:`text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg`,children:`Filter`}),(0,R.jsx)(`button`,{type:`button`,className:`text-white bg-orange-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-orange-600 rounded-sm text-lg`,onClick:b,children:`Clear`}),(0,R.jsx)(`button`,{type:`button`,className:`text-white bg-rose-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-rose-600 rounded-sm text-lg`,onClick:n,children:`Cancel`})]})]})]})}function V({filter:e,setFilter:t}){let[n,r]=(0,I.useState)(!1),{get:a,set:o}=P();(0,I.useEffect)(()=>{let t=i(e);t!==a(`salariesFilters`)&&o(`salariesFilters`,t)},[e,a,o]);let s=(0,I.useCallback)(n=>{(0,L.default)(n,e)||t(n)},[e,t]);return(0,R.jsxs)(`div`,{className:`flex flex-row gap-5 items-center`,children:[(0,R.jsx)(d,{opened:n,onClose:()=>r(!1),content:(0,R.jsx)(B,{filter:e,setFilter:s,closeModal:()=>r(!1)}),modalSize:`xl`}),(0,R.jsx)(m,{variant:`outline`,size:`icon`,className:`size-7.5`,onClick:()=>r(!0),children:(0,R.jsx)(p,{className:`size-5`})})]})}var H=({month:e,setInsertSalaryRecord:t})=>{let n=v(new Date(e),`MMMM yyyy`);return(0,R.jsx)(`tr`,{tabIndex:0,className:`h-16 rounded-sm`,children:(0,R.jsx)(`td`,{colSpan:100,children:(0,R.jsxs)(`div`,{className:`flex justify-between pl-5`,children:[(0,R.jsx)(`p`,{className:`text-lg font-bold text-gray-800`,children:n}),(0,R.jsx)(`div`,{className:`flex items-center`,children:(0,R.jsx)(`div`,{className:`flex flex-col`,children:(0,R.jsx)(c,{onClick:t})})})]})})})},U=({data:e})=>{let{employee:t,month:n}=b(w,e),r=v(new Date(n),`MMMM yyyy`);return(0,R.jsx)(`td`,{className:``,children:(0,R.jsx)(`div`,{className:`flex items-center pl-5`,children:(0,R.jsxs)(`div`,{className:`flex flex-col`,children:[(0,R.jsx)(`p`,{className:`text-base font-bold text-gray-800`,children:t?.name}),(0,R.jsx)(`p`,{className:`text-base font-medium text-gray-800`,children:r})]})})})},W=({data:e})=>{let{pensionEmployeeAmount:t,pensionEmployeePercentage:n,pensionEmployerAmount:r,pensionEmployerPercentage:i,compensationsAmount:a,compensationsPercentage:o,pensionFund:s,trainingFund:c,trainingFundEmployeeAmount:l,trainingFundEmployeePercentage:u,trainingFundEmployerAmount:d,trainingFundEmployerPercentage:f}=b(D,e);return(0,R.jsx)(`td`,{className:`pl-5`,children:(0,R.jsx)(`div`,{className:`flex items-center`,children:(0,R.jsxs)(`div`,{className:`flex flex-col`,children:[(0,R.jsx)(`p`,{className:`text-md font-bold text-gray-800`,children:`Pension Fund`}),(0,R.jsx)(`p`,{className:`text-md font-medium text-gray-800`,children:s?.name}),!!t?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Employee Part:`}),(0,R.jsxs)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:[t?.formatted,n&&` (${n}%)`]})]}),!!r?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Employer Part:`}),(0,R.jsxs)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:[r?.formatted,i&&` (${i}%)`]})]}),!!a?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Compensations Amount:`}),(0,R.jsxs)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:[a?.formatted,o&&` (${o}%)`]})]}),(0,R.jsx)(`p`,{className:`text-md font-bold text-gray-800 mt-2`,children:`Training Fund`}),(0,R.jsx)(`p`,{className:`text-md font-medium text-gray-800`,children:c?.name}),!!l?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Employee Part:`}),(0,R.jsxs)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:[l?.formatted,u&&` (${u}%)`]})]}),!!d?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Employer Part:`}),(0,R.jsxs)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:[d?.formatted,f&&` (${f}%)`]})]})]})})})},G=({data:e})=>{let{healthInsuranceAmount:t,socialSecurityEmployeeAmount:n,socialSecurityEmployerAmount:r,incomeTaxAmount:i,notionalExpense:a}=b(k,e);return(0,R.jsx)(`td`,{className:`pl-5`,children:(0,R.jsx)(`div`,{className:`flex items-center pl-5`,children:(0,R.jsxs)(`div`,{className:`flex flex-col`,children:[(!!n||!!r)&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`p`,{className:`text-md font-bold text-gray-800`,children:`Social Security`}),(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Employee Part:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:n?.formatted})]}),(0,R.jsx)(`p`,{className:`text-md font-bold text-gray-800 mt-2`,children:`Pension Fund`}),(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Employer Part:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:r?.formatted})]})]}),!!t?.raw&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`p`,{className:`text-md font-bold text-gray-800 mt-2`,children:`Health Insurance`}),(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Amount:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:t?.formatted})]})]}),(!!i?.raw||!!a?.raw)&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`p`,{className:`text-md font-bold text-gray-800 mt-2`,children:`Taxes`}),(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Income Tax:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:i?.formatted})]}),(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Notional Expense:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:a?.formatted})]})]})]})})})},K=({data:e})=>{let{baseAmount:t,directAmount:n,globalAdditionalHoursAmount:r,bonus:i,gift:a,recovery:o,vacationTakeout:s}=b(T,e);return(0,R.jsx)(`td`,{className:`pl-24`,children:(0,R.jsx)(`div`,{className:`flex items-center`,children:(0,R.jsxs)(`div`,{className:`flex flex-col`,children:[(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Base Amount:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:t?.formatted})]}),(0,R.jsxs)(`div`,{className:`flex justify-between mb-2`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Global Extra Hours:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:r?.formatted})]}),!!i?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Bonus:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:i?.formatted})]}),!!a?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Gift:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:a?.formatted})]}),!!o?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Recovery:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:o?.formatted})]}),!!s?.raw&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Vacation Takeout:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:s?.formatted})]}),(0,R.jsxs)(`div`,{className:`flex justify-between mt-2`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Direct Amount:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:n?.formatted})]})]})})})},q=({data:e})=>{let{vacationDays:t,workDays:n,sicknessDays:r}=b(S,e),{added:i,taken:a,balance:o}=t??{},{balance:s}=r??{};return(0,R.jsx)(`td`,{className:`pl-5`,children:(0,R.jsx)(`div`,{className:`flex items-center`,children:(0,R.jsxs)(`div`,{className:`flex flex-col`,children:[!!n&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`p`,{className:`text-md leading-none text-gray-800`,children:`Work Days:`}),(0,R.jsx)(`div`,{className:`flex justify-between`,children:(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:n})})]}),(!!i||!!a||!!o)&&(0,R.jsxs)(`div`,{className:`flex flex-col`,children:[(0,R.jsx)(`p`,{className:`text-md leading-none text-gray-800 mt-2`,children:`Vacation Days:`}),!!i&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Added:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:i})]}),!!a&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Taken:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:a})]}),!!o&&(0,R.jsxs)(`div`,{className:`flex justify-between`,children:[(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:`Balance:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:o})]})]}),!!s&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`p`,{className:`text-md leading-none text-gray-800 mt-2`,children:`Sickness Days:`}),(0,R.jsx)(`div`,{className:`flex justify-between`,children:(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:s})})]})]})})})},J=({setEditSalaryRecord:e,data:t})=>{let n=b(O,t);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`tr`,{tabIndex:0,className:`h-16 border border-gray-100 hover:bg-gray-100 rounded-sm`,children:[(0,R.jsx)(U,{data:n}),(0,R.jsx)(K,{data:n}),(0,R.jsx)(W,{data:n}),(0,R.jsx)(G,{data:n}),(0,R.jsx)(q,{data:n}),(0,R.jsx)(`td`,{className:`pl-2`,children:(0,R.jsx)(`div`,{className:`flex items-center`,children:(0,R.jsx)(`div`,{className:`flex flex-col`,children:(0,R.jsx)(s,{onClick:e})})})})]}),(0,R.jsx)(`tr`,{className:`h-3`})]})},Y=({setEditSalaryRecord:e,setInsertSalaryRecord:t,data:n})=>{let r=n?.map(e=>b(j,e))??[];return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`tr`,{className:`h-3`}),(0,R.jsx)(H,{month:r[0].month,setInsertSalaryRecord:t}),(0,R.jsx)(`tr`,{className:`h-3`}),r.map(t=>(0,R.jsx)(J,{data:t,setEditSalaryRecord:()=>e(t.employee?.id)},`${t.month} ${t.employee?.id}`))]})},X=({setEditSalaryRecord:e,setInsertSalaryRecord:t,data:n})=>{let r=(0,I.useMemo)(()=>{let e=n?.map(e=>b(A,e))??[],t=new Map;return e.map(e=>{let{month:n}=e,r=t.get(n)??[];t.set(n,[...r,e])}),t},[n]);return(0,R.jsx)(`div`,{className:`sm:px-6 w-full`,children:(0,R.jsxs)(`div`,{className:`bg-white py-4 md:py-7 px-4 md:px-8 xl:px-10`,children:[(0,R.jsxs)(`div`,{className:`sm:flex items-center justify-between`,children:[(0,R.jsxs)(`div`,{className:`flex items-center`,children:[(0,R.jsx)(`div`,{className:`rounded-full focus:outline-hidden focus:ring-2 focus:bg-indigo-50 focus:ring-indigo-800`,children:(0,R.jsx)(`div`,{className:`py-2 px-8 bg-indigo-100 text-indigo-700 rounded-full`,children:(0,R.jsx)(`p`,{children:`All`})})}),(0,R.jsx)(`div`,{className:`rounded-full focus:outline-hidden focus:ring-2 focus:bg-indigo-50 focus:ring-indigo-800 ml-4 sm:ml-8`,children:(0,R.jsx)(`div`,{className:`py-2 px-8 text-gray-600 hover:text-indigo-700 hover:bg-indigo-100 rounded-full `,children:(0,R.jsx)(`p`,{children:`Done`})})}),(0,R.jsx)(`div`,{className:`rounded-full focus:outline-hidden focus:ring-2 focus:bg-indigo-50 focus:ring-indigo-800 ml-4 sm:ml-8`,children:(0,R.jsx)(`div`,{className:`py-2 px-8 text-gray-600 hover:text-indigo-700 hover:bg-indigo-100 rounded-full `,children:(0,R.jsx)(`p`,{children:`Pending`})})})]}),(0,R.jsx)(`button`,{className:`focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600 mt-4 sm:mt-0 inline-flex items-start justify-start px-6 py-3 bg-indigo-700 hover:bg-indigo-600 focus:outline-hidden rounded-sm`,children:(0,R.jsx)(`p`,{className:`text-sm font-medium leading-none text-white`,children:`Add Task`})})]}),(0,R.jsx)(`div`,{className:`mt-7 overflow-x-auto`,children:(0,R.jsx)(`table`,{className:`w-full whitespace-nowrap`,children:(0,R.jsx)(`tbody`,{children:Array.from(r).map(([n,r])=>(0,R.jsx)(Y,{data:r,setEditSalaryRecord:t=>e(t?{month:n,employeeId:t}:void 0),setInsertSalaryRecord:()=>t({month:n})},n))})})})]})})},Z=()=>{let{setFiltersContext:e}=(0,I.useContext)(f),[t,n]=(0,I.useState)(void 0),[r,i]=(0,I.useState)(void 0),{get:s}=P(),[u,d]=(0,I.useState)(s(`salariesFilters`)?JSON.parse(decodeURIComponent(s(`salariesFilters`))):{...z()}),[{data:p,fetching:m}]=E({query:M,variables:{...u}});return(0,I.useEffect)(()=>{e((0,R.jsxs)(`div`,{className:`flex flex-row gap-x-5`,children:[(0,R.jsx)(V,{filter:u,setFilter:d}),(0,R.jsx)(c,{variant:`default`,onClick:()=>i({})})]}))},[p,m,u,e,d]),(0,R.jsxs)(F,{title:`Salaries`,description:`View and manage salaries of employees.`,children:[m?(0,R.jsx)(a,{className:`h-10 w-10 animate-spin mr-2 self-center`}):(0,R.jsx)(X,{setEditSalaryRecord:n,setInsertSalaryRecord:i,data:p?.salaryRecordsByDates}),(0,R.jsx)(l,{recordVariables:t,onDone:()=>n(void 0)}),r&&(0,R.jsx)(o,{insertSalaryRecordParams:r,setInsertSalaryRecord:i})]})};export{Z as Salaries};