UNPKG

@accounter/client

Version:
1 lines • 16.3 kB
import{s as e}from"./dist-BmACi7k_.js";import{i as t,o as n}from"./utils-BxkqV8PM.js";import{A as r,Bi as i,Gi as a,Hi as o,Li as s,Ri as c,Ui as l,Vi as u,Wi as d,r as f,zi as p,zo as m}from"./error-handling-sQ-z99nE.js";import{n as h}from"./routes-C4NpBRv7.js";import{dt as g}from"./select-KYQbDWZT.js";import{E as _,Nt as v,Pt as y,R as b,_t as x,p as S}from"./common-DtK-TFhT.js";import{c as C}from"./separator-CNv9f_S5.js";import{t as w}from"./funnel-Djj7k08w.js";import{t as T}from"./button-BZ6z_NAl.js";import{$c as E,Kl as D,Pl as O,Zc as k,el as A,nl as j,tu as M}from"./table-D4eAFW7G.js";import{t as N}from"./MultiSelect-DsfA2qgR.js";import{t as P}from"./use-url-query-DXFemxIX.js";import{t as F}from"./page-layout-jrXvjrbd.js";var I=e(n(),1),L=e(O(),1),R=t();function z(){let e=new Date;return{fromDate:D(e,`yyyy-MM-dd`),toDate:D(M(e),`yyyy-MM-dd`)}}function B({filter:e,setFilter:t,closeModal:n}){let{control:i,handleSubmit:a,setValue:o}=E({defaultValues:{...e}}),[s,c]=(0,I.useState)([]),{userContext:l}=(0,I.useContext)(j),[{data:u,fetching:d,error:p},h]=m({query:r,variables:{employerId:l?.context.adminBusinessId??``},pause:!0});(0,I.useEffect)(()=>{h()},[l?.context.adminBusinessId,h]),(0,I.useEffect)(()=>{p&&f.error(`Error`,{description:`Oh no!, we have an error fetching employees! 🤥`})},[p]);let g=e=>{e.employeeIDs?.length===0&&delete e.employeeIDs,t(e),n()};function _(){t({...z()}),n()}(0,I.useEffect)(()=>{u?.employeesByEmployerId.length&&c(u.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))},[u,c]);function v([e,t]){if(t){let e=new Date(t.getFullYear(),t.getMonth()+1,0);o(`toDate`,D(e,`yyyy-MM-dd`))}if(e){let t=new Date(e.getFullYear(),e.getMonth(),1);o(`fromDate`,D(t,`yyyy-MM-dd`))}}let y=z();return(0,R.jsxs)(R.Fragment,{children:[d?(0,R.jsx)(`div`,{children:`Loading...`}):(0,R.jsx)(`div`,{}),(0,R.jsxs)(`form`,{onSubmit:a(g),children:[(0,R.jsx)(x,{type:`range`,numberOfColumns:2,defaultValue:[new Date(e?.fromDate??y.fromDate),new Date(e?.toDate??y.toDate)],defaultDate:new Date(e?.fromDate??y.fromDate),onChange:v,popoverProps:{withinPortal:!0}}),(0,R.jsx)(k,{name:`employeeIDs`,control:i,defaultValue:e.employeeIDs,render:({field:e,fieldState:t})=>(0,R.jsx)(N,{...e,data:s,value:e.value??[],disabled:d,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:d,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:_,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:i,set:a}=P();return(0,I.useEffect)(()=>{let t=h(e);t!==i(`salariesFilters`)&&a(`salariesFilters`,t)},[e,i,a]),(0,R.jsxs)(`div`,{className:`flex flex-row gap-5 items-center`,children:[(0,R.jsx)(S,{opened:n,onClose:()=>r(!1),content:(0,R.jsx)(B,{filter:e,setFilter:(0,I.useCallback)(n=>{(0,L.default)(n,e)||t(n)},[e,t]),closeModal:()=>r(!1)}),modalSize:`xl`}),(0,R.jsx)(T,{variant:`outline`,size:`icon`,className:`size-7.5`,onClick:()=>r(!0),children:(0,R.jsx)(w,{className:`size-5`})})]})}var H=({month:e,setInsertSalaryRecord:t})=>(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:D(new Date(e),`MMMM yyyy`)}),(0,R.jsx)(`div`,{className:`flex items-center`,children:(0,R.jsx)(`div`,{className:`flex flex-col`,children:(0,R.jsx)(v,{onClick:t})})})]})})}),U=({data:e})=>{let{employee:t,month:n}=A(c,e),r=D(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:a,compensationsAmount:o,compensationsPercentage:s,pensionFund:c,trainingFund:l,trainingFundEmployeeAmount:u,trainingFundEmployeePercentage:d,trainingFundEmployerAmount:f,trainingFundEmployerPercentage:p}=A(i,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:c?.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,a&&` (${a}%)`]})]}),!!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:`Compensations Amount:`}),(0,R.jsxs)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:[o?.formatted,s&&` (${s}%)`]})]}),(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:l?.name}),!!u?.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:[u?.formatted,d&&` (${d}%)`]})]}),!!f?.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:[f?.formatted,p&&` (${p}%)`]})]})]})})})},G=({data:e})=>{let{healthInsuranceAmount:t,socialSecurityEmployeeAmount:n,socialSecurityEmployerAmount:r,incomeTaxAmount:i,notionalExpense:a}=A(u,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:s,vacationTakeout:c}=A(o,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})]}),!!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:`Recovery:`}),(0,R.jsx)(`p`,{className:`text-sm leading-none text-gray-600 ml-2`,children:s?.formatted})]}),!!c?.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:c?.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}=A(l,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=A(p,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)(y,{onClick:e})})})})]}),(0,R.jsx)(`tr`,{className:`h-3`})]})},Y=({setEditSalaryRecord:e,setInsertSalaryRecord:t,data:n})=>{let r=n?.map(e=>A(s,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=>A(d,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)(C),[t,n]=(0,I.useState)(void 0),[r,i]=(0,I.useState)(void 0),{get:o}=P(),[s,c]=(0,I.useState)(o(`salariesFilters`)?JSON.parse(decodeURIComponent(o(`salariesFilters`))):{...z()}),[{data:l,fetching:u}]=m({query:a,variables:{...s}});return(0,I.useEffect)(()=>{e((0,R.jsxs)(`div`,{className:`flex flex-row gap-x-5`,children:[(0,R.jsx)(V,{filter:s,setFilter:c}),(0,R.jsx)(v,{variant:`default`,onClick:()=>i({})})]}))},[l,u,s,e,c]),(0,R.jsxs)(F,{title:`Salaries`,description:`View and manage salaries of employees.`,children:[u?(0,R.jsx)(g,{className:`h-10 w-10 animate-spin mr-2 self-center`}):(0,R.jsx)(X,{setEditSalaryRecord:n,setInsertSalaryRecord:i,data:l?.salaryRecordsByDates}),(0,R.jsx)(b,{recordVariables:t,onDone:()=>n(void 0)}),r&&(0,R.jsx)(_,{insertSalaryRecordParams:r,setInsertSalaryRecord:i})]})};export{Z as Salaries};