@gusto/embedded-react-sdk 0.44.0 → 0.44.1
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.
- package/CHANGELOG.md +8 -0
- package/dist/components/Base/useBaseSubmit.js +6 -6
- package/dist/components/Base/useBaseSubmit.js.map +1 -1
- package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +1 -1
- package/dist/components/Company/AssignSignatory/TitleSelect.js +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountList/Actions.js +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +9 -9
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +7 -7
- package/dist/components/Company/FederalTaxes/Actions.js +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +1 -1
- package/dist/components/Company/Industry/Actions.js +1 -1
- package/dist/components/Company/Industry/Context.js +1 -1
- package/dist/components/Company/Industry/Edit.js +1 -1
- package/dist/components/Company/Locations/LocationForm/Actions.js +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +1 -1
- package/dist/components/Company/Locations/LocationsList/Actions.js +1 -1
- package/dist/components/Company/Locations/LocationsList/List.js +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.d.ts +2 -2
- package/dist/components/Company/PaySchedule/PaySchedule.js +6 -6
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleList.js +8 -8
- package/dist/components/Company/PaySchedule/PayScheduleList.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +3 -3
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +12 -12
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +1 -1
- package/dist/components/Contractor/Address/Address.js +16 -16
- package/dist/components/Contractor/Address/Address.js.map +1 -1
- package/dist/components/Contractor/Address/Form.js +4 -4
- package/dist/components/Contractor/Address/useAddress.js +1 -1
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.js +8 -8
- package/dist/components/Contractor/PaymentMethod/PaymentMethod.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +5 -5
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
- package/dist/components/Contractor/Profile/useContractorProfile.js +1 -1
- package/dist/components/Contractor/Submit/Submit.js +22 -20
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.d.ts +1 -1
- package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.js +6 -6
- package/dist/components/Employee/Dashboard/hooks/useEmployeeCompensation.js.map +1 -1
- package/dist/components/Employee/Dashboard/hooks/useEmployeeForms.js +3 -3
- package/dist/components/Employee/Dashboard/hooks/useEmployeeForms.js.map +1 -1
- package/dist/components/Employee/Deductions/Deductions.js +7 -7
- package/dist/components/Employee/Deductions/Deductions.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +24 -24
- package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +13 -9
- package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js +2 -2
- package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.d.ts +1 -2
- package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js +17 -17
- package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js +30 -30
- package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +8 -8
- package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentSigner.js +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +12 -12
- package/dist/components/Employee/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js +1 -1
- package/dist/components/Employee/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/I9SignatureForm/I9SignatureForm.js +5 -5
- package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +7 -7
- package/dist/components/Employee/FederalTaxes/management/FederalTaxes.js +1 -1
- package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +1 -1
- package/dist/components/Employee/PaymentMethod/Actions.js +1 -1
- package/dist/components/Employee/PaymentMethod/BankAccountEdit.js +1 -1
- package/dist/components/Employee/PaymentMethod/BankAccountsList.js +1 -1
- package/dist/components/Employee/PaymentMethod/PaymentMethod.js +14 -14
- package/dist/components/Employee/PaymentMethod/PaymentMethod.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js +1 -1
- package/dist/components/Employee/PaymentMethod/Split.js +1 -1
- package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +1 -1
- package/dist/components/Employee/Profile/management/Profile.js +1 -1
- package/dist/components/Employee/Profile/onboarding/AdminProfile.js +1 -1
- package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
- package/dist/components/Employee/StateTaxes/management/StateTaxes.js +1 -1
- package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +1 -1
- package/dist/components/Employee/Taxes/Actions.js +1 -1
- package/dist/components/Employee/Taxes/FederalForm.js +1 -1
- package/dist/components/Employee/Taxes/useTaxes.js +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +11 -11
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +3 -3
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +40 -45
- package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +17 -17
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +7 -7
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +1 -1
- package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +1 -1
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +10 -10
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.d.ts +2 -2
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +21 -25
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +2 -2
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +4 -4
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +4 -4
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -2
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +5 -5
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +7 -7
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +9 -9
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/helpers.d.ts +1 -1
- package/dist/components/Payroll/helpers.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.d.ts +2 -2
- package/dist/components/Payroll/usePreparedPayrollData.js +10 -10
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +41 -41
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
- package/dist/components/TimeOff/shared/EmployeeTable/EmployeeTable.js +1 -1
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +1 -1
- package/dist/partner-hook-utils/form/fields/CheckboxHookField.js +1 -1
- package/dist/partner-hook-utils/form/fields/NumberInputHookField.js +1 -1
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +1 -1
- package/dist/partner-hook-utils/form/fields/SelectHookField.js +1 -1
- package/dist/partner-hook-utils/form/fields/SwitchHookField.js +1 -1
- package/dist/partner-hook-utils/form/fields/TextInputHookField.js +1 -1
- package/package.json +6 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as n, jsxs as
|
|
1
|
+
import { jsx as n, jsxs as H } from "react/jsx-runtime";
|
|
2
2
|
import { zodResolver as V } from "@hookform/resolvers/zod";
|
|
3
3
|
import { useEmployeePaymentMethodCreateMutation as j } from "@gusto/embedded-api/react-query/employeePaymentMethodCreate";
|
|
4
4
|
import { useEmployeePaymentMethodDeleteBankAccountMutation as G } from "@gusto/embedded-api/react-query/employeePaymentMethodDeleteBankAccount";
|
|
@@ -7,7 +7,7 @@ import { useEmployeePaymentMethodGetSuspense as z } from "@gusto/embedded-api/re
|
|
|
7
7
|
import { useEmployeePaymentMethodUpdateBankAccountMutation as Q } from "@gusto/embedded-api/react-query/employeePaymentMethodUpdateBankAccount";
|
|
8
8
|
import { useEmployeePaymentMethodUpdateMutation as J } from "@gusto/embedded-api/react-query/employeePaymentMethodUpdate";
|
|
9
9
|
import { useQueryClient as W } from "@tanstack/react-query";
|
|
10
|
-
import { useState as X, useMemo as
|
|
10
|
+
import { useState as X, useMemo as b, useEffect as N } from "react";
|
|
11
11
|
import { useForm as Z, FormProvider as $ } from "react-hook-form";
|
|
12
12
|
import { useTranslation as tt } from "react-i18next";
|
|
13
13
|
import { CombinedSchema as et, PaymentMethodProvider as ot } from "./usePaymentMethod.js";
|
|
@@ -33,9 +33,9 @@ const Pt = ({ employeeId: o, className: f, dictionary: P, isAdmin: E = !1 }) =>
|
|
|
33
33
|
data: { employeePaymentMethod: I }
|
|
34
34
|
} = z({ employeeId: o }), t = I, { data: _ } = K({
|
|
35
35
|
employeeId: o
|
|
36
|
-
}), l = _.
|
|
36
|
+
}), l = _.employeeBankAccounts, M = J(), d = G(), T = j(), w = Q(), [u, a] = X(l.length < 1 ? "INITIAL" : "LIST");
|
|
37
37
|
u !== "INITIAL" && l.length < 1 && a("INITIAL");
|
|
38
|
-
const S =
|
|
38
|
+
const S = b(() => ({
|
|
39
39
|
type: "Direct Deposit",
|
|
40
40
|
isSplit: !1,
|
|
41
41
|
hasBankPayload: !1,
|
|
@@ -46,7 +46,7 @@ const Pt = ({ employeeId: o, className: f, dictionary: P, isAdmin: E = !1 }) =>
|
|
|
46
46
|
splitBy: void 0,
|
|
47
47
|
splitAmount: {},
|
|
48
48
|
priority: {}
|
|
49
|
-
}), []), c =
|
|
49
|
+
}), []), c = b(() => {
|
|
50
50
|
const i = t.splitBy === A.amount;
|
|
51
51
|
return {
|
|
52
52
|
...S,
|
|
@@ -70,9 +70,9 @@ const Pt = ({ employeeId: o, className: f, dictionary: P, isAdmin: E = !1 }) =>
|
|
|
70
70
|
}, [S, t.type, t.splitBy, t.splits]), r = Z({
|
|
71
71
|
resolver: V(et),
|
|
72
72
|
defaultValues: c
|
|
73
|
-
}), O = r.watch("type"), { reset: y } = r, { mutateAsync:
|
|
73
|
+
}), O = r.watch("type"), { reset: y } = r, { mutateAsync: k } = M;
|
|
74
74
|
N(() => {
|
|
75
|
-
(async () => t.splits?.length === 1 && t.type === "Direct Deposit" && await
|
|
75
|
+
(async () => t.splits?.length === 1 && t.type === "Direct Deposit" && await k({
|
|
76
76
|
request: {
|
|
77
77
|
employeeId: o,
|
|
78
78
|
requestBody: {
|
|
@@ -87,7 +87,7 @@ const Pt = ({ employeeId: o, className: f, dictionary: P, isAdmin: E = !1 }) =>
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
}))();
|
|
90
|
-
}, [o, t, C,
|
|
90
|
+
}, [o, t, C, k]), N(() => {
|
|
91
91
|
y(c);
|
|
92
92
|
}, [l.length, t, c, y]);
|
|
93
93
|
const q = async (i) => {
|
|
@@ -97,7 +97,7 @@ const Pt = ({ employeeId: o, className: f, dictionary: P, isAdmin: E = !1 }) =>
|
|
|
97
97
|
const m = await T.mutateAsync({
|
|
98
98
|
request: {
|
|
99
99
|
employeeId: o,
|
|
100
|
-
|
|
100
|
+
employeeBankAccountRequest: {
|
|
101
101
|
name: e.name,
|
|
102
102
|
routingNumber: e.routingNumber,
|
|
103
103
|
accountNumber: e.accountNumber,
|
|
@@ -112,10 +112,10 @@ const Pt = ({ employeeId: o, className: f, dictionary: P, isAdmin: E = !1 }) =>
|
|
|
112
112
|
version: t.version,
|
|
113
113
|
splitBy: e.isSplit ? e.splitBy : t.splitBy ?? A.percentage,
|
|
114
114
|
splits: e.isSplit && t.splits ? t.splits.map((D) => {
|
|
115
|
-
const
|
|
115
|
+
const v = e.splitAmount[D.uuid] ?? null, x = e.splitBy === A.amount;
|
|
116
116
|
return {
|
|
117
117
|
...D,
|
|
118
|
-
splitAmount:
|
|
118
|
+
splitAmount: x ? ht(v) : v,
|
|
119
119
|
priority: e.priority[D.uuid]
|
|
120
120
|
};
|
|
121
121
|
}) : t.splits ?? []
|
|
@@ -135,7 +135,7 @@ const Pt = ({ employeeId: o, className: f, dictionary: P, isAdmin: E = !1 }) =>
|
|
|
135
135
|
a("ADD"), y(c);
|
|
136
136
|
}, Y = () => {
|
|
137
137
|
a("LIST"), y(c);
|
|
138
|
-
},
|
|
138
|
+
}, R = () => {
|
|
139
139
|
a("SPLIT");
|
|
140
140
|
};
|
|
141
141
|
return /* @__PURE__ */ n("section", { className: f, children: /* @__PURE__ */ n(
|
|
@@ -151,10 +151,10 @@ const Pt = ({ employeeId: o, className: f, dictionary: P, isAdmin: E = !1 }) =>
|
|
|
151
151
|
handleCancel: Y,
|
|
152
152
|
handleAdd: U,
|
|
153
153
|
handleDelete: F,
|
|
154
|
-
handleSplit:
|
|
154
|
+
handleSplit: R,
|
|
155
155
|
isAdmin: E
|
|
156
156
|
},
|
|
157
|
-
children: /* @__PURE__ */ n($, { ...r, children: /* @__PURE__ */
|
|
157
|
+
children: /* @__PURE__ */ n($, { ...r, children: /* @__PURE__ */ H(it, { onSubmit: r.handleSubmit(q), children: [
|
|
158
158
|
/* @__PURE__ */ n(at, {}),
|
|
159
159
|
/* @__PURE__ */ n(ct, {}),
|
|
160
160
|
/* @__PURE__ */ n(ut, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentMethod.js","sources":["../../../../src/components/Employee/PaymentMethod/PaymentMethod.tsx"],"sourcesContent":["import { zodResolver } from '@hookform/resolvers/zod'\nimport { useEmployeePaymentMethodCreateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodCreate'\nimport { useEmployeePaymentMethodDeleteBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodDeleteBankAccount'\nimport { useEmployeePaymentMethodsGetBankAccountsSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodGetSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodUpdateBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdateBankAccount'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdate'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm, type DefaultValues, type SubmitHandler } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlowComponents'\nimport {\n CombinedSchema,\n type CombinedSchemaInputs,\n type CombinedSchemaOutputs,\n type MODE,\n PaymentMethodProvider,\n} from './usePaymentMethod'\nimport {\n useBase,\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { Form } from '@/components/Common/Form'\nimport { Actions } from '@/components/Employee/PaymentMethod/Actions'\nimport { BankAccountForm } from '@/components/Employee/PaymentMethod/BankAccountEdit'\nimport { BankAccountsList } from '@/components/Employee/PaymentMethod/BankAccountsList'\nimport { Head } from '@/components/Employee/PaymentMethod/Head'\nimport { PaymentTypeForm } from '@/components/Employee/PaymentMethod/PaymentTypeForm'\nimport { Split } from '@/components/Employee/PaymentMethod/Split'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { centsToDollars, dollarsToCents } from '@/helpers/currencyHelpers'\n\ninterface PaymentMethodProps extends CommonComponentInterface<'Employee.PaymentMethod'> {\n employeeId: string\n defaultValues?: never\n isAdmin?: boolean\n}\n\nexport function PaymentMethod(props: PaymentMethodProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ employeeId, className, dictionary, isAdmin = false }: PaymentMethodProps) => {\n useI18n('Employee.PaymentMethod')\n useComponentDictionary('Employee.PaymentMethod', dictionary)\n const { baseSubmitHandler, onEvent } = useBase()\n const queryClient = useQueryClient()\n\n const {\n data: { employeePaymentMethod },\n } = useEmployeePaymentMethodGetSuspense({ employeeId })\n const paymentMethod = employeePaymentMethod!\n const { data: bankAccountsList } = useEmployeePaymentMethodsGetBankAccountsSuspense({\n employeeId,\n })\n const bankAccounts = bankAccountsList.employeeBankAccountList!\n const paymentMethodMutation = useEmployeePaymentMethodUpdateMutation()\n const deleteBankAccountMutation = useEmployeePaymentMethodDeleteBankAccountMutation()\n const addBankAccountMutation = useEmployeePaymentMethodCreateMutation()\n const updateBankAccountMutation = useEmployeePaymentMethodUpdateBankAccountMutation()\n\n const [mode, setMode] = useState<MODE>(bankAccounts.length < 1 ? 'INITIAL' : 'LIST')\n if (mode !== 'INITIAL' && bankAccounts.length < 1) {\n setMode('INITIAL')\n }\n\n const baseDefaultValues: Partial<CombinedSchemaOutputs> = useMemo(() => {\n return {\n type: 'Direct Deposit',\n isSplit: false,\n hasBankPayload: false,\n name: '',\n routingNumber: '',\n accountNumber: '',\n accountType: 'Checking',\n splitBy: undefined,\n splitAmount: {},\n priority: {},\n } as Partial<CombinedSchemaOutputs>\n }, [])\n\n const defaultValues: CombinedSchemaOutputs = useMemo(() => {\n const isAmountSplit = paymentMethod.splitBy === SPLIT_BY.amount\n return {\n ...baseDefaultValues,\n type: paymentMethod.type ?? 'Direct Deposit',\n splitBy: paymentMethod.splitBy ?? undefined,\n ...paymentMethod.splits?.reduce(\n (acc, { uuid, splitAmount, priority }) => ({\n splitAmount: {\n ...acc.splitAmount,\n [uuid]: isAmountSplit ? centsToDollars(splitAmount ?? null) : (splitAmount ?? null),\n },\n priority: { ...acc.priority, [uuid]: Number(priority) },\n }),\n { splitAmount: {}, priority: {} },\n ),\n remainder:\n paymentMethod.type === 'Direct Deposit' && paymentMethod.splits\n ? paymentMethod.splits.reduce(\n (acc, curr) =>\n curr.splitAmount === null ? curr.uuid : (paymentMethod.splits?.at(-1)?.uuid ?? acc),\n '',\n )\n : undefined,\n } as CombinedSchemaOutputs\n }, [baseDefaultValues, paymentMethod.type, paymentMethod.splitBy, paymentMethod.splits])\n\n const formMethods = useForm<CombinedSchemaInputs>({\n resolver: zodResolver(CombinedSchema),\n defaultValues: defaultValues as DefaultValues<CombinedSchemaInputs>,\n })\n\n const watchedType = formMethods.watch('type')\n\n const { reset: resetForm } = formMethods\n const { mutateAsync: mutatePaymentMethod } = paymentMethodMutation\n\n useEffect(() => {\n void (async () => {\n if (paymentMethod.splits?.length === 1 && paymentMethod.type === 'Direct Deposit') {\n await mutatePaymentMethod({\n request: {\n employeeId,\n requestBody: {\n splitBy: SPLIT_BY.percentage,\n splits: paymentMethod.splits.map(split => ({\n ...split,\n splitAmount: 100,\n priority: 1,\n })),\n version: paymentMethod.version as string,\n type: 'Direct Deposit',\n },\n },\n })\n }\n })()\n }, [employeeId, paymentMethod, queryClient, mutatePaymentMethod])\n\n useEffect(() => {\n resetForm(defaultValues)\n }, [bankAccounts.length, paymentMethod, defaultValues, resetForm])\n\n const onSubmit: SubmitHandler<CombinedSchemaInputs> = async data => {\n await baseSubmitHandler(data, async payload => {\n const { type } = payload\n if (\n type === 'Direct Deposit' &&\n payload.hasBankPayload &&\n (mode === 'ADD' || mode === 'INITIAL')\n ) {\n const bankAccountResponse = await addBankAccountMutation.mutateAsync({\n request: {\n employeeId,\n requestBody: {\n name: payload.name,\n routingNumber: payload.routingNumber,\n accountNumber: payload.accountNumber,\n accountType: payload.accountType,\n },\n },\n })\n\n onEvent(componentEvents.EMPLOYEE_BANK_ACCOUNT_CREATED, bankAccountResponse)\n } else {\n //Adding bank account updates payment method\n const body =\n type === PAYMENT_METHODS.check\n ? { version: paymentMethod.version as string }\n : {\n ...paymentMethod,\n version: paymentMethod.version as string,\n splitBy: payload.isSplit\n ? payload.splitBy\n : (paymentMethod.splitBy ?? SPLIT_BY.percentage),\n splits:\n payload.isSplit && paymentMethod.splits\n ? paymentMethod.splits.map(split => {\n const splitAmountValue = payload.splitAmount[split.uuid] ?? null\n const isAmountSplit = payload.splitBy === SPLIT_BY.amount\n return {\n ...split,\n splitAmount: isAmountSplit\n ? dollarsToCents(splitAmountValue)\n : splitAmountValue,\n priority: payload.priority[split.uuid],\n }\n })\n : (paymentMethod.splits ?? []),\n }\n const paymentMethodResponse = await paymentMethodMutation.mutateAsync({\n request: { employeeId, requestBody: { ...body, type } },\n })\n onEvent(componentEvents.EMPLOYEE_PAYMENT_METHOD_UPDATED, paymentMethodResponse)\n }\n //Cleanup after submission bank/split submission\n formMethods.setValue('isSplit', false)\n formMethods.setValue('hasBankPayload', false)\n //Notify that this component is ready to proceed\n if (mode === 'LIST' || type === PAYMENT_METHODS.check) {\n onEvent(componentEvents.EMPLOYEE_PAYMENT_METHOD_DONE)\n } else {\n setMode('LIST')\n }\n })\n }\n\n const handleDelete = async (uuid: string) => {\n const data = await deleteBankAccountMutation.mutateAsync({\n request: { employeeId, bankAccountUuid: uuid },\n })\n onEvent(componentEvents.EMPLOYEE_BANK_ACCOUNT_DELETED, data)\n }\n const handleAdd = () => {\n setMode('ADD')\n resetForm(defaultValues)\n }\n const handleCancel = () => {\n setMode('LIST')\n resetForm(defaultValues)\n }\n const handleSplit = () => {\n setMode('SPLIT')\n }\n\n return (\n <section className={className}>\n <PaymentMethodProvider\n value={{\n bankAccounts,\n isPending:\n deleteBankAccountMutation.isPending ||\n paymentMethodMutation.isPending ||\n addBankAccountMutation.isPending ||\n updateBankAccountMutation.isPending,\n deletePendingBankAccountUuid: deleteBankAccountMutation.isPending\n ? deleteBankAccountMutation.variables.request.bankAccountUuid\n : undefined,\n watchedType,\n mode,\n paymentMethod,\n handleCancel,\n handleAdd,\n handleDelete,\n handleSplit,\n isAdmin,\n }}\n >\n <FormProvider {...formMethods}>\n <Form onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Head />\n <PaymentTypeForm />\n <BankAccountsList />\n <BankAccountForm />\n <Split />\n <Actions />\n </Form>\n </FormProvider>\n </PaymentMethodProvider>\n </section>\n )\n}\n\nexport const PaymentMethodContextual = () => {\n const { employeeId, onEvent, isAdmin } = useFlow<OnboardingContextInterface>()\n const { t } = useTranslation('common')\n\n if (!employeeId) {\n throw new Error(\n t('errors.missingParamsOrContext', {\n component: 'PaymentMethod',\n param: 'employeeId',\n provider: 'FlowProvider',\n }),\n )\n }\n return <PaymentMethod employeeId={employeeId} onEvent={onEvent} isAdmin={isAdmin} />\n}\n"],"names":["PaymentMethod","props","jsx","BaseComponent","Root","employeeId","className","dictionary","isAdmin","useI18n","useComponentDictionary","baseSubmitHandler","onEvent","useBase","queryClient","useQueryClient","employeePaymentMethod","useEmployeePaymentMethodGetSuspense","paymentMethod","bankAccountsList","useEmployeePaymentMethodsGetBankAccountsSuspense","bankAccounts","paymentMethodMutation","useEmployeePaymentMethodUpdateMutation","deleteBankAccountMutation","useEmployeePaymentMethodDeleteBankAccountMutation","addBankAccountMutation","useEmployeePaymentMethodCreateMutation","updateBankAccountMutation","useEmployeePaymentMethodUpdateBankAccountMutation","mode","setMode","useState","baseDefaultValues","useMemo","defaultValues","isAmountSplit","SPLIT_BY","acc","uuid","splitAmount","priority","centsToDollars","curr","formMethods","useForm","zodResolver","CombinedSchema","watchedType","resetForm","mutatePaymentMethod","useEffect","split","onSubmit","data","payload","type","bankAccountResponse","componentEvents","body","PAYMENT_METHODS","splitAmountValue","dollarsToCents","paymentMethodResponse","handleDelete","handleAdd","handleCancel","handleSplit","PaymentMethodProvider","FormProvider","jsxs","Form","Head","PaymentTypeForm","BankAccountsList","BankAccountForm","Split","Actions","PaymentMethodContextual","useFlow","t","useTranslation"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA4CO,SAASA,GAAcC,GAAoD;AAChF,SACE,gBAAAC,EAACC,IAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,MAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEA,MAAMG,KAAO,CAAC,EAAE,YAAAC,GAAY,WAAAC,GAAW,YAAAC,GAAY,SAAAC,IAAU,SAAgC;AAC3F,EAAAC,GAAQ,wBAAwB,GAChCC,GAAuB,0BAA0BH,CAAU;AAC3D,QAAM,EAAE,mBAAAI,GAAmB,SAAAC,EAAA,IAAYC,GAAA,GACjCC,IAAcC,EAAA,GAEd;AAAA,IACJ,MAAM,EAAE,uBAAAC,EAAA;AAAA,EAAsB,IAC5BC,EAAoC,EAAE,YAAAZ,GAAY,GAChDa,IAAgBF,GAChB,EAAE,MAAMG,EAAA,IAAqBC,EAAiD;AAAA,IAClF,YAAAf;AAAA,EAAA,CACD,GACKgB,IAAeF,EAAiB,yBAChCG,IAAwBC,EAAA,GACxBC,IAA4BC,EAAA,GAC5BC,IAAyBC,EAAA,GACzBC,IAA4BC,EAAA,GAE5B,CAACC,GAAMC,CAAO,IAAIC,EAAeX,EAAa,SAAS,IAAI,YAAY,MAAM;AACnF,EAAIS,MAAS,aAAaT,EAAa,SAAS,KAC9CU,EAAQ,SAAS;AAGnB,QAAME,IAAoDC,EAAQ,OACzD;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,MAAM;AAAA,IACN,eAAe;AAAA,IACf,eAAe;AAAA,IACf,aAAa;AAAA,IACb,SAAS;AAAA,IACT,aAAa,CAAA;AAAA,IACb,UAAU,CAAA;AAAA,EAAC,IAEZ,CAAA,CAAE,GAECC,IAAuCD,EAAQ,MAAM;AACzD,UAAME,IAAgBlB,EAAc,YAAYmB,EAAS;AACzD,WAAO;AAAA,MACL,GAAGJ;AAAA,MACH,MAAMf,EAAc,QAAQ;AAAA,MAC5B,SAASA,EAAc,WAAW;AAAA,MAClC,GAAGA,EAAc,QAAQ;AAAA,QACvB,CAACoB,GAAK,EAAE,MAAAC,GAAM,aAAAC,GAAa,UAAAC,SAAgB;AAAA,UACzC,aAAa;AAAA,YACX,GAAGH,EAAI;AAAA,YACP,CAACC,CAAI,GAAGH,IAAgBM,GAAeF,KAAe,IAAI,IAAKA,KAAe;AAAA,UAAA;AAAA,UAEhF,UAAU,EAAE,GAAGF,EAAI,UAAU,CAACC,CAAI,GAAG,OAAOE,CAAQ,EAAA;AAAA,QAAE;AAAA,QAExD,EAAE,aAAa,IAAI,UAAU,CAAA,EAAC;AAAA,MAAE;AAAA,MAElC,WACEvB,EAAc,SAAS,oBAAoBA,EAAc,SACrDA,EAAc,OAAO;AAAA,QACnB,CAACoB,GAAKK,MACJA,EAAK,gBAAgB,OAAOA,EAAK,OAAQzB,EAAc,QAAQ,GAAG,EAAE,GAAG,QAAQoB;AAAA,QACjF;AAAA,MAAA,IAEF;AAAA,IAAA;AAAA,EAEV,GAAG,CAACL,GAAmBf,EAAc,MAAMA,EAAc,SAASA,EAAc,MAAM,CAAC,GAEjF0B,IAAcC,EAA8B;AAAA,IAChD,UAAUC,EAAYC,EAAc;AAAA,IACpC,eAAAZ;AAAA,EAAA,CACD,GAEKa,IAAcJ,EAAY,MAAM,MAAM,GAEtC,EAAE,OAAOK,EAAA,IAAcL,GACvB,EAAE,aAAaM,EAAA,IAAwB5B;AAE7C,EAAA6B,EAAU,MAAM;AACd,KAAM,YACAjC,EAAc,QAAQ,WAAW,KAAKA,EAAc,SAAS,oBAC/D,MAAMgC,EAAoB;AAAA,MACxB,SAAS;AAAA,QACP,YAAA7C;AAAA,QACA,aAAa;AAAA,UACX,SAASgC,EAAS;AAAA,UAClB,QAAQnB,EAAc,OAAO,IAAI,CAAAkC,OAAU;AAAA,YACzC,GAAGA;AAAA,YACH,aAAa;AAAA,YACb,UAAU;AAAA,UAAA,EACV;AAAA,UACF,SAASlC,EAAc;AAAA,UACvB,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IACF,CACD;AAAA,EAGP,GAAG,CAACb,GAAYa,GAAeJ,GAAaoC,CAAmB,CAAC,GAEhEC,EAAU,MAAM;AACd,IAAAF,EAAUd,CAAa;AAAA,EACzB,GAAG,CAACd,EAAa,QAAQH,GAAeiB,GAAec,CAAS,CAAC;AAEjE,QAAMI,IAAgD,OAAMC,MAAQ;AAClE,UAAM3C,EAAkB2C,GAAM,OAAMC,MAAW;AAC7C,YAAM,EAAE,MAAAC,MAASD;AACjB,UACEC,MAAS,oBACTD,EAAQ,mBACPzB,MAAS,SAASA,MAAS,YAC5B;AACA,cAAM2B,IAAsB,MAAM/B,EAAuB,YAAY;AAAA,UACnE,SAAS;AAAA,YACP,YAAArB;AAAA,YACA,aAAa;AAAA,cACX,MAAMkD,EAAQ;AAAA,cACd,eAAeA,EAAQ;AAAA,cACvB,eAAeA,EAAQ;AAAA,cACvB,aAAaA,EAAQ;AAAA,YAAA;AAAA,UACvB;AAAA,QACF,CACD;AAED,QAAA3C,EAAQ8C,EAAgB,+BAA+BD,CAAmB;AAAA,MAC5E,OAAO;AAEL,cAAME,IACJH,MAASI,EAAgB,QACrB,EAAE,SAAS1C,EAAc,YACzB;AAAA,UACE,GAAGA;AAAA,UACH,SAASA,EAAc;AAAA,UACvB,SAASqC,EAAQ,UACbA,EAAQ,UACPrC,EAAc,WAAWmB,EAAS;AAAA,UACvC,QACEkB,EAAQ,WAAWrC,EAAc,SAC7BA,EAAc,OAAO,IAAI,CAAAkC,MAAS;AAChC,kBAAMS,IAAmBN,EAAQ,YAAYH,EAAM,IAAI,KAAK,MACtDhB,IAAgBmB,EAAQ,YAAYlB,EAAS;AACnD,mBAAO;AAAA,cACL,GAAGe;AAAA,cACH,aAAahB,IACT0B,GAAeD,CAAgB,IAC/BA;AAAA,cACJ,UAAUN,EAAQ,SAASH,EAAM,IAAI;AAAA,YAAA;AAAA,UAEzC,CAAC,IACAlC,EAAc,UAAU,CAAA;AAAA,QAAC,GAElC6C,IAAwB,MAAMzC,EAAsB,YAAY;AAAA,UACpE,SAAS,EAAE,YAAAjB,GAAY,aAAa,EAAE,GAAGsD,GAAM,MAAAH,IAAK;AAAA,QAAE,CACvD;AACD,QAAA5C,EAAQ8C,EAAgB,iCAAiCK,CAAqB;AAAA,MAChF;AAEA,MAAAnB,EAAY,SAAS,WAAW,EAAK,GACrCA,EAAY,SAAS,kBAAkB,EAAK,GAExCd,MAAS,UAAU0B,MAASI,EAAgB,QAC9ChD,EAAQ8C,EAAgB,4BAA4B,IAEpD3B,EAAQ,MAAM;AAAA,IAElB,CAAC;AAAA,EACH,GAEMiC,IAAe,OAAOzB,MAAiB;AAC3C,UAAMe,IAAO,MAAM9B,EAA0B,YAAY;AAAA,MACvD,SAAS,EAAE,YAAAnB,GAAY,iBAAiBkC,EAAA;AAAA,IAAK,CAC9C;AACD,IAAA3B,EAAQ8C,EAAgB,+BAA+BJ,CAAI;AAAA,EAC7D,GACMW,IAAY,MAAM;AACtB,IAAAlC,EAAQ,KAAK,GACbkB,EAAUd,CAAa;AAAA,EACzB,GACM+B,IAAe,MAAM;AACzB,IAAAnC,EAAQ,MAAM,GACdkB,EAAUd,CAAa;AAAA,EACzB,GACMgC,IAAc,MAAM;AACxB,IAAApC,EAAQ,OAAO;AAAA,EACjB;AAEA,SACE,gBAAA7B,EAAC,aAAQ,WAAAI,GACP,UAAA,gBAAAJ;AAAA,IAACkE;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,cAAA/C;AAAA,QACA,WACEG,EAA0B,aAC1BF,EAAsB,aACtBI,EAAuB,aACvBE,EAA0B;AAAA,QAC5B,8BAA8BJ,EAA0B,YACpDA,EAA0B,UAAU,QAAQ,kBAC5C;AAAA,QACJ,aAAAwB;AAAA,QACA,MAAAlB;AAAA,QACA,eAAAZ;AAAA,QACA,cAAAgD;AAAA,QACA,WAAAD;AAAA,QACA,cAAAD;AAAA,QACA,aAAAG;AAAA,QACA,SAAA3D;AAAA,MAAA;AAAA,MAGF,UAAA,gBAAAN,EAACmE,GAAA,EAAc,GAAGzB,GAChB,UAAA,gBAAA0B,EAACC,MAAK,UAAU3B,EAAY,aAAaS,CAAQ,GAC/C,UAAA;AAAA,QAAA,gBAAAnD,EAACsE,IAAA,EAAK;AAAA,0BACLC,IAAA,EAAgB;AAAA,0BAChBC,IAAA,EAAiB;AAAA,0BACjBC,IAAA,EAAgB;AAAA,0BAChBC,IAAA,EAAM;AAAA,0BACNC,IAAA,CAAA,CAAQ;AAAA,MAAA,EAAA,CACX,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GAEaC,KAA0B,MAAM;AAC3C,QAAM,EAAE,YAAAzE,GAAY,SAAAO,GAAS,SAAAJ,EAAA,IAAYuE,GAAA,GACnC,EAAE,GAAAC,EAAA,IAAMC,GAAe,QAAQ;AAErC,MAAI,CAAC5E;AACH,UAAM,IAAI;AAAA,MACR2E,EAAE,iCAAiC;AAAA,QACjC,WAAW;AAAA,QACX,OAAO;AAAA,QACP,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAGL,SAAO,gBAAA9E,EAACF,IAAA,EAAc,YAAAK,GAAwB,SAAAO,GAAkB,SAAAJ,EAAA,CAAkB;AACpF;"}
|
|
1
|
+
{"version":3,"file":"PaymentMethod.js","sources":["../../../../src/components/Employee/PaymentMethod/PaymentMethod.tsx"],"sourcesContent":["import { zodResolver } from '@hookform/resolvers/zod'\nimport { useEmployeePaymentMethodCreateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodCreate'\nimport { useEmployeePaymentMethodDeleteBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodDeleteBankAccount'\nimport { useEmployeePaymentMethodsGetBankAccountsSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodGetSuspense } from '@gusto/embedded-api/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodUpdateBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdateBankAccount'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdate'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm, type DefaultValues, type SubmitHandler } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport type { OnboardingContextInterface } from '../OnboardingFlow/OnboardingFlowComponents'\nimport {\n CombinedSchema,\n type CombinedSchemaInputs,\n type CombinedSchemaOutputs,\n type MODE,\n PaymentMethodProvider,\n} from './usePaymentMethod'\nimport {\n useBase,\n BaseComponent,\n type BaseComponentInterface,\n type CommonComponentInterface,\n} from '@/components/Base'\nimport { Form } from '@/components/Common/Form'\nimport { Actions } from '@/components/Employee/PaymentMethod/Actions'\nimport { BankAccountForm } from '@/components/Employee/PaymentMethod/BankAccountEdit'\nimport { BankAccountsList } from '@/components/Employee/PaymentMethod/BankAccountsList'\nimport { Head } from '@/components/Employee/PaymentMethod/Head'\nimport { PaymentTypeForm } from '@/components/Employee/PaymentMethod/PaymentTypeForm'\nimport { Split } from '@/components/Employee/PaymentMethod/Split'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { centsToDollars, dollarsToCents } from '@/helpers/currencyHelpers'\n\ninterface PaymentMethodProps extends CommonComponentInterface<'Employee.PaymentMethod'> {\n employeeId: string\n defaultValues?: never\n isAdmin?: boolean\n}\n\nexport function PaymentMethod(props: PaymentMethodProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ employeeId, className, dictionary, isAdmin = false }: PaymentMethodProps) => {\n useI18n('Employee.PaymentMethod')\n useComponentDictionary('Employee.PaymentMethod', dictionary)\n const { baseSubmitHandler, onEvent } = useBase()\n const queryClient = useQueryClient()\n\n const {\n data: { employeePaymentMethod },\n } = useEmployeePaymentMethodGetSuspense({ employeeId })\n const paymentMethod = employeePaymentMethod!\n const { data: bankAccountsList } = useEmployeePaymentMethodsGetBankAccountsSuspense({\n employeeId,\n })\n const bankAccounts = bankAccountsList.employeeBankAccounts!\n const paymentMethodMutation = useEmployeePaymentMethodUpdateMutation()\n const deleteBankAccountMutation = useEmployeePaymentMethodDeleteBankAccountMutation()\n const addBankAccountMutation = useEmployeePaymentMethodCreateMutation()\n const updateBankAccountMutation = useEmployeePaymentMethodUpdateBankAccountMutation()\n\n const [mode, setMode] = useState<MODE>(bankAccounts.length < 1 ? 'INITIAL' : 'LIST')\n if (mode !== 'INITIAL' && bankAccounts.length < 1) {\n setMode('INITIAL')\n }\n\n const baseDefaultValues: Partial<CombinedSchemaOutputs> = useMemo(() => {\n return {\n type: 'Direct Deposit',\n isSplit: false,\n hasBankPayload: false,\n name: '',\n routingNumber: '',\n accountNumber: '',\n accountType: 'Checking',\n splitBy: undefined,\n splitAmount: {},\n priority: {},\n } as Partial<CombinedSchemaOutputs>\n }, [])\n\n const defaultValues: CombinedSchemaOutputs = useMemo(() => {\n const isAmountSplit = paymentMethod.splitBy === SPLIT_BY.amount\n return {\n ...baseDefaultValues,\n type: paymentMethod.type ?? 'Direct Deposit',\n splitBy: paymentMethod.splitBy ?? undefined,\n ...paymentMethod.splits?.reduce(\n (acc, { uuid, splitAmount, priority }) => ({\n splitAmount: {\n ...acc.splitAmount,\n [uuid]: isAmountSplit ? centsToDollars(splitAmount ?? null) : (splitAmount ?? null),\n },\n priority: { ...acc.priority, [uuid]: Number(priority) },\n }),\n { splitAmount: {}, priority: {} },\n ),\n remainder:\n paymentMethod.type === 'Direct Deposit' && paymentMethod.splits\n ? paymentMethod.splits.reduce(\n (acc, curr) =>\n curr.splitAmount === null ? curr.uuid : (paymentMethod.splits?.at(-1)?.uuid ?? acc),\n '',\n )\n : undefined,\n } as CombinedSchemaOutputs\n }, [baseDefaultValues, paymentMethod.type, paymentMethod.splitBy, paymentMethod.splits])\n\n const formMethods = useForm<CombinedSchemaInputs>({\n resolver: zodResolver(CombinedSchema),\n defaultValues: defaultValues as DefaultValues<CombinedSchemaInputs>,\n })\n\n const watchedType = formMethods.watch('type')\n\n const { reset: resetForm } = formMethods\n const { mutateAsync: mutatePaymentMethod } = paymentMethodMutation\n\n useEffect(() => {\n void (async () => {\n if (paymentMethod.splits?.length === 1 && paymentMethod.type === 'Direct Deposit') {\n await mutatePaymentMethod({\n request: {\n employeeId,\n requestBody: {\n splitBy: SPLIT_BY.percentage,\n splits: paymentMethod.splits.map(split => ({\n ...split,\n splitAmount: 100,\n priority: 1,\n })),\n version: paymentMethod.version as string,\n type: 'Direct Deposit',\n },\n },\n })\n }\n })()\n }, [employeeId, paymentMethod, queryClient, mutatePaymentMethod])\n\n useEffect(() => {\n resetForm(defaultValues)\n }, [bankAccounts.length, paymentMethod, defaultValues, resetForm])\n\n const onSubmit: SubmitHandler<CombinedSchemaInputs> = async data => {\n await baseSubmitHandler(data, async payload => {\n const { type } = payload\n if (\n type === 'Direct Deposit' &&\n payload.hasBankPayload &&\n (mode === 'ADD' || mode === 'INITIAL')\n ) {\n const bankAccountResponse = await addBankAccountMutation.mutateAsync({\n request: {\n employeeId,\n employeeBankAccountRequest: {\n name: payload.name,\n routingNumber: payload.routingNumber,\n accountNumber: payload.accountNumber,\n accountType: payload.accountType,\n },\n },\n })\n\n onEvent(componentEvents.EMPLOYEE_BANK_ACCOUNT_CREATED, bankAccountResponse)\n } else {\n //Adding bank account updates payment method\n const body =\n type === PAYMENT_METHODS.check\n ? { version: paymentMethod.version as string }\n : {\n ...paymentMethod,\n version: paymentMethod.version as string,\n splitBy: payload.isSplit\n ? payload.splitBy\n : (paymentMethod.splitBy ?? SPLIT_BY.percentage),\n splits:\n payload.isSplit && paymentMethod.splits\n ? paymentMethod.splits.map(split => {\n const splitAmountValue = payload.splitAmount[split.uuid] ?? null\n const isAmountSplit = payload.splitBy === SPLIT_BY.amount\n return {\n ...split,\n splitAmount: isAmountSplit\n ? dollarsToCents(splitAmountValue)\n : splitAmountValue,\n priority: payload.priority[split.uuid],\n }\n })\n : (paymentMethod.splits ?? []),\n }\n const paymentMethodResponse = await paymentMethodMutation.mutateAsync({\n request: { employeeId, requestBody: { ...body, type } },\n })\n onEvent(componentEvents.EMPLOYEE_PAYMENT_METHOD_UPDATED, paymentMethodResponse)\n }\n //Cleanup after submission bank/split submission\n formMethods.setValue('isSplit', false)\n formMethods.setValue('hasBankPayload', false)\n //Notify that this component is ready to proceed\n if (mode === 'LIST' || type === PAYMENT_METHODS.check) {\n onEvent(componentEvents.EMPLOYEE_PAYMENT_METHOD_DONE)\n } else {\n setMode('LIST')\n }\n })\n }\n\n const handleDelete = async (uuid: string) => {\n const data = await deleteBankAccountMutation.mutateAsync({\n request: { employeeId, bankAccountUuid: uuid },\n })\n onEvent(componentEvents.EMPLOYEE_BANK_ACCOUNT_DELETED, data)\n }\n const handleAdd = () => {\n setMode('ADD')\n resetForm(defaultValues)\n }\n const handleCancel = () => {\n setMode('LIST')\n resetForm(defaultValues)\n }\n const handleSplit = () => {\n setMode('SPLIT')\n }\n\n return (\n <section className={className}>\n <PaymentMethodProvider\n value={{\n bankAccounts,\n isPending:\n deleteBankAccountMutation.isPending ||\n paymentMethodMutation.isPending ||\n addBankAccountMutation.isPending ||\n updateBankAccountMutation.isPending,\n deletePendingBankAccountUuid: deleteBankAccountMutation.isPending\n ? deleteBankAccountMutation.variables.request.bankAccountUuid\n : undefined,\n watchedType,\n mode,\n paymentMethod,\n handleCancel,\n handleAdd,\n handleDelete,\n handleSplit,\n isAdmin,\n }}\n >\n <FormProvider {...formMethods}>\n <Form onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Head />\n <PaymentTypeForm />\n <BankAccountsList />\n <BankAccountForm />\n <Split />\n <Actions />\n </Form>\n </FormProvider>\n </PaymentMethodProvider>\n </section>\n )\n}\n\nexport const PaymentMethodContextual = () => {\n const { employeeId, onEvent, isAdmin } = useFlow<OnboardingContextInterface>()\n const { t } = useTranslation('common')\n\n if (!employeeId) {\n throw new Error(\n t('errors.missingParamsOrContext', {\n component: 'PaymentMethod',\n param: 'employeeId',\n provider: 'FlowProvider',\n }),\n )\n }\n return <PaymentMethod employeeId={employeeId} onEvent={onEvent} isAdmin={isAdmin} />\n}\n"],"names":["PaymentMethod","props","jsx","BaseComponent","Root","employeeId","className","dictionary","isAdmin","useI18n","useComponentDictionary","baseSubmitHandler","onEvent","useBase","queryClient","useQueryClient","employeePaymentMethod","useEmployeePaymentMethodGetSuspense","paymentMethod","bankAccountsList","useEmployeePaymentMethodsGetBankAccountsSuspense","bankAccounts","paymentMethodMutation","useEmployeePaymentMethodUpdateMutation","deleteBankAccountMutation","useEmployeePaymentMethodDeleteBankAccountMutation","addBankAccountMutation","useEmployeePaymentMethodCreateMutation","updateBankAccountMutation","useEmployeePaymentMethodUpdateBankAccountMutation","mode","setMode","useState","baseDefaultValues","useMemo","defaultValues","isAmountSplit","SPLIT_BY","acc","uuid","splitAmount","priority","centsToDollars","curr","formMethods","useForm","zodResolver","CombinedSchema","watchedType","resetForm","mutatePaymentMethod","useEffect","split","onSubmit","data","payload","type","bankAccountResponse","componentEvents","body","PAYMENT_METHODS","splitAmountValue","dollarsToCents","paymentMethodResponse","handleDelete","handleAdd","handleCancel","handleSplit","PaymentMethodProvider","FormProvider","jsxs","Form","Head","PaymentTypeForm","BankAccountsList","BankAccountForm","Split","Actions","PaymentMethodContextual","useFlow","t","useTranslation"],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import { jsx as p } from "react/jsx-runtime";
|
|
|
2
2
|
import { useTranslation as c } from "react-i18next";
|
|
3
3
|
import { z as o } from "zod";
|
|
4
4
|
import { usePaymentMethod as m } from "./usePaymentMethod.js";
|
|
5
|
-
import { PAYMENT_METHODS as r } from "../../../shared/constants.js";
|
|
6
5
|
import "classnames";
|
|
6
|
+
import { PAYMENT_METHODS as r } from "../../../shared/constants.js";
|
|
7
7
|
import { RadioGroupField as n } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
|
|
8
8
|
o.object({
|
|
9
9
|
type: o.enum(["Check", "Direct Deposit"])
|
|
@@ -5,8 +5,8 @@ import { ErrorMessage as z } from "@hookform/error-message";
|
|
|
5
5
|
import g from "dompurify";
|
|
6
6
|
import { useMemo as D, useEffect as j } from "react";
|
|
7
7
|
import { usePaymentMethod as N } from "./usePaymentMethod.js";
|
|
8
|
-
import { SPLIT_BY as h } from "../../../shared/constants.js";
|
|
9
8
|
import "classnames";
|
|
9
|
+
import { SPLIT_BY as h } from "../../../shared/constants.js";
|
|
10
10
|
import { useLocale as q } from "../../../contexts/LocaleProvider/useLocale.js";
|
|
11
11
|
import { useComponentContext as w } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
12
12
|
import { ReorderableList as I } from "../../Common/ReorderableList/ReorderableList.js";
|
|
@@ -9,7 +9,7 @@ import "../../Base/useBase.js";
|
|
|
9
9
|
import "@gusto/embedded-api/models/errors/apierror";
|
|
10
10
|
import "@gusto/embedded-api/models/errors/gustoembeddederror";
|
|
11
11
|
import "@gusto/embedded-api/models/errors/sdkvalidationerror";
|
|
12
|
-
import "@gusto/embedded-api/models/errors/
|
|
12
|
+
import "@gusto/embedded-api/models/errors/unprocessableentityerror";
|
|
13
13
|
import "@gusto/embedded-api/models/errors/httpclienterrors";
|
|
14
14
|
import "dompurify";
|
|
15
15
|
import "../../../contexts/LocaleProvider/useLocale.js";
|
|
@@ -6,12 +6,12 @@ import { useEmployeeDetailsForm as h } from "../shared/useEmployeeDetailsForm/us
|
|
|
6
6
|
import R from "./Profile.module.scss.js";
|
|
7
7
|
import { BaseBoundaries as L, BaseLayout as d } from "../../../Base/Base.js";
|
|
8
8
|
import "../../../Base/useBase.js";
|
|
9
|
-
import { componentEvents as c } from "../../../../shared/constants.js";
|
|
10
9
|
import { Grid as g } from "../../../Common/Grid/Grid.js";
|
|
11
10
|
import { ActionsLayout as y } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
12
11
|
import { Form as A } from "../../../Common/Form/Form.js";
|
|
13
12
|
import { SDKFormProvider as S } from "../../../../partner-hook-utils/form/SDKFormProvider.js";
|
|
14
13
|
import { useI18n as C, useComponentDictionary as M } from "../../../../i18n/I18n.js";
|
|
14
|
+
import { componentEvents as c } from "../../../../shared/constants.js";
|
|
15
15
|
import { useComponentContext as F } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
16
16
|
function z({
|
|
17
17
|
FallbackComponent: t,
|
|
@@ -11,12 +11,12 @@ import { SDKFormProvider as k } from "../../../../partner-hook-utils/form/SDKFor
|
|
|
11
11
|
import { composeSubmitHandler as ee } from "../../../../partner-hook-utils/form/composeSubmitHandler.js";
|
|
12
12
|
import { composeErrorHandler as oe } from "../../../../partner-hook-utils/composeErrorHandler.js";
|
|
13
13
|
import { Grid as _ } from "../../../Common/Grid/Grid.js";
|
|
14
|
-
import { componentEvents as E, EmployeeOnboardingStatus as v } from "../../../../shared/constants.js";
|
|
15
14
|
import { ActionsLayout as te } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
16
15
|
import { Form as ie } from "../../../Common/Form/Form.js";
|
|
17
16
|
import { BaseLayout as w } from "../../../Base/Base.js";
|
|
18
17
|
import "../../../Base/useBase.js";
|
|
19
18
|
import { useI18n as U, useComponentDictionary as se } from "../../../../i18n/I18n.js";
|
|
19
|
+
import { componentEvents as E, EmployeeOnboardingStatus as v } from "../../../../shared/constants.js";
|
|
20
20
|
import { useComponentContext as re } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
21
21
|
import { DatePickerField as ae } from "../../../Common/Fields/DatePickerField/DatePickerField.js";
|
|
22
22
|
const ne = (t) => t?.onboarded === !0 || t?.onboardingStatus === v.ONBOARDING_COMPLETED || t?.onboardingStatus === v.SELF_ONBOARDING_AWAITING_ADMIN_REVIEW || t?.onboardingStatus === v.SELF_ONBOARDING_COMPLETED_BY_EMPLOYEE;
|
|
@@ -10,12 +10,12 @@ import { SDKFormProvider as v } from "../../../../partner-hook-utils/form/SDKFor
|
|
|
10
10
|
import { composeSubmitHandler as Q } from "../../../../partner-hook-utils/form/composeSubmitHandler.js";
|
|
11
11
|
import { composeErrorHandler as L } from "../../../../partner-hook-utils/composeErrorHandler.js";
|
|
12
12
|
import { Grid as A } from "../../../Common/Grid/Grid.js";
|
|
13
|
-
import { componentEvents as p } from "../../../../shared/constants.js";
|
|
14
13
|
import { ActionsLayout as z } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
15
14
|
import { Form as B } from "../../../Common/Form/Form.js";
|
|
16
15
|
import { BaseLayout as S } from "../../../Base/Base.js";
|
|
17
16
|
import "../../../Base/useBase.js";
|
|
18
17
|
import { useI18n as N, useComponentDictionary as Y } from "../../../../i18n/I18n.js";
|
|
18
|
+
import { componentEvents as p } from "../../../../shared/constants.js";
|
|
19
19
|
import { useComponentContext as W } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
20
20
|
import { getStreet as Z, getCityStateZip as j } from "../../../../helpers/formattedStrings.js";
|
|
21
21
|
const q = {
|
|
@@ -4,8 +4,8 @@ import { useTranslation as x } from "react-i18next";
|
|
|
4
4
|
import { EmployeeStateTaxesView as y } from "../shared/EmployeeStateTaxesView.js";
|
|
5
5
|
import { BaseBoundaries as E, BaseLayout as C } from "../../../Base/Base.js";
|
|
6
6
|
import "../../../Base/useBase.js";
|
|
7
|
-
import { componentEvents as c } from "../../../../shared/constants.js";
|
|
8
7
|
import "classnames";
|
|
8
|
+
import { componentEvents as c } from "../../../../shared/constants.js";
|
|
9
9
|
import { ActionsLayout as h } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
10
10
|
import { useI18n as L, useComponentDictionary as A } from "../../../../i18n/I18n.js";
|
|
11
11
|
import { useComponentContext as b } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
@@ -3,8 +3,8 @@ import { useTranslation as u } from "react-i18next";
|
|
|
3
3
|
import { EmployeeStateTaxesView as p } from "../shared/EmployeeStateTaxesView.js";
|
|
4
4
|
import { BaseBoundaries as c, BaseLayout as E } from "../../../Base/Base.js";
|
|
5
5
|
import "../../../Base/useBase.js";
|
|
6
|
-
import { componentEvents as s } from "../../../../shared/constants.js";
|
|
7
6
|
import "classnames";
|
|
7
|
+
import { componentEvents as s } from "../../../../shared/constants.js";
|
|
8
8
|
import { ActionsLayout as T } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
9
9
|
import { useI18n as S, useComponentDictionary as l } from "../../../../i18n/I18n.js";
|
|
10
10
|
import { useComponentContext as f } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as o } from "react/jsx-runtime";
|
|
2
2
|
import { useTranslation as r } from "react-i18next";
|
|
3
3
|
import { useTaxes as s } from "./useTaxes.js";
|
|
4
|
-
import "../../../shared/constants.js";
|
|
5
4
|
import "classnames";
|
|
5
|
+
import "../../../shared/constants.js";
|
|
6
6
|
import { ActionsLayout as m } from "../../Common/ActionsLayout/ActionsLayout.js";
|
|
7
7
|
import { useComponentContext as e } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
8
8
|
const l = () => {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsxs as l, Fragment as a, jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import { useTranslation as s, Trans as m } from "react-i18next";
|
|
3
3
|
import { z as t } from "zod";
|
|
4
|
-
import "../../../shared/constants.js";
|
|
5
4
|
import "classnames";
|
|
5
|
+
import "../../../shared/constants.js";
|
|
6
6
|
import { useComponentContext as u } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
7
7
|
import { SelectField as d } from "../../Common/Fields/SelectField/SelectField.js";
|
|
8
8
|
import { RadioGroupField as f } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
|
|
@@ -7,7 +7,7 @@ import "../../Base/useBase.js";
|
|
|
7
7
|
import "@gusto/embedded-api/models/errors/apierror";
|
|
8
8
|
import "@gusto/embedded-api/models/errors/gustoembeddederror";
|
|
9
9
|
import "@gusto/embedded-api/models/errors/sdkvalidationerror";
|
|
10
|
-
import "@gusto/embedded-api/models/errors/
|
|
10
|
+
import "@gusto/embedded-api/models/errors/unprocessableentityerror";
|
|
11
11
|
import "@gusto/embedded-api/models/errors/httpclienterrors";
|
|
12
12
|
import "dompurify";
|
|
13
13
|
import "../../../contexts/LocaleProvider/useLocale.js";
|
|
@@ -22,29 +22,29 @@ const K = ({ employeeId: e, companyId: f, dictionary: D }) => {
|
|
|
22
22
|
V("Employee.Terminations.TerminateEmployee", D), z("Employee.Terminations.TerminateEmployee");
|
|
23
23
|
const c = S(), { onEvent: i, baseSubmitHandler: C } = Q(), {
|
|
24
24
|
data: { employee: u }
|
|
25
|
-
} = Y({ employeeId: e }), { data: r } = q({ employeeId: e }), { mutateAsync: O, isPending: A } = b(), { mutateAsync:
|
|
25
|
+
} = Y({ employeeId: e }), { data: r } = q({ employeeId: e }), { mutateAsync: O, isPending: A } = b(), { mutateAsync: h, isPending: N } = B(), { mutateAsync: M, isPending: _ } = G(), { refetch: R } = k(
|
|
26
26
|
{ companyId: f },
|
|
27
27
|
{ enabled: !1 }
|
|
28
28
|
);
|
|
29
|
-
if (u?.terminated && r.
|
|
29
|
+
if (u?.terminated && r.terminations?.[0])
|
|
30
30
|
return i(n.EMPLOYEE_TERMINATION_VIEW_SUMMARY, {
|
|
31
31
|
employeeId: e,
|
|
32
|
-
effectiveDate: r.
|
|
33
|
-
termination: r.
|
|
32
|
+
effectiveDate: r.terminations[0].effectiveDate,
|
|
33
|
+
termination: r.terminations[0]
|
|
34
34
|
}), null;
|
|
35
|
-
const
|
|
35
|
+
const L = J({
|
|
36
36
|
first_name: u?.firstName,
|
|
37
37
|
last_name: u?.lastName
|
|
38
|
-
}), s = r.
|
|
38
|
+
}), s = r.terminations?.[0];
|
|
39
39
|
return /* @__PURE__ */ y(
|
|
40
40
|
H,
|
|
41
41
|
{
|
|
42
|
-
employeeName:
|
|
42
|
+
employeeName: L,
|
|
43
43
|
existingTermination: s,
|
|
44
44
|
onSubmit: async (g) => {
|
|
45
45
|
const { lastDayOfWork: U, payrollOption: o } = g, m = U.toISOString().split("T")[0];
|
|
46
46
|
await C({ effectiveDate: m, payrollOption: o }, async () => {
|
|
47
|
-
const l = o === "dismissalPayroll", d = s ? await
|
|
47
|
+
const l = o === "dismissalPayroll", d = s ? await h({
|
|
48
48
|
request: {
|
|
49
49
|
employeeId: e,
|
|
50
50
|
requestBody: {
|
|
@@ -66,12 +66,12 @@ const K = ({ employeeId: e, companyId: f, dictionary: D }) => {
|
|
|
66
66
|
let T;
|
|
67
67
|
if (l)
|
|
68
68
|
try {
|
|
69
|
-
const { data: E } = await
|
|
69
|
+
const { data: E } = await R(), w = E?.unprocessedTerminationPayPeriods?.filter(
|
|
70
70
|
(t) => t.employeeUuid === e
|
|
71
71
|
) ?? [], a = [];
|
|
72
72
|
for (const t of w)
|
|
73
73
|
if (t.startDate && t.endDate) {
|
|
74
|
-
const P = await
|
|
74
|
+
const P = await M({
|
|
75
75
|
request: {
|
|
76
76
|
companyId: f,
|
|
77
77
|
requestBody: {
|
|
@@ -113,7 +113,7 @@ const K = ({ employeeId: e, companyId: f, dictionary: D }) => {
|
|
|
113
113
|
onCancel: () => {
|
|
114
114
|
i(n.CANCEL);
|
|
115
115
|
},
|
|
116
|
-
isLoading: A ||
|
|
116
|
+
isLoading: A || N || _
|
|
117
117
|
}
|
|
118
118
|
);
|
|
119
119
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerminateEmployee.js","sources":["../../../../../src/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.tsx"],"sourcesContent":["import { useQueryClient } from '@tanstack/react-query'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport {\n useEmployeeEmploymentsGetTerminationsSuspense,\n invalidateAllEmployeeEmploymentsGetTerminations,\n} from '@gusto/embedded-api/react-query/employeeEmploymentsGetTerminations'\nimport { useEmployeeEmploymentsCreateTerminationMutation } from '@gusto/embedded-api/react-query/employeeEmploymentsCreateTermination'\nimport { useEmployeeEmploymentsUpdateTerminationMutation } from '@gusto/embedded-api/react-query/employeeEmploymentsUpdateTermination'\nimport { usePayrollsCreateOffCycleMutation } from '@gusto/embedded-api/react-query/payrollsCreateOffCycle'\nimport {\n usePaySchedulesGetUnprocessedTerminationPeriods,\n invalidateAllPaySchedulesGetUnprocessedTerminationPeriods,\n} from '@gusto/embedded-api/react-query/paySchedulesGetUnprocessedTerminationPeriods'\nimport { invalidateAllPayrollsList } from '@gusto/embedded-api/react-query/payrollsList'\nimport { OffCycleReason } from '@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport type { PayrollOption } from '../types'\nimport { TerminateEmployeePresentation } from './TerminateEmployeePresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nexport interface TerminateEmployeeProps extends BaseComponentInterface<'Employee.Terminations.TerminateEmployee'> {\n employeeId: string\n companyId: string\n}\n\nexport interface TerminateEmployeeFormData {\n lastDayOfWork: Date\n payrollOption: PayrollOption\n}\n\nexport function TerminateEmployee(props: TerminateEmployeeProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ employeeId, companyId, dictionary }: TerminateEmployeeProps) => {\n useComponentDictionary('Employee.Terminations.TerminateEmployee', dictionary)\n useI18n('Employee.Terminations.TerminateEmployee')\n\n const queryClient = useQueryClient()\n const { onEvent, baseSubmitHandler } = useBase()\n\n const {\n data: { employee },\n } = useEmployeesGetSuspense({ employeeId })\n\n const { data: terminationsData } = useEmployeeEmploymentsGetTerminationsSuspense({ employeeId })\n\n const { mutateAsync: createTermination, isPending: isCreatingTermination } =\n useEmployeeEmploymentsCreateTerminationMutation()\n\n const { mutateAsync: updateTermination, isPending: isUpdatingTermination } =\n useEmployeeEmploymentsUpdateTerminationMutation()\n\n const { mutateAsync: createOffCyclePayroll, isPending: isCreatingPayroll } =\n usePayrollsCreateOffCycleMutation()\n\n const { refetch: fetchTerminationPeriods } = usePaySchedulesGetUnprocessedTerminationPeriods(\n { companyId },\n { enabled: false },\n )\n\n // If employee is already terminated, redirect to summary with existing termination data\n // Don't pass payrollOption to avoid showing the success alert\n if (employee?.terminated && terminationsData.terminationList?.[0]) {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_VIEW_SUMMARY, {\n employeeId,\n effectiveDate: terminationsData.terminationList[0].effectiveDate!,\n termination: terminationsData.terminationList[0],\n })\n return null\n }\n\n const employeeName = firstLastName({\n first_name: employee?.firstName,\n last_name: employee?.lastName,\n })\n\n const existingTermination = terminationsData.terminationList?.[0]\n\n const handleSubmit = async (formData: TerminateEmployeeFormData) => {\n const { lastDayOfWork, payrollOption } = formData\n const effectiveDate = lastDayOfWork.toISOString().split('T')[0]!\n\n await baseSubmitHandler({ effectiveDate, payrollOption }, async () => {\n const runTerminationPayroll = payrollOption === 'dismissalPayroll'\n\n const result = existingTermination\n ? await updateTermination({\n request: {\n employeeId,\n requestBody: {\n version: existingTermination.version!,\n effectiveDate,\n runTerminationPayroll,\n },\n },\n })\n : await createTermination({\n request: {\n employeeId,\n requestBody: {\n effectiveDate,\n runTerminationPayroll,\n },\n },\n })\n\n await invalidateAllEmployeeEmploymentsGetTerminations(queryClient)\n\n let firstPayrollUuid: string | undefined\n\n if (runTerminationPayroll) {\n try {\n const { data: terminationPeriodsData } = await fetchTerminationPeriods()\n\n const employeePeriods =\n terminationPeriodsData?.unprocessedTerminationPayPeriodList?.filter(\n period => period.employeeUuid === employeeId,\n ) ?? []\n\n const createdPayrolls = []\n\n for (const terminationPeriod of employeePeriods) {\n if (terminationPeriod.startDate && terminationPeriod.endDate) {\n const payrollResult = await createOffCyclePayroll({\n request: {\n companyId,\n requestBody: {\n offCycle: true,\n offCycleReason: OffCycleReason.DismissedEmployee,\n startDate: new RFCDate(terminationPeriod.startDate),\n endDate: new RFCDate(terminationPeriod.endDate),\n employeeUuids: [employeeId],\n checkDate: terminationPeriod.checkDate\n ? new RFCDate(terminationPeriod.checkDate)\n : undefined,\n },\n },\n })\n\n if (payrollResult.payrollUnprocessed) {\n createdPayrolls.push(payrollResult.payrollUnprocessed)\n }\n }\n }\n\n if (createdPayrolls.length > 0) {\n firstPayrollUuid = createdPayrolls[0]?.payrollUuid ?? createdPayrolls[0]?.uuid\n\n await invalidateAllPayrollsList(queryClient)\n await invalidateAllPaySchedulesGetUnprocessedTerminationPeriods(queryClient)\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_PAYROLL_CREATED, {\n payrolls: createdPayrolls,\n })\n }\n } catch (payrollError) {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_PAYROLL_FAILED, {\n error: payrollError,\n employeeId,\n })\n }\n }\n\n const eventType = existingTermination\n ? componentEvents.EMPLOYEE_TERMINATION_UPDATED\n : componentEvents.EMPLOYEE_TERMINATION_CREATED\n\n onEvent(eventType, {\n termination: result.termination,\n payrollOption,\n runTerminationPayroll,\n })\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_DONE, {\n employeeId,\n effectiveDate,\n payrollOption,\n payrollUuid: firstPayrollUuid,\n termination: result.termination,\n ...(payrollOption === 'anotherWay' && { manualHandling: true }),\n })\n })\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n const isPending = isCreatingTermination || isUpdatingTermination || isCreatingPayroll\n\n return (\n <TerminateEmployeePresentation\n employeeName={employeeName}\n existingTermination={existingTermination}\n onSubmit={handleSubmit}\n onCancel={handleCancel}\n isLoading={isPending}\n />\n )\n}\n"],"names":["TerminateEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","dictionary","useComponentDictionary","useI18n","queryClient","useQueryClient","onEvent","baseSubmitHandler","useBase","employee","useEmployeesGetSuspense","terminationsData","useEmployeeEmploymentsGetTerminationsSuspense","createTermination","isCreatingTermination","useEmployeeEmploymentsCreateTerminationMutation","updateTermination","isUpdatingTermination","useEmployeeEmploymentsUpdateTerminationMutation","createOffCyclePayroll","isCreatingPayroll","usePayrollsCreateOffCycleMutation","fetchTerminationPeriods","usePaySchedulesGetUnprocessedTerminationPeriods","componentEvents","employeeName","firstLastName","existingTermination","TerminateEmployeePresentation","formData","lastDayOfWork","payrollOption","effectiveDate","runTerminationPayroll","result","invalidateAllEmployeeEmploymentsGetTerminations","firstPayrollUuid","terminationPeriodsData","employeePeriods","period","createdPayrolls","terminationPeriod","payrollResult","OffCycleReason","RFCDate","invalidateAllPayrollsList","invalidateAllPaySchedulesGetUnprocessedTerminationPeriods","payrollError","eventType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TerminateEmployee.js","sources":["../../../../../src/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.tsx"],"sourcesContent":["import { useQueryClient } from '@tanstack/react-query'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport {\n useEmployeeEmploymentsGetTerminationsSuspense,\n invalidateAllEmployeeEmploymentsGetTerminations,\n} from '@gusto/embedded-api/react-query/employeeEmploymentsGetTerminations'\nimport { useEmployeeEmploymentsCreateTerminationMutation } from '@gusto/embedded-api/react-query/employeeEmploymentsCreateTermination'\nimport { useEmployeeEmploymentsUpdateTerminationMutation } from '@gusto/embedded-api/react-query/employeeEmploymentsUpdateTermination'\nimport { usePayrollsCreateOffCycleMutation } from '@gusto/embedded-api/react-query/payrollsCreateOffCycle'\nimport {\n usePaySchedulesGetUnprocessedTerminationPeriods,\n invalidateAllPaySchedulesGetUnprocessedTerminationPeriods,\n} from '@gusto/embedded-api/react-query/paySchedulesGetUnprocessedTerminationPeriods'\nimport { invalidateAllPayrollsList } from '@gusto/embedded-api/react-query/payrollsList'\nimport { OffCycleReason } from '@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport type { PayrollOption } from '../types'\nimport { TerminateEmployeePresentation } from './TerminateEmployeePresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nexport interface TerminateEmployeeProps extends BaseComponentInterface<'Employee.Terminations.TerminateEmployee'> {\n employeeId: string\n companyId: string\n}\n\nexport interface TerminateEmployeeFormData {\n lastDayOfWork: Date\n payrollOption: PayrollOption\n}\n\nexport function TerminateEmployee(props: TerminateEmployeeProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ employeeId, companyId, dictionary }: TerminateEmployeeProps) => {\n useComponentDictionary('Employee.Terminations.TerminateEmployee', dictionary)\n useI18n('Employee.Terminations.TerminateEmployee')\n\n const queryClient = useQueryClient()\n const { onEvent, baseSubmitHandler } = useBase()\n\n const {\n data: { employee },\n } = useEmployeesGetSuspense({ employeeId })\n\n const { data: terminationsData } = useEmployeeEmploymentsGetTerminationsSuspense({ employeeId })\n\n const { mutateAsync: createTermination, isPending: isCreatingTermination } =\n useEmployeeEmploymentsCreateTerminationMutation()\n\n const { mutateAsync: updateTermination, isPending: isUpdatingTermination } =\n useEmployeeEmploymentsUpdateTerminationMutation()\n\n const { mutateAsync: createOffCyclePayroll, isPending: isCreatingPayroll } =\n usePayrollsCreateOffCycleMutation()\n\n const { refetch: fetchTerminationPeriods } = usePaySchedulesGetUnprocessedTerminationPeriods(\n { companyId },\n { enabled: false },\n )\n\n // If employee is already terminated, redirect to summary with existing termination data\n // Don't pass payrollOption to avoid showing the success alert\n if (employee?.terminated && terminationsData.terminations?.[0]) {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_VIEW_SUMMARY, {\n employeeId,\n effectiveDate: terminationsData.terminations[0].effectiveDate!,\n termination: terminationsData.terminations[0],\n })\n return null\n }\n\n const employeeName = firstLastName({\n first_name: employee?.firstName,\n last_name: employee?.lastName,\n })\n\n const existingTermination = terminationsData.terminations?.[0]\n\n const handleSubmit = async (formData: TerminateEmployeeFormData) => {\n const { lastDayOfWork, payrollOption } = formData\n const effectiveDate = lastDayOfWork.toISOString().split('T')[0]!\n\n await baseSubmitHandler({ effectiveDate, payrollOption }, async () => {\n const runTerminationPayroll = payrollOption === 'dismissalPayroll'\n\n const result = existingTermination\n ? await updateTermination({\n request: {\n employeeId,\n requestBody: {\n version: existingTermination.version!,\n effectiveDate,\n runTerminationPayroll,\n },\n },\n })\n : await createTermination({\n request: {\n employeeId,\n requestBody: {\n effectiveDate,\n runTerminationPayroll,\n },\n },\n })\n\n await invalidateAllEmployeeEmploymentsGetTerminations(queryClient)\n\n let firstPayrollUuid: string | undefined\n\n if (runTerminationPayroll) {\n try {\n const { data: terminationPeriodsData } = await fetchTerminationPeriods()\n\n const employeePeriods =\n terminationPeriodsData?.unprocessedTerminationPayPeriods?.filter(\n period => period.employeeUuid === employeeId,\n ) ?? []\n\n const createdPayrolls = []\n\n for (const terminationPeriod of employeePeriods) {\n if (terminationPeriod.startDate && terminationPeriod.endDate) {\n const payrollResult = await createOffCyclePayroll({\n request: {\n companyId,\n requestBody: {\n offCycle: true,\n offCycleReason: OffCycleReason.DismissedEmployee,\n startDate: new RFCDate(terminationPeriod.startDate),\n endDate: new RFCDate(terminationPeriod.endDate),\n employeeUuids: [employeeId],\n checkDate: terminationPeriod.checkDate\n ? new RFCDate(terminationPeriod.checkDate)\n : undefined,\n },\n },\n })\n\n if (payrollResult.payrollUnprocessed) {\n createdPayrolls.push(payrollResult.payrollUnprocessed)\n }\n }\n }\n\n if (createdPayrolls.length > 0) {\n firstPayrollUuid = createdPayrolls[0]?.payrollUuid ?? createdPayrolls[0]?.uuid\n\n await invalidateAllPayrollsList(queryClient)\n await invalidateAllPaySchedulesGetUnprocessedTerminationPeriods(queryClient)\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_PAYROLL_CREATED, {\n payrolls: createdPayrolls,\n })\n }\n } catch (payrollError) {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_PAYROLL_FAILED, {\n error: payrollError,\n employeeId,\n })\n }\n }\n\n const eventType = existingTermination\n ? componentEvents.EMPLOYEE_TERMINATION_UPDATED\n : componentEvents.EMPLOYEE_TERMINATION_CREATED\n\n onEvent(eventType, {\n termination: result.termination,\n payrollOption,\n runTerminationPayroll,\n })\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_DONE, {\n employeeId,\n effectiveDate,\n payrollOption,\n payrollUuid: firstPayrollUuid,\n termination: result.termination,\n ...(payrollOption === 'anotherWay' && { manualHandling: true }),\n })\n })\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n const isPending = isCreatingTermination || isUpdatingTermination || isCreatingPayroll\n\n return (\n <TerminateEmployeePresentation\n employeeName={employeeName}\n existingTermination={existingTermination}\n onSubmit={handleSubmit}\n onCancel={handleCancel}\n isLoading={isPending}\n />\n )\n}\n"],"names":["TerminateEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","dictionary","useComponentDictionary","useI18n","queryClient","useQueryClient","onEvent","baseSubmitHandler","useBase","employee","useEmployeesGetSuspense","terminationsData","useEmployeeEmploymentsGetTerminationsSuspense","createTermination","isCreatingTermination","useEmployeeEmploymentsCreateTerminationMutation","updateTermination","isUpdatingTermination","useEmployeeEmploymentsUpdateTerminationMutation","createOffCyclePayroll","isCreatingPayroll","usePayrollsCreateOffCycleMutation","fetchTerminationPeriods","usePaySchedulesGetUnprocessedTerminationPeriods","componentEvents","employeeName","firstLastName","existingTermination","TerminateEmployeePresentation","formData","lastDayOfWork","payrollOption","effectiveDate","runTerminationPayroll","result","invalidateAllEmployeeEmploymentsGetTerminations","firstPayrollUuid","terminationPeriodsData","employeePeriods","period","createdPayrolls","terminationPeriod","payrollResult","OffCycleReason","RFCDate","invalidateAllPayrollsList","invalidateAllPaySchedulesGetUnprocessedTerminationPeriods","payrollError","eventType"],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ const W = ({
|
|
|
24
24
|
H("Employee.Terminations.TerminationSummary", D), Q("Employee.Terminations.TerminationSummary");
|
|
25
25
|
const m = b(), { onEvent: t, baseSubmitHandler: d } = z(), [T, a] = I(!1), {
|
|
26
26
|
data: { employee: s }
|
|
27
|
-
} = B({ employeeId: n }), { data: p } = G({ employeeId: n }), { mutateAsync: P, isPending: c } = k(),
|
|
27
|
+
} = B({ employeeId: n }), { data: p } = G({ employeeId: n }), { mutateAsync: P, isPending: c } = k(), R = [s?.firstName, s?.lastName].filter(Boolean).join(" "), u = p.terminations ?? [], e = u.find((Y) => Y.active) ?? u[0], f = e?.effectiveDate, h = e?.cancelable === !0, E = F(f), L = new Date((/* @__PURE__ */ new Date()).toDateString()), N = !s?.terminated && E ? E >= L : !1, y = i === "anotherWay", O = !y && (e?.runTerminationPayroll === !0 || i === "dismissalPayroll"), _ = i !== void 0, g = () => {
|
|
28
28
|
a(!0);
|
|
29
29
|
}, A = () => {
|
|
30
30
|
a(!1);
|
|
@@ -61,9 +61,9 @@ const W = ({
|
|
|
61
61
|
return e ? /* @__PURE__ */ r(
|
|
62
62
|
x,
|
|
63
63
|
{
|
|
64
|
-
employeeName:
|
|
64
|
+
employeeName: R,
|
|
65
65
|
effectiveDate: f,
|
|
66
|
-
canCancel:
|
|
66
|
+
canCancel: h,
|
|
67
67
|
canEdit: N,
|
|
68
68
|
showRunPayroll: O,
|
|
69
69
|
showRunOffCyclePayroll: y,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerminationSummary.js","sources":["../../../../../src/components/Employee/Terminations/TerminationSummary/TerminationSummary.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport {\n useEmployeeEmploymentsGetTerminationsSuspense,\n invalidateAllEmployeeEmploymentsGetTerminations,\n} from '@gusto/embedded-api/react-query/employeeEmploymentsGetTerminations'\nimport { useEmployeeEmploymentsDeleteTerminationMutation } from '@gusto/embedded-api/react-query/employeeEmploymentsDeleteTermination'\nimport { invalidateAllEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport type { PayrollOption } from '../types'\nimport { TerminationSummaryPresentation } from './TerminationSummaryPresentation'\nimport { normalizeToDate } from '@/helpers/dateFormatting'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\n\nexport interface TerminationSummaryProps extends BaseComponentInterface<'Employee.Terminations.TerminationSummary'> {\n employeeId: string\n companyId: string\n payrollOption?: PayrollOption\n payrollUuid?: string\n}\n\nexport function TerminationSummary(props: TerminationSummaryProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n employeeId,\n companyId,\n payrollOption,\n payrollUuid,\n dictionary,\n}: TerminationSummaryProps) => {\n useComponentDictionary('Employee.Terminations.TerminationSummary', dictionary)\n useI18n('Employee.Terminations.TerminationSummary')\n\n const queryClient = useQueryClient()\n const { onEvent, baseSubmitHandler } = useBase()\n\n const [isCancelDialogOpen, setIsCancelDialogOpen] = useState(false)\n\n const {\n data: { employee },\n } = useEmployeesGetSuspense({ employeeId })\n\n const { data: terminationsData } = useEmployeeEmploymentsGetTerminationsSuspense({ employeeId })\n\n const { mutateAsync: deleteTermination, isPending: isDeleting } =\n useEmployeeEmploymentsDeleteTerminationMutation()\n\n const employeeName = [employee?.firstName, employee?.lastName].filter(Boolean).join(' ')\n\n const terminations = terminationsData.
|
|
1
|
+
{"version":3,"file":"TerminationSummary.js","sources":["../../../../../src/components/Employee/Terminations/TerminationSummary/TerminationSummary.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport {\n useEmployeeEmploymentsGetTerminationsSuspense,\n invalidateAllEmployeeEmploymentsGetTerminations,\n} from '@gusto/embedded-api/react-query/employeeEmploymentsGetTerminations'\nimport { useEmployeeEmploymentsDeleteTerminationMutation } from '@gusto/embedded-api/react-query/employeeEmploymentsDeleteTermination'\nimport { invalidateAllEmployeesList } from '@gusto/embedded-api/react-query/employeesList'\nimport type { PayrollOption } from '../types'\nimport { TerminationSummaryPresentation } from './TerminationSummaryPresentation'\nimport { normalizeToDate } from '@/helpers/dateFormatting'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\n\nexport interface TerminationSummaryProps extends BaseComponentInterface<'Employee.Terminations.TerminationSummary'> {\n employeeId: string\n companyId: string\n payrollOption?: PayrollOption\n payrollUuid?: string\n}\n\nexport function TerminationSummary(props: TerminationSummaryProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({\n employeeId,\n companyId,\n payrollOption,\n payrollUuid,\n dictionary,\n}: TerminationSummaryProps) => {\n useComponentDictionary('Employee.Terminations.TerminationSummary', dictionary)\n useI18n('Employee.Terminations.TerminationSummary')\n\n const queryClient = useQueryClient()\n const { onEvent, baseSubmitHandler } = useBase()\n\n const [isCancelDialogOpen, setIsCancelDialogOpen] = useState(false)\n\n const {\n data: { employee },\n } = useEmployeesGetSuspense({ employeeId })\n\n const { data: terminationsData } = useEmployeeEmploymentsGetTerminationsSuspense({ employeeId })\n\n const { mutateAsync: deleteTermination, isPending: isDeleting } =\n useEmployeeEmploymentsDeleteTerminationMutation()\n\n const employeeName = [employee?.firstName, employee?.lastName].filter(Boolean).join(' ')\n\n const terminations = terminationsData.terminations ?? []\n const termination = terminations.find(t => t.active) ?? terminations[0]\n\n const effectiveDate = termination?.effectiveDate\n const canCancel = termination?.cancelable === true\n const effectiveDateLocal = normalizeToDate(effectiveDate)\n const todayMidnight = new Date(new Date().toDateString())\n const canEdit =\n !employee?.terminated && effectiveDateLocal ? effectiveDateLocal >= todayMidnight : false\n\n const showRunOffCyclePayroll = payrollOption === 'anotherWay'\n const showRunPayroll =\n !showRunOffCyclePayroll &&\n (termination?.runTerminationPayroll === true || payrollOption === 'dismissalPayroll')\n\n // Only show success alert if payrollOption is provided (meaning we just completed the termination)\n // Don't show it if we're just viewing an existing termination (employee already terminated)\n const showSuccessAlert = payrollOption !== undefined\n\n const handleCancelClick = () => {\n setIsCancelDialogOpen(true)\n }\n\n const handleDialogClose = () => {\n setIsCancelDialogOpen(false)\n }\n\n const handleConfirmCancel = async () => {\n if (!termination) return\n\n await baseSubmitHandler({ terminationId: termination.uuid }, async () => {\n await deleteTermination({\n request: {\n employeeId,\n },\n })\n\n await invalidateAllEmployeeEmploymentsGetTerminations(queryClient)\n await invalidateAllEmployeesList(queryClient)\n\n setIsCancelDialogOpen(false)\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_CANCELLED, {\n employeeId,\n termination,\n })\n })\n }\n\n const handleEditDismissal = () => {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_EDIT, {\n employeeId,\n termination,\n })\n }\n\n const handleRunDismissalPayroll = () => {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_RUN_PAYROLL, {\n employeeId,\n companyId,\n payrollUuid,\n termination,\n })\n }\n\n const handleRunOffCyclePayroll = () => {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_RUN_OFF_CYCLE_PAYROLL, {\n employeeId,\n companyId,\n termination,\n })\n }\n\n if (!termination) {\n return null\n }\n\n return (\n <TerminationSummaryPresentation\n employeeName={employeeName}\n effectiveDate={effectiveDate}\n canCancel={canCancel}\n canEdit={canEdit}\n showRunPayroll={showRunPayroll}\n showRunOffCyclePayroll={showRunOffCyclePayroll}\n showSuccessAlert={showSuccessAlert}\n onCancelClick={handleCancelClick}\n onEditDismissal={handleEditDismissal}\n onRunDismissalPayroll={handleRunDismissalPayroll}\n onRunOffCyclePayroll={handleRunOffCyclePayroll}\n isLoading={isDeleting}\n isCancelDialogOpen={isCancelDialogOpen}\n onDialogClose={handleDialogClose}\n onDialogConfirm={handleConfirmCancel}\n isCancelling={isDeleting}\n />\n )\n}\n"],"names":["TerminationSummary","props","jsx","BaseComponent","Root","employeeId","companyId","payrollOption","payrollUuid","dictionary","useComponentDictionary","useI18n","queryClient","useQueryClient","onEvent","baseSubmitHandler","useBase","isCancelDialogOpen","setIsCancelDialogOpen","useState","employee","useEmployeesGetSuspense","terminationsData","useEmployeeEmploymentsGetTerminationsSuspense","deleteTermination","isDeleting","useEmployeeEmploymentsDeleteTerminationMutation","employeeName","terminations","termination","t","effectiveDate","canCancel","effectiveDateLocal","normalizeToDate","todayMidnight","canEdit","showRunOffCyclePayroll","showRunPayroll","showSuccessAlert","handleCancelClick","handleDialogClose","handleConfirmCancel","invalidateAllEmployeeEmploymentsGetTerminations","invalidateAllEmployeesList","componentEvents","handleEditDismissal","handleRunDismissalPayroll","handleRunOffCyclePayroll","TerminationSummaryPresentation"],"mappings":"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"}
|