@zeniai/client-epic-state 4.19.80 → 4.19.81-beta1ND

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.
Files changed (41) hide show
  1. package/lib/entity/account/accountPayload.d.ts +2 -0
  2. package/lib/entity/account/accountPayload.js +2 -0
  3. package/lib/entity/account/accountState.d.ts +2 -0
  4. package/lib/entity/company/companyPayload.d.ts +1 -0
  5. package/lib/entity/company/companyPayload.js +1 -0
  6. package/lib/entity/company/companyStateTypes.d.ts +1 -0
  7. package/lib/esm/entity/account/accountPayload.js +2 -0
  8. package/lib/esm/entity/company/companyPayload.js +1 -0
  9. package/lib/esm/index.js +4 -2
  10. package/lib/esm/view/companyView/epic/companyPassport/updateCompanyDetailsEpic.js +3 -0
  11. package/lib/esm/view/companyView/types/companyPassport/companyPassportLocalData.js +1 -0
  12. package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/uploadTransactionReceiptSuccessEpic.js +22 -0
  13. package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +20 -1
  14. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +2 -1
  15. package/lib/esm/view/expenseAutomationView/types/transactionsViewState.js +1 -0
  16. package/lib/esm/view/spendManagement/commonSetup/epic/setup/updateBusinessVerificationDetailsEpic.js +4 -1
  17. package/lib/esm/view/spendManagement/commonSetup/epic/setup/updateSetupViewLocalStoreDataEpic.js +2 -1
  18. package/lib/esm/view/spendManagement/commonSetup/setupViewSelector.js +2 -1
  19. package/lib/esm/view/spendManagement/commonSetup/types/businessVerification.js +148 -1
  20. package/lib/index.d.ts +5 -2
  21. package/lib/index.js +41 -31
  22. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  23. package/lib/view/companyView/epic/companyPassport/updateCompanyDetailsEpic.js +3 -0
  24. package/lib/view/companyView/types/companyPassport/companyDetailsLocalData.d.ts +1 -0
  25. package/lib/view/companyView/types/companyPassport/companyPassportLocalData.js +1 -0
  26. package/lib/view/expenseAutomationView/epics/transactionCategorization/uploadTransactionReceiptSuccessEpic.d.ts +7 -0
  27. package/lib/view/expenseAutomationView/epics/transactionCategorization/uploadTransactionReceiptSuccessEpic.js +26 -0
  28. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +11 -3
  29. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +21 -2
  30. package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +1 -0
  31. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +2 -1
  32. package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +2 -1
  33. package/lib/view/expenseAutomationView/types/transactionsViewState.js +1 -0
  34. package/lib/view/spendManagement/commonSetup/epic/setup/updateBusinessVerificationDetailsEpic.js +4 -1
  35. package/lib/view/spendManagement/commonSetup/epic/setup/updateSetupViewLocalStoreDataEpic.js +2 -1
  36. package/lib/view/spendManagement/commonSetup/setupViewSelector.d.ts +1 -0
  37. package/lib/view/spendManagement/commonSetup/setupViewSelector.js +2 -1
  38. package/lib/view/spendManagement/commonSetup/setupViewState.d.ts +1 -0
  39. package/lib/view/spendManagement/commonSetup/types/businessVerification.d.ts +33 -3
  40. package/lib/view/spendManagement/commonSetup/types/businessVerification.js +150 -0
  41. package/package.json +1 -1
@@ -15,6 +15,9 @@ const updateCompanyDetailsEpic = (actions$, state$, zeniAPI) => actions$.pipe((0
15
15
  ...(0, companyPassportViewPayload_1.toCompanyIncInfoUpdatableInfoPayload)(companyDetails.incInfo),
16
16
  ...(0, companyPassportViewPayload_1.toCompanyTaxInfoUpdatableInfoPayload)(companyDetails.taxDetails),
17
17
  ...(0, companyPassportViewPayload_1.toCompanyFileInfoPayload)(companyDetails.incInfo, companyDetails.taxDetails),
18
+ ...(companyDetails.companyInfo.companyIndustryType != null && {
19
+ company_industry_type: companyDetails.companyInfo.companyIndustryType,
20
+ }),
18
21
  ...(companyDetails.companyInfo.companySubIndustry != null && {
19
22
  company_industry_sub_type: companyDetails.companyInfo.companySubIndustry,
20
23
  }),
@@ -8,6 +8,7 @@ export interface CompanyInfoLocalData {
8
8
  firstMonthOfFY: Month;
9
9
  legalName: string;
10
10
  phone: string;
11
+ companyIndustryType?: string;
11
12
  companySourceOfFunds?: string;
12
13
  companySourceOfFundsDescription?: string;
13
14
  companySubIndustry?: string;
@@ -13,6 +13,7 @@ function toCompanyPassportLocalData(companyView, companyFiles) {
13
13
  website: companyInfo.companyUrl,
14
14
  meetingLink: companyInfo.meetingUrl,
15
15
  industry: companyQuestionaire.companyIndustry,
16
+ companyIndustryType: incInfo.companyIndustryType,
16
17
  companySubIndustry: incInfo.companySubIndustry,
17
18
  businessModel: companyQuestionaire.companyBusinessModel ?? '',
18
19
  phone: companyInfo.phone ?? '',
@@ -0,0 +1,7 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { updateTransaction } from '../../../../entity/transaction/transactionReducer';
3
+ import { RootState } from '../../../../reducer';
4
+ import { fetchMonthEndCloseChecks } from '../../../monthEndCloseChecksView/monthEndCloseChecksViewReducer';
5
+ import { uploadTransactionCategorizationReceiptSuccess } from '../../reducers/transactionsViewReducer';
6
+ export type ActionType = ReturnType<typeof uploadTransactionCategorizationReceiptSuccess> | ReturnType<typeof fetchMonthEndCloseChecks> | ReturnType<typeof updateTransaction>;
7
+ export declare const uploadTransactionReceiptSuccessEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => import("rxjs").Observable<ActionType>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uploadTransactionReceiptSuccessEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
7
+ const transactionReducer_1 = require("../../../../entity/transaction/transactionReducer");
8
+ const monthEndCloseChecksViewReducer_1 = require("../../../monthEndCloseChecksView/monthEndCloseChecksViewReducer");
9
+ const transactionsViewReducer_1 = require("../../reducers/transactionsViewReducer");
10
+ const uploadTransactionReceiptSuccessEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.uploadTransactionCategorizationReceiptSuccess.match), (0, operators_1.mergeMap)((action) => {
11
+ const { transactionPayload, updateType } = action.payload;
12
+ const updateActions = [];
13
+ const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state$.value);
14
+ const selectedPeriodByTenantId = state$.value.expenseAutomationViewState.selectedPeriodByTenantId;
15
+ updateActions.push((0, transactionReducer_1.updateTransaction)(transactionPayload.transaction_id, transactionPayload, updateType));
16
+ if (currentTenant != null) {
17
+ const monthEndChecksPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
18
+ updateActions.push((0, monthEndCloseChecksViewReducer_1.fetchMonthEndCloseChecks)({
19
+ tenantId: currentTenant.tenantId,
20
+ period: monthEndChecksPeriod,
21
+ refreshViewInBackground: true,
22
+ }));
23
+ }
24
+ return (0, rxjs_1.from)(updateActions);
25
+ }));
26
+ exports.uploadTransactionReceiptSuccessEpic = uploadTransactionReceiptSuccessEpic;
@@ -1,4 +1,4 @@
1
- import { FetchState, ID } from '../../../commonStateTypes/common';
1
+ import { FetchState, FetchStateAndError, ID, UpdateType } from '../../../commonStateTypes/common';
2
2
  import { COTTransactionTrackingByTransactionId, RecommendationWithCOT } from '../../../commonStateTypes/recommendationBase';
3
3
  import { MonthYearPeriod, TimePeriod } from '../../../commonStateTypes/timePeriod';
4
4
  import { PageToken } from '../../../commonStateTypes/viewAndReport/viewAndReport';
@@ -7,7 +7,7 @@ import { ClassBase } from '../../../entity/class/classState';
7
7
  import { CustomerBase } from '../../../entity/customer/customerState';
8
8
  import { Entity } from '../../../entity/genericEntity/entity';
9
9
  import { RecommendationWithCOTByLineId, TransactionID } from '../../../entity/transaction/stateTypes/transaction';
10
- import { SupportedTransaction, SupportedTransactionWithCOT } from '../../../entity/transaction/transactionState';
10
+ import { SupportedTransaction, SupportedTransactionPayload, SupportedTransactionWithCOT } from '../../../entity/transaction/transactionState';
11
11
  import { VendorBase } from '../../../entity/vendor/vendorState';
12
12
  import { ZeniAPIStatus } from '../../../responsePayload';
13
13
  import { UncategorizedAccounts } from '../../accountList/accountListSelector';
@@ -158,6 +158,14 @@ export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").
158
158
  }, "expenseAutomationTransactionsView/syncTransactionCategorizationFromDetailSave", never, never>, backgroundRefetchReviewTab: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[period: TimePeriod, isUncategorizedExpenseCategoryEnabled?: boolean | undefined], {
159
159
  period: TimePeriod;
160
160
  isUncategorizedExpenseCategoryEnabled: boolean | undefined;
161
- }, "expenseAutomationTransactionsView/backgroundRefetchReviewTab", never, never>;
161
+ }, "expenseAutomationTransactionsView/backgroundRefetchReviewTab", never, never>, updateTransactionCategorizationUploadReceiptState: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", transactionId: string, fetchStatus: FetchStateAndError], {
162
+ selectedTab: "review" | "autoCategorized";
163
+ transactionId: string;
164
+ fetchStatus: FetchStateAndError;
165
+ }, "expenseAutomationTransactionsView/updateTransactionCategorizationUploadReceiptState", never, never>, uploadTransactionCategorizationReceiptSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", transactionPayload: SupportedTransactionPayload, updateType?: UpdateType | undefined], {
166
+ selectedTab: "review" | "autoCategorized";
167
+ transactionPayload: SupportedTransactionPayload;
168
+ updateType: UpdateType;
169
+ }, "expenseAutomationTransactionsView/uploadTransactionCategorizationReceiptSuccess", never, never>;
162
170
  declare const _default: import("redux").Reducer<TransactionsViewState>;
163
171
  export default _default;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  var _a;
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.backgroundRefetchReviewTab = exports.syncTransactionCategorizationFromDetailSave = exports.updateSelectedTransactionId = exports.setEntityRecommendationForLineIdsForCategorization = exports.clearExpenseAutomationTransactionsView = exports.clearExpenseAutomationTransactionsViewPerTabView = exports.updateSelectedCheckboxTransactionIds = exports.fetchTransactionCategorizationView = exports.resetOtherTabsFetchState = exports.fetchTransactionCategorizationSuccess = exports.updateTotalCountForTransactionCategorization = exports.setAllItemsToCategoryClassInLocalDataForCategorization = exports.updateSelectedCustomerForTransaction = exports.updateSelectedVendorForTransaction = exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = exports.markTransactionAsNotMiscategorized = exports.updateTransactionCategorizationSaveStatus = exports.updateCurrentSelectedTransactionCategorizationTab = exports.updateTransactionCategorization = exports.saveTransactionCategorization = exports.fetchTransactionCategorizationFailure = exports.saveTransactionCategorizationLocalData = exports.initializeTransactionCategorizationViewLocalData = exports.updateTransactionCategorizationUIState = exports.fetchTransactionCategorization = exports.initialState = exports.initialTransactionTabViewState = void 0;
7
+ exports.uploadTransactionCategorizationReceiptSuccess = exports.updateTransactionCategorizationUploadReceiptState = exports.backgroundRefetchReviewTab = exports.syncTransactionCategorizationFromDetailSave = exports.updateSelectedTransactionId = exports.setEntityRecommendationForLineIdsForCategorization = exports.clearExpenseAutomationTransactionsView = exports.clearExpenseAutomationTransactionsViewPerTabView = exports.updateSelectedCheckboxTransactionIds = exports.fetchTransactionCategorizationView = exports.resetOtherTabsFetchState = exports.fetchTransactionCategorizationSuccess = exports.updateTotalCountForTransactionCategorization = exports.setAllItemsToCategoryClassInLocalDataForCategorization = exports.updateSelectedCustomerForTransaction = exports.updateSelectedVendorForTransaction = exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = exports.markTransactionAsNotMiscategorized = exports.updateTransactionCategorizationSaveStatus = exports.updateCurrentSelectedTransactionCategorizationTab = exports.updateTransactionCategorization = exports.saveTransactionCategorization = exports.fetchTransactionCategorizationFailure = exports.saveTransactionCategorizationLocalData = exports.initializeTransactionCategorizationViewLocalData = exports.updateTransactionCategorizationUIState = exports.fetchTransactionCategorization = exports.initialState = exports.initialTransactionTabViewState = void 0;
8
8
  const toolkit_1 = require("@reduxjs/toolkit");
9
9
  const get_1 = __importDefault(require("lodash/get"));
10
10
  const uniq_1 = __importDefault(require("lodash/uniq"));
@@ -43,6 +43,7 @@ exports.initialTransactionTabViewState = {
43
43
  transactionIdsBySelectedPeriod: {},
44
44
  selectedCheckBoxTransactionIds: [],
45
45
  transactionIdsWithUnsavedData: [],
46
+ uploadReceiptStatusById: {},
46
47
  selectedTransactionId: undefined,
47
48
  selectedTransactionLineId: undefined,
48
49
  };
@@ -706,6 +707,24 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
706
707
  clearExpenseAutomationTransactionsView(draft) {
707
708
  Object.assign(draft, exports.initialState);
708
709
  },
710
+ updateTransactionCategorizationUploadReceiptState: {
711
+ reducer(draft, action) {
712
+ const { transactionId, fetchStatus, selectedTab } = action.payload;
713
+ draft.transactionCategorizationView[selectedTab].uploadReceiptStatusById[transactionId] = fetchStatus;
714
+ },
715
+ prepare(selectedTab, transactionId, fetchStatus) {
716
+ return { payload: { selectedTab, transactionId, fetchStatus } };
717
+ },
718
+ },
719
+ uploadTransactionCategorizationReceiptSuccess: {
720
+ reducer(draft, action) {
721
+ const { transactionPayload, selectedTab } = action.payload;
722
+ draft.transactionCategorizationView[selectedTab].uploadReceiptStatusById[transactionPayload.transaction_id] = { fetchState: 'Completed', error: undefined };
723
+ },
724
+ prepare(selectedTab, transactionPayload, updateType = 'merge') {
725
+ return { payload: { selectedTab, transactionPayload, updateType } };
726
+ },
727
+ },
709
728
  syncTransactionCategorizationFromDetailSave: {
710
729
  prepare(transactionId, updatedTransaction, pendingReviewLineIds, uncategorizedIncomeExpense, isUncategorizedExpenseCategoryEnabled) {
711
730
  return {
@@ -777,5 +796,5 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
777
796
  },
778
797
  },
779
798
  });
780
- _a = expenseAutomationTransactionsView.actions, exports.fetchTransactionCategorization = _a.fetchTransactionCategorization, exports.updateTransactionCategorizationUIState = _a.updateTransactionCategorizationUIState, exports.initializeTransactionCategorizationViewLocalData = _a.initializeTransactionCategorizationViewLocalData, exports.saveTransactionCategorizationLocalData = _a.saveTransactionCategorizationLocalData, exports.fetchTransactionCategorizationFailure = _a.fetchTransactionCategorizationFailure, exports.saveTransactionCategorization = _a.saveTransactionCategorization, exports.updateTransactionCategorization = _a.updateTransactionCategorization, exports.updateCurrentSelectedTransactionCategorizationTab = _a.updateCurrentSelectedTransactionCategorizationTab, exports.updateTransactionCategorizationSaveStatus = _a.updateTransactionCategorizationSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = _a.updateStatusForTransactionNotMiscategorizedUpdateForCategorization, exports.updateSelectedVendorForTransaction = _a.updateSelectedVendorForTransaction, exports.updateSelectedCustomerForTransaction = _a.updateSelectedCustomerForTransaction, exports.setAllItemsToCategoryClassInLocalDataForCategorization = _a.setAllItemsToCategoryClassInLocalDataForCategorization, exports.updateTotalCountForTransactionCategorization = _a.updateTotalCountForTransactionCategorization, exports.fetchTransactionCategorizationSuccess = _a.fetchTransactionCategorizationSuccess, exports.resetOtherTabsFetchState = _a.resetOtherTabsFetchState, exports.fetchTransactionCategorizationView = _a.fetchTransactionCategorizationView, exports.updateSelectedCheckboxTransactionIds = _a.updateSelectedCheckboxTransactionIds, exports.clearExpenseAutomationTransactionsViewPerTabView = _a.clearExpenseAutomationTransactionsViewPerTabView, exports.clearExpenseAutomationTransactionsView = _a.clearExpenseAutomationTransactionsView, exports.setEntityRecommendationForLineIdsForCategorization = _a.setEntityRecommendationForLineIdsForCategorization, exports.updateSelectedTransactionId = _a.updateSelectedTransactionId, exports.syncTransactionCategorizationFromDetailSave = _a.syncTransactionCategorizationFromDetailSave, exports.backgroundRefetchReviewTab = _a.backgroundRefetchReviewTab;
799
+ _a = expenseAutomationTransactionsView.actions, exports.fetchTransactionCategorization = _a.fetchTransactionCategorization, exports.updateTransactionCategorizationUIState = _a.updateTransactionCategorizationUIState, exports.initializeTransactionCategorizationViewLocalData = _a.initializeTransactionCategorizationViewLocalData, exports.saveTransactionCategorizationLocalData = _a.saveTransactionCategorizationLocalData, exports.fetchTransactionCategorizationFailure = _a.fetchTransactionCategorizationFailure, exports.saveTransactionCategorization = _a.saveTransactionCategorization, exports.updateTransactionCategorization = _a.updateTransactionCategorization, exports.updateCurrentSelectedTransactionCategorizationTab = _a.updateCurrentSelectedTransactionCategorizationTab, exports.updateTransactionCategorizationSaveStatus = _a.updateTransactionCategorizationSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = _a.updateStatusForTransactionNotMiscategorizedUpdateForCategorization, exports.updateSelectedVendorForTransaction = _a.updateSelectedVendorForTransaction, exports.updateSelectedCustomerForTransaction = _a.updateSelectedCustomerForTransaction, exports.setAllItemsToCategoryClassInLocalDataForCategorization = _a.setAllItemsToCategoryClassInLocalDataForCategorization, exports.updateTotalCountForTransactionCategorization = _a.updateTotalCountForTransactionCategorization, exports.fetchTransactionCategorizationSuccess = _a.fetchTransactionCategorizationSuccess, exports.resetOtherTabsFetchState = _a.resetOtherTabsFetchState, exports.fetchTransactionCategorizationView = _a.fetchTransactionCategorizationView, exports.updateSelectedCheckboxTransactionIds = _a.updateSelectedCheckboxTransactionIds, exports.clearExpenseAutomationTransactionsViewPerTabView = _a.clearExpenseAutomationTransactionsViewPerTabView, exports.clearExpenseAutomationTransactionsView = _a.clearExpenseAutomationTransactionsView, exports.setEntityRecommendationForLineIdsForCategorization = _a.setEntityRecommendationForLineIdsForCategorization, exports.updateSelectedTransactionId = _a.updateSelectedTransactionId, exports.syncTransactionCategorizationFromDetailSave = _a.syncTransactionCategorizationFromDetailSave, exports.backgroundRefetchReviewTab = _a.backgroundRefetchReviewTab, exports.updateTransactionCategorizationUploadReceiptState = _a.updateTransactionCategorizationUploadReceiptState, exports.uploadTransactionCategorizationReceiptSuccess = _a.uploadTransactionCategorizationReceiptSuccess;
781
800
  exports.default = expenseAutomationTransactionsView.reducer;
@@ -28,6 +28,7 @@ export interface ExpenseAutomationTransactionViewSelector extends SelectorView {
28
28
  transactions: SupportedTransactionWithCOT[];
29
29
  uiState: TransactionsViewUIState;
30
30
  uncategorizedAccounts: UncategorizedAccounts;
31
+ uploadReceiptStatusById: Record<ID, FetchStateAndError>;
31
32
  selectedTransactionId?: ID;
32
33
  selectedTransactionLineId?: ID;
33
34
  }
@@ -16,7 +16,7 @@ const expenseAutomationViewSelectorTypes_1 = require("../selectorTypes/expenseAu
16
16
  function getExpenseAutomationTransactionView(state) {
17
17
  const { accountState, classState, classListState, accountListState, expenseAutomationTransactionsViewState, expenseAutomationViewState, transactionState, monthEndCloseChecksState, } = state;
18
18
  const { selectedTransactionCategorizationTab } = expenseAutomationTransactionsViewState;
19
- const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, transactionIdsWithUnsavedData, selectedTransactionId, selectedTransactionLineId, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
19
+ const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, transactionIdsWithUnsavedData, uploadReceiptStatusById, selectedTransactionId, selectedTransactionLineId, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
20
20
  const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(accountState, accountListState, 'accountList');
21
21
  const accountList = (0, accountListSelector_1.getAccountList)(accountState, accountListState, 'accountList');
22
22
  const classList = (0, classListSelector_1.getClassList)(classState, classListState);
@@ -100,6 +100,7 @@ function getExpenseAutomationTransactionView(state) {
100
100
  completionStatus,
101
101
  totalCountByTab,
102
102
  fetchStateByTransactionTabs: fetchStateByTab,
103
+ uploadReceiptStatusById,
103
104
  selectedTransactionId,
104
105
  selectedTransactionLineId,
105
106
  };
@@ -15,7 +15,7 @@ import { VendorBase } from '../../../entity/vendor/vendorState';
15
15
  import { ZeniDate } from '../../../zeniDayJS';
16
16
  import { EntityRecommendationKey } from '../../recommendation/recommendationState';
17
17
  import { TransactionDetailKey } from '../../transactionDetail/transactionDetailState';
18
- export declare const toTransactionsSortKey: (v: string) => "date" | "amount" | "vendor" | "category" | "class" | "memo" | "transaction_type";
18
+ export declare const toTransactionsSortKey: (v: string) => "date" | "amount" | "vendor" | "category" | "class" | "payment_account" | "memo" | "transaction_type";
19
19
  export type TransactionsSortKey = ReturnType<typeof toTransactionsSortKey>;
20
20
  export declare const TRANSACTIONS_TABS: readonly ["review", "autoCategorized"];
21
21
  export declare const toTransactionsTabKey: (v: string) => "review" | "autoCategorized";
@@ -97,6 +97,7 @@ export interface TransactionsTabViewState extends FetchedState {
97
97
  transactionIdsWithUnsavedData: ID[];
98
98
  transactionReviewLocalDataById: Record<ID | TransactionDetailKey, SupportedTransactionCategorization>;
99
99
  uiState: TransactionsViewUIState;
100
+ uploadReceiptStatusById: Record<ID, FetchStateAndError>;
100
101
  selectedTransactionId?: ID;
101
102
  selectedTransactionLineId?: ID;
102
103
  }
@@ -7,6 +7,7 @@ const TRANSACTIONS_SORT_KEYS = [
7
7
  'vendor',
8
8
  'amount',
9
9
  'transaction_type',
10
+ 'payment_account',
10
11
  'date',
11
12
  'category',
12
13
  'class',
@@ -143,7 +143,7 @@ function toUsNexusTypeKey(value) {
143
143
  return US_NEXUS_LABEL_TO_KEY[value] ?? value;
144
144
  }
145
145
  const toBusinessVerificationCompanyDataPayload = (companyLocalData, sendForVerification, companyAddressData, registeredAddressData, setupViewType) => {
146
- const { companyDescription, companyLegalName, companyIndustry, companySubIndustry, countriesOfOperations, companySourceOfFunds, companySourceOfFundsDescription, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, usNexus, usNexusTypes, website, incDate, taxIdOrEIN, phone, syncToken, fileIds, typeOfIncorporation, stateOfIncorporation, sourceOfFunds, } = companyLocalData;
146
+ const { companyDescription, companyLegalName, companyIndustry, companyIndustryType, companySubIndustry, countriesOfOperations, companySourceOfFunds, companySourceOfFundsDescription, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, usNexus, usNexusTypes, website, incDate, taxIdOrEIN, phone, syncToken, fileIds, typeOfIncorporation, stateOfIncorporation, sourceOfFunds, } = companyLocalData;
147
147
  const company = {
148
148
  is_ready_for_verification: sendForVerification,
149
149
  file_ids: fileIds,
@@ -201,6 +201,9 @@ const toBusinessVerificationCompanyDataPayload = (companyLocalData, sendForVerif
201
201
  company['company_industry'] = companyIndustry;
202
202
  }
203
203
  Object.assign(company, {
204
+ ...(companyIndustryType != null && {
205
+ company_industry_type: companyIndustryType,
206
+ }),
204
207
  ...(companySubIndustry != null && {
205
208
  company_industry_sub_type: companySubIndustry,
206
209
  }),
@@ -53,13 +53,14 @@ function toSetupViewLocalData(company, users, userRoles, primaryContact) {
53
53
  const { companyInfo, incInfo, taxInfo, questionaire, companyBillPayInfo } = company;
54
54
  const { companyId, companyDescription, companyLegalName, companyUrl, phone, syncToken, sourceOfFunds, companySourceOfFunds: incCompanySourceOfFunds, companySourceOfFundsDescription, countriesOfOperations, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, usNexus, usNexusTypes, } = companyInfo;
55
55
  const { usersSelectedForVerification: usersSelected } = companyBillPayInfo;
56
- const { fileIds, companyIncDate: incDate, companyIncType, companyIncState, companySubIndustry, } = incInfo;
56
+ const { fileIds, companyIncDate: incDate, companyIncType, companyIncState, companySubIndustry, companyIndustryType, } = incInfo;
57
57
  const { companyIndustry } = questionaire;
58
58
  const { taxId } = taxInfo;
59
59
  const companyDetails = {
60
60
  companyId,
61
61
  companyDescription,
62
62
  companyIndustry,
63
+ companyIndustryType,
63
64
  companyLegalName,
64
65
  companySubIndustry,
65
66
  companySourceOfFunds: incCompanySourceOfFunds,
@@ -69,6 +69,7 @@ export interface CompanyDetails {
69
69
  addressStatus?: NewAddressData;
70
70
  companyDescription?: string;
71
71
  companyIndustry?: string;
72
+ companyIndustryType?: string;
72
73
  companyLegalName?: string;
73
74
  companySourceOfFunds?: string;
74
75
  companySourceOfFundsDescription?: string;
@@ -114,7 +114,7 @@ const getCompanyAndIdentityDetails = (state, companyId, companyAndIdentityDetail
114
114
  if (companyDetails.localData != null) {
115
115
  const deleteFileStatusById = {};
116
116
  const updateFileStatusById = {};
117
- const { syncToken, companyDescription, companyLegalName, website, companyIndustry, companySubIndustry, companySourceOfFunds, companySourceOfFundsDescription, countriesOfOperations, phone, taxIdOrEIN, incDate, fileIds, typeOfIncorporation, sourceOfFunds, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, stateOfIncorporation, usNexus, usNexusTypes, } = companyDetails.localData;
117
+ const { syncToken, companyDescription, companyLegalName, website, companyIndustry, companyIndustryType, companySubIndustry, companySourceOfFunds, companySourceOfFundsDescription, countriesOfOperations, phone, taxIdOrEIN, incDate, fileIds, typeOfIncorporation, sourceOfFunds, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, stateOfIncorporation, usNexus, usNexusTypes, } = companyDetails.localData;
118
118
  fileIds.forEach((fileId) => {
119
119
  deleteFileStatusById[fileId] = (0, fileViewSelector_1.getFileDeleteStatusById)(state, fileId);
120
120
  });
@@ -128,6 +128,7 @@ const getCompanyAndIdentityDetails = (state, companyId, companyAndIdentityDetail
128
128
  companyDescription,
129
129
  companyLegalName,
130
130
  companyIndustry,
131
+ companyIndustryType,
131
132
  companySubIndustry,
132
133
  companySourceOfFunds,
133
134
  companySourceOfFundsDescription,
@@ -16,6 +16,7 @@ export interface CompanyDetailsLocalData {
16
16
  fileIds: ID[];
17
17
  companyDescription?: string;
18
18
  companyIndustry?: string;
19
+ companyIndustryType?: string;
19
20
  companyLegalName?: string;
20
21
  companySourceOfFunds?: string;
21
22
  companySourceOfFundsDescription?: string;
@@ -1,5 +1,34 @@
1
1
  import { ID } from '../../../../commonStateTypes/common';
2
2
  import { AddressUpdatableInfoPayload } from '../../../addressView/addressViewPayload';
3
+ export declare const COMPANY_TRANSACTION_VOLUME_CODES: readonly ["less_than_10000", "10000_50000", "50001_250000", "250001_1000000", "1000001_2000000", "over_2000000"];
4
+ export type CompanyTransactionVolumeCode = (typeof COMPANY_TRANSACTION_VOLUME_CODES)[number];
5
+ export declare const COMPANY_SOURCE_OF_FUNDS_CODES: readonly ["sales_of_goods", "sales_of_services", "customer_payments", "investment_capital", "business_loans", "owner_contributions", "franchise_revenue", "rental_income", "government_contracts_grants", "donations_fundraising", "membership_fees_subscriptions", "licensing_royalties", "commission_income", "import_export_revenue", "cryptocurrency_activity"];
6
+ export type CompanySourceOfFundsCode = (typeof COMPANY_SOURCE_OF_FUNDS_CODES)[number];
7
+ export declare const COMPANY_PURPOSE_OF_ACCOUNT_CODES: readonly ["retail_sales", "ecommerce_sales", "cash_heavy_operations", "import_export_trade", "professional_services_not_handling_funds", "professional_services_handling_funds", "holding_investment_company", "property_management_real_estate", "charitable_nonprofit", "construction_contracting", "commercial_cash_operations", "freight_forwarding_logistics", "third_party_payment_processing", "technology_startup", "wholesale_distribution", "franchise_operation", "healthcare_provider", "educational_institution"];
8
+ export type CompanyPurposeOfAccountCode = (typeof COMPANY_PURPOSE_OF_ACCOUNT_CODES)[number];
9
+ /** Keys for company_us_nexus_desc / form usNexusTypes (labels from usNexusOptions in app locale). */
10
+ export declare const COMPANY_US_NEXUS_TYPE_CODES: readonly ["employees", "customers", "physical_office", "banking_relationships"];
11
+ export type CompanyUsNexusTypeCode = (typeof COMPANY_US_NEXUS_TYPE_CODES)[number];
12
+ /** Industry type codes for onboarding / business verification (paired with sub-industry). */
13
+ export declare const COMPANY_ONBOARDING_INDUSTRY_TYPE_CODES: readonly ["retail_consumer_goods", "financial_services", "food_agriculture", "healthcare_pharmaceuticals", "professional_services", "manufacturing_industrial", "real_estate_construction", "logistics_transportation", "wholesale_trade", "business_support_services", "escort_dating_adult_entertainment"];
14
+ export type CompanyOnboardingIndustryTypeCode = (typeof COMPANY_ONBOARDING_INDUSTRY_TYPE_CODES)[number];
15
+ export declare const COMPANY_ONBOARDING_SUB_INDUSTRY_CODES_BY_INDUSTRY: {
16
+ readonly retail_consumer_goods: readonly ["grocery_stores_supermarkets", "convenience_stores", "specialty_food_retailers", "gas_stations_retail", "general_merchandise_department", "online_retail_ecommerce", "subscription_membership", "direct_to_consumer", "cannabis"];
17
+ readonly financial_services: readonly ["banks_credit_unions", "fintech_payment_processing", "insurance_providers", "investment_advisors_broker", "lending_mortgage", "treasury_management", "personal_finance_apps", "retirement_planning", "real_estate_investment", "money_service_businesses", "cryptocurrency", "debt_collection", "payday_lending", "gambling"];
18
+ readonly food_agriculture: readonly ["farms_agricultural", "food_wholesalers_distributors", "restaurants_cafes", "bars_nightclubs", "catering_services", "farmers_markets", "restaurant_tech_pos"];
19
+ readonly healthcare_pharmaceuticals: readonly ["hospitals_clinics", "pharmacies", "medical_equipment", "biotechnology", "home_health", "healthcare_staffing", "wellness_benefits", "healthcare_social_assistance"];
20
+ readonly professional_services: readonly ["legal_services", "accounting_auditing", "consulting_firms", "marketing_advertising", "real_estate_agents_property", "corporate_services_incorporation", "hr_workforce_management", "direct_marketing_telemarketing", "legal_accounting_consulting_programming"];
21
+ readonly manufacturing_industrial: readonly ["chemical_manufacturing", "electronics_hardware", "automotive_manufacturing", "construction_materials", "textiles_apparel", "mining"];
22
+ readonly real_estate_construction: readonly ["real_estate", "construction"];
23
+ readonly logistics_transportation: readonly ["transportation_warehousing"];
24
+ readonly wholesale_trade: readonly ["wholesale_trade"];
25
+ readonly business_support_services: readonly ["business_support_building"];
26
+ readonly escort_dating_adult_entertainment: readonly ["escort_services", "dating_adult_entertainment"];
27
+ };
28
+ export type CompanyOnboardingSubIndustryTypeCode = {
29
+ [K in keyof typeof COMPANY_ONBOARDING_SUB_INDUSTRY_CODES_BY_INDUSTRY]: (typeof COMPANY_ONBOARDING_SUB_INDUSTRY_CODES_BY_INDUSTRY)[K][number];
30
+ }[keyof typeof COMPANY_ONBOARDING_SUB_INDUSTRY_CODES_BY_INDUSTRY];
31
+ export declare function getCompanyOnboardingSubIndustryCodesForIndustry(industryTypeCode: string | undefined | null): CompanyOnboardingSubIndustryTypeCode[];
3
32
  export interface CompanyOfficerVerificationPayload {
4
33
  additional_submitted_documents_for_verification_file_ids: {
5
34
  social_security_card: ID[];
@@ -66,13 +95,14 @@ export interface CompanyDetailsVerificationPayload {
66
95
  company_countries_of_operations?: string[];
67
96
  company_inc_state?: string | null;
68
97
  company_industry_sub_type?: string;
69
- company_purpose_of_account?: string;
98
+ company_industry_type?: string;
99
+ company_purpose_of_account?: CompanyPurposeOfAccountCode;
70
100
  company_purpose_of_account_desc?: string;
71
101
  company_regulated_states?: boolean;
72
102
  company_regulated_states_desc?: string;
73
- company_source_of_funds?: string;
103
+ company_source_of_funds?: CompanySourceOfFundsCode;
74
104
  company_source_of_funds_desc?: string;
75
- company_transaction_vol_expectations?: string;
105
+ company_transaction_vol_expectations?: CompanyTransactionVolumeCode;
76
106
  company_transaction_vol_expectations_desc?: string;
77
107
  company_us_nexus?: boolean;
78
108
  company_us_nexus_desc?: string[];
@@ -1,2 +1,152 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMPANY_ONBOARDING_SUB_INDUSTRY_CODES_BY_INDUSTRY = exports.COMPANY_ONBOARDING_INDUSTRY_TYPE_CODES = exports.COMPANY_US_NEXUS_TYPE_CODES = exports.COMPANY_PURPOSE_OF_ACCOUNT_CODES = exports.COMPANY_SOURCE_OF_FUNDS_CODES = exports.COMPANY_TRANSACTION_VOLUME_CODES = void 0;
4
+ exports.getCompanyOnboardingSubIndustryCodesForIndustry = getCompanyOnboardingSubIndustryCodesForIndustry;
5
+ exports.COMPANY_TRANSACTION_VOLUME_CODES = [
6
+ 'less_than_10000',
7
+ '10000_50000',
8
+ '50001_250000',
9
+ '250001_1000000',
10
+ '1000001_2000000',
11
+ 'over_2000000',
12
+ ];
13
+ exports.COMPANY_SOURCE_OF_FUNDS_CODES = [
14
+ 'sales_of_goods',
15
+ 'sales_of_services',
16
+ 'customer_payments',
17
+ 'investment_capital',
18
+ 'business_loans',
19
+ 'owner_contributions',
20
+ 'franchise_revenue',
21
+ 'rental_income',
22
+ 'government_contracts_grants',
23
+ 'donations_fundraising',
24
+ 'membership_fees_subscriptions',
25
+ 'licensing_royalties',
26
+ 'commission_income',
27
+ 'import_export_revenue',
28
+ 'cryptocurrency_activity',
29
+ ];
30
+ exports.COMPANY_PURPOSE_OF_ACCOUNT_CODES = [
31
+ 'retail_sales',
32
+ 'ecommerce_sales',
33
+ 'cash_heavy_operations',
34
+ 'import_export_trade',
35
+ 'professional_services_not_handling_funds',
36
+ 'professional_services_handling_funds',
37
+ 'holding_investment_company',
38
+ 'property_management_real_estate',
39
+ 'charitable_nonprofit',
40
+ 'construction_contracting',
41
+ 'commercial_cash_operations',
42
+ 'freight_forwarding_logistics',
43
+ 'third_party_payment_processing',
44
+ 'technology_startup',
45
+ 'wholesale_distribution',
46
+ 'franchise_operation',
47
+ 'healthcare_provider',
48
+ 'educational_institution',
49
+ ];
50
+ /** Keys for company_us_nexus_desc / form usNexusTypes (labels from usNexusOptions in app locale). */
51
+ exports.COMPANY_US_NEXUS_TYPE_CODES = [
52
+ 'employees',
53
+ 'customers',
54
+ 'physical_office',
55
+ 'banking_relationships',
56
+ ];
57
+ /** Industry type codes for onboarding / business verification (paired with sub-industry). */
58
+ exports.COMPANY_ONBOARDING_INDUSTRY_TYPE_CODES = [
59
+ 'retail_consumer_goods',
60
+ 'financial_services',
61
+ 'food_agriculture',
62
+ 'healthcare_pharmaceuticals',
63
+ 'professional_services',
64
+ 'manufacturing_industrial',
65
+ 'real_estate_construction',
66
+ 'logistics_transportation',
67
+ 'wholesale_trade',
68
+ 'business_support_services',
69
+ 'escort_dating_adult_entertainment',
70
+ ];
71
+ exports.COMPANY_ONBOARDING_SUB_INDUSTRY_CODES_BY_INDUSTRY = {
72
+ retail_consumer_goods: [
73
+ 'grocery_stores_supermarkets',
74
+ 'convenience_stores',
75
+ 'specialty_food_retailers',
76
+ 'gas_stations_retail',
77
+ 'general_merchandise_department',
78
+ 'online_retail_ecommerce',
79
+ 'subscription_membership',
80
+ 'direct_to_consumer',
81
+ 'cannabis',
82
+ ],
83
+ financial_services: [
84
+ 'banks_credit_unions',
85
+ 'fintech_payment_processing',
86
+ 'insurance_providers',
87
+ 'investment_advisors_broker',
88
+ 'lending_mortgage',
89
+ 'treasury_management',
90
+ 'personal_finance_apps',
91
+ 'retirement_planning',
92
+ 'real_estate_investment',
93
+ 'money_service_businesses',
94
+ 'cryptocurrency',
95
+ 'debt_collection',
96
+ 'payday_lending',
97
+ 'gambling',
98
+ ],
99
+ food_agriculture: [
100
+ 'farms_agricultural',
101
+ 'food_wholesalers_distributors',
102
+ 'restaurants_cafes',
103
+ 'bars_nightclubs',
104
+ 'catering_services',
105
+ 'farmers_markets',
106
+ 'restaurant_tech_pos',
107
+ ],
108
+ healthcare_pharmaceuticals: [
109
+ 'hospitals_clinics',
110
+ 'pharmacies',
111
+ 'medical_equipment',
112
+ 'biotechnology',
113
+ 'home_health',
114
+ 'healthcare_staffing',
115
+ 'wellness_benefits',
116
+ 'healthcare_social_assistance',
117
+ ],
118
+ professional_services: [
119
+ 'legal_services',
120
+ 'accounting_auditing',
121
+ 'consulting_firms',
122
+ 'marketing_advertising',
123
+ 'real_estate_agents_property',
124
+ 'corporate_services_incorporation',
125
+ 'hr_workforce_management',
126
+ 'direct_marketing_telemarketing',
127
+ 'legal_accounting_consulting_programming',
128
+ ],
129
+ manufacturing_industrial: [
130
+ 'chemical_manufacturing',
131
+ 'electronics_hardware',
132
+ 'automotive_manufacturing',
133
+ 'construction_materials',
134
+ 'textiles_apparel',
135
+ 'mining',
136
+ ],
137
+ real_estate_construction: ['real_estate', 'construction'],
138
+ logistics_transportation: ['transportation_warehousing'],
139
+ wholesale_trade: ['wholesale_trade'],
140
+ business_support_services: ['business_support_building'],
141
+ escort_dating_adult_entertainment: [
142
+ 'escort_services',
143
+ 'dating_adult_entertainment',
144
+ ],
145
+ };
146
+ function getCompanyOnboardingSubIndustryCodesForIndustry(industryTypeCode) {
147
+ if (industryTypeCode == null || industryTypeCode === '') {
148
+ return [];
149
+ }
150
+ const row = exports.COMPANY_ONBOARDING_SUB_INDUSTRY_CODES_BY_INDUSTRY[industryTypeCode];
151
+ return row != null ? [...row] : [];
152
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "4.19.80",
3
+ "version": "4.19.81-beta1ND",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",