@zeniai/client-epic-state 4.9.32 → 4.9.33
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/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;
|
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.33",
|
|
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",
|