UNPKG

@accounter/client

Version:
1 lines • 16 kB
import{t as e}from"./funnel-CDY9d08i.js";import{t}from"./MultiSelect-CiGDKDYJ.js";import{Al as n,At as r,Cu as i,Hn as a,Id as o,Ml as s,N as c,Nl as l,Ou as u,Sa as d,Sc as f,Sn as p,Vn as m,Wl as h,Xn as g,Zu as _,_c as v,bc as y,er as b,gc as x,gi as S,hc as C,jd as w,mc as T,ot as E,tr as D,un as O,vc as k,vi as A,wn as j,xc as M,yc as N}from"./index-CSYTUOOk.js";import{t as P}from"./use-url-query-CA_xnIYM.js";import{t as F}from"./page-layout-DE94O32j.js";var I=o(w(),1),L=o(S(),1),R=i();function z(){let e=new Date;return{fromDate:s(e,`yyyy-MM-dd`),toDate:s(l(e),`yyyy-MM-dd`)}}function B({filter:e,setFilter:r,closeModal:i}){let{control:a,handleSubmit:o,setValue:c}=j({defaultValues:{...e}}),[l,u]=(0,I.useState)([]),{userContext:f}=(0,I.useContext)(D),[{data:m,fetching:h,error:g},_]=n({query:d,variables:{employerId:f?.context.adminBusinessId??``},pause:!0});(0,I.useEffect)(()=>{_()},[f?.context.adminBusinessId,_]),(0,I.useEffect)(()=>{g&&A.error(`Error`,{description:`Oh no!, we have an error fetching employees! 🤥`})},[g]);let v=e=>{e.employeeIDs?.length===0&&delete e.employeeIDs,r(e),i()};function y(){r({...z()}),i()}(0,I.useEffect)(()=>{m?.employeesByEmployerId.length&&u(m.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))},[m,u]);function b([e,t]){t&&c(`toDate`,s(new Date(t.getFullYear(),t.getMonth()+1,0),`yyyy-MM-dd`)),e&&c(`fromDate`,s(new Date(e.getFullYear(),e.getMonth(),1),`yyyy-MM-dd`))}let x=z();return(0,R.jsxs)(R.Fragment,{children:[h?(0,R.jsx)(`div`,{children:`Loading...`}):(0,R.jsx)(`div`,{}),(0,R.jsxs)(`form`,{onSubmit:o(v),children:[(0,R.jsx)(O,{type:`range`,numberOfColumns:2,defaultValue:[new Date(e?.fromDate??x.fromDate),new Date(e?.toDate??x.toDate)],defaultDate:new Date(e?.fromDate??x.fromDate),onChange:b,popoverProps:{withinPortal:!0}}),(0,R.jsx)(p,{name:`employeeIDs`,control:a,defaultValue:e.employeeIDs,render:({field:e,fieldState:n})=>(0,R.jsx)(t,{...e,data:l,value:e.value??[],disabled:h,label:`Employees`,placeholder:`Scroll to see all options`,maxDropdownHeight:160,searchable:!0,error:n.error?.message})}),(0,R.jsxs)(`div`,{className:`flex justify-center mt-5 gap-3`,children:[(0,R.jsx)(`button`,{type:`submit`,disabled:h,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:y,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:i,children:`Cancel`})]})]})]})}function V({filter:t,setFilter:n}){let[r,i]=(0,I.useState)(!1),{get:a,set:o}=P();return(0,I.useEffect)(()=>{let e=u(t);e!==a(`salariesFilters`)&&o(`salariesFilters`,e)},[t,a,o]),(0,R.jsxs)(`div`,{className:`flex flex-row gap-5 items-center`,children:[(0,R.jsx)(c,{opened:r,onClose:()=>i(!1),content:(0,R.jsx)(B,{filter:t,setFilter:(0,I.useCallback)(e=>{(0,L.default)(e,t)||n(e)},[t,n]),closeModal:()=>i(!1)}),modalSize:`xl`}),(0,R.jsx)(h,{variant:`outline`,size:`icon`,className:`size-7.5`,onClick:()=>i(!0),children:(0,R.jsx)(e,{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:s(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)(m,{onClick:t})})})]})})}),U=({data:e})=>{let{employee:t,month:n}=g(C,e),r=s(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}=g(v,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}=g(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}=g(N,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}=g(y,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=g(x,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)(a,{onClick:e})})})})]}),(0,R.jsx)(`tr`,{className:`h-3`})]})},Y=({setEditSalaryRecord:e,setInsertSalaryRecord:t,data:n})=>{let r=n?.map(e=>g(T,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=>g(M,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)(b),[t,i]=(0,I.useState)(void 0),[a,o]=(0,I.useState)(void 0),{get:s}=P(),[c,l]=(0,I.useState)(s(`salariesFilters`)?JSON.parse(decodeURIComponent(s(`salariesFilters`))):{...z()}),[{data:u,fetching:d}]=n({query:f,variables:{...c}});return(0,I.useEffect)(()=>{e((0,R.jsxs)(`div`,{className:`flex flex-row gap-x-5`,children:[(0,R.jsx)(V,{filter:c,setFilter:l}),(0,R.jsx)(m,{variant:`default`,onClick:()=>o({})})]}))},[u,d,c,e,l]),(0,R.jsxs)(F,{title:`Salaries`,description:`View and manage salaries of employees.`,children:[d?(0,R.jsx)(_,{className:`h-10 w-10 animate-spin mr-2 self-center`}):(0,R.jsx)(X,{setEditSalaryRecord:i,setInsertSalaryRecord:o,data:u?.salaryRecordsByDates}),(0,R.jsx)(r,{recordVariables:t,onDone:()=>i(void 0)}),a&&(0,R.jsx)(E,{insertSalaryRecordParams:a,setInsertSalaryRecord:o})]})};export{Z as Salaries};