UNPKG

@accounter/client

Version:
1 lines • 16.3 kB
import{s as e}from"./dist-BbgEzppd.js";import{i as t,o as n}from"./utils-BUNz070n.js";import{A as r,Si as i,Ya as a,_i as o,bi as s,gi as c,hi as l,mi as u,r as d,vi as f,xi as p,yi as m}from"./error-handling-AQOG1RNy.js";import{r as h}from"./routes-BXbESQBe.js";import{dt as g}from"./select-6mBYg_R6.js";import{$ as _,Et as v,O as y,Vt as b,Xt as x,Zt as S,p as C,zt as w}from"./common-Cy-x5Vhe.js";import{t as T}from"./funnel-BvwoBZ0O.js";import{t as E}from"./button-CBTN3XMQ.js";import{X as D,at as O,g as k,lt as A,v as j}from"./table-tK8pMUMS.js";import{t as M}from"./MultiSelect-CaeZsH-J.js";import{w as N}from"./index-B8E5XsZe.js";import{t as P}from"./use-url-query-BZOFfgST.js";import{t as F}from"./page-layout-BO3YzLcj.js";var I=e(n(),1),L=e(D(),1),R=t();function z(){let e=new Date;return{fromDate:O(e,`yyyy-MM-dd`),toDate:O(A(e),`yyyy-MM-dd`)}}function B({filter:e,setFilter:t,closeModal:n}){let{control:i,handleSubmit:o,setValue:s}=b({defaultValues:{...e}}),[c,l]=(0,I.useState)([]),{userContext:u}=(0,I.useContext)(j),[{data:f,fetching:p,error:m},h]=a({query:r,variables:{employerId:u?.context.adminBusinessId??``},pause:!0});(0,I.useEffect)(()=>{h()},[u?.context.adminBusinessId,h]),(0,I.useEffect)(()=>{m&&d.error(`Error`,{description:`Oh no!, we have an error fetching employees! 🤥`})},[m]);let g=e=>{e.employeeIDs?.length===0&&delete e.employeeIDs,t(e),n()};function _(){t({...z()}),n()}(0,I.useEffect)(()=>{f?.employeesByEmployerId.length&&l(f.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))},[f,l]);function y([e,t]){t&&s(`toDate`,O(new Date(t.getFullYear(),t.getMonth()+1,0),`yyyy-MM-dd`)),e&&s(`fromDate`,O(new Date(e.getFullYear(),e.getMonth(),1),`yyyy-MM-dd`))}let x=z();return(0,R.jsxs)(R.Fragment,{children:[p?(0,R.jsx)(`div`,{children:`Loading...`}):(0,R.jsx)(`div`,{}),(0,R.jsxs)(`form`,{onSubmit:o(g),children:[(0,R.jsx)(v,{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:y,popoverProps:{withinPortal:!0}}),(0,R.jsx)(w,{name:`employeeIDs`,control:i,defaultValue:e.employeeIDs,render:({field:e,fieldState:t})=>(0,R.jsx)(M,{...e,data:c,value:e.value??[],disabled:p,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:p,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)?null:encodeURIComponent(JSON.stringify(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)(C,{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)(E,{variant:`outline`,size:`icon`,className:`size-7.5`,onClick:()=>r(!0),children:(0,R.jsx)(T,{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:O(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)(x,{onClick:t})})})]})})}),U=({data:e})=>{let{employee:t,month:n}=k(l,e),r=O(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:s,pensionFund:c,trainingFund:l,trainingFundEmployeeAmount:u,trainingFundEmployeePercentage:d,trainingFundEmployerAmount:f,trainingFundEmployerPercentage:p}=k(o,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,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,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}=k(f,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}=k(m,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}=k(s,e),{added:i,taken:a,balance:o}=t??{},{balance:c}=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})]})]}),!!c&&(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:c})})]})]})})})},J=({setEditSalaryRecord:e,data:t})=>{let n=k(c,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=>k(u,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=>k(p,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)(N),[t,n]=(0,I.useState)(void 0),[r,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}]=a({query:i,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)(x,{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)(g,{className:`h-10 w-10 animate-spin mr-2 self-center`}):(0,R.jsx)(X,{setEditSalaryRecord:n,setInsertSalaryRecord:o,data:u?.salaryRecordsByDates}),(0,R.jsx)(_,{recordVariables:t,onDone:()=>n(void 0)}),r&&(0,R.jsx)(y,{insertSalaryRecordParams:r,setInsertSalaryRecord:o})]})};export{Z as Salaries};