@zeniai/client-epic-state 4.9.32 → 4.9.34
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/lib/entity/company/companyHelper.d.ts +3 -2
- package/lib/entity/company/companyHelper.js +5 -1
- package/lib/index.d.ts +5 -5
- package/lib/index.js +14 -13
- package/lib/view/companyHealthMetricView/companyHealthMetricView.d.ts +2 -1
- package/lib/view/companyHealthMetricView/companyHealthMetricViewReducer.js +4 -0
- package/lib/view/companyHealthMetricView/companyHealthMetricViewSelector.d.ts +7 -1
- package/lib/view/companyHealthMetricView/companyHealthMetricViewSelector.js +111 -3
- package/lib/view/companyView/helpers/cockpitHelpers.d.ts +3 -1
- package/lib/view/companyView/helpers/cockpitHelpers.js +25 -14
- package/lib/view/companyView/types/cockpitTypes.d.ts +8 -4
- package/lib/view/transactionDetail/transactionDetailLocalDataHelper.js +37 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ID } from '../../commonStateTypes/common';
|
|
2
2
|
import { User } from '../user/userState';
|
|
3
|
-
export declare const getControllersEmails: (controllers: User[]) =>
|
|
4
|
-
export declare const
|
|
3
|
+
export declare const getControllersEmails: (controllers: User[]) => ID[];
|
|
4
|
+
export declare const getControllersUserIds: (controllers: User[]) => ID[];
|
|
5
|
+
export declare const getFirstControllerEmail: (controllers: User[]) => ID[];
|
|
5
6
|
export declare const getFirstControllerId: (controllerUserIds: ID[]) => ID[];
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getFirstControllerId = exports.getFirstControllerEmail = exports.getControllersEmails = void 0;
|
|
3
|
+
exports.getFirstControllerId = exports.getFirstControllerEmail = exports.getControllersUserIds = exports.getControllersEmails = void 0;
|
|
4
4
|
const getControllersEmails = (controllers) => {
|
|
5
5
|
return controllers
|
|
6
6
|
.map((controller) => controller.email)
|
|
7
7
|
.filter((email) => Boolean(email));
|
|
8
8
|
};
|
|
9
9
|
exports.getControllersEmails = getControllersEmails;
|
|
10
|
+
const getControllersUserIds = (controllers) => {
|
|
11
|
+
return controllers.map((controller) => controller.userId);
|
|
12
|
+
};
|
|
13
|
+
exports.getControllersUserIds = getControllersUserIds;
|
|
10
14
|
const getFirstControllerEmail = (controllers) => {
|
|
11
15
|
const controllerEmail = (0, exports.getControllersEmails)(controllers);
|
|
12
16
|
if (controllerEmail.length === 0) {
|
package/lib/index.d.ts
CHANGED
|
@@ -298,8 +298,8 @@ import { AddressUpdatableInfo, AddressType, NewAddressData } from './view/addres
|
|
|
298
298
|
import { getAddress, getNewAddress, getAllNewAddresses, getFormattedAddress } from './view/addressView/addressViewSelector';
|
|
299
299
|
import { fetchAddress, newAddressInLocalStore, clearAddressView } from './view/addressView/addressViewReducer';
|
|
300
300
|
export { newAddressInLocalStore, getAddress, getNewAddress, getAllNewAddresses, getFormattedAddress, fetchAddress, clearAddressView, AddressType, NewAddressData, AddressUpdatableInfo, };
|
|
301
|
-
import { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField, toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType } from './view/companyView/types/cockpitTypes';
|
|
302
|
-
export { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField, toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType, };
|
|
301
|
+
import { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField, HealthMonitorViewFilterCategoryField, toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType, toHealthSortKeyType } from './view/companyView/types/cockpitTypes';
|
|
302
|
+
export { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, HealthMonitorViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField, toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType, toHealthSortKeyType, };
|
|
303
303
|
import { CockpitTabsFileType, CockpitTabsID, ALL_COCKPIT_TABS_IDS, ALL_COCKPIT_TABS_FILE_TYPES, toCockpitTabsIDStrict, toCockpitTabsFileTypeStrict, CockpitDownloadTabsID } from './view/companyView/types/cockpitTabsID';
|
|
304
304
|
export { CockpitDownloadTabsID, CockpitTabsFileType, CockpitTabsID, ALL_COCKPIT_TABS_FILE_TYPES, ALL_COCKPIT_TABS_IDS, toCockpitTabsIDStrict, toCockpitTabsFileTypeStrict, };
|
|
305
305
|
import { AllowedValueWithCode, AllowedValue, AllowedValueWithID, isAllowedValueWithCode, isAllowedValueWithID } from './commonStateTypes/allowedValue';
|
|
@@ -362,7 +362,7 @@ import { createBankAccount, deleteBankAccount, updateBankAccountViewLocalStoreDa
|
|
|
362
362
|
import { BankNameByRoutingState, BankNameBySwiftState, BankAccountContext, CreateBankAccountDetails, CreateInternationalBankAccountDetails, CreateBankAccountLocalData, CreateInternationalBankAccountLocalData } from './view/bankAccountView/bankAccountViewState';
|
|
363
363
|
export { fetchVendorsList, updateScrollYOffset, VendorDetailLocalData, VendorContactInfo, fetchVendor, saveVendor, removeBankAccountsInVendorView, updateSelectedVendorForCreateFlow, initializeVendorAddress, updateBankAccountViewLocalStoreData, updateInternationalBankAccountViewLocalStoreData, clearBankAccountView, updateStatusForCreateBankAccountFlow, fetchVendorDetails, fetchVendorDetailPageView, fetchBankNameByRouting, fetchBankNameBySwift, fetchBankCountryNameByIban, deleteBankAccount, createBankAccount, resetCreateBankAccountDetails, BankNameByRoutingState, BankNameBySwiftState, BankAccountContext, createUserBankAccount, deleteUserBankAccount, CreateBankAccountDetails, CreateInternationalBankAccountDetails, CreateBankAccountLocalData, CreateInternationalBankAccountLocalData, };
|
|
364
364
|
import { BillTransaction, BillPayInfo, BillStage, BillStageCodeType, BillPaymentStatus, BillPaymentStatusCodeType, BillStatus, InternationalTransferFeeBearerPaymentMethod, BillStatusCodeType, DeletionSourceType } from './entity/billPay/billTransaction/billTransactionState';
|
|
365
|
-
export { BillTransaction, BillPayInfo, BillStage, BillStageCodeType, BillTransactionView, InternationalTransferFeeBearerPaymentMethod, DeletionSourceType };
|
|
365
|
+
export { BillTransaction, BillPayInfo, BillStage, BillStageCodeType, BillTransactionView, InternationalTransferFeeBearerPaymentMethod, DeletionSourceType, };
|
|
366
366
|
import { BillsSubTabType, BillTab, SaveBillStageCode, BillListUIState, BillPayViewSortKey, BillPayFilters, BillPayFilterCategory, BillListViewFilterCategoryField, BILL_PAY_FILTER_CATEGORIES } from './view/spendManagement/billPay/billList/billListState';
|
|
367
367
|
import { fetchBillList, fetchBillListPerTab, updateTab, updateSubTab, updateSelectedBillId, updateBillDetailSaveBillCode, updateBillListUIState, updateSearchResult as updateBillListSearchResult, updateFilterResult as updateBillListFilterResult, updateBillListDownloadUIState } from './view/spendManagement/billPay/billList/billListReducer';
|
|
368
368
|
import { getBillList, BillListReport, BillTransactionView } from './view/spendManagement/billPay/billList/billListSelector';
|
|
@@ -476,8 +476,8 @@ import { getSnackbar } from './entity/snackbar/snackbarSelector';
|
|
|
476
476
|
export { openSnackbar, closeSnackbar, getSnackbar, SnackbarMessageType, SnackbarMessageSections, SnackbarMessageSectionTexts, };
|
|
477
477
|
import { getSpendManagementEffectiveListPeriod, getSelectedCompanyOfficer, showBillPayPromoPage, showReimbursementPromoPage, getActualPaymentDate } from './view/spendManagement/helpers';
|
|
478
478
|
export { getSpendManagementEffectiveListPeriod, getSelectedCompanyOfficer, showBillPayPromoPage, showReimbursementPromoPage, getActualPaymentDate, };
|
|
479
|
-
import { canSendMonthEndEmailReport, shouldEnableCalendarPickerForLastReportSent } from './view/companyView/helpers/cockpitHelpers';
|
|
480
|
-
export { canSendMonthEndEmailReport, shouldEnableCalendarPickerForLastReportSent, };
|
|
479
|
+
import { FilterCategoryValueType, canSendMonthEndEmailReport, shouldEnableCalendarPickerForLastReportSent } from './view/companyView/helpers/cockpitHelpers';
|
|
480
|
+
export { FilterCategoryValueType, canSendMonthEndEmailReport, shouldEnableCalendarPickerForLastReportSent, };
|
|
481
481
|
import { BillPayConfig, BillPaymentConfigCodeType, BillPaymentSubConfigCodeType, Country, VendorCurrency, InternationalSubConfigCodeType, BILL_NEW_PAYMENT_METHODS, NEW_INTERNATIONAL_METHOD_SUBTEXT, SWIFT_OUR_INTERNATIONAL_METHOD_SUBTEXT, LOCAL_CURRENCY_INTERNATIONAL_METHOD_SUBTEXT } from './view/spendManagement/billPay/billPayConfig/billPayConfigState';
|
|
482
482
|
import { getInternationalSubConfigCodeKey } from './view/spendManagement/billPay/billPayConfig/billPayConfigPayload';
|
|
483
483
|
export { Country, BillPayConfig, BillPaymentConfigCodeType, BillPaymentSubConfigCodeType, getInternationalSubConfigCodeKey, InternationalSubConfigCodeType, BILL_NEW_PAYMENT_METHODS, NEW_INTERNATIONAL_METHOD_SUBTEXT, SWIFT_OUR_INTERNATIONAL_METHOD_SUBTEXT, LOCAL_CURRENCY_INTERNATIONAL_METHOD_SUBTEXT, };
|
package/lib/index.js
CHANGED
|
@@ -34,19 +34,19 @@ exports.fetchPeople = exports.fetchPeoplePage = exports.fetchAllPeopleRequiredVi
|
|
|
34
34
|
exports.isCashFlowReportViewCalculatedSectionType1ID = exports.isCashFlowReportViewSectionID = exports.isCashFlowReportViewCalculatedSectionID = exports.typeOfCashFlowRootSection = exports.updateCashFlowUIState = exports.resetCashFlowNodeCollapseState = exports.getCashFlowReportFetchState = exports.getCashFlow = exports.fetchCashFlow = exports.isBalanceSheetReportViewCalculatedSectionID = exports.isBalanceSheetReportViewSectionID = exports.typeOfBalanceSheetRootSection = exports.updateBalanceSheetUIState = exports.resetBalanceSheetNodeCollapseState = exports.getBalanceSheetForFullDataAvailableRange = exports.getBalanceSheetFetchState = exports.getBalanceSheet = exports.fetchBalanceSheet = exports.isNotificationsTabVisible = exports.isMyBankConnectionsTabVisible = exports.isSettingsVisible = exports.isIntegrationsTabVisible = exports.isCompanyDetailsTabVisible = exports.isBusinessVerificationTabVisible = exports.isBankConnectionsTabVisible = exports.isApprovalRulesTabVisible = exports.isAccountingTabVisible = exports.resetNotificationSettingsLocalData = exports.updateNotificationSettingsLocalData = exports.saveNotificationSettings = exports.getNotificationSettingsView = exports.fetchNotificationSettings = exports.fetchBankConnectionsView = exports.getMyBankConnectionsDetails = exports.getMyProfileView = exports.fetchMyProfileView = exports.clearSettingsView = exports.initializeEditPerson = exports.getPeopleLocalData = exports.getPeople = exports.peopleClearDataInLocalStore = exports.peopleSaveDataInLocalStore = exports.resetUpdateErrorMessage = exports.peopleSaveUpdates = exports.updatePeopleUIState = exports.inviteZeniPeople = exports.invitePeople = exports.changeZeniPersonRoles = exports.resendInvite = exports.deletePerson = void 0;
|
|
35
35
|
exports.updateSelectedVendor = exports.removeEntityRecommendationForLineIdForTransactionDetail = exports.initializeTransactionDetailLocalData = exports.setAllLineItemsLocalDataIsUpdateAllChecked = exports.saveTransactionDetail = exports.setAllLineItemsToCategoryClassInLocalData = exports.resetLineItemsCategoryClassInLocalData = exports.updateTransactionListByEntityFailure = exports.clearTransactionDetailSaveStatus = exports.saveTransactionDetailLocalData = exports.updateTransactionListByEntity = exports.fetchEntityTransactionList = exports.getTransactionListUIStateByAccountKey = exports.getTransactionListByAccount = exports.parallelFetchTransactionListByCategoryType = exports.updateTransactionListUIStateByCategoryType = exports.updateTransactionListByClass = exports.updateTransactionListByClassUIState = exports.parallelFetchClassTransactionList = exports.updateTransactionListByAccountUIState = exports.updateTransactionListByAccountFailure = exports.updateTransactionListByAccount = exports.fetchAccountTransactionList = exports.parallelFetchEntityTransactionList = exports.parallelFetchAccountTransactionList = exports.updateLatestTransactionId = exports.clearTransactionList = exports.isTransferTransaction = exports.isVendorTransaction = exports.updateVendors = exports.defaultVendorCurrency = exports.toTransactionCategory = exports.toTransactionTypeStrict = exports.toTransactionType = exports.toPlatformLineDetailType = exports.toTransactionID = exports.isCustomerTransaction = exports.defaultCustomerCurrency = exports.toAttachment = exports.mapFileEntityToAttachment = exports.toContentType = exports.toContentTypeStrict = exports.updateFinanceStatementFormat = exports.updateFinanceStatementDisplayOrder = exports.updateFinanceStatementAdditionalBalancesSelection = exports.updateDownloadState = exports.updateSelectedReportId = exports.updateCOABalancesRange = exports.fetchFinanceStatement = exports.getFinanceStatement = void 0;
|
|
36
36
|
exports.getControllersForCompany = exports.getCompanyByCompanyId = exports.ALL_ACCOUNTING_CONNECTION_CREATION_MODES = exports.getEntityByEntityIDs = exports.clearAllEntities = exports.updateEntities = exports.getEntityAutoCompleteResults = exports.fetchEntityAutoCompleteResults = exports.clearEntityAutoCompleteResults = exports.fetchEntityAutoCompleteEpic = exports.toEntityType = exports.VendorExpenseTrend = exports.CustomerIncomeTrend = exports.getTrendForEntity = exports.clearTrendData = exports.fetchExpenseTrend = exports.fetchIncomeTrend = exports.getEntityDetailUIStateByEntity = exports.getLatestTimeFrameWithTransactionsForEntity = exports.getTrendWithTransactions = exports.trendWithTransactionsUpdateSelectedTimeperiod = exports.clearTrendWithTransactions = exports.fetchTransactionsForEntity = exports.fetchTrendForEntity = exports.updateReportUIOptionCOABalancesRange = exports.updateReportUIOptionThisPeriod = exports.toggleReportUIOptionForecastMode = exports.updateReportUIOptionIsCompareModeOn = exports.updateReportUIOptionCompareMode = exports.updateReportUIOptionIsForecastVsActualOn = exports.updateReportUIOptionSelectedForecast = exports.updateReportUIOptionTimeframe = exports.getForecastList = exports.fetchForecastList = exports.updateSelectedInsightIndex = exports.fetchInsightsCard = exports.getInsights = exports.getUpdatablePeriodsForTransactionRecommendations = exports.getTransactionDetailForTransaction = exports.getTransactionDetail = exports.getTransactionListByEntityForSinglePeriod = exports.getTransactionListUIStateByClassKey = exports.getTransactionListByClass = exports.getTransactionListByEntity = exports.getThirdPartyIdFromTransactionId = exports.uploadMissingReceiptSuccess = exports.updateTransactionDetail = exports.fetchTransactionDetail = exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = exports.resetVendor = void 0;
|
|
37
|
-
exports.
|
|
38
|
-
exports.
|
|
39
|
-
exports.
|
|
40
|
-
exports.
|
|
41
|
-
exports.
|
|
42
|
-
exports.
|
|
43
|
-
exports.
|
|
44
|
-
exports.
|
|
45
|
-
exports.
|
|
46
|
-
exports.
|
|
47
|
-
exports.
|
|
48
|
-
exports.
|
|
49
|
-
exports.fetchRewardsPlan = exports.resendReferralInvite = exports.updateReferralListSortUiState = exports.saveReferralFormDataInLocalStore = exports.clearReferrals = exports.closeReferralInviteConfirmationPopup = exports.sendReferralInvite = exports.fetchReferrals = exports.AmountStatusTypes = void 0;
|
|
37
|
+
exports.ALL_COCKPIT_TABS_IDS = exports.ALL_COCKPIT_TABS_FILE_TYPES = exports.toHealthSortKeyType = exports.toPortfolioSortKeyType = exports.toOnboardingSortKeyType = exports.toManagementSortKeyType = exports.clearAddressView = exports.fetchAddress = exports.getFormattedAddress = exports.getAllNewAddresses = exports.getNewAddress = exports.getAddress = exports.newAddressInLocalStore = exports.getCompanyMonthEndReportHistoricData = exports.fetchCompanyMonthEndReportHistoricData = exports.fetchCompanyMonthEndReportHistoricDates = exports.getCompanyMonthEndReportSelectorView = exports.resetCompanyMonthEndReportFetchStatus = exports.saveCompanyMonthEndReport = exports.sendCompanyMonthEndReport = exports.fetchCompanyMonthEndReportView = exports.fetchImproveUsingZeniGPT = exports.getAllCockpitTabsFilterView = exports.isInfiniteRunway = exports.getCompanyPortfolioView = exports.getAuditWarningsCount = exports.retryBankAccountConnection = exports.getReviewCompanyListCount = exports.getReviewCompanySelectorView = exports.updateReviewCompanyListUIState = exports.fetchReviewCompanyView = exports.updateCompanyDownloadState = exports.fetchZeniUsers = exports.fetchSubscriptionView = exports.fetchPortfolioView = exports.fetchManagementView = exports.fetchOnboardingView = exports.fetchParentSubsidiaryManagementView = exports.updateCompanyManagementUIState = exports.updateCompanyPortfolioUIState = exports.fetchCompanyPortfolioView = exports.fetchCompanyManagementView = exports.fetchAllCockpitViews = exports.companyManagementSaveUpdates = exports.getParentSubsidiaryManagementView = exports.getAddonListZeniSku = exports.getPlanListZeniSku = exports.getCompanyManagementView = exports.getFirstControllerId = exports.getFirstControllerEmail = void 0;
|
|
38
|
+
exports.fetchFile = exports.fetchFileListSuccess = exports.fetchFileListFailure = exports.fetchFileList = exports.toSupportedAttachmentFileType = exports.toSupportedAttachmentFileFormatType = exports.toSupportedFileTypeStrict = exports.removeAttachmentFiles = exports.updateAttachmentFiles = exports.updateFiles = exports.SUPPORTED_ATTACHMENT_FILE_TYPES = exports.getSubscriptionEstimationData = exports.getSubscriptionLocalStoreDataView = exports.getSubscriptionsDetailView = exports.clearSubscriptionLocalData = exports.clearSubscriptionUpdateViewDataByTenantId = exports.saveSubscriptionLocalData = exports.initializeSubscriptionLocalData = exports.clearSubscriptionView = exports.fetchSubscriptionUpdateEstimate = exports.fetchSubscriptionCreateEstimate = exports.saveSubscriptionNotesUpdates = exports.saveSubscriptionUpdates = exports.fetchSubscriptionDetails = exports.fetchSubscriptionCoupons = exports.fetchSubscriptionAddOns = exports.fetchSubscriptionPlans = exports.fetchSubscriptionList = exports.updateCompanySubscriptionUIState = exports.getCompanySubscriptionView = exports.toSubscriptionSortKeyType = exports.getBankAccount = exports.getNestedAccountListHeirarchy = exports.getUncategorizedAccounts = exports.toCompanyPassportLocalData = exports.clearCompanyView = exports.saveCompanyPassportDetails = exports.updateCompanyPassportLocalStoreData = exports.companyPassportClearDataInLocalStore = exports.deleteCompanyOfficerInLocalStore = exports.saveIndustryAndIncDateInCompanyPassportLocalStore = exports.companyPassportSaveDataInLocalStore = exports.isCompanyPassportDataToBeSaved = exports.getCompanyPassportLocalStoreData = exports.getCompanyPassportView = exports.fetchCompanyPassportView = exports.isAllowedValueWithID = exports.isAllowedValueWithCode = exports.toCockpitTabsFileTypeStrict = exports.toCockpitTabsIDStrict = void 0;
|
|
39
|
+
exports.fetchVendorDetailPageView = exports.fetchVendorDetails = exports.updateStatusForCreateBankAccountFlow = exports.clearBankAccountView = exports.updateInternationalBankAccountViewLocalStoreData = exports.updateBankAccountViewLocalStoreData = exports.initializeVendorAddress = exports.updateSelectedVendorForCreateFlow = exports.removeBankAccountsInVendorView = exports.saveVendor = exports.fetchVendor = exports.updateScrollYOffset = exports.fetchVendorsList = exports.vendorsTabResetVendorDetailLocalData = exports.vendorsTabUpdateVendorDetailLocalData = exports.vendorsTabSaveVendorSuccessOrFailure = exports.vendorsTabSaveVendor = exports.getVendorsTabDetailPageView = exports.toVendorDetailTabsType = exports.getVendorAllTransactionsDefaultTimePeriod = exports.resetVendorsTabVendorAllTransactionsTabData = exports.resetSelectedTabType = exports.updateVendorsTabVendorAllTransactionsTabData = exports.updateSelectedTabType = exports.fetchVendorsTabVendorDetailPageView = exports.getVendorDetailPageView = exports.getVendorView = exports.getAnalyticsDataOnVendorSave = exports.fetchTasksCard = exports.downloadFile = exports.getAttachmentFileIdByFileName = exports.mapAttachmentFileToAttachmentFilePayload = exports.mapAttachmentFilePayloadToFile = exports.mapFilePayloadToFile = exports.uploadFile = exports.getFileDeleteStatusById = exports.getFileUpdateNameStatusById = exports.getDeleteFileListWithStatus = exports.getFileListWithStatus = exports.clearFileViewList = exports.deleteFileSuccess = exports.deleteFileFailure = exports.deleteFile = exports.deleteFileListSuccess = exports.deleteFileListFailure = exports.deleteFileList = exports.updateFilesMetadata = exports.updateFileNameSuccess = exports.updateFileNameFailure = exports.updateFileName = void 0;
|
|
40
|
+
exports.fetchAndUpdateVendorRecommendations = exports.fetchEditBillDetailPage = exports.fetchBillDetail = exports.getBillTransactionDetailKey = exports.checkApproveRejectBtnShowForBill = exports.getBillDetailView = exports.getBillDownloadList = exports.getBillList = exports.cancelAndDeleteBill = exports.deleteBill = exports.updateApprovalStatusOnSuccess = exports.approveOrRejectBill = exports.saveBillDetail = exports.discardBillUpdatesInLocalStore = exports.saveBillUpdatesToLocalStore = exports.fetchVendorByNameAndParseInvoice = exports.updateBillDetailSaveBillCode = exports.updateSelectedBillId = exports.updateSubTab = exports.updateTab = exports.fetchBillListPerTab = exports.fetchBillList = exports.getClassList = exports.updateBillListDownloadUIState = exports.updateRemiListDownloadUIState = exports.REIMBURSEMENT_FILTER_CATEGORIES_RESTRICTED = exports.REIMBURSEMENT_FILTER_CATEGORIES = exports.updateRemiListFilterResult = exports.updateBillListFilterResult = exports.updateRemiListSearchResult = exports.updateRemiListUIState = exports.updateRemiDetailSaveRemiCode = exports.updateRemiListSubTab = exports.updateRemiListTab = exports.fetchRemiListPerTab = exports.fetchRemiList = exports.getRemiDownloadList = exports.getRemiList = exports.toRemiTabTypeStrict = exports.toRemiTabType = exports.toRemiSubTabTypeStrict = exports.toRemiSubTabType = exports.deleteUserBankAccount = exports.createUserBankAccount = exports.resetCreateBankAccountDetails = exports.createBankAccount = exports.deleteBankAccount = exports.fetchBankCountryNameByIban = exports.fetchBankNameBySwift = exports.fetchBankNameByRouting = void 0;
|
|
41
|
+
exports.getZeniAccountBusinessVerificationDetails = exports.getBillPayBusinessVerificationDetails = exports.getBusinessVerificationDetails = exports.getZeniAccountSetupViewDetails = exports.getBillPaySetupViewDetails = exports.verifyOtp = exports.resendOtp = exports.sendOtp = exports.clearZeniAccountSetupView = exports.clearBillPaySetupView = exports.clearSetupViewDataInLocalStore = exports.saveIndustryAndIncDateInLocalStore = exports.saveCompnayOfficerAdditionalDocumentsInLocalStore = exports.saveCompnayOfficerPhoneInLocalStore = exports.saveSetupViewDataInLocalStore = exports.acceptBillPayUpdatedTerms = exports.acceptZeniAccountTerms = exports.acceptBillPayTerms = exports.establishPlaidConnection = exports.updatePaymentAccountStatus = exports.updatePaymentAccountLoginStatus = exports.updatePaymentAccount = exports.updateBusinessVerificationDetails = exports.updateSetupViewLocalStoreData = exports.updateSelectedCompanyOfficer = exports.getPlaidLinkToken = exports.getPaymentAccounts = exports.enableSetup = exports.fetchZeniAccountSetupView = exports.fetchBillPaySetupView = exports.hideCreatedByFilter = exports.convertAmountToHomeCurrency = exports.toPaymentToOption = exports.updateVendorContact = exports.verifyUser = exports.fetchUserDetails = exports.updateBillListSearchResult = exports.updateBillUploadFetchState = exports.updateContactsInVendorDetailLocalData = exports.resetVendorDetailLocalData = exports.updateVendorDetailLocalData = exports.BILL_PAY_FILTER_CATEGORIES = exports.updateBillListUIState = exports.saveVendorSuccessOrFailure = exports.updateShowAutofill = exports.fetchBillAndInitializeLocalStore = exports.getReviewPageBillDetail = exports.getEditBillDetail = exports.clearBillPayReview = exports.fetchDuplicateBill = void 0;
|
|
42
|
+
exports.fetchDuplicateReimbursement = exports.clearRemiDetailView = exports.approveOrRejectRemi = exports.cancelAndDeleteRemi = exports.fetchRemiDetail = exports.deleteRemi = exports.updateIsEditModeRealTimeApprovals = exports.saveRealTimeApproval = exports.checkApproveRejectBtnShowForRemi = exports.getRemiDetailView = exports.clearRemiSetupApproverView = exports.clearRemiSetupApproverViewUpdateData = exports.initializeRemiSetupApproverViewUpdateData = exports.saveRemiSetupApproverViewUpdates = exports.saveRemiSetupApproverViewUpdateData = exports.deleteRemiApprovalRule = exports.fetchRemiApproversDetails = exports.fetchRemiApproversList = exports.fetchRemiSetupApproverView = exports.getRemiSetupApproverUpdateDataView = exports.getRemiSetupApproverView = exports.clearBillPaySetupApproverView = exports.clearBillPaySetupApproverViewUpdateData = exports.initializeBillPaySetupApproverViewUpdateData = exports.saveBillPaySetupApproverViewUpdates = exports.saveBillPaySetupApproverViewUpdateData = exports.deleteBillPayApprovalRule = exports.fetchBillPayApproversList = exports.fetchBillPayApproversDetails = exports.fetchBillPaySetupApproverView = exports.getBillPaySetupApproverUpdateDataView = exports.getBillPaySetupApproverView = exports.toRoleTypeStrict = exports.toAttributeOrRoleTypeStrict = exports.toAttributeTypeStrict = exports.isSuccessResponse = exports.getRemiBusinessVerificationDetails = exports.getRemiSetupViewDetails = exports.clearRemiSetupView = exports.acceptEmployeeRemiTerms = exports.acceptRemiTerms = exports.saveRemiSetupViewDataInLocalStore = exports.updateMileageDetails = exports.fetchRemiSetupView = exports.getUserFinancialAccount = exports.fetchUserFinancialAccount = exports.getIntegrationsView = exports.getBankConnectionsSetupViewDetails = exports.getApprovalRuleViewDetails = exports.getCommonSetupViewDetails = void 0;
|
|
43
|
+
exports.resetNewOnboardedCustomerId = exports.updateOnboardingCustomerDataInLocalStore = exports.saveOnboardingCustomerDataInLocalStore = exports.saveOnboardingCustomerNotes = exports.saveOnboardingCustomerViewUpdates = exports.updateStatusAfterOnboardingCompleted = exports.updateCustomerCreationStatus = exports.updateOnboardingCustomerListUIState = exports.saveOnboardingCustomerViewUpdateData = exports.clearOnboardingCustomerViewUpdateData = exports.initializeOnboardingCustomerViewUpdateData = exports.getOnboardingEmailGroup = exports.getNewOnboardingCustomerView = exports.getOnboardingCockpitView = exports.saveOnboardingCustomerCompletedStatus = exports.fetchOnboardingCompletedCompanies = exports.fetchCompanyOnboardingView = exports.PAYMENT_BUSINESS_DAYS = exports.holidaysFormatted = exports.isHoliday = exports.getYearsList = exports.filterDays = exports.isHolidayToday = exports.getPreviousNthWorkingDay = exports.getNextNthWorkingDay = exports.toFileTypeStrict = exports.ALL_FILE_TYPES = exports.reduceAllFetchState = exports.reduceAnyFetchState = exports.reduceFetchState = exports.clearAddRemiAutoFields = exports.clearTentativeMerchantName = exports.updateTentativeMerchantNames = exports.updateUploadFetchState = exports.updateAddRemiAutoFields = exports.clearEditRemiViewDetail = exports.parseReceiptsToRemi = exports.saveRemiSuccessOrFailure = exports.saveRemiDetail = exports.removeFileFromRemiUpdatesInLocalStore = exports.discardRemiUpdatesInLocalStore = exports.fetchCurrencyConversionValue = exports.saveRemiUpdatesToLocalStore = exports.initializeRemiToLocalStore = exports.fetchRemiAndInitializeLocalStore = exports.fetchRecommendationsAndUpdateMerchantRecommendations = exports.fetchEditRemiDetailPage = exports.getEditRemiDetail = exports.removeDuplicateReimbursementByLineId = exports.clearDuplicateReimbursementDetail = void 0;
|
|
44
|
+
exports.ZENI_ACCOUNTS_TAB = exports.fetchDepositAccountDetail = exports.clearTransferDetail = exports.getTransferDetail = exports.transferMoney = exports.updateDepositToLocalData = exports.updateTransferToLocalData = exports.updateTransferMoneyLocalData = exports.fetchZeniAccountsConfig = exports.fetchDepositAccount = exports.getDepositAccountDetailForPDF = exports.getDepositAccountDetail = exports.unlinkPaymentAccount = exports.fetchPaymentAccountList = exports.createCheckingAccount = exports.updateZeniAccountListTab = exports.fetchZeniAccountList = exports.getZeniAccountList = exports.getZeniAccountsConfigDetail = exports.fetchOwnerList = exports.fetchRecommendationByEntityName = exports.fetchRecommendationByEntityId = exports.fetchEntityRecommendationsByTransactionId = exports.toVendorReportIDType = exports.isVendorsTabVisible = exports.isColumnYTDSpend = exports.updateYTDSelectionUIState = exports.updatePageToken = exports.updateSortUiState = exports.getVendorList = exports.LOCAL_CURRENCY_INTERNATIONAL_METHOD_SUBTEXT = exports.SWIFT_OUR_INTERNATIONAL_METHOD_SUBTEXT = exports.NEW_INTERNATIONAL_METHOD_SUBTEXT = exports.BILL_NEW_PAYMENT_METHODS = exports.getInternationalSubConfigCodeKey = exports.shouldEnableCalendarPickerForLastReportSent = exports.canSendMonthEndEmailReport = exports.getActualPaymentDate = exports.showReimbursementPromoPage = exports.showBillPayPromoPage = exports.getSelectedCompanyOfficer = exports.getSpendManagementEffectiveListPeriod = exports.getSnackbar = exports.closeSnackbar = exports.openSnackbar = exports.getChangedLineItemCountFromLocalData = exports.getTransactionListUIStateByCategoryType = exports.getTransactionsListByCategoryType = exports.retryBankAccountConnectionForOnboarding = exports.sendOnboardingCustomerViewInvite = void 0;
|
|
45
|
+
exports.saveBankAccount = exports.fetchBillAttachment = exports.fetchMagicLinkTenant = exports.getMagicLinkCurrentAddressState = exports.getMagicLinkBankAccountView = exports.getMagicLinkView = exports.initializeAccountMappingView = exports.getAccountMappingView = exports.clearAccountMappingLocalData = exports.saveAccountMappingLocalData = exports.saveAccountMapping = exports.getOnboardingCustomerView = exports.clearOnboardingCustomerViewDataInLocalStore = exports.clearOnboardingCustomerView = exports.saveOnboardingCustomerViewDataInLocalStore = exports.saveOnboardingCompnayOfficerPhoneInLocalStore = exports.updateOnboardingCustomerViewUIState = exports.updateCurrentStep = exports.updateOnboardingCustomerViewLocalStoreData = exports.updateOnboardingCustomerView = exports.updateOnboardingPaymentAccountStatus = exports.updateOnboardingPaymentAccountLoginStatus = exports.updateOnboardingCustomerViewCompleteStatus = exports.updateOnboardingCustomerViewAccountDetails = exports.establishOnboardingPlaidConnection = exports.getOnboardingPlaidLinkToken = exports.fetchOnboardingCustomerSetupView = exports.fetchOnboardingCustomerView = exports.isZeniClearingAccount = exports.ZENI_CLEARING_ACCOUNT = exports.isZeniClearingAccountReport = exports.getCompanyConfig = exports.fetchCompanyConfig = exports.clearTransactionVendorSaveStatus = exports.resetTransactionVendorLocalData = exports.updateTransactionVendorLocalData = exports.saveTransactionVendorSuccessOrFailure = exports.saveTransactionVendor = exports.getTransactionVendorView = exports.getZeniAccStatements = exports.fetchZeniAccStatementPage = exports.getDepositAccountTransactionList = exports.fetchDepositAccountTransactionList = exports.fetchDepositAccountHistoryFailure = exports.fetchDepositAccountHistorySuccess = exports.updateDepositAccount = exports.getCheckDepositDetail = exports.clearCheckDeposit = exports.updateCheckDepositLocalData = exports.depositCheck = void 0;
|
|
46
|
+
exports.updateChargeCardDetail = exports.updateChargeCardListUIState = exports.updateChargeCardListSearchText = exports.resetIssueChargeCardForm = exports.updateChargeCardLocalStore = exports.issueChargeCard = exports.acceptChargeCardTerms = exports.fetchChargeCardSetupView = exports.getChargeCardSetupViewDetails = exports.toCreditLimitFrequencyCodeType = exports.toChargeCardSortKeyType = exports.fetchChargeCardTransactionList = exports.getChargeCardDetailView = exports.fetchChargeCardDetailPage = exports.getChargeCardListView = exports.fetchChargeCardListPage = exports.getChargeCardBusinessVerificationDetails = exports.companyHealthMetricDropDownOptions = exports.hasCompanyHealthMetricFormFieldChanged = exports.getCompanyHealthMetricView = exports.isCompanyRunwayInfinite = exports.updateCompanyHealthViewUIState = exports.updateCompanyHealthMetricViewSuccessStatus = exports.updateCompanyHealthMetricViewErrorStatus = exports.updateCompanyHealthMetricLocalStore = exports.saveCompanyHealthMetricById = exports.removeSelectedCompanyId = exports.initializeCompanyHealthMetricViewLocalData = exports.fetchCompanyHealthMetricView = exports.clearCompanyHealthMetricView = exports.updateCompanyHealth = exports.updateCompaniesHealth = exports.getUserRoleConfig = exports.fetchUserRoleConfig = exports.clearInternationalWire = exports.deletePaymentInstrument = exports.createPaymentInstrumentUpdateStatus = exports.createPaymentInstrument = exports.fetchInternationalWireDynamicForm = exports.initializeDynamicForm = exports.updateInternationalWireLocalStoreData = exports.initializeInternationalWireLocalData = exports.getInternationalWireView = exports.fetchWiseRedirectStatus = exports.getWiseRedirect = exports.saveMagicLinkAddressInLocalStore = exports.fetchMagicLinkBankNameBySwift = exports.fetchMagicLinkBankNameByRouting = exports.updateMagicLinkInternationalBankAccountLocalStoreData = exports.updateMagicLinkBankAccountLocalStoreData = void 0;
|
|
47
|
+
exports.fetchGlobalMerchantAutoCompleteView = exports.updateVendorFirstReviewSortUiState = exports.updateVendorFirstReviewViewLocalData = exports.saveVendorFirstReviewView = exports.clearRecentlySavedErroredVendorData = exports.updateVendorFirstReviewViewPageToken = exports.resetVendorFirstReviewLocalData = exports.updateVendorFirstReviewViewScrollYOffset = exports.fetchVendorFirstReviewView = exports.getVendorFirstReviewView = exports.getGlobalMerchantAutoCompleteResults = exports.toVendorFirstReviewViewColumnKeyType = exports.getFetchStateForScheduleListByType = exports.updatedJELinkWithRecommendedLocalData = exports.resetJELinkInLocalData = exports.updateAmountsInScheduleDetail = exports.updatedJELinkInLocalData = exports.getThirdPartyIDFromQBOURL = exports.getQBOUrlForLink = exports.updatedSelectedJELinkRowIndex = exports.updateScheduleListDownloadState = exports.updateScheduleDetailsLocalData = exports.createNewSchedules = exports.deleteScheduleDetail = exports.saveScheduleDetails = exports.fetchScheduleDetailsPage = exports.getScheduleDetailsView = exports.fetchScheduleDetails = exports.updateSelectedJEScheduleKey = exports.updateScheduleListSortState = exports.updateScheduleListScrollState = exports.updateScheduleListSearchText = exports.updateScheduleListSubTab = exports.toScheduleSubTabType = exports.toScheduleListTabsFileTypeStrict = exports.toScheduleTypesTypeStrict = exports.toScheduleTypesType = exports.getFetchStateForScheduleAccountList = exports.updateScheduleListLocalData = exports.fetchSchedulesAccount = exports.fetchDownloadSchedules = exports.fetchScheduleList = exports.getScheduleListReport = exports.ALL_SCHEDULES_TYPES = exports.updateApAgingDetailUIState = exports.getApAgingDetailForVendor = exports.fetchApAgingDetail = exports.updateApAgingUIState = exports.getApAgingReport = exports.fetchApAging = void 0;
|
|
48
|
+
exports.toReferralListViewSortKeyType = exports.getInviteFormView = exports.getReferralListView = exports.fetchZeniAccountsPromoCard = exports.getZeniAccountsPromoCard = exports.getAuthenticationView = exports.fetchCollaborationAuthToken = exports.clearAuditReportGroupViewByCompanyId = exports.fetchAuditReportGroupView = exports.fetchAuditRuleGroupView = exports.getAuditRuleGroupViewSelectorView = exports.getAuditReportGroupViewSelectorView = exports.discardTaskUpdatesInLocalStore = exports.deleteTask = exports.TASK_LIST_FILTER_CATEGORIES = exports.updateTaskFilters = exports.allTaskPriority = exports.allTaskStatus = exports.allTaskTags = exports.updateTaskListUIState = exports.updateTaskListSearchText = exports.archiveTask = exports.saveTaskDetail = exports.saveTaskUpdatesToLocalStore = exports.fetchTaskDetailPage = exports.getTaskDetail = exports.fetchTaskListPage = exports.getAllTasks = exports.toRecurringBillFrequencyStrict = exports.toRecurringBillFrequency = exports.getArAgingDetailForCustomer = exports.getArAgingReport = exports.updateArAgingDetailUIState = exports.fetchArAgingDetail = exports.updateArAgingUIState = exports.fetchArAging = exports.toVendorGlobalReviewColumnSortKeyType = exports.getTenantMerchantByMerchantId = exports.getVendorGlobalReviewView = exports.updateVendorGlobalReviewViewUIState = exports.updateSelectedGlobalMerchant = exports.fetchVendorGlobalReviewView = exports.rejectVendorGlobalReview = exports.approveVendorGlobalReview = exports.getGlobalMerchantView = exports.clearGlobalMerchantView = exports.updateCreateGlobalMerchantLocalData = exports.createGlobalMerchant = exports.fetchGlobalMerchantRecommendation = exports.clearGlobalMerchantAutoCompleteResults = void 0;
|
|
49
|
+
exports.fetchRewardsPlan = exports.resendReferralInvite = exports.updateReferralListSortUiState = exports.saveReferralFormDataInLocalStore = exports.clearReferrals = exports.closeReferralInviteConfirmationPopup = exports.sendReferralInvite = exports.fetchReferrals = exports.AmountStatusTypes = exports.StatusTypes = void 0;
|
|
50
50
|
const zeniDayJS_1 = require("./zeniDayJS");
|
|
51
51
|
Object.defineProperty(exports, "Dayjs", { enumerable: true, get: function () { return zeniDayJS_1.Dayjs; } });
|
|
52
52
|
Object.defineProperty(exports, "updateZeniDateLocaleID", { enumerable: true, get: function () { return zeniDayJS_1.updateZeniDateLocaleID; } });
|
|
@@ -646,6 +646,7 @@ const cockpitTypes_1 = require("./view/companyView/types/cockpitTypes");
|
|
|
646
646
|
Object.defineProperty(exports, "toManagementSortKeyType", { enumerable: true, get: function () { return cockpitTypes_1.toManagementSortKeyType; } });
|
|
647
647
|
Object.defineProperty(exports, "toOnboardingSortKeyType", { enumerable: true, get: function () { return cockpitTypes_1.toOnboardingSortKeyType; } });
|
|
648
648
|
Object.defineProperty(exports, "toPortfolioSortKeyType", { enumerable: true, get: function () { return cockpitTypes_1.toPortfolioSortKeyType; } });
|
|
649
|
+
Object.defineProperty(exports, "toHealthSortKeyType", { enumerable: true, get: function () { return cockpitTypes_1.toHealthSortKeyType; } });
|
|
649
650
|
const cockpitTabsID_1 = require("./view/companyView/types/cockpitTabsID");
|
|
650
651
|
Object.defineProperty(exports, "ALL_COCKPIT_TABS_IDS", { enumerable: true, get: function () { return cockpitTabsID_1.ALL_COCKPIT_TABS_IDS; } });
|
|
651
652
|
Object.defineProperty(exports, "ALL_COCKPIT_TABS_FILE_TYPES", { enumerable: true, get: function () { return cockpitTabsID_1.ALL_COCKPIT_TABS_FILE_TYPES; } });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FetchStateAndError, FetchedState, ID } from '../../commonStateTypes/common';
|
|
2
2
|
import { SortOrder } from '../../commonStateTypes/selectorTypes/sortOrderTypes';
|
|
3
|
-
import { HealthViewSortKey } from '../companyView/types/cockpitTypes';
|
|
3
|
+
import { CockpitFilters, HealthViewSortKey } from '../companyView/types/cockpitTypes';
|
|
4
4
|
export interface CompanyHealthMetricView extends FetchedState {
|
|
5
5
|
companyHealthMetricUpdateStatusById: Record<ID, EditCompanyHealthMetrics>;
|
|
6
6
|
companyIds: ID[];
|
|
@@ -11,6 +11,7 @@ export interface CompanyHealthViewUIState {
|
|
|
11
11
|
sortKey: HealthViewSortKey;
|
|
12
12
|
sortOrder: SortOrder;
|
|
13
13
|
filterText: string;
|
|
14
|
+
filters: CockpitFilters;
|
|
14
15
|
}
|
|
15
16
|
export interface EditCompanyHealthMetrics {
|
|
16
17
|
companyHealthMetricLocalData: CompanyHealthMetricsLocalData;
|
|
@@ -13,6 +13,7 @@ exports.initialState = {
|
|
|
13
13
|
sortKey: 'churnProbability',
|
|
14
14
|
sortOrder: 'descending',
|
|
15
15
|
filterText: '',
|
|
16
|
+
filters: {},
|
|
16
17
|
},
|
|
17
18
|
hasValidState() {
|
|
18
19
|
return this.fetchState === 'Completed';
|
|
@@ -45,6 +46,9 @@ const companyMetricHealthView = (0, toolkit_1.createSlice)({
|
|
|
45
46
|
if (action.payload.uiState.filterText != null) {
|
|
46
47
|
draft.uiState.filterText = action.payload.uiState.filterText;
|
|
47
48
|
}
|
|
49
|
+
if (action.payload.uiState.filters != null) {
|
|
50
|
+
draft.uiState.filters = action.payload.uiState.filters;
|
|
51
|
+
}
|
|
48
52
|
},
|
|
49
53
|
saveCompanyHealthMetricById(draft, action) {
|
|
50
54
|
const companyId = action.payload;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { RootState } from '../../reducer';
|
|
2
2
|
import { SelectorView } from '../../commonStateTypes/viewAndReport/viewAndReport';
|
|
3
|
-
import { ID } from '../../commonStateTypes/common';
|
|
3
|
+
import { FetchState, ID } from '../../commonStateTypes/common';
|
|
4
4
|
import { User } from '../../entity/user/userState';
|
|
5
5
|
import { Company } from '../../entity/company/companyStateTypes';
|
|
6
6
|
import { CompanyHealthMetric, CompanyRunway } from '../../entity/companyHealthMetric/companyHealthMetricState';
|
|
7
7
|
import { CompanyHealthMetricsLocalData, CompanyHealthViewUIState, EditCompanyHealthMetrics } from './companyHealthMetricView';
|
|
8
|
+
import { ZeniAPIStatus } from '../../responsePayload';
|
|
8
9
|
export declare const ALL_FREQUENCY_LABEL_TYPE: readonly ["Low", "Very Low", "Mid", "High", "Very High"];
|
|
9
10
|
export declare const toFrequencyLabelType: (v: string) => "Low" | "Very Low" | "Mid" | "High" | "Very High";
|
|
10
11
|
export declare type FrequencyLabelType = ReturnType<typeof toFrequencyLabelType>;
|
|
@@ -25,6 +26,11 @@ export interface CompanyHealthMetricViewSelector extends SelectorView {
|
|
|
25
26
|
localFormDataAndStatusByCompanyId?: EditCompanyHealthMetrics;
|
|
26
27
|
selectedCompanyId: ID | undefined;
|
|
27
28
|
selectedCompanyDetail: CompanyDetailWithHealthMetric | undefined;
|
|
29
|
+
zeniUsers: {
|
|
30
|
+
fetchState: FetchState;
|
|
31
|
+
error?: ZeniAPIStatus;
|
|
32
|
+
values: User[];
|
|
33
|
+
};
|
|
28
34
|
}
|
|
29
35
|
export interface CompanyDetailWithHealthMetric extends Company {
|
|
30
36
|
companyHealthMetric: CompanyHealthMetric;
|
|
@@ -11,6 +11,8 @@ const sortOrderPayload_1 = require("../../commonPayloadTypes/sortOrderPayload");
|
|
|
11
11
|
const companySelector_1 = require("../../entity/company/companySelector");
|
|
12
12
|
const companyHealthMetricSelector_1 = require("../../entity/companyHealthMetric/companyHealthMetricSelector");
|
|
13
13
|
const userSelector_1 = require("../../entity/user/userSelector");
|
|
14
|
+
const cockpitHelpers_1 = require("../companyView/helpers/cockpitHelpers");
|
|
15
|
+
const companyHelper_1 = require("../../entity/company/companyHelper");
|
|
14
16
|
exports.ALL_FREQUENCY_LABEL_TYPE = [
|
|
15
17
|
'Low',
|
|
16
18
|
'Very Low',
|
|
@@ -50,7 +52,7 @@ exports.companyHealthMetricDropDownOptions = [
|
|
|
50
52
|
const getCompanyHealthMetricView = (state) => {
|
|
51
53
|
const { companyHealthMetricViewState, companyHealthMetricState, companyState, userState, } = state;
|
|
52
54
|
const { companyIds, companyHealthMetricUpdateStatusById, uiState, selectedCompanyId, } = companyHealthMetricViewState;
|
|
53
|
-
const { sortKey, sortOrder, filterText } = uiState;
|
|
55
|
+
const { sortKey, sortOrder, filterText, filters } = uiState;
|
|
54
56
|
const companies = (0, companySelector_1.getCompanyByCompanyIds)(companyState, companyIds).map((company) => company.company);
|
|
55
57
|
let selectedCompanyDetail = undefined;
|
|
56
58
|
const companiesHealthMetrics = (0, companyHealthMetricSelector_1.getCompanyHealthMetricByCompanyIds)(companyHealthMetricState, companyIds);
|
|
@@ -58,7 +60,9 @@ const getCompanyHealthMetricView = (state) => {
|
|
|
58
60
|
if (selectedCompanyId != null) {
|
|
59
61
|
selectedCompanyDetail = companyDetailWithHealthMetric.find((company) => company.companyInfo.companyId === selectedCompanyId);
|
|
60
62
|
}
|
|
61
|
-
companyDetailWithHealthMetric = sortAndFilterCompanies(sortKey, sortOrder, filterText, companyDetailWithHealthMetric);
|
|
63
|
+
companyDetailWithHealthMetric = sortAndFilterCompanies(sortKey, sortOrder, filterText, filters, companyDetailWithHealthMetric);
|
|
64
|
+
const zeniUsers = (0, userSelector_1.getUsersByUserIds)(state.userState, state.companyViewState.zeniUsers.ids);
|
|
65
|
+
const orderedZeniUsers = (0, orderBy_1.default)(zeniUsers, (user) => (0, userSelector_1.getUserName)(user), 'asc');
|
|
62
66
|
return {
|
|
63
67
|
uiState: uiState,
|
|
64
68
|
version: '1.0',
|
|
@@ -71,6 +75,11 @@ const getCompanyHealthMetricView = (state) => {
|
|
|
71
75
|
? companyHealthMetricUpdateStatusById[selectedCompanyId]
|
|
72
76
|
: undefined,
|
|
73
77
|
selectedCompanyDetail,
|
|
78
|
+
zeniUsers: {
|
|
79
|
+
fetchState: state.companyViewState.zeniUsers.fetchState,
|
|
80
|
+
error: state.companyViewState.zeniUsers.error,
|
|
81
|
+
values: orderedZeniUsers,
|
|
82
|
+
},
|
|
74
83
|
};
|
|
75
84
|
};
|
|
76
85
|
exports.getCompanyHealthMetricView = getCompanyHealthMetricView;
|
|
@@ -119,7 +128,105 @@ const hasCompanyHealthMetricFormFieldChanged = (entityData, formData) => {
|
|
|
119
128
|
}
|
|
120
129
|
};
|
|
121
130
|
exports.hasCompanyHealthMetricFormFieldChanged = hasCompanyHealthMetricFormFieldChanged;
|
|
122
|
-
const
|
|
131
|
+
const removeDuplicatesFromCompaniesArray = (companies) => {
|
|
132
|
+
const foundIds = [];
|
|
133
|
+
return companies.filter((company) => {
|
|
134
|
+
const companyId = company.companyHealthMetric.companyId;
|
|
135
|
+
if (foundIds.indexOf(company.companyHealthMetric.companyId) === -1) {
|
|
136
|
+
foundIds.push(companyId);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
const getCategoryValueForCompany = (key, company) => {
|
|
143
|
+
var _a;
|
|
144
|
+
const controllerIds = (0, companyHelper_1.getControllersUserIds)(company.controllers);
|
|
145
|
+
const firstControllerId = (0, companyHelper_1.getFirstControllerId)(controllerIds);
|
|
146
|
+
switch (key) {
|
|
147
|
+
case 'controller':
|
|
148
|
+
return firstControllerId;
|
|
149
|
+
case 'lastReportSent':
|
|
150
|
+
return company.managegmentInfo.lastReportSentDate != null
|
|
151
|
+
? company.managegmentInfo.lastReportSentDate
|
|
152
|
+
: undefined;
|
|
153
|
+
case 'runway':
|
|
154
|
+
return company.companyHealthMetric.runway &&
|
|
155
|
+
company.companyHealthMetric.runway.runwayMonths != null
|
|
156
|
+
? company.companyHealthMetric.runway.runwayMonths.toString()
|
|
157
|
+
: undefined;
|
|
158
|
+
case 'verticalProductServices':
|
|
159
|
+
return company.companyHealthMetric[key]
|
|
160
|
+
.filter((product) => product.isEnabled)
|
|
161
|
+
.map((productService) => productService.productServiceKey);
|
|
162
|
+
case 'netPromoterScore':
|
|
163
|
+
return company.companyHealthMetric.netPromoterScore != null
|
|
164
|
+
? company.companyHealthMetric.netPromoterScore.toString()
|
|
165
|
+
: undefined;
|
|
166
|
+
case 'churnProbabilityPercentage':
|
|
167
|
+
return company.companyHealthMetric.churnProbabilityPercentage != null
|
|
168
|
+
? company.companyHealthMetric.churnProbabilityPercentage.toString()
|
|
169
|
+
: undefined;
|
|
170
|
+
default:
|
|
171
|
+
return (_a = company.companyHealthMetric[key]) === null || _a === void 0 ? void 0 : _a.toString();
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
const applyAdvancedFiltersOnCompaniesList = (allCompanies, filters, filteredCompanies = [], index = 0) => {
|
|
175
|
+
// if there are no filters we will return allCompanies
|
|
176
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.categories) == null) {
|
|
177
|
+
return allCompanies;
|
|
178
|
+
}
|
|
179
|
+
// to finish the recursion
|
|
180
|
+
if (index === filters.categories.length) {
|
|
181
|
+
return filteredCompanies;
|
|
182
|
+
}
|
|
183
|
+
// if categoryCombinationOperator is AND, we will initialize filteredCompanies = allCompanies
|
|
184
|
+
if (index === 0 && filters.categoryCombinationOperator === 'AND') {
|
|
185
|
+
filteredCompanies = allCompanies;
|
|
186
|
+
}
|
|
187
|
+
const currentFilter = filters.categories[index];
|
|
188
|
+
// it is possible some filter may not have field or values set in that case we will just move ahead with the next step of recursion
|
|
189
|
+
if (currentFilter.field == null || currentFilter.values.length === 0) {
|
|
190
|
+
return applyAdvancedFiltersOnCompaniesList(allCompanies, filters, filteredCompanies, index + 1);
|
|
191
|
+
}
|
|
192
|
+
// if categoryCombinationOperator is AND then we will filter only already filtered companies else we will filter all the companies and take union
|
|
193
|
+
const companiesToBeFiltered = filters.categoryCombinationOperator === 'AND'
|
|
194
|
+
? filteredCompanies
|
|
195
|
+
: allCompanies;
|
|
196
|
+
const companiesWithCurrentFilter = companiesToBeFiltered.filter((company) => {
|
|
197
|
+
const key = currentFilter.field;
|
|
198
|
+
const categoryValue = getCategoryValueForCompany(key, company);
|
|
199
|
+
if (categoryValue == null) {
|
|
200
|
+
if (currentFilter.matchingOperator === 'not-equal') {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
if (!Array.isArray(categoryValue)) {
|
|
206
|
+
return (0, cockpitHelpers_1.filterCompanyOnCategoriesWithSingleValue)(categoryValue, currentFilter, [
|
|
207
|
+
'runway',
|
|
208
|
+
'churnProbabilityPercentage',
|
|
209
|
+
'netPromoterScore',
|
|
210
|
+
'subscriptionStartDate',
|
|
211
|
+
'subscriptionRenewalDate',
|
|
212
|
+
'lastReportSent',
|
|
213
|
+
]);
|
|
214
|
+
}
|
|
215
|
+
return (0, cockpitHelpers_1.filterCompanyOnCategoriesWithMultipleValues)(categoryValue, currentFilter);
|
|
216
|
+
});
|
|
217
|
+
// if categoryCombinationOperator is OR we will union already filtered and the companies which match current filter criteria
|
|
218
|
+
if (filters.categoryCombinationOperator === 'OR') {
|
|
219
|
+
filteredCompanies = removeDuplicatesFromCompaniesArray([
|
|
220
|
+
...companiesWithCurrentFilter,
|
|
221
|
+
...filteredCompanies,
|
|
222
|
+
]);
|
|
223
|
+
}
|
|
224
|
+
// recursively apply next filter
|
|
225
|
+
return applyAdvancedFiltersOnCompaniesList(allCompanies, filters, filters.categoryCombinationOperator === 'AND'
|
|
226
|
+
? companiesWithCurrentFilter
|
|
227
|
+
: filteredCompanies, index + 1);
|
|
228
|
+
};
|
|
229
|
+
const sortAndFilterCompanies = (sortKey, sortOrder, filterText, filters, companies) => {
|
|
123
230
|
const sortOrderKey = (0, sortOrderPayload_1.getSortOrder)(sortOrder);
|
|
124
231
|
let updatedCompanies = [];
|
|
125
232
|
const trimmedFilterText = filterText.trim();
|
|
@@ -134,6 +241,7 @@ const sortAndFilterCompanies = (sortKey, sortOrder, filterText, companies) => {
|
|
|
134
241
|
else {
|
|
135
242
|
updatedCompanies = [...companies];
|
|
136
243
|
}
|
|
244
|
+
updatedCompanies = applyAdvancedFiltersOnCompaniesList(updatedCompanies, filters);
|
|
137
245
|
const companiesWithSortKeyValues = [];
|
|
138
246
|
const companiesWithNoSortKeyValues = [];
|
|
139
247
|
updatedCompanies.forEach((company) => {
|
|
@@ -2,11 +2,13 @@ import { ID } from '../../../commonStateTypes/common';
|
|
|
2
2
|
import { CompanyPayload } from '../../../entity/company/companyPayload';
|
|
3
3
|
import { TenantPayload } from '../../../entity/tenant/tenantPayload';
|
|
4
4
|
import { UserRolePayload } from '../../../entity/userRole/userRolePayload';
|
|
5
|
+
import { ZeniDate } from '../../../zeniDayJS';
|
|
5
6
|
import { SubscriptionPlan } from '../../../entity/subscription/subscriptionPlan/subscriptionPlanState';
|
|
6
7
|
import { CompanyWithUpdateStatusView } from '../selector/companyManagementViewSelector';
|
|
7
8
|
import { CockpitFilterCategory } from '../types/cockpitTypes';
|
|
8
9
|
import { CompanyView } from '../types/companyView';
|
|
9
|
-
export declare
|
|
10
|
+
export declare type FilterCategoryValueType = string | ZeniDate;
|
|
11
|
+
export declare const filterCompanyOnCategoriesWithSingleValue: (categoryValue: FilterCategoryValueType, currentFilter: CockpitFilterCategory, rangeTypeFields: string[]) => boolean;
|
|
10
12
|
export declare const filterCompanyOnCategoriesWithMultipleValues: (categoryValue: string[], currentFilter: CockpitFilterCategory) => boolean;
|
|
11
13
|
export declare const removeDuplicatesFromCompaniesArray: (companies: CompanyView[] | CompanyWithUpdateStatusView[]) => CompanyView[];
|
|
12
14
|
export declare const getCompanyIdTenantIdMapping: (userRoles: UserRolePayload[], companies: CompanyPayload[]) => Record<ID, ID> | undefined;
|
|
@@ -2,19 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.extractUniqueZeniSKUs = exports.shouldEnableCalendarPickerForLastReportSent = exports.canSendMonthEndEmailReport = exports.getCompanyIdTenantIdMappingFromTenantsList = exports.getCompanyIdTenantIdMapping = exports.removeDuplicatesFromCompaniesArray = exports.filterCompanyOnCategoriesWithMultipleValues = exports.filterCompanyOnCategoriesWithSingleValue = void 0;
|
|
4
4
|
const zeniDayJS_1 = require("../../../zeniDayJS");
|
|
5
|
-
const filterCompanyOnRangeCategoryType = (
|
|
6
|
-
let
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
const filterCompanyOnRangeCategoryType = (categoryValue, currentFilter) => {
|
|
6
|
+
let doesCompanyFallInCategoryRange = false;
|
|
7
|
+
if (typeof categoryValue === 'string') {
|
|
8
|
+
for (const filterValue of currentFilter.values) {
|
|
9
|
+
const revenue = parseInt(categoryValue);
|
|
10
|
+
const lowerValue = parseInt(filterValue.toString().split('<->')[0]);
|
|
11
|
+
const higherValue = parseInt(filterValue.toString().split('<->')[1]);
|
|
12
|
+
if (revenue >= lowerValue && revenue <= higherValue) {
|
|
13
|
+
doesCompanyFallInCategoryRange = true;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const currentValue = categoryValue;
|
|
19
|
+
const lowerValue = currentFilter.values[0];
|
|
20
|
+
const higherValue = currentFilter.values[1];
|
|
21
|
+
if (currentValue.isSameOrAfter(lowerValue) &&
|
|
22
|
+
currentValue.isSameOrBefore(higherValue)) {
|
|
23
|
+
doesCompanyFallInCategoryRange = true;
|
|
13
24
|
}
|
|
14
25
|
}
|
|
15
26
|
return currentFilter.matchingOperator === 'equal'
|
|
16
|
-
?
|
|
17
|
-
: !
|
|
27
|
+
? doesCompanyFallInCategoryRange
|
|
28
|
+
: !doesCompanyFallInCategoryRange;
|
|
18
29
|
};
|
|
19
30
|
const filterCompanyOnCategoriesWithSingleValue = (categoryValue, currentFilter, rangeTypeFields) => {
|
|
20
31
|
if (currentFilter.field != null &&
|
|
@@ -34,7 +45,7 @@ const filterCompanyOnCategoriesWithMultipleValues = (categoryValue, currentFilte
|
|
|
34
45
|
// example - controllers list should contain either X OR Y
|
|
35
46
|
if (currentFilter.valuesCombinationOperator === 'ANY') {
|
|
36
47
|
for (const filterValue of currentFilter.values) {
|
|
37
|
-
if (categoryValue.indexOf(filterValue) > -1) {
|
|
48
|
+
if (categoryValue.indexOf(filterValue.toString()) > -1) {
|
|
38
49
|
return true;
|
|
39
50
|
}
|
|
40
51
|
}
|
|
@@ -42,7 +53,7 @@ const filterCompanyOnCategoriesWithMultipleValues = (categoryValue, currentFilte
|
|
|
42
53
|
}
|
|
43
54
|
// example - controllers list should contain both X AND Y
|
|
44
55
|
for (const filterValue of currentFilter.values) {
|
|
45
|
-
if (categoryValue.indexOf(filterValue) === -1) {
|
|
56
|
+
if (categoryValue.indexOf(filterValue.toString()) === -1) {
|
|
46
57
|
return false;
|
|
47
58
|
}
|
|
48
59
|
}
|
|
@@ -51,7 +62,7 @@ const filterCompanyOnCategoriesWithMultipleValues = (categoryValue, currentFilte
|
|
|
51
62
|
// example - controllers list shouldn't contain either X or Y
|
|
52
63
|
if (currentFilter.valuesCombinationOperator === 'ANY') {
|
|
53
64
|
for (const filterValue of currentFilter.values) {
|
|
54
|
-
if (categoryValue.indexOf(filterValue) > -1) {
|
|
65
|
+
if (categoryValue.indexOf(filterValue.toString()) > -1) {
|
|
55
66
|
return false;
|
|
56
67
|
}
|
|
57
68
|
}
|
|
@@ -59,7 +70,7 @@ const filterCompanyOnCategoriesWithMultipleValues = (categoryValue, currentFilte
|
|
|
59
70
|
}
|
|
60
71
|
// example - controllers list shouldn't contain both X and Y
|
|
61
72
|
for (const filterValue of currentFilter.values) {
|
|
62
|
-
if (categoryValue.indexOf(filterValue) === -1) {
|
|
73
|
+
if (categoryValue.indexOf(filterValue.toString()) === -1) {
|
|
63
74
|
return true;
|
|
64
75
|
}
|
|
65
76
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { SortOrder } from '../../../commonStateTypes/selectorTypes/sortOrderTypes';
|
|
2
|
+
import { ZeniDate } from '../../../zeniDayJS';
|
|
2
3
|
import { SubscriptionViewSortKey } from '../../subscriptionView/types/subscriptionTypes';
|
|
4
|
+
import { FilterCategoryValueType } from '../helpers/cockpitHelpers';
|
|
3
5
|
import { CockpitDownloadTabsID, CockpitTabsFileType } from './cockpitTabsID';
|
|
4
6
|
export declare const ALL_PORTFOLIO_SORT_KEYS: readonly ["companyName", "cashBalance", "runway", "expenses", "revenues", "netIncome"];
|
|
5
7
|
export declare const ALL_MANAGEMENT_SORT_KEYS: readonly ["companyName", "task", "status", "group", "plans", "controller", "reviewer", "preparer", "apAnalyst", "reportSent", "taxStatus", "taxLead", "monthlyRecurringRevenue", "annualRecurringRevenue", "notes", "satisfaction", "bookCloseDate"];
|
|
@@ -8,7 +10,7 @@ export declare const ALL_HEALTH_SORT_KEYS: readonly ["companyName", "issues", "p
|
|
|
8
10
|
export declare const toPortfolioSortKeyType: (v: string) => "expenses" | "runway" | "cashBalance" | "netIncome" | "companyName" | "revenues";
|
|
9
11
|
export declare const toManagementSortKeyType: (v: string) => "status" | "group" | "bookCloseDate" | "controller" | "preparer" | "reviewer" | "companyName" | "monthlyRecurringRevenue" | "annualRecurringRevenue" | "taxStatus" | "plans" | "notes" | "task" | "apAnalyst" | "reportSent" | "taxLead" | "satisfaction";
|
|
10
12
|
export declare const toOnboardingSortKeyType: (v: string) => "companyName" | "identityVerified" | "businessVerified" | "bankAccountLinked" | "qboLinked" | "groupCreated" | "customerCreated" | "notes" | "enroller" | "invite";
|
|
11
|
-
export declare const toHealthSortKeyType: (v: string) => "runway" | "controller" | "companyName" | "
|
|
13
|
+
export declare const toHealthSortKeyType: (v: string) => "runway" | "controller" | "companyName" | "netPromoterScore" | "lastReportSent" | "issues" | "productVerticals" | "churnProbability" | "subscriptionDate" | "renewalDate";
|
|
12
14
|
export declare type PortfolioViewSortKey = ReturnType<typeof toPortfolioSortKeyType>;
|
|
13
15
|
export declare type ManagementViewSortKey = ReturnType<typeof toManagementSortKeyType>;
|
|
14
16
|
export declare type OnboardingViewSortKey = ReturnType<typeof toOnboardingSortKeyType>;
|
|
@@ -16,10 +18,11 @@ export declare type HealthViewSortKey = ReturnType<typeof toHealthSortKeyType>;
|
|
|
16
18
|
export declare type ManagementViewFilterCategoryField = 'controllerUserIds' | 'preparerUserIds' | 'reviewerUserIds' | 'apAnalystUserIds' | 'taxLeadUserIds' | 'companyGroupId' | 'taxStatusCode' | 'statusCode' | 'plans' | 'annualRecurringRevenue' | 'monthlyRecurringRevenue' | 'customerSatisfaction' | 'zeniSatisfaction';
|
|
17
19
|
export declare type SubscriptionViewFilterCategoryField = 'controllerUserIds' | 'statusCode' | 'recommendedActionCode' | 'subscriptionPlans' | 'subscriptionAddOns' | 'avg2MonthExpenses' | 'slabLowerLimit' | 'slabUpperLimit' | 'monthlyRecurringRevenue';
|
|
18
20
|
export declare type PortfolioViewFilterCategoryField = 'netBurnOrIncome' | 'cashPosition' | 'income' | 'expenses' | 'runway';
|
|
21
|
+
export declare type HealthMonitorViewFilterCategoryField = 'verticalProductServices' | 'runway' | 'netPromoterScore' | 'churnProbabilityPercentage' | 'controller' | 'lastReportSent' | 'subscriptionStartDate' | 'subscriptionRenewalDate';
|
|
19
22
|
export interface CockpitFilterCategory {
|
|
20
|
-
field?: ManagementViewFilterCategoryField | SubscriptionViewFilterCategoryField | PortfolioViewFilterCategoryField;
|
|
23
|
+
field?: ManagementViewFilterCategoryField | SubscriptionViewFilterCategoryField | PortfolioViewFilterCategoryField | HealthMonitorViewFilterCategoryField;
|
|
21
24
|
matchingOperator: 'equal' | 'not-equal';
|
|
22
|
-
values:
|
|
25
|
+
values: FilterCategoryValueType[];
|
|
23
26
|
valuesCombinationOperator: 'ANY' | 'ALL';
|
|
24
27
|
}
|
|
25
28
|
export interface CockpitFilters {
|
|
@@ -32,7 +35,7 @@ export declare type ManagementStatusCodeType = ReturnType<typeof toManagementSta
|
|
|
32
35
|
export interface FilterCombinationsByTabs {
|
|
33
36
|
filterText: string;
|
|
34
37
|
filters: CockpitFilters;
|
|
35
|
-
sortKey: ManagementViewSortKey | PortfolioViewSortKey | SubscriptionViewSortKey | OnboardingViewSortKey;
|
|
38
|
+
sortKey: ManagementViewSortKey | PortfolioViewSortKey | SubscriptionViewSortKey | OnboardingViewSortKey | HealthViewSortKey;
|
|
36
39
|
sortOrder: SortOrder;
|
|
37
40
|
}
|
|
38
41
|
export interface DownloadCockpitTabOptions {
|
|
@@ -43,3 +46,4 @@ export interface DownloadCockpitTabOptions {
|
|
|
43
46
|
}
|
|
44
47
|
export declare const ALL_ONBOARDING_STEP_KEYS: readonly ["bankAccountLinked", "qboLinked", "identityVerified", "businessVerified"];
|
|
45
48
|
export declare const toOnboardingStepKeyType: (v: string) => "identityVerified" | "businessVerified" | "bankAccountLinked" | "qboLinked";
|
|
49
|
+
export declare type CategoryValueForCompanyType = string | string[] | ZeniDate | undefined;
|
|
@@ -445,7 +445,7 @@ const setEntityRecommendationForLineIdInLocalData = (transaction, transactionDet
|
|
|
445
445
|
line.type === 'transaction_with_product_or_service_line' ||
|
|
446
446
|
line.type === 'journal_entry_transaction_line') {
|
|
447
447
|
const record = Object.assign({}, oldRecord);
|
|
448
|
-
const recommendations = recommendationByLineId === null || recommendationByLineId === void 0 ? void 0 : recommendationByLineId[lineId];
|
|
448
|
+
const recommendations = mergeTransactionAndEntityRecommendations(oldRecord.recommendations, recommendationByLineId === null || recommendationByLineId === void 0 ? void 0 : recommendationByLineId[lineId]);
|
|
449
449
|
const accountLine = line;
|
|
450
450
|
record.account = accountLine.account;
|
|
451
451
|
record.class = accountLine.class;
|
|
@@ -668,3 +668,39 @@ const isAccountUncategorized = (uncategorizedIncomeExpense, accountQboId) => {
|
|
|
668
668
|
}
|
|
669
669
|
return false;
|
|
670
670
|
};
|
|
671
|
+
/*
|
|
672
|
+
Note: Below helper is used to merge transaction recommendations and entity recommendations.
|
|
673
|
+
On transaction detail page, we get vendors, accounting_classes and accounts inside recommendations. This is stored inside local data.
|
|
674
|
+
When we select a vendor from vendor dropdown, recommendations api is called and in response, only accounting_classes and accounts we get.
|
|
675
|
+
So in this case, we need to merge the transaction recommendation with this new recommendation in order to keep `vendors` part as it is.
|
|
676
|
+
|
|
677
|
+
We are keeping `vendors` of transaction and updated accounting_classes and accounts from recommendations api call.
|
|
678
|
+
*/
|
|
679
|
+
const mergeTransactionAndEntityRecommendations = (transactionRecommendations, entityRecommendations) => {
|
|
680
|
+
if (entityRecommendations == null) {
|
|
681
|
+
return transactionRecommendations;
|
|
682
|
+
}
|
|
683
|
+
else if (transactionRecommendations == null) {
|
|
684
|
+
return entityRecommendations;
|
|
685
|
+
}
|
|
686
|
+
else if (entityRecommendations.length > transactionRecommendations.length) {
|
|
687
|
+
return entityRecommendations.map((recommendation, index) => {
|
|
688
|
+
var _a;
|
|
689
|
+
return {
|
|
690
|
+
account: recommendation.account,
|
|
691
|
+
class: recommendation.class,
|
|
692
|
+
vendor: (_a = transactionRecommendations[index]) === null || _a === void 0 ? void 0 : _a.vendor,
|
|
693
|
+
};
|
|
694
|
+
});
|
|
695
|
+
}
|
|
696
|
+
else {
|
|
697
|
+
return transactionRecommendations.map((recommendation, index) => {
|
|
698
|
+
var _a, _b;
|
|
699
|
+
return {
|
|
700
|
+
account: (_a = entityRecommendations[index]) === null || _a === void 0 ? void 0 : _a.account,
|
|
701
|
+
class: (_b = entityRecommendations[index]) === null || _b === void 0 ? void 0 : _b.class,
|
|
702
|
+
vendor: recommendation.vendor,
|
|
703
|
+
};
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "4.9.
|
|
3
|
+
"version": "4.9.34",
|
|
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
|
"types": "lib/index.d.ts",
|