@zeniai/client-epic-state 4.20.3-betaRD21 → 4.20.3-betaRD3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/lib/commonPayloadTypes/subAccountView/reportBySubAccountPayload.d.ts +2 -0
  2. package/lib/commonStateTypes/coaBalance/coaBalancesFilterProjectView.d.ts +13 -0
  3. package/lib/commonStateTypes/coaBalance/coaBalancesFilterProjectView.js +9 -0
  4. package/lib/commonStateTypes/common.d.ts +1 -1
  5. package/lib/commonStateTypes/projectView/projectViewParentID.d.ts +5 -0
  6. package/lib/commonStateTypes/projectView/projectViewParentID.js +2 -0
  7. package/lib/commonStateTypes/viewAndReport/reportIDHelper.d.ts +1 -0
  8. package/lib/commonStateTypes/viewAndReport/reportIDHelper.js +3 -1
  9. package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +2 -2
  10. package/lib/commonStateTypes/viewAndReport/viewAndReport.js +1 -1
  11. package/lib/entity/account/accountPayload.d.ts +0 -2
  12. package/lib/entity/account/accountReducer.d.ts +2 -5
  13. package/lib/entity/account/accountReducer.js +7 -10
  14. package/lib/entity/account/accountSelector.d.ts +7 -0
  15. package/lib/entity/account/accountSelector.js +4 -2
  16. package/lib/entity/account/accountState.d.ts +3 -1
  17. package/lib/entity/account/accountState.js +4 -1
  18. package/lib/entity/account/pickAndMergeForecastAccountReport.d.ts +1 -0
  19. package/lib/entity/account/subAccountSelector.d.ts +2 -0
  20. package/lib/entity/account/subAccountSelector.js +2 -0
  21. package/lib/entity/accountGroup/accountGroupSelector.d.ts +22 -0
  22. package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
  23. package/lib/entity/billPay/billTransaction/billTransactionState.d.ts +2 -2
  24. package/lib/entity/chargeCard/chargeCard.d.ts +1 -1
  25. package/lib/entity/class/classReducer.d.ts +4 -4
  26. package/lib/entity/class/classState.d.ts +1 -1
  27. package/lib/entity/depositAccountTransaction/depositAccountTransaction.d.ts +1 -1
  28. package/lib/entity/entityApprovalStatus/entityApprovalStatusState.d.ts +2 -2
  29. package/lib/entity/forecast/forecastState.d.ts +1 -1
  30. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
  31. package/lib/entity/project/projectPayload.d.ts +13 -0
  32. package/lib/entity/project/projectPayload.js +30 -0
  33. package/lib/entity/project/projectReducer.d.ts +10 -0
  34. package/lib/entity/project/projectReducer.js +31 -0
  35. package/lib/entity/project/projectSelector.d.ts +5 -0
  36. package/lib/entity/project/projectSelector.js +12 -0
  37. package/lib/entity/project/projectState.d.ts +13 -0
  38. package/lib/entity/project/projectState.js +2 -0
  39. package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
  40. package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
  41. package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
  42. package/lib/entity/sectionProjectView/sectionProjectView.d.ts +10 -0
  43. package/lib/entity/sectionProjectView/sectionProjectView.js +6 -0
  44. package/lib/entity/sectionProjectView/sectionProjectViewEpic.d.ts +6 -0
  45. package/lib/entity/sectionProjectView/sectionProjectViewEpic.js +56 -0
  46. package/lib/entity/sectionProjectView/sectionProjectViewHelper.d.ts +9 -0
  47. package/lib/entity/sectionProjectView/sectionProjectViewHelper.js +13 -0
  48. package/lib/entity/sectionProjectView/sectionProjectViewReducer.d.ts +15 -0
  49. package/lib/entity/sectionProjectView/sectionProjectViewReducer.js +50 -0
  50. package/lib/entity/sectionProjectView/sectionProjectViewSelector.d.ts +11 -0
  51. package/lib/entity/sectionProjectView/sectionProjectViewSelector.js +103 -0
  52. package/lib/entity/sectionProjectView/sectionProjectViewSelectorTypes.d.ts +16 -0
  53. package/lib/entity/sectionProjectView/sectionProjectViewSelectorTypes.js +2 -0
  54. package/lib/entity/sectionProjectView/sectionProjectViewState.d.ts +4 -0
  55. package/lib/entity/sectionProjectView/sectionProjectViewState.js +2 -0
  56. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  57. package/lib/entity/tenant/clearAllEpic.d.ts +5 -4
  58. package/lib/entity/tenant/clearAllEpic.js +6 -4
  59. package/lib/entity/tenant/tenantPayload.d.ts +1 -0
  60. package/lib/entity/tenant/tenantReducer.js +1 -0
  61. package/lib/entity/tenant/tenantSelector.d.ts +1 -0
  62. package/lib/entity/tenant/tenantSelector.js +9 -1
  63. package/lib/entity/tenant/tenantState.d.ts +1 -0
  64. package/lib/entity/transaction/payloadTypes/transactionPayload.js +0 -1
  65. package/lib/entity/userRole/userRoleType.d.ts +2 -2
  66. package/lib/epic.d.ts +4 -3
  67. package/lib/epic.js +4 -3
  68. package/lib/esm/commonStateTypes/coaBalance/coaBalancesFilterProjectView.js +5 -0
  69. package/lib/esm/commonStateTypes/projectView/projectViewParentID.js +1 -0
  70. package/lib/esm/commonStateTypes/viewAndReport/reportIDHelper.js +1 -0
  71. package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +1 -1
  72. package/lib/esm/entity/account/accountReducer.js +6 -9
  73. package/lib/esm/entity/account/accountSelector.js +4 -2
  74. package/lib/esm/entity/account/accountState.js +4 -1
  75. package/lib/esm/entity/account/subAccountSelector.js +2 -0
  76. package/lib/esm/entity/project/projectPayload.js +26 -0
  77. package/lib/esm/entity/project/projectReducer.js +27 -0
  78. package/lib/esm/entity/project/projectSelector.js +8 -0
  79. package/lib/esm/entity/project/projectState.js +1 -0
  80. package/lib/esm/entity/sectionProjectView/sectionProjectView.js +3 -0
  81. package/lib/esm/entity/sectionProjectView/sectionProjectViewEpic.js +52 -0
  82. package/lib/esm/entity/sectionProjectView/sectionProjectViewHelper.js +9 -0
  83. package/lib/esm/entity/sectionProjectView/sectionProjectViewReducer.js +46 -0
  84. package/lib/esm/entity/sectionProjectView/sectionProjectViewSelector.js +96 -0
  85. package/lib/esm/entity/sectionProjectView/sectionProjectViewSelectorTypes.js +1 -0
  86. package/lib/esm/entity/sectionProjectView/sectionProjectViewState.js +1 -0
  87. package/lib/esm/entity/tenant/clearAllEpic.js +6 -4
  88. package/lib/esm/entity/tenant/tenantReducer.js +1 -0
  89. package/lib/esm/entity/tenant/tenantSelector.js +7 -0
  90. package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +0 -1
  91. package/lib/esm/epic.js +4 -3
  92. package/lib/esm/index.js +11 -15
  93. package/lib/esm/reducer.js +9 -6
  94. package/lib/esm/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +9 -4
  95. package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +1 -5
  96. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +3 -163
  97. package/lib/esm/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.js +2 -1
  98. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +0 -112
  99. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +6 -10
  100. package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +0 -6
  101. package/lib/esm/view/financeStatement/financeStatementSelector.js +12 -1
  102. package/lib/esm/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.js +2 -4
  103. package/lib/esm/view/profitAndLossProjectView/profitAndLossForTimeframeProjectViewEpic.js +45 -0
  104. package/lib/esm/view/profitAndLossProjectView/profitAndLossProjectViewEpic.js +30 -0
  105. package/lib/esm/view/profitAndLossProjectView/profitAndLossProjectViewPayload.js +1 -0
  106. package/lib/esm/view/profitAndLossProjectView/profitAndLossProjectViewReducer.js +113 -0
  107. package/lib/esm/view/profitAndLossProjectView/profitAndLossProjectViewSelector.js +66 -0
  108. package/lib/esm/view/profitAndLossProjectView/profitAndLossProjectViewSelectorTypes.js +1 -0
  109. package/lib/esm/view/profitAndLossProjectView/profitAndLossProjectViewState.js +1 -0
  110. package/lib/esm/view/reportsResync/reportsClassViewRefetchingEpic.js +4 -0
  111. package/lib/index.d.ts +14 -16
  112. package/lib/index.js +45 -65
  113. package/lib/reducer.d.ts +9 -6
  114. package/lib/reducer.js +9 -6
  115. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  116. package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
  117. package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
  118. package/lib/view/cardBalance/cardBalanceSelector.d.ts +2 -1
  119. package/lib/view/cashBalance/cashBalanceSelector.d.ts +2 -1
  120. package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
  121. package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
  122. package/lib/view/companyView/types/cockpitTypes.d.ts +5 -6
  123. package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
  124. package/lib/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +9 -4
  125. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  126. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +0 -33
  127. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +1 -5
  128. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +4 -18
  129. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +4 -164
  130. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +2 -6
  131. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.js +2 -2
  132. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +0 -112
  133. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +5 -9
  134. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +0 -3
  135. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +1 -8
  136. package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +1 -1
  137. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +0 -13
  138. package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
  139. package/lib/view/financeStatement/financeStatementSelector.d.ts +2 -0
  140. package/lib/view/financeStatement/financeStatementSelector.js +12 -1
  141. package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
  142. package/lib/view/onboardingView/cockpitView/types/onboardingCockpitViewTypes.d.ts +1 -1
  143. package/lib/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.js +2 -4
  144. package/lib/view/profitAndLossProjectView/profitAndLossForTimeframeProjectViewEpic.d.ts +8 -0
  145. package/lib/view/profitAndLossProjectView/profitAndLossForTimeframeProjectViewEpic.js +49 -0
  146. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewEpic.d.ts +6 -0
  147. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewEpic.js +34 -0
  148. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewPayload.d.ts +33 -0
  149. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewPayload.js +2 -0
  150. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewReducer.d.ts +33 -0
  151. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewReducer.js +117 -0
  152. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewSelector.d.ts +9 -0
  153. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewSelector.js +70 -0
  154. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewSelectorTypes.d.ts +18 -0
  155. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewSelectorTypes.js +2 -0
  156. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewState.d.ts +22 -0
  157. package/lib/view/profitAndLossProjectView/profitAndLossProjectViewState.js +2 -0
  158. package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
  159. package/lib/view/reportsResync/reportsClassViewRefetchingEpic.d.ts +2 -1
  160. package/lib/view/reportsResync/reportsClassViewRefetchingEpic.js +4 -0
  161. package/lib/view/reportsResync/reportsResyncReducer.d.ts +2 -2
  162. package/lib/view/reviewCompanyView/reviewCompanyViewState.d.ts +1 -1
  163. package/lib/view/spendManagement/billPay/billList/billListReducer.d.ts +1 -1
  164. package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
  165. package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetail.d.ts +1 -1
  166. package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.d.ts +4 -4
  167. package/lib/view/spendManagement/reimbursement/remiListView/remiListReducer.d.ts +1 -1
  168. package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +3 -3
  169. package/lib/view/subscriptionView/types/subscriptionTypes.d.ts +1 -1
  170. package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
  171. package/lib/view/topEx/topExSelector.d.ts +1 -1
  172. package/package.json +1 -1
  173. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerPayload.d.ts +0 -44
  174. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +0 -55
  175. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerReducer.d.ts +0 -10
  176. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +0 -51
  177. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerSelector.d.ts +0 -48
  178. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerSelector.js +0 -66
  179. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerState.d.ts +0 -52
  180. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerState.js +0 -37
  181. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +0 -49
  182. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +0 -47
  183. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerSelector.js +0 -62
  184. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerState.js +0 -31
  185. package/lib/esm/view/aiAccountantView/aiAccountantViewPayload.js +0 -2
  186. package/lib/esm/view/aiAccountantView/aiAccountantViewReducer.js +0 -149
  187. package/lib/esm/view/aiAccountantView/aiAccountantViewSelector.js +0 -72
  188. package/lib/esm/view/aiAccountantView/aiAccountantViewState.js +0 -11
  189. package/lib/esm/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.js +0 -46
  190. package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +0 -27
  191. package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +0 -47
  192. package/lib/esm/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +0 -52
  193. package/lib/esm/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.js +0 -44
  194. package/lib/esm/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.js +0 -44
  195. package/lib/view/aiAccountantView/aiAccountantViewPayload.d.ts +0 -31
  196. package/lib/view/aiAccountantView/aiAccountantViewPayload.js +0 -8
  197. package/lib/view/aiAccountantView/aiAccountantViewReducer.d.ts +0 -29
  198. package/lib/view/aiAccountantView/aiAccountantViewReducer.js +0 -153
  199. package/lib/view/aiAccountantView/aiAccountantViewSelector.d.ts +0 -14
  200. package/lib/view/aiAccountantView/aiAccountantViewSelector.js +0 -78
  201. package/lib/view/aiAccountantView/aiAccountantViewState.d.ts +0 -27
  202. package/lib/view/aiAccountantView/aiAccountantViewState.js +0 -13
  203. package/lib/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.d.ts +0 -33
  204. package/lib/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.js +0 -50
  205. package/lib/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.d.ts +0 -23
  206. package/lib/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +0 -31
  207. package/lib/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.d.ts +0 -33
  208. package/lib/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +0 -51
  209. package/lib/view/aiAccountantView/epics/triggerAiAccountantJobEpic.d.ts +0 -28
  210. package/lib/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +0 -56
  211. package/lib/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.d.ts +0 -8
  212. package/lib/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.js +0 -48
  213. package/lib/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.d.ts +0 -9
  214. package/lib/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.js +0 -48
@@ -14,6 +14,7 @@ export const ALL_REPORT_IDS = [
14
14
  'top_expenses',
15
15
  'profit_and_loss',
16
16
  'profit_and_loss_by_classes',
17
+ 'profit_and_loss_by_projects',
17
18
  'balance_sheet',
18
19
  'cash_flow',
19
20
  'dashboard',
@@ -57,7 +58,6 @@ export const ALL_REPORT_IDS = [
57
58
  'account_reconciliation',
58
59
  'zeni_credit_promo_card',
59
60
  'treasury_promo_card',
60
- 'excluded_account_reconciliation',
61
61
  ];
62
62
  export const toReportID = (v) => stringToUnion(v, ALL_REPORT_IDS);
63
63
  const ALL_REPORT_FORMAT = ['summary', 'detailed', 'more_detailed'];
@@ -45,17 +45,12 @@ const account = createSlice({
45
45
  draft.accountsByKey[key].statementCloseDay =
46
46
  action.payload.statementCloseDay;
47
47
  },
48
- changeAccountKey(draft, action) {
49
- const { oldKey, newKey } = action.payload;
50
- draft.accountsByKey[newKey] = draft.accountsByKey[oldKey];
51
- delete draft.accountsByKey[oldKey];
52
- },
53
48
  clearAllAccounts(draft) {
54
49
  draft.accountsByKey = {};
55
50
  },
56
51
  },
57
52
  });
58
- export const { updateAccounts, updateMultipleSubAccountsWithBalances, updateAccountStatementCloseDay, changeAccountKey, clearAllAccounts, } = account.actions;
53
+ export const { updateAccounts, updateMultipleSubAccountsWithBalances, updateAccountStatementCloseDay, clearAllAccounts, } = account.actions;
59
54
  export default account.reducer;
60
55
  /**
61
56
  * Helper functions.
@@ -83,11 +78,12 @@ function doUpdateSubAccountsWithBalances(draft, subAccountWithBalancesListPayloa
83
78
  const accountBalancesPayload = subAccountWithBalancesListPayload[index].accountBalancesPayload;
84
79
  const accountViewParentId = subAccountWithBalancesListPayload[index].accountsViewParentID;
85
80
  const classesViewParentId = subAccountWithBalancesListPayload[index].classesViewParentID;
86
- doUpdateAccountWithBalancesV2(draft, accountBasePayload, accountBalancesPayload, currencyPayload, reportId, timeframe, classesViewParentId, accountViewParentId, updateType);
81
+ const projectsViewParentId = subAccountWithBalancesListPayload[index].projectsViewParentID;
82
+ doUpdateAccountWithBalancesV2(draft, accountBasePayload, accountBalancesPayload, currencyPayload, reportId, timeframe, classesViewParentId, accountViewParentId, projectsViewParentId, updateType);
87
83
  }
88
84
  }
89
- function doUpdateAccountWithBalancesV2(draft, accountBasePayload, accountBalancesPayload, currencyPayload, reportId, timeframe, classesViewParentId, accountsViewParentId, updateType) {
90
- const key = getAccountKey(reportId, accountBasePayload.account_id, classesViewParentId, accountsViewParentId);
85
+ function doUpdateAccountWithBalancesV2(draft, accountBasePayload, accountBalancesPayload, currencyPayload, reportId, timeframe, classesViewParentId, accountsViewParentId, projectsViewParentId, updateType) {
86
+ const key = getAccountKey(reportId, accountBasePayload.account_id, classesViewParentId, accountsViewParentId, projectsViewParentId);
91
87
  const balancesByPeriod = mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(accountBalancesPayload, currencyPayload, timeframe);
92
88
  if (key in draft && updateType === 'merge') {
93
89
  // only add balances
@@ -98,6 +94,7 @@ function doUpdateAccountWithBalancesV2(draft, accountBasePayload, accountBalance
98
94
  ...mapAccountBasePayloadToAccountBase(accountBasePayload),
99
95
  key,
100
96
  classesViewParentId,
97
+ projectsViewParentId,
101
98
  };
102
99
  latestAccount.balancesByPeriod = balancesByPeriod;
103
100
  draft[latestAccount.key] = latestAccount;
@@ -3,7 +3,7 @@ import { getCOABalances } from '../../commonStateTypes/coaBalance/coaBalance';
3
3
  import { sortComparator } from '../../commonStateTypes/coaBalance/sortBalancesByFreeRangeTotal';
4
4
  import { getAccountKey, } from './accountState';
5
5
  function getCommonAccountFields(accountState, id) {
6
- const key = getAccountKey(id.reportId, id.accountId, id.classesViewParentId, id.accountsViewParentId);
6
+ const key = getAccountKey(id.reportId, id.accountId, id.classesViewParentId, id.accountsViewParentId, id.projectsViewParentId);
7
7
  const account = accountState.accountsByKey[key];
8
8
  if (account == null) {
9
9
  throw new Error(`Account with ${key} doesn't exists`);
@@ -22,6 +22,7 @@ function getCommonAccountFields(accountState, id) {
22
22
  qboId: account.qboId,
23
23
  coaId: account.coaId,
24
24
  classesViewParentId: account.classesViewParentId,
25
+ projectsViewParentId: account.projectsViewParentId,
25
26
  accountsViewParentId: account.accountsViewParentId,
26
27
  labels: account.labels,
27
28
  isBillEditableCoaAccountType: account.isBillEditableCoaAccountType ?? false,
@@ -50,7 +51,7 @@ export const getAccountBase = (accountState, accountId, reportId) => {
50
51
  };
51
52
  };
52
53
  export function getAccount(accountState, id, filter, additionalBalancesOptions) {
53
- const key = getAccountKey(id.reportId, id.accountId, id.classesViewParentId, id.accountsViewParentId);
54
+ const key = getAccountKey(id.reportId, id.accountId, id.classesViewParentId, id.accountsViewParentId, id.projectsViewParentId);
54
55
  const account = accountState.accountsByKey[key];
55
56
  if (account == null) {
56
57
  throw new Error(`Account with ${key} doesn't exists`);
@@ -101,6 +102,7 @@ export const getAccountsOrdered = (filter, accountState, id, orderBy, order = 'l
101
102
  reportId: id.reportId,
102
103
  classesViewParentId: id.classesViewParentId,
103
104
  accountsViewParentId: id.accountsViewParentId,
105
+ projectsViewParentId: id.projectsViewParentId,
104
106
  }, filter))
105
107
  .sort((a, b) => {
106
108
  switch (orderBy) {
@@ -37,7 +37,10 @@ const ALL_ACCOUNT_LABELS = [
37
37
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
38
38
  const toAccountLabel = (v) => stringToUnion(v, ALL_ACCOUNT_LABELS);
39
39
  export const toAccountLabelStrict = (v) => stringToUnionStrict(v ?? '', ALL_ACCOUNT_LABELS);
40
- export function getAccountKey(reportIdUniqueKey, accountId, classesViewParentId, accountsViewParentId) {
40
+ export function getAccountKey(reportIdUniqueKey, accountId, classesViewParentId, accountsViewParentId, projectsViewParentId) {
41
+ if (projectsViewParentId != null) {
42
+ return `${projectsViewParentId.sectionId}-${projectsViewParentId.projectId}-${accountId}-${reportIdUniqueKey}`;
43
+ }
41
44
  if (classesViewParentId != null && accountsViewParentId == null) {
42
45
  return `${classesViewParentId.sectionId}-${classesViewParentId.parentClassId != null
43
46
  ? getNestedClassIDStr(classesViewParentId.parentClassId)
@@ -16,6 +16,7 @@ export const getNestedAccountReportForAccount = (accountState, id, filter, accou
16
16
  reportId: id.reportId,
17
17
  classesViewParentId: id.classesViewParentId,
18
18
  accountsViewParentId: id.accountsViewParentId,
19
+ projectsViewParentId: id.projectsViewParentId,
19
20
  }, newFilter, additionalBalancesOptions);
20
21
  if (accountReport == null) {
21
22
  return undefined;
@@ -26,6 +27,7 @@ export const getNestedAccountReportForAccount = (accountState, id, filter, accou
26
27
  reportId: id.reportId,
27
28
  accountIdHierarchy: childAccount,
28
29
  classesViewParentId: id.classesViewParentId,
30
+ projectsViewParentId: id.projectsViewParentId,
29
31
  accountsViewParentId: id.accountsViewParentId != null
30
32
  ? {
31
33
  parentAccountId: id.accountIdHierarchy.id,
@@ -0,0 +1,26 @@
1
+ import { date } from '../../zeniDayJS';
2
+ export const mapProjectMetadataPayloadToProject = (payload) => ({
3
+ projectId: payload.zeni_project_id,
4
+ projectName: payload.project_name,
5
+ ...(payload.status != null ? { status: payload.status } : {}),
6
+ ...(payload.start_date != null ? { startDate: date(payload.start_date) } : {}),
7
+ ...(payload.parent_customer_payment_provider_id != null
8
+ ? {
9
+ parentCustomerPaymentProviderId: payload.parent_customer_payment_provider_id,
10
+ }
11
+ : {}),
12
+ ...(payload.payment_provider_project_customer_id != null
13
+ ? {
14
+ paymentProviderProjectCustomerId: payload.payment_provider_project_customer_id,
15
+ }
16
+ : {}),
17
+ ...(payload.payment_provider_project_id != null
18
+ ? { paymentProviderProjectId: payload.payment_provider_project_id }
19
+ : {}),
20
+ ...(payload.zeni_parent_customer_id != null
21
+ ? { zeniParentCustomerId: payload.zeni_parent_customer_id }
22
+ : {}),
23
+ ...(payload.zeni_project_customer_id != null
24
+ ? { zeniProjectCustomerId: payload.zeni_project_customer_id }
25
+ : {}),
26
+ });
@@ -0,0 +1,27 @@
1
+ import { createSlice } from '@reduxjs/toolkit';
2
+ import { mapProjectMetadataPayloadToProject, } from './projectPayload';
3
+ export const initialState = {
4
+ projects: {},
5
+ };
6
+ const projectSlice = createSlice({
7
+ name: 'project',
8
+ initialState,
9
+ reducers: {
10
+ updateProjects: {
11
+ reducer(draft, action) {
12
+ action.payload.forEach((projectPayload) => {
13
+ const project = mapProjectMetadataPayloadToProject(projectPayload);
14
+ draft.projects[project.projectId] = project;
15
+ });
16
+ },
17
+ prepare(payload) {
18
+ return { payload };
19
+ },
20
+ },
21
+ clearAllProjects(draft) {
22
+ Object.assign(draft, initialState);
23
+ },
24
+ },
25
+ });
26
+ export const { updateProjects, clearAllProjects } = projectSlice.actions;
27
+ export default projectSlice.reducer;
@@ -0,0 +1,8 @@
1
+ export function getProjectById(projectState, projectId) {
2
+ return projectState.projects[projectId];
3
+ }
4
+ export function getProjectsByIds(projectState, projectIds) {
5
+ return projectIds
6
+ .map((projectId) => getProjectById(projectState, projectId))
7
+ .filter((project) => project != null);
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export function getSectionProjectViewKey(sectionId, reportId) {
2
+ return `${sectionId}-${reportId}`;
3
+ }
@@ -0,0 +1,52 @@
1
+ import { from } from 'rxjs';
2
+ import { filter, mergeMap } from 'rxjs/operators';
3
+ import { getAllAccountMetadataRecordsByID, getParentAccountId, } from '../../commonStateTypes/accountView/getNestedAccountIDHierarchyForReport';
4
+ import { updateMultipleSubAccountsWithBalances } from '../account/accountReducer';
5
+ import { updateSectionProjectView } from './sectionProjectViewReducer';
6
+ export const updateSectionProjectViewEpic = (actions$) => actions$.pipe(filter(updateSectionProjectView.match), mergeMap((action) => {
7
+ const actions = [];
8
+ const sectionPayload = action.payload.sectionPayload;
9
+ const sectionId = action.payload.sectionId;
10
+ const timeframe = action.payload.timeframe;
11
+ const reportId = action.payload.reportId;
12
+ const currencyPayload = action.payload.currencyPayload;
13
+ const accountsMetadataPayload = action.payload.accountsMetadataPayload;
14
+ const accountMetadataRecordsByID = getAllAccountMetadataRecordsByID(accountsMetadataPayload);
15
+ const accountMetadataWithBalancesPayloads = [];
16
+ if (sectionPayload.projects != null) {
17
+ Object.keys(sectionPayload.projects).forEach((projectId) => {
18
+ const projectAccounts = sectionPayload.projects[projectId].accounts;
19
+ const projectsViewParentID = {
20
+ projectId,
21
+ sectionId,
22
+ };
23
+ getSubAccountsMetadataForProjectAccountList(projectAccounts, accountMetadataRecordsByID, sectionId, projectsViewParentID, accountMetadataWithBalancesPayloads);
24
+ });
25
+ }
26
+ if (accountMetadataWithBalancesPayloads.length > 0) {
27
+ actions.push(updateMultipleSubAccountsWithBalances(accountMetadataWithBalancesPayloads, currencyPayload, reportId, timeframe));
28
+ }
29
+ return from(actions);
30
+ }));
31
+ const getSubAccountsMetadataForProjectAccountList = (accountListWithBalances, accountMetadataRecordsByID, sectionId, projectsViewParentID, result) => {
32
+ if (accountListWithBalances != null) {
33
+ Object.keys(accountListWithBalances).forEach((eachAccountId) => {
34
+ const accountMetadataRecord = accountMetadataRecordsByID[eachAccountId];
35
+ if (accountMetadataRecord != null) {
36
+ const accountId = accountMetadataRecord.nestedAccountId;
37
+ result.push({
38
+ accountsViewParentID: {
39
+ parentAccountId: getParentAccountId(accountId),
40
+ sectionId,
41
+ },
42
+ accountMetadataPayload: accountMetadataRecord.accountMetadataPayload,
43
+ accountBalancesPayload: accountListWithBalances[eachAccountId],
44
+ projectsViewParentID,
45
+ });
46
+ }
47
+ else {
48
+ console.warn(`Account ${eachAccountId} in Section ${sectionId} Project ${projectsViewParentID.projectId} is missing metadata.`);
49
+ }
50
+ });
51
+ }
52
+ };
@@ -0,0 +1,9 @@
1
+ import { mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod, } from '../../commonPayloadTypes/v2/coaBalancePayload';
2
+ import { getSectionProjectViewKey, } from './sectionProjectView';
3
+ export const mapSectionByProjectCOABalanceGroupedPayloadToSection = (timeframe, sectionPayload, currencyPayload, id) => {
4
+ return {
5
+ key: getSectionProjectViewKey(id.sectionId, id.reportId),
6
+ sectionId: id.sectionId,
7
+ balancesByPeriod: mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(sectionPayload, currencyPayload, timeframe),
8
+ };
9
+ };
@@ -0,0 +1,46 @@
1
+ import { createSlice } from '@reduxjs/toolkit';
2
+ import { mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod } from '../../commonPayloadTypes/v2/coaBalancePayload';
3
+ import { getSectionProjectViewKey } from './sectionProjectView';
4
+ import { mapSectionByProjectCOABalanceGroupedPayloadToSection } from './sectionProjectViewHelper';
5
+ export const initialState = {
6
+ sectionsByKey: {},
7
+ };
8
+ const sectionProjectView = createSlice({
9
+ name: 'sectionProjectView',
10
+ initialState,
11
+ reducers: {
12
+ updateSectionProjectView: {
13
+ prepare(timeframe, sectionId, reportId, sectionPayload, accountsMetadataPayload, currencyPayload) {
14
+ return {
15
+ payload: {
16
+ timeframe,
17
+ reportId,
18
+ sectionId,
19
+ sectionPayload,
20
+ accountsMetadataPayload,
21
+ currencyPayload,
22
+ },
23
+ };
24
+ },
25
+ reducer(draft, action) {
26
+ updateSection(draft, action.payload.timeframe, action.payload.sectionPayload, action.payload.sectionId, action.payload.reportId, action.payload.currencyPayload);
27
+ },
28
+ },
29
+ clearAllSectionsProjectView(draft) {
30
+ Object.assign(draft, initialState);
31
+ },
32
+ },
33
+ });
34
+ export const { updateSectionProjectView, clearAllSectionsProjectView } = sectionProjectView.actions;
35
+ export default sectionProjectView.reducer;
36
+ const updateSection = (draft, timeframe, sectionPayload, sectionId, reportId, currencyPayload) => {
37
+ const sectionKey = getSectionProjectViewKey(sectionId, reportId);
38
+ const section = draft.sectionsByKey[sectionKey];
39
+ if (section != null) {
40
+ draft.sectionsByKey[sectionKey].balancesByPeriod = Object.assign({}, draft.sectionsByKey[sectionKey].balancesByPeriod, mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(sectionPayload, currencyPayload, timeframe));
41
+ }
42
+ else {
43
+ draft.sectionsByKey[sectionKey] =
44
+ mapSectionByProjectCOABalanceGroupedPayloadToSection(timeframe, sectionPayload, currencyPayload, { sectionId, reportId });
45
+ }
46
+ };
@@ -0,0 +1,96 @@
1
+ import recordGet from 'lodash/get';
2
+ import { getCOABalances, } from '../../commonStateTypes/coaBalance/coaBalance';
3
+ import { getSumOfBalancesByGroupedByPeriod } from '../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod';
4
+ import { mapAccountMetadataPayloadToAccountMetadata } from '../account/accountPayload';
5
+ import { getAccountKey } from '../account/accountState';
6
+ import { getNestedAccountReportForAccount, } from '../account/subAccountSelector';
7
+ import { getProjectById } from '../project/projectSelector';
8
+ import { getNestedAccountIDHierarchyForAccounts } from '../sectionAccountsView/getNestedAccountIDHierarchyForSection';
9
+ import { getSectionProjectViewKey } from './sectionProjectView';
10
+ export const getSectionProjectViewReport = (accountState, projectState, sectionState, projectIds, id, filter) => {
11
+ const sectionKey = getSectionProjectViewKey(id.sectionId, id.reportId);
12
+ const sectionView = recordGet(sectionState.sectionsByKey, sectionKey, undefined);
13
+ const projectIdsToShow = projectIds.filter((projectId) => !filter.projectsToFilterOut.includes(projectId));
14
+ const projectReports = [];
15
+ const sectionBalancesTotalByPeriodArray = [];
16
+ const accountsByProject = getAccountsByProject(accountState, id.sectionId, id.reportId);
17
+ projectIdsToShow.forEach((projectId) => {
18
+ const project = getProjectById(projectState, projectId);
19
+ if (project == null) {
20
+ return;
21
+ }
22
+ const projectAccountIds = accountsByProject[projectId] ?? [];
23
+ const accountsMetadata = projectAccountIds
24
+ .map((accountId) => {
25
+ const key = getAccountKey(id.reportId, accountId, undefined, undefined, { projectId, sectionId: id.sectionId });
26
+ const account = accountState.accountsByKey[key];
27
+ if (account == null) {
28
+ return undefined;
29
+ }
30
+ return mapAccountMetadataPayloadToAccountMetadata({
31
+ account_id: account.accountId,
32
+ account_name: account.accountName,
33
+ account_description: account.accountDescription,
34
+ labels: account.labels,
35
+ is_sub_account: account.accountsViewParentId != null,
36
+ parent_account_id: account.accountsViewParentId?.parentAccountId?.[0] ?? null,
37
+ });
38
+ })
39
+ .filter((metadata) => metadata != null);
40
+ const nestedAccountHierarchy = getNestedAccountIDHierarchyForAccounts(projectAccountIds, accountsMetadata);
41
+ const nestedAccountReports = [];
42
+ nestedAccountHierarchy.forEach((accountIdHierarchy) => {
43
+ const report = getNestedAccountReportForAccount(accountState, {
44
+ accountIdHierarchy,
45
+ reportId: id.reportId,
46
+ projectsViewParentId: {
47
+ projectId,
48
+ sectionId: id.sectionId,
49
+ },
50
+ }, filter, nestedAccountHierarchy.length > 1);
51
+ if (report != null) {
52
+ nestedAccountReports.push(report);
53
+ }
54
+ });
55
+ const accountBalancesByPeriod = projectAccountIds
56
+ .map((accountId) => {
57
+ const key = getAccountKey(id.reportId, accountId, undefined, undefined, { projectId, sectionId: id.sectionId });
58
+ const account = accountState.accountsByKey[key];
59
+ return account?.balancesByPeriod;
60
+ })
61
+ .filter((balancesByPeriod) => balancesByPeriod != null);
62
+ const projectBalancesTotalByPeriod = getSumOfBalancesByGroupedByPeriod(accountBalancesByPeriod) ?? {};
63
+ const projectReport = {
64
+ projectId,
65
+ projectName: project.projectName,
66
+ accounts: nestedAccountReports,
67
+ ...getCOABalances(projectBalancesTotalByPeriod, filter),
68
+ projectBalancesTotalByPeriod,
69
+ };
70
+ projectReports.push(projectReport);
71
+ sectionBalancesTotalByPeriodArray.push(projectBalancesTotalByPeriod);
72
+ });
73
+ const sectionBalancesTotalByPeriod = sectionView?.balancesByPeriod != null
74
+ ? sectionView.balancesByPeriod
75
+ : (getSumOfBalancesByGroupedByPeriod(sectionBalancesTotalByPeriodArray) ?? {});
76
+ return {
77
+ projects: projectReports,
78
+ ...getCOABalances(sectionBalancesTotalByPeriod, filter),
79
+ sectionBalancesTotalByPeriod,
80
+ };
81
+ };
82
+ const getAccountsByProject = (accountState, sectionId, reportId) => {
83
+ const result = {};
84
+ Object.values(accountState.accountsByKey).forEach((account) => {
85
+ if (account.projectsViewParentId != null &&
86
+ account.projectsViewParentId.sectionId === sectionId &&
87
+ account.key.endsWith(reportId)) {
88
+ const projectId = account.projectsViewParentId.projectId;
89
+ if (result[projectId] == null) {
90
+ result[projectId] = [];
91
+ }
92
+ result[projectId].push(account.accountId);
93
+ }
94
+ });
95
+ return result;
96
+ };
@@ -1,19 +1,18 @@
1
1
  import { from } from 'rxjs';
2
2
  import { filter, mergeMap } from 'rxjs/operators';
3
- import { clearAllAiAccountantCustomers } from '../../entity/aiAccountantCustomer/aiAccountantCustomerReducer';
4
3
  import { clearAiCfo } from '../../entity/aiCfo/aiCfoReducer';
5
4
  import { clearAllApprovalRules } from '../../entity/approvalRule/approvalRuleReducer';
6
5
  import { clearAllEntityApprovalStatus } from '../../entity/entityApprovalStatus/entityApprovalStatusReducer';
7
6
  import { clearAllMonthEndCloseChecks } from '../../entity/monthEndCloseChecks/monthEndCloseChecksReducer';
8
7
  import { clearAllNotifications } from '../../entity/notification/notificationReducer';
9
8
  import { clearAllSectionsClassesViewV2 } from '../../entity/sectionClassesViewV2/sectionClassesViewReducer';
9
+ import { clearAllSectionsProjectView } from '../../entity/sectionProjectView/sectionProjectViewReducer';
10
10
  import { clearAllTaskGroups } from '../../entity/taskGroup/taskGroupReducer';
11
11
  import { clearAllToastNotifications } from '../../entity/toastNotification/toastNotificationReducer';
12
12
  import { clearAccountList } from '../../view/accountList/accountListReducer';
13
13
  import { clearAccountMappingView } from '../../view/accountMappingView/accountMappingReducer';
14
14
  import { clearAddressView } from '../../view/addressView/addressViewReducer';
15
15
  import { clearAggregatedReport } from '../../view/aiAgentPerformance/aggregatedReportViewReducer';
16
- import { clearAiAccountantView } from '../../view/aiAccountantView/aiAccountantViewReducer';
17
16
  import { clearAiCfoView } from '../../view/aiCfoView/aiCfoViewReducer';
18
17
  import { clearApAgingDetail } from '../../view/apAgingView/apAgingDetail/apAgingDetailReducer';
19
18
  import { clearApAging } from '../../view/apAgingView/apAgingReport/apAgingReducer';
@@ -66,6 +65,7 @@ import { clearOwnerList } from '../../view/ownerList/ownerListReducer';
66
65
  import { clearPeople } from '../../view/people/peopleReducer';
67
66
  import { clearProfitAndLoss } from '../../view/profitAndLoss/profitAndLossReducer';
68
67
  import { clearProfitAndLossClassesView } from '../../view/profitAndLossClassesView/profitAndLossClassesViewReducer';
68
+ import { clearProfitAndLossProjectView } from '../../view/profitAndLossProjectView/profitAndLossProjectViewReducer';
69
69
  import { clearRecommendation } from '../../view/recommendation/recommendationReducer';
70
70
  import { clearReferrals } from '../../view/referralView/referralReducer';
71
71
  import { clearReimbursementCard } from '../../view/reimbursementCard/reimbursementCardReducer';
@@ -163,6 +163,7 @@ import { clearAllChargeCardRepayments } from '../chargeCardRepayment/chargeCardR
163
163
  import { clearAllChargeCardTransactions } from '../chargeCardTransaction/chargeCardTransactionReducer';
164
164
  import { clearAllClasses } from '../class/classReducer';
165
165
  import { clearAllCompanies } from '../company/companyReducer';
166
+ import { clearAllProjects } from '../project/projectReducer';
166
167
  import { clearCompanyHealthMetric } from '../companyHealthMetric/companyHealthMetricReducer';
167
168
  import { clearAllConnectedAccounts } from '../connectedAccount/connectedAccountReducer';
168
169
  import { clearCountryList } from '../countryList/countryListReducer';
@@ -209,10 +210,9 @@ export const clearAllEpic = (actions$) => actions$.pipe(filter(clearAll.match),
209
210
  clearActivityHistory(),
210
211
  clearActivityRealTimeApproval(),
211
212
  clearAddressView(),
212
- clearAiAccountantView(),
213
- clearAllAiAccountantCustomers(),
214
213
  clearAiCfoView(),
215
214
  clearAllClasses(),
215
+ clearAllProjects(),
216
216
  clearAllMonthEndCloseChecksView(),
217
217
  clearApAging(),
218
218
  clearApAgingDetail(),
@@ -292,6 +292,7 @@ export const clearAllEpic = (actions$) => actions$.pipe(filter(clearAll.match),
292
292
  clearPreviousBills(),
293
293
  clearProfitAndLoss(),
294
294
  clearProfitAndLossClassesView(),
295
+ clearProfitAndLossProjectView(),
295
296
  clearRecommendation(),
296
297
  clearReferrals(),
297
298
  clearReimbursementCard(),
@@ -386,6 +387,7 @@ export const clearAllEpic = (actions$) => actions$.pipe(filter(clearAll.match),
386
387
  clearAllReimbursements(),
387
388
  clearAllSectionsAccountsView(),
388
389
  clearAllSectionsClassesViewV2(),
390
+ clearAllSectionsProjectView(),
389
391
  clearAllSubscriptionAddOns(),
390
392
  clearAllSubscriptionCoupons(),
391
393
  clearAllSubscriptionPlans(),
@@ -554,6 +554,7 @@ function mapTenantPayloadToTenant(payload, userTenantPayload) {
554
554
  const tenant = {
555
555
  accountingClassIDs: payload.accounting_class_ids,
556
556
  isAccountingClassesEnabled: payload.is_accounting_classes_enabled ?? true,
557
+ isAccountingProjectsEnabled: payload.is_accounting_projects_enabled ?? false,
557
558
  bookCloseDate: payload.book_close_date != null
558
559
  ? date(payload.book_close_date)
559
560
  : undefined,
@@ -272,6 +272,13 @@ export const getIsAccountingClassesEnabled = (state) => {
272
272
  }
273
273
  return tenantsById[currentTenantId]?.isAccountingClassesEnabled ?? true;
274
274
  };
275
+ export const getIsAccountingProjectsEnabled = (state) => {
276
+ const { currentTenantId, tenantsById } = state.tenantState;
277
+ if (currentTenantId == null) {
278
+ return false;
279
+ }
280
+ return tenantsById[currentTenantId]?.isAccountingProjectsEnabled ?? false;
281
+ };
275
282
  export const isTenantBookkeepingEnabled = (tenant) => {
276
283
  // if the tenants API takes time, tenant can be non null with productSettings as null
277
284
  return tenant != null && tenant.productSettings != null
@@ -117,7 +117,6 @@ export const toTransactionPayload = (transaction) => {
117
117
  transactionPayload = {
118
118
  ...transactionPayload,
119
119
  ...toAccountPayload(transaction.account),
120
- currency_code: transaction.amount.currencyCode,
121
120
  };
122
121
  }
123
122
  if (transaction.paymentType != null && transaction.type === 'bill_payment') {
package/lib/esm/epic.js CHANGED
@@ -5,6 +5,7 @@ import { updateAccruedJESchedulesEpic, } from './entity/jeSchedules/updateAccrue
5
5
  import { updateJESchedulesEpic, } from './entity/jeSchedules/updateJESchedulesEpic';
6
6
  import { updateSectionAccountsViewEpic, } from './entity/sectionAccountsView/sectionAccountsViewEpic';
7
7
  import { updateSectionClassesViewEpic as updateSectionClassesViewEpicV2, } from './entity/sectionClassesViewV2/sectionClassesViewEpic';
8
+ import { updateSectionProjectViewEpic, } from './entity/sectionProjectView/sectionProjectViewEpic';
8
9
  import { clearAllEpic, } from './entity/tenant/clearAllEpic';
9
10
  import { doMagicLinkSignInEpic, } from './entity/tenant/epic/doMagicLinkSignInEpic';
10
11
  import { fetchActiveTenantEpic, } from './entity/tenant/epic/fetchActiveTenantEpic';
@@ -126,8 +127,6 @@ import { fetchDashboardEpic, } from './view/dashboard/dashboardEpic';
126
127
  import { fetchDashboardLayoutEpic, } from './view/dashboardLayout/fetchDashboardLayoutEpic';
127
128
  import { updateDashboardLayoutEpic, } from './view/dashboardLayout/updateDashboardLayoutEpic';
128
129
  import { deleteAccountStatementEpic, } from './view/expenseAutomationView/epics/accountRecon/deleteAccountStatementEpic';
129
- import { excludeAccountFromReconciliationEpic, } from './view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic';
130
- import { includeAccountInReconciliationEpic, } from './view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic';
131
130
  import { fetchReconciliationViewEpic as fetchExpenseAutomationReconciliationsViewEpic, } from './view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic';
132
131
  import { initialiseDataForSelectedAccountIdEpic as initialiseExpenseAutomationReconciliationLocalDataForSelectedAccountIdEpic, } from './view/expenseAutomationView/epics/accountRecon/initialiseLocalDataForSelectedAccountIdEpic';
133
132
  import { saveReconciliationDetailsEpic as saveExpenseAutomationReconciliationDetailsEpic, } from './view/expenseAutomationView/epics/accountRecon/saveReconciliationDetailEpic';
@@ -236,6 +235,8 @@ import { fetchProfitAndLossEpic, } from './view/profitAndLoss/profitAndLossEpic'
236
235
  import { fetchProfitAndLossForTimeframeEpic, } from './view/profitAndLoss/profitAndLossForTimeframeEpic';
237
236
  import { fetchProfitAndLossClassesViewEpic, } from './view/profitAndLossClassesView/profitAndLossClassesViewEpic';
238
237
  import { fetchProfitAndLossForTimeframeClassesViewEpic, } from './view/profitAndLossClassesView/profitAndLossForTimeframeClassesViewEpic';
238
+ import { fetchProfitAndLossProjectViewEpic, } from './view/profitAndLossProjectView/profitAndLossProjectViewEpic';
239
+ import { fetchProfitAndLossForTimeframeProjectViewEpic, } from './view/profitAndLossProjectView/profitAndLossForTimeframeProjectViewEpic';
239
240
  import { fetchEntityRecommendationsByTransactionIdEpic, } from './view/recommendation/fetchEntityRecommendationsByTransactionIdEpic';
240
241
  import { fetchRecommendationByEntityIdEpic, } from './view/recommendation/fetchRecommendationByEntityIdEpic';
241
242
  import { fetchRecommendationByEntityNameEpic, } from './view/recommendation/fetchRecommendationByEntityNameEpic';
@@ -544,7 +545,7 @@ import { fetchZeniAccStatementListEpic, } from './view/zeniAccStatementList/fetc
544
545
  import { fetchZeniAccStatementPageEpic, } from './view/zeniAccStatementList/fetchZeniAccStatementPageEpic';
545
546
  import { fetchZeniAccountsPromoCardEpic, } from './view/zeniAccountsPromoCard/zeniAccountsPromoCardEpic';
546
547
  // Note: Please maintain strict alphabetical order
547
- const combinedEpics = combineEpics(acceptBillPayTermsEpic, acceptBillPayUpdatedTermsEpic, acceptChargeCardTermsEpic, acceptEmployeeRemiTermsEpic, acceptMasterTOSEpic, acceptRemiTermsEpic, acceptTreasuryTermsEpic, acceptZeniAccountTermsEpic, addCardPaymentSourceEpic, approveOrRejectBillEpic, approveOrRejectBillsBulkActionEpic, approveOrRejectRemiEpic, approveOrRejectRemisBulkActionEpic, approveVendorGlobalReviewEpic, archiveTaskEpic, backgroundRefetchReviewTabEpic, bulkUpdateTaskListEpic, cancelAndDeleteBillEpic, cancelAndDeleteRemiEpic, cancelOrDeleteBillsBulkActionEpic, cancelOrDeleteRemisBulkActionEpic, cancelScheduleAccruedJournalEntryEpic, changeZeniPersonRolesEpic, checkDepositEpic, clearAllEpic, closeChargeCardEpic, closeChargeCardsEpic, companyManagementSavePendingUpdatesEpic, companyManagementSaveUpdatesEpic, confirmCardSetupIntentEpic, convertAmountToHomeCurrencyEpic, createAddressEpic, createAutoTransferRuleEpic, createBankAccountEpic, createCardSetupIntentEpic, createCheckingAccountEpic, createCompanyAddressEpic, createCompanyOfficersEpic, createCompanyUserAddressEpic, createGlobalMerchantEpic, createInternationalBankAccountEpic, createNewSchedulesAccruedEpic, createNewSchedulesEpic, createNewTaskGroupEpic, createPaymentInstrumentEpic, createSessionAndSubmitEpic, createSessionEpic, createTagEpic, createTaskFromTaskGroupTemplateEpic, createUserBankAccountEpic, deleteAccountStatementEpic, deleteAutoTransferRuleEpic, excludeAccountFromReconciliationEpic, includeAccountInReconciliationEpic, deleteBankAccountEpic, deleteBillEpic, deleteChatSessionEpic, deleteBillPayApprovalRuleEpic, deleteFileEpic, deleteFileListEpic, deleteInternationalBankAccountEpic, deletePaymentInstrumentEpic, deletePersonEpic, deleteRemiApprovalRuleEpic, deleteRemiEpic, deleteScheduleAccruedDetailEpic, deleteScheduleDetailEpic, deleteTagEpic, deleteTaskEpic, deleteTaskGroupEpic, deleteTransactionAttachmentEpic, deleteUserBankAccountEpic, doMagicLinkSignInEpic, doSignInEpic, doSignOutEpic, sendEmailMagicLinkToUserEpic, verifyDeviceWithTwoFAEpic, downloadAccountingProviderAttachmentEpic, dragNDropTasksEpic, enableChargeCardAutoPayEpic, enableSetupEpic, establishOnboardingPlaidConnectionEpic, establishPlaidConnectionEpic, expressInterestChargeCardEpic, fetchAccountListEpic, fetchAccountListForAccountTypesEpic, fetchAccountSettingsListForAccountTypesEpic, fetchAccruedScheduleListEpic, fetchActiveTenantEpic, fetchAddressEpic, fetchAllCockpitViewsEpic, fetchAllExpenseAutomationTabsEpic, fetchAllPeopleRequiredViewsEpic, fetchAllTagsEpic, fetchAllTaskGroupsEpic, fetchAllTenantsEpic, fetchAndUpdateVendorRecommendationsEpic, fetchAggregatedReportEpic, fetchApAgingDetailEpic, fetchApAgingEpic, fetchArAgingDetailEpic, fetchArAgingEpic, fetchAuditReportGroupViewEpic, fetchAuditRuleGroupViewEpic, fetchAutoTransferReviewDetailEpic, fetchAutoTransferRuleHistoryEpic, fetchAutoTransferRulesEpic, fetchBalanceSheetEpic, fetchBalanceSheetForTimeframeEpic, fetchBankAccountsListEpic, fetchBankConnectionsViewEpic, fetchBankCountryNameByIbanEpic, fetchBankNameByRoutingEpic, fetchBankNameBySwiftEpic, fetchBillAndInitializeLocalStoreEpic, fetchBillDetailEpic, fetchBillingAccountsListEpic, fetchBillListEpic, fetchBillListPerTabEpic, fetchBillPayApproversDetailsEpic, fetchBillPayApproversListEpic, fetchBillPayCardEpic, fetchBillPayConfigEpic, fetchBillPaySetupApproverViewEpic, fetchBillPaySetupViewEpic, fetchCardBalanceEpic, fetchCashbackDetailEpic, fetchCashBalanceEpic, fetchCashFlowEpic, fetchCashFlowForTimeframeEpic, fetchCashInCashOutEpic, fetchCashPositionEpic, fetchChargeCardConfigEpic, fetchChargeCardDetailEpic, fetchChargeCardDetailPageEpic, fetchChargeCardListEpic, fetchChargeCardListPageEpic, fetchChargeCardPaymentPageEpic, fetchChargeCardRepaymentDetailEpic, fetchChargeCardPaymentHistoryEpic, fetchChargeCardSetupViewEpic, fetchChargeCardStatementListEpic, fetchChargeCardTransactionAttachmentsEpic, fetchChargeCardTransactionListEpic, fetchChargeCardTransactionStatisticsEpic, fetchChargeCardsRecurringExpensesEpic, fetchChatHistoryEpic, fetchChatSessionsForUserEpic, fetchClassListEpic, fetchCollaborationAuthTokenEpic, fetchCompanyBillingAddressEpic, fetchCompanyConfigEpic, fetchCompanyHealthMetricConfigEpic, fetchCompanyHealthMetricViewEpic, fetchCompanyManagementViewEpic, fetchCompanyMetaDataEpic, fetchCompanyMonthEndReportHistoricDataEpic, fetchCompanyMonthEndReportHistoricDatesEpic, fetchCompanyMonthEndReportTemplatesEpic, fetchCompanyMonthEndReportViewEpic, fetchCompanyOnboardingViewEpic, fetchCompanyPassportViewEpic, fetchCompanyPortfolioViewEpic, fetchCompanyTaskManagerViewEpic, fetchCreditAccountEpic, fetchCreditAccountRepaymentEpic, fetchCurrencyConversionValueEpic, fetchDashboardEpic, fetchDashboardLayoutEpic, fetchDebitCardSummaryEpic, fetchDepositAccountDetailEpic, fetchDepositAccountEpic, fetchDepositAccountHistoryEpic, fetchDepositAccountLimitEpic, fetchDepositAccountListEpic, fetchDepositAccountListForCardsEpic, fetchDepositAccountTransactionListEpic, fetchDownloadSchedulesEpic, fetchDuplicateBillPayReviewEpic, fetchDuplicateReimbursementEpic, fetchEditBillDetailPageEpic, fetchEditRemiDetailPageEpic, fetchEligibleActionsForBillEpic, fetchEntityAutoCompleteEpic, fetchEntityHistoryEpic, fetchEntityRecommendationsByTransactionIdEpic, fetchExcludedResourcesEpic, fetchExpenseAutomationFluxAnalysisViewEpic, fetchExpenseAutomationInitializeTransactionCategorizationViewLocalDataEpic, fetchExpenseAutomationJeSchedulesEpic, fetchExpenseAutomationJESchedulesPageEpic, fetchExpenseAutomationMarkTransactionAsNotMiscategorizedEpic, fetchExpenseAutomationMissingReceiptsEpic, bulkUploadReceiptsEpic, confirmBulkUploadMatchEpic, fetchBulkUploadBatchDetailsEpic, fetchMultipleBatchDetailsEpic, fetchMoreBatchDetailsEpic, fetchBulkUploadBatchesEpic, fetchCompletedTransactionsEpic, bulkUploadAutomatchingTimeoutEpic, pollBulkUploadBatchStatusEpic, pusherBatchStatusCompletionEpic, searchTransactionsForManualMatchEpic, fetchExpenseAutomationReconciliationsViewEpic, fetchExpenseAutomationSaveTransactionCategorizationEpic, fetchExpenseAutomationTransactionCategorizationEpic, fetchExpenseAutomationTransactionCategorizationViewEpic, fetchExpenseAutomationUpdateTransactionCategorizationEpic, fetchExpenseTrendEpic, fetchExpressPayInitialDetailsEpic, fetchExternalConnectionsEpic, fetchFileEpic, fetchFileListEpic, fetchFinanceStatementEpic, fetchForecastListEpic, initiateReportsClassViewRefetchingEpic, reportsResyncEpic, fetchGlobalMerchantAutoCompleteViewEpic, fetchGlobalMerchantRecommendationEpic, fetchIncomeTrendEpic, fetchInsightsCardEpic, fetchInternationalWireDynamicFormEpic, fetchIntlVerificationFormEpic, fetchIssueCardPageEpic, fetchMagicLinkBankNameByRoutingEpic, fetchMagicLinkBankNameBySwiftEpic, fetchMagicLinkBillEpic, fetchMagicLinkTenantEpic, fetchManagementViewEpic, fetchMerchantListEpic, fetchMonthClosePerformanceTrendEpic, fetchMonthEndCloseChecksEpic, fetchMyProfileEpic, fetchMyProfileViewEpic, fetchNetBurnOrIncomeClassesViewEpic, fetchNetBurnOrIncomeEpic, fetchNetBurnOrIncomeForTimeframeClassesViewEpic, fetchNetBurnOrIncomeForTimeframeEpic, fetchNetBurnOrIncomeStoryCardEpic, fetchNetBurnOrIncomeWithForecastEpic, fetchNotificationSettingsEpic, fetchNotificationSettingsViewEpic, fetchNotificationUnreadCountEpic, fetchNotificationViewEpic, fetchOnboardingCompletedCompaniesEpic, fetchOnboardingCustomerSetupViewEpic, fetchOnboardingCustomerViewEpic, fetchOnboardingViewEpic, fetchOpExByVendorEpic, fetchOpExByVendorReportForTimeframeEpic, fetchOpExByVendorReportSummaryEpic, fetchOpExClassesViewEpic, fetchOpExEpic, fetchOpExForTimeframeClassesViewEpic, fetchOpExReportForTimeframeEpic, fetchOpExWithForecastEpic, fetchOwnerListEpic, fetchParentSubsidiaryManagementViewEpic, fetchPaymentAccountBalanceEpic, fetchPaymentAccountListEpic, fetchPaymentSourcesEpic, fetchPeopleEpic, fetchPeoplePageEpic, fetchPortfolioViewEpic, fetchPreviousBillsEpic, fetchProfitAndLossClassesViewEpic, fetchProfitAndLossEpic, fetchProfitAndLossForTimeframeClassesViewEpic, fetchProfitAndLossForTimeframeEpic, fetchQBOConnectionPoolEpic, fetchRecommendationByEntityIdEpic, fetchRecommendationByEntityNameEpic, fetchRecommendationForAccountSettingsEpic, fetchRecommendationForAccountTypeEpic, fetchRecommendationsAndUpdateMerchantRecommendationsEpic, fetchRecommendedTransactionRowIndexEpic, fetchReferralsEpic, fetchReimbursementCardEpic, fetchReimbursementConfigEpic, fetchRemiAndInitializeLocalStoreEpic, fetchRemiApproversDetailsEpic, fetchRemiApproversListEpic, fetchRemiDetailEpic, fetchRemiListEpic, fetchRemiListPerTabEpic, fetchRemiSetupApproverViewEpic, fetchRemiSetupViewEpic, fetchRevenueClassesViewEpic, fetchRevenueEpic, fetchRevenueForTimeframeClassesViewEpic, fetchRevenueForTimeframeEpic, fetchRevenueWithForecastEpic, fetchReviewCompanyViewEpic, fetchReviewTransferDetailEpic, fetchRewardsPlanEpic, fetchScheduleAccruedDetailsEpic, fetchScheduleAccruedDetailsPageEpic, fetchScheduleDetailsEpic, fetchScheduleDetailsPageEpic, fetchScheduleListEpic, fetchSchedulesAccountEpic, fetchSubscriptionAddOnsEpic, fetchSubscriptionCouponsEpic, fetchSubscriptionCreateEstimateEpic, fetchSubscriptionDetailsEpic, fetchSubscriptionListEpic, fetchSubscriptionPlansEpic, fetchSubscriptionSummaryForTenantEpic, fetchSubscriptionUpdateEstimateEpic, fetchSubscriptionViewEpic, fetchSuggestedQuestionsEpic, fetchTaskDetailEpic, fetchTaskDetailPageEpic, fetchTaskGroupTemplatesEpic, fetchTaskHistoryEpic, fetchTaskListEpic, fetchTaskListPageEpic, fetchTasksCardEpic, fetchTopExEpic, fetchTransactionActivityLogEpic, fetchTransactionDetailEpic, fetchTransactionListByAccountEpic, fetchTransactionListByClassEpic, fetchTransactionListByEntityEpic, fetchTransactionsForEntityEpic, fetchTransactionsListByCategoryTypeEpic, fetchTreasuryDetailEpic, fetchTreasuryFundsEpic, fetchTreasuryHistoryEpic, fetchTreasurySetupViewEpic, fetchTreasuryStatementListEpic, fetchTreasuryTaxLetterListEpic, fetchTreasuryTransactionListEpic, updatePortfolioAllocationEpic, fetchPortfolioAllocationEpic, fetchTrendForEntityEpic, fetchUserDetailEpic, fetchUserFinancialAccountEpic, fetchUserListByTypeEpic, fetchUserRoleConfigEpic, fetchVendor1099TypeListEpic, fetchVendorAndUpdateBillLocalDataEpic, fetchVendorByNameAndParseInvoiceEpic, fetchVendorDetailsEpic, fetchVendorEpic, fetchVendorFirstReviewAttachmentsEpic, fetchVendorFirstReviewViewEpic, fetchVendorGlobalReviewViewEpic, fetchVendorsFiling1099AllEpic, fetchVendorsFiling1099DownloadEpic, fetchVendorsFiling1099ListEpic, fetchVendorsListEpic, fetchVendorsTabVendorDetailPageViewEpic, fetchVendorsTabVendorDetailsEpic, fetchVendorsTabVendorEpic, fetchVendorTabViewEpic, fetchVendorTypeListEpic, fetchZeniAccountListEpic, fetchZeniAccountsConfigEpic, fetchZeniAccountSetupViewEpic, fetchZeniAccountsPromoCardEpic, fetchZeniAccStatementListEpic, fetchZeniAccStatementPageEpic, fetchZeniUsersEpic, getOnboardingEmailGroupEpic, getOnboardingPlaidLinkTokenEpic, getPaymentAccountsEpic, getPlaidLinkTokenEpic, ignoreExpenseAutomationJEScheduleEpic, improveUsingZeniGPTEpic, initialiseExpenseAutomationReconciliationLocalDataForSelectedAccountIdEpic, initializeAccountMappingViewEpic, initializeAccountSettingsViewEpic, initializeBillPaySetupApproverViewUpdateDataEpic, initializeBillToLocalStoreEpic, initializeCardUserOnboardingLocalDataEpic, initializeCompanyHealthMetricViewLocalDataEpic, initializeDynamicFormEpic, initializeEditPersonEpic, initializeExpenseAutomationJeScheduleLocalDataEpic, initializeInternationalWireLocalDataEpic, initializeIntlVerificationFormEpic, initializeMyProfileLocalDataEpic, initializeOnboardingCustomerViewUpdateDataEpic, initializeRemiSetupApproverViewUpdateDataEpic, initializeRemiToLocalStoreEpic, initializeScheduleAccruedDetailLocalDataEpic, initializeScheduleDetailLocalDataEpic, initializeSubscriptionLocalDataEpic, initializeTaskToLocalStoreEpic, initializeTransactionDetailLocalDataEpic, initializeVendorAddressEpic, initiateChargeCardRepaymentEpic, invitePeopleEpic, inviteZeniPeopleEpic, issueChargeCardEpic, lockChargeCardEpic, lockChargeCardsEpic, markAsCompleteScheduleDetailEpic, markTransactionAsNotMiscategorizedEpic, parallelFetchAccountTransactionListEpic, parallelFetchClassTransactionListEpic, parallelFetchEntityTransactionListEpic, parallelFetchTransactionListByCategoryTypeEpic, parseInvoiceToBillEpic, parseReceiptsToRemiEpic, peopleSaveUpdatesEpic, pushToastNotificationEpic, refreshExpenseAutomationCurrentTabEpic, refreshIntegrationsDataEpic, rejectVendorGlobalReviewEpic, resendCardInviteEpic, resendInviteEpic, resendOtpEpic, resendVerifyDeviceOTPEpic, resendReferralInviteEpic, resetTransactionVendorLocalDataEpic, resetVendorDetailLocalDataEpic, resetVendorsTabVendorDetailLocalDataEpic, retryBankAccountConnectionEpic, retryBankAccountConnectionForOnboardingEpic, retryExpenseAutomationJEScheduleEpic, retryOrRefundBillEpic, validateBillsBulkActionEpic, reviewDraftRemisBulkActionEpic, reviewExpenseAutomationFluxAnalysisViewEpic, revokeCardInviteEpic, revokeChargeCardsInviteEpic, saveAccountMappingViewEpic, saveAccountSettingsViewEpic, saveBillDetailEpic, saveBillPaySetupApproverViewUpdatesEpic, saveCardOnboardingUserDetailsEpic, saveCompanyBillingAddressEpic, saveCompanyHealthMetricByIdEpic, saveCompanyMonthEndReportEpic, saveCompanyPassportDetailsEpic, saveExpenseAutomationReconciliationDetailsEpic, saveExpenseAutomationReconciliationReviewEpic, saveExternalConnectionEpic, saveMagicLinkBankAccountEpic, saveNewAddressEpic, saveNotificationSettingsEpic, saveOnboardingCustomerCompletedStatusEpic, saveOnboardingCustomerNotesEpic, saveOnboardingCustomerViewUpdatesEpic, saveRealTimeApprovalEpic, saveReasonForAuditRuleEpic, saveRemiDetailEpic, saveRemiSetupApproverViewUpdatesEpic, saveScheduleAccruedDetailsEpic, saveScheduleDetailsEpic, saveSubscriptionNotesUpdatesEpic, saveSubscriptionUpdatesEpic, saveTaskDetailEpic, saveTransactionDetailEpic, saveTransactionVendorEpic, saveVendorDetailsViewEpic, saveVendorEpic, saveVendorFirstReviewViewEpic, saveVendorsTabVendorEpic, sendCompanyMonthEndReportEpic, sendOnboardingCustomerViewInviteEpic, sendOtpEpic, sendReferralInviteEpic, statementCloseDayEpic, stopSubmitEpic, stopSubmitQuestionEpic, submitDraftBillsBulkActionEpic, submitDraftRemisBulkActionEpic, submitExpressPayEpic, submitIntlVerificationEpic, submitQuestionEpic, toggleReportUIOptionForecastModeEpic, transferMoneyEpic, treasuryTransferMoneyEpic, triggerReviewTabRefetchEpic, unlinkPaymentAccountEpic, unlockChargeCardEpic, unlockChargeCardsEpic, updateAccruedJESchedulesEpic, updateAddressEpic, updateAutoTransferRuleEpic, updateAmountsInScheduleAccruedDetailEpic, updateAmountsInScheduleDetailEpic, updateBusinessVerificationDetailsEpic, updateChargeCardDetailEpic, updateChargeCardLimitEpic, updateChargeCardNameEpic, updateChargeCardsLimitEpic, updateCompanyDetailsEpic, updateCompanyOfficerEpic, updateCompanyPassportLocalStoreDataEpic, updateDashboardLayoutEpic, updateDebitCardPinAttemptEpic, updateDepositAccountEpic, updateExpenseAutomationReconciliationBalanceLocalDataEpic, updateFileNameEpic, updateFilesMetadataEpic, updateJESchedulesEpic, updateMappedCashAccountEpic, updateMileageDetailsEpic, updateMyProfileEpic, updateNetBurnOrIncomeStoryCardSettingsEpic, updateNotificationViewAllNotificationsStatusEpic, updateNotificationViewNotificationStatusEpic, updateOnboardingCustomerViewCompleteStatusEpic, updateOnboardingCustomerViewDashboardLoadedEpic, updateOnboardingCustomerViewEpic, updateOnboardingCustomerViewLocalStoreDataEpic, updateOnboardingPaymentAccountLoginStatusEpic, updateOnboardingPaymentAccountStatusEpic, updatePaymentAccountEpic, updatePaymentAccountLoginStatusEpic, updatePaymentAccountStatusEpic, updatePhysicalChargeCardAttemptEpic, updatePrimaryContactEpic, updatePrimaryFundingAccountEpic, updateQBOConnectionPoolExternalConnectionEpic, updateReferViewedEpic, updateRemiSetupViewLocalStoreDataEpic, updateReportUIOptionCOABalancesRangeEpic, updateReportUIOptionIsCompareModeEpic, updateReportUIOptionIsCompareModeOnEpic, updateReportUIOptionThisPeriodEpic, updateReportUIOptionTimeFrameEpic, updateSectionAccountsViewEpic, updateSectionClassesViewEpicV2, updateSelectedVendorForCreateFlowEpic, updateSetupViewLocalStoreDataEpic, updateTaskFromListViewEpic, updateTaskGroupNameEpic, updateTransactionDetailEpic, updateTreasuryVideoViewedEpic, updateVendorContactEpic, uploadAccountStatementEpic, uploadMissingAttachmentSuccessEpic, uploadMissingReceiptSuccessEpic, uploadTransactionReceiptSuccessEpic, vendorFiling1099UploadDetailsSaveEpic, verifyOtpEpic, verifyUserEpic, waitForBillDetailThenInitializeLocalStoreEpic, waitForForecastListThenFetchNetBurnOrIncomeWithForecastEpic, waitForForecastListThenFetchOpExWithForecastEpic, waitForForecastListThenFetchRevenueWithForecastEpic, waitForMerchantRecommendationFetchThenUpdateRecommendationInMerchantEpic, waitForVendorByIdThenSaveBillUpdatetoLocalStoreEpic, waitForVendorByNameThenParsetoLocalStoreEpic, waitForVendorByNameThenUpdateBillDetailEpic, waitForVendorRecommendationFetchThenUpdateRecommendationInBillEpic, wiseRedirectEpic);
548
+ const combinedEpics = combineEpics(acceptBillPayTermsEpic, acceptBillPayUpdatedTermsEpic, acceptChargeCardTermsEpic, acceptEmployeeRemiTermsEpic, acceptMasterTOSEpic, acceptRemiTermsEpic, acceptTreasuryTermsEpic, acceptZeniAccountTermsEpic, addCardPaymentSourceEpic, approveOrRejectBillEpic, approveOrRejectBillsBulkActionEpic, approveOrRejectRemiEpic, approveOrRejectRemisBulkActionEpic, approveVendorGlobalReviewEpic, archiveTaskEpic, backgroundRefetchReviewTabEpic, bulkUpdateTaskListEpic, cancelAndDeleteBillEpic, cancelAndDeleteRemiEpic, cancelOrDeleteBillsBulkActionEpic, cancelOrDeleteRemisBulkActionEpic, cancelScheduleAccruedJournalEntryEpic, changeZeniPersonRolesEpic, checkDepositEpic, clearAllEpic, closeChargeCardEpic, closeChargeCardsEpic, companyManagementSavePendingUpdatesEpic, companyManagementSaveUpdatesEpic, confirmCardSetupIntentEpic, convertAmountToHomeCurrencyEpic, createAddressEpic, createAutoTransferRuleEpic, createBankAccountEpic, createCardSetupIntentEpic, createCheckingAccountEpic, createCompanyAddressEpic, createCompanyOfficersEpic, createCompanyUserAddressEpic, createGlobalMerchantEpic, createInternationalBankAccountEpic, createNewSchedulesAccruedEpic, createNewSchedulesEpic, createNewTaskGroupEpic, createPaymentInstrumentEpic, createSessionAndSubmitEpic, createSessionEpic, createTagEpic, createTaskFromTaskGroupTemplateEpic, createUserBankAccountEpic, deleteAccountStatementEpic, deleteAutoTransferRuleEpic, deleteBankAccountEpic, deleteBillEpic, deleteChatSessionEpic, deleteBillPayApprovalRuleEpic, deleteFileEpic, deleteFileListEpic, deleteInternationalBankAccountEpic, deletePaymentInstrumentEpic, deletePersonEpic, deleteRemiApprovalRuleEpic, deleteRemiEpic, deleteScheduleAccruedDetailEpic, deleteScheduleDetailEpic, deleteTagEpic, deleteTaskEpic, deleteTaskGroupEpic, deleteTransactionAttachmentEpic, deleteUserBankAccountEpic, doMagicLinkSignInEpic, doSignInEpic, doSignOutEpic, sendEmailMagicLinkToUserEpic, verifyDeviceWithTwoFAEpic, downloadAccountingProviderAttachmentEpic, dragNDropTasksEpic, enableChargeCardAutoPayEpic, enableSetupEpic, establishOnboardingPlaidConnectionEpic, establishPlaidConnectionEpic, expressInterestChargeCardEpic, fetchAccountListEpic, fetchAccountListForAccountTypesEpic, fetchAccountSettingsListForAccountTypesEpic, fetchAccruedScheduleListEpic, fetchActiveTenantEpic, fetchAddressEpic, fetchAllCockpitViewsEpic, fetchAllExpenseAutomationTabsEpic, fetchAllPeopleRequiredViewsEpic, fetchAllTagsEpic, fetchAllTaskGroupsEpic, fetchAllTenantsEpic, fetchAndUpdateVendorRecommendationsEpic, fetchAggregatedReportEpic, fetchApAgingDetailEpic, fetchApAgingEpic, fetchArAgingDetailEpic, fetchArAgingEpic, fetchAuditReportGroupViewEpic, fetchAuditRuleGroupViewEpic, fetchAutoTransferReviewDetailEpic, fetchAutoTransferRuleHistoryEpic, fetchAutoTransferRulesEpic, fetchBalanceSheetEpic, fetchBalanceSheetForTimeframeEpic, fetchBankAccountsListEpic, fetchBankConnectionsViewEpic, fetchBankCountryNameByIbanEpic, fetchBankNameByRoutingEpic, fetchBankNameBySwiftEpic, fetchBillAndInitializeLocalStoreEpic, fetchBillDetailEpic, fetchBillingAccountsListEpic, fetchBillListEpic, fetchBillListPerTabEpic, fetchBillPayApproversDetailsEpic, fetchBillPayApproversListEpic, fetchBillPayCardEpic, fetchBillPayConfigEpic, fetchBillPaySetupApproverViewEpic, fetchBillPaySetupViewEpic, fetchCardBalanceEpic, fetchCashbackDetailEpic, fetchCashBalanceEpic, fetchCashFlowEpic, fetchCashFlowForTimeframeEpic, fetchCashInCashOutEpic, fetchCashPositionEpic, fetchChargeCardConfigEpic, fetchChargeCardDetailEpic, fetchChargeCardDetailPageEpic, fetchChargeCardListEpic, fetchChargeCardListPageEpic, fetchChargeCardPaymentPageEpic, fetchChargeCardRepaymentDetailEpic, fetchChargeCardPaymentHistoryEpic, fetchChargeCardSetupViewEpic, fetchChargeCardStatementListEpic, fetchChargeCardTransactionAttachmentsEpic, fetchChargeCardTransactionListEpic, fetchChargeCardTransactionStatisticsEpic, fetchChargeCardsRecurringExpensesEpic, fetchChatHistoryEpic, fetchChatSessionsForUserEpic, fetchClassListEpic, fetchCollaborationAuthTokenEpic, fetchCompanyBillingAddressEpic, fetchCompanyConfigEpic, fetchCompanyHealthMetricConfigEpic, fetchCompanyHealthMetricViewEpic, fetchCompanyManagementViewEpic, fetchCompanyMetaDataEpic, fetchCompanyMonthEndReportHistoricDataEpic, fetchCompanyMonthEndReportHistoricDatesEpic, fetchCompanyMonthEndReportTemplatesEpic, fetchCompanyMonthEndReportViewEpic, fetchCompanyOnboardingViewEpic, fetchCompanyPassportViewEpic, fetchCompanyPortfolioViewEpic, fetchCompanyTaskManagerViewEpic, fetchCreditAccountEpic, fetchCreditAccountRepaymentEpic, fetchCurrencyConversionValueEpic, fetchDashboardEpic, fetchDashboardLayoutEpic, fetchDebitCardSummaryEpic, fetchDepositAccountDetailEpic, fetchDepositAccountEpic, fetchDepositAccountHistoryEpic, fetchDepositAccountLimitEpic, fetchDepositAccountListEpic, fetchDepositAccountListForCardsEpic, fetchDepositAccountTransactionListEpic, fetchDownloadSchedulesEpic, fetchDuplicateBillPayReviewEpic, fetchDuplicateReimbursementEpic, fetchEditBillDetailPageEpic, fetchEditRemiDetailPageEpic, fetchEligibleActionsForBillEpic, fetchEntityAutoCompleteEpic, fetchEntityHistoryEpic, fetchEntityRecommendationsByTransactionIdEpic, fetchExcludedResourcesEpic, fetchExpenseAutomationFluxAnalysisViewEpic, fetchExpenseAutomationInitializeTransactionCategorizationViewLocalDataEpic, fetchExpenseAutomationJeSchedulesEpic, fetchExpenseAutomationJESchedulesPageEpic, fetchExpenseAutomationMarkTransactionAsNotMiscategorizedEpic, fetchExpenseAutomationMissingReceiptsEpic, bulkUploadReceiptsEpic, confirmBulkUploadMatchEpic, fetchBulkUploadBatchDetailsEpic, fetchMultipleBatchDetailsEpic, fetchMoreBatchDetailsEpic, fetchBulkUploadBatchesEpic, fetchCompletedTransactionsEpic, bulkUploadAutomatchingTimeoutEpic, pollBulkUploadBatchStatusEpic, pusherBatchStatusCompletionEpic, searchTransactionsForManualMatchEpic, fetchExpenseAutomationReconciliationsViewEpic, fetchExpenseAutomationSaveTransactionCategorizationEpic, fetchExpenseAutomationTransactionCategorizationEpic, fetchExpenseAutomationTransactionCategorizationViewEpic, fetchExpenseAutomationUpdateTransactionCategorizationEpic, fetchExpenseTrendEpic, fetchExpressPayInitialDetailsEpic, fetchExternalConnectionsEpic, fetchFileEpic, fetchFileListEpic, fetchFinanceStatementEpic, fetchForecastListEpic, initiateReportsClassViewRefetchingEpic, reportsResyncEpic, fetchGlobalMerchantAutoCompleteViewEpic, fetchGlobalMerchantRecommendationEpic, fetchIncomeTrendEpic, fetchInsightsCardEpic, fetchInternationalWireDynamicFormEpic, fetchIntlVerificationFormEpic, fetchIssueCardPageEpic, fetchMagicLinkBankNameByRoutingEpic, fetchMagicLinkBankNameBySwiftEpic, fetchMagicLinkBillEpic, fetchMagicLinkTenantEpic, fetchManagementViewEpic, fetchMerchantListEpic, fetchMonthClosePerformanceTrendEpic, fetchMonthEndCloseChecksEpic, fetchMyProfileEpic, fetchMyProfileViewEpic, fetchNetBurnOrIncomeClassesViewEpic, fetchNetBurnOrIncomeEpic, fetchNetBurnOrIncomeForTimeframeClassesViewEpic, fetchNetBurnOrIncomeForTimeframeEpic, fetchNetBurnOrIncomeStoryCardEpic, fetchNetBurnOrIncomeWithForecastEpic, fetchNotificationSettingsEpic, fetchNotificationSettingsViewEpic, fetchNotificationUnreadCountEpic, fetchNotificationViewEpic, fetchOnboardingCompletedCompaniesEpic, fetchOnboardingCustomerSetupViewEpic, fetchOnboardingCustomerViewEpic, fetchOnboardingViewEpic, fetchOpExByVendorEpic, fetchOpExByVendorReportForTimeframeEpic, fetchOpExByVendorReportSummaryEpic, fetchOpExClassesViewEpic, fetchOpExEpic, fetchOpExForTimeframeClassesViewEpic, fetchOpExReportForTimeframeEpic, fetchOpExWithForecastEpic, fetchOwnerListEpic, fetchParentSubsidiaryManagementViewEpic, fetchPaymentAccountBalanceEpic, fetchPaymentAccountListEpic, fetchPaymentSourcesEpic, fetchPeopleEpic, fetchPeoplePageEpic, fetchPortfolioViewEpic, fetchPreviousBillsEpic, fetchProfitAndLossClassesViewEpic, fetchProfitAndLossEpic, fetchProfitAndLossForTimeframeClassesViewEpic, fetchProfitAndLossForTimeframeProjectViewEpic, fetchProfitAndLossForTimeframeEpic, fetchProfitAndLossProjectViewEpic, fetchQBOConnectionPoolEpic, fetchRecommendationByEntityIdEpic, fetchRecommendationByEntityNameEpic, fetchRecommendationForAccountSettingsEpic, fetchRecommendationForAccountTypeEpic, fetchRecommendationsAndUpdateMerchantRecommendationsEpic, fetchRecommendedTransactionRowIndexEpic, fetchReferralsEpic, fetchReimbursementCardEpic, fetchReimbursementConfigEpic, fetchRemiAndInitializeLocalStoreEpic, fetchRemiApproversDetailsEpic, fetchRemiApproversListEpic, fetchRemiDetailEpic, fetchRemiListEpic, fetchRemiListPerTabEpic, fetchRemiSetupApproverViewEpic, fetchRemiSetupViewEpic, fetchRevenueClassesViewEpic, fetchRevenueEpic, fetchRevenueForTimeframeClassesViewEpic, fetchRevenueForTimeframeEpic, fetchRevenueWithForecastEpic, fetchReviewCompanyViewEpic, fetchReviewTransferDetailEpic, fetchRewardsPlanEpic, fetchScheduleAccruedDetailsEpic, fetchScheduleAccruedDetailsPageEpic, fetchScheduleDetailsEpic, fetchScheduleDetailsPageEpic, fetchScheduleListEpic, fetchSchedulesAccountEpic, fetchSubscriptionAddOnsEpic, fetchSubscriptionCouponsEpic, fetchSubscriptionCreateEstimateEpic, fetchSubscriptionDetailsEpic, fetchSubscriptionListEpic, fetchSubscriptionPlansEpic, fetchSubscriptionSummaryForTenantEpic, fetchSubscriptionUpdateEstimateEpic, fetchSubscriptionViewEpic, fetchSuggestedQuestionsEpic, fetchTaskDetailEpic, fetchTaskDetailPageEpic, fetchTaskGroupTemplatesEpic, fetchTaskHistoryEpic, fetchTaskListEpic, fetchTaskListPageEpic, fetchTasksCardEpic, fetchTopExEpic, fetchTransactionActivityLogEpic, fetchTransactionDetailEpic, fetchTransactionListByAccountEpic, fetchTransactionListByClassEpic, fetchTransactionListByEntityEpic, fetchTransactionsForEntityEpic, fetchTransactionsListByCategoryTypeEpic, fetchTreasuryDetailEpic, fetchTreasuryFundsEpic, fetchTreasuryHistoryEpic, fetchTreasurySetupViewEpic, fetchTreasuryStatementListEpic, fetchTreasuryTaxLetterListEpic, fetchTreasuryTransactionListEpic, updatePortfolioAllocationEpic, fetchPortfolioAllocationEpic, fetchTrendForEntityEpic, fetchUserDetailEpic, fetchUserFinancialAccountEpic, fetchUserListByTypeEpic, fetchUserRoleConfigEpic, fetchVendor1099TypeListEpic, fetchVendorAndUpdateBillLocalDataEpic, fetchVendorByNameAndParseInvoiceEpic, fetchVendorDetailsEpic, fetchVendorEpic, fetchVendorFirstReviewAttachmentsEpic, fetchVendorFirstReviewViewEpic, fetchVendorGlobalReviewViewEpic, fetchVendorsFiling1099AllEpic, fetchVendorsFiling1099DownloadEpic, fetchVendorsFiling1099ListEpic, fetchVendorsListEpic, fetchVendorsTabVendorDetailPageViewEpic, fetchVendorsTabVendorDetailsEpic, fetchVendorsTabVendorEpic, fetchVendorTabViewEpic, fetchVendorTypeListEpic, fetchZeniAccountListEpic, fetchZeniAccountsConfigEpic, fetchZeniAccountSetupViewEpic, fetchZeniAccountsPromoCardEpic, fetchZeniAccStatementListEpic, fetchZeniAccStatementPageEpic, fetchZeniUsersEpic, getOnboardingEmailGroupEpic, getOnboardingPlaidLinkTokenEpic, getPaymentAccountsEpic, getPlaidLinkTokenEpic, ignoreExpenseAutomationJEScheduleEpic, improveUsingZeniGPTEpic, initialiseExpenseAutomationReconciliationLocalDataForSelectedAccountIdEpic, initializeAccountMappingViewEpic, initializeAccountSettingsViewEpic, initializeBillPaySetupApproverViewUpdateDataEpic, initializeBillToLocalStoreEpic, initializeCardUserOnboardingLocalDataEpic, initializeCompanyHealthMetricViewLocalDataEpic, initializeDynamicFormEpic, initializeEditPersonEpic, initializeExpenseAutomationJeScheduleLocalDataEpic, initializeInternationalWireLocalDataEpic, initializeIntlVerificationFormEpic, initializeMyProfileLocalDataEpic, initializeOnboardingCustomerViewUpdateDataEpic, initializeRemiSetupApproverViewUpdateDataEpic, initializeRemiToLocalStoreEpic, initializeScheduleAccruedDetailLocalDataEpic, initializeScheduleDetailLocalDataEpic, initializeSubscriptionLocalDataEpic, initializeTaskToLocalStoreEpic, initializeTransactionDetailLocalDataEpic, initializeVendorAddressEpic, initiateChargeCardRepaymentEpic, invitePeopleEpic, inviteZeniPeopleEpic, issueChargeCardEpic, lockChargeCardEpic, lockChargeCardsEpic, markAsCompleteScheduleDetailEpic, markTransactionAsNotMiscategorizedEpic, parallelFetchAccountTransactionListEpic, parallelFetchClassTransactionListEpic, parallelFetchEntityTransactionListEpic, parallelFetchTransactionListByCategoryTypeEpic, parseInvoiceToBillEpic, parseReceiptsToRemiEpic, peopleSaveUpdatesEpic, pushToastNotificationEpic, refreshExpenseAutomationCurrentTabEpic, refreshIntegrationsDataEpic, rejectVendorGlobalReviewEpic, resendCardInviteEpic, resendInviteEpic, resendOtpEpic, resendVerifyDeviceOTPEpic, resendReferralInviteEpic, resetTransactionVendorLocalDataEpic, resetVendorDetailLocalDataEpic, resetVendorsTabVendorDetailLocalDataEpic, retryBankAccountConnectionEpic, retryBankAccountConnectionForOnboardingEpic, retryExpenseAutomationJEScheduleEpic, retryOrRefundBillEpic, validateBillsBulkActionEpic, reviewDraftRemisBulkActionEpic, reviewExpenseAutomationFluxAnalysisViewEpic, revokeCardInviteEpic, revokeChargeCardsInviteEpic, saveAccountMappingViewEpic, saveAccountSettingsViewEpic, saveBillDetailEpic, saveBillPaySetupApproverViewUpdatesEpic, saveCardOnboardingUserDetailsEpic, saveCompanyBillingAddressEpic, saveCompanyHealthMetricByIdEpic, saveCompanyMonthEndReportEpic, saveCompanyPassportDetailsEpic, saveExpenseAutomationReconciliationDetailsEpic, saveExpenseAutomationReconciliationReviewEpic, saveExternalConnectionEpic, saveMagicLinkBankAccountEpic, saveNewAddressEpic, saveNotificationSettingsEpic, saveOnboardingCustomerCompletedStatusEpic, saveOnboardingCustomerNotesEpic, saveOnboardingCustomerViewUpdatesEpic, saveRealTimeApprovalEpic, saveReasonForAuditRuleEpic, saveRemiDetailEpic, saveRemiSetupApproverViewUpdatesEpic, saveScheduleAccruedDetailsEpic, saveScheduleDetailsEpic, saveSubscriptionNotesUpdatesEpic, saveSubscriptionUpdatesEpic, saveTaskDetailEpic, saveTransactionDetailEpic, saveTransactionVendorEpic, saveVendorDetailsViewEpic, saveVendorEpic, saveVendorFirstReviewViewEpic, saveVendorsTabVendorEpic, sendCompanyMonthEndReportEpic, sendOnboardingCustomerViewInviteEpic, sendOtpEpic, sendReferralInviteEpic, statementCloseDayEpic, stopSubmitEpic, stopSubmitQuestionEpic, submitDraftBillsBulkActionEpic, submitDraftRemisBulkActionEpic, submitExpressPayEpic, submitIntlVerificationEpic, submitQuestionEpic, toggleReportUIOptionForecastModeEpic, transferMoneyEpic, treasuryTransferMoneyEpic, triggerReviewTabRefetchEpic, unlinkPaymentAccountEpic, unlockChargeCardEpic, unlockChargeCardsEpic, updateAccruedJESchedulesEpic, updateAddressEpic, updateAutoTransferRuleEpic, updateAmountsInScheduleAccruedDetailEpic, updateAmountsInScheduleDetailEpic, updateBusinessVerificationDetailsEpic, updateChargeCardDetailEpic, updateChargeCardLimitEpic, updateChargeCardNameEpic, updateChargeCardsLimitEpic, updateCompanyDetailsEpic, updateCompanyOfficerEpic, updateCompanyPassportLocalStoreDataEpic, updateDashboardLayoutEpic, updateDebitCardPinAttemptEpic, updateDepositAccountEpic, updateExpenseAutomationReconciliationBalanceLocalDataEpic, updateFileNameEpic, updateFilesMetadataEpic, updateJESchedulesEpic, updateMappedCashAccountEpic, updateMileageDetailsEpic, updateMyProfileEpic, updateNetBurnOrIncomeStoryCardSettingsEpic, updateNotificationViewAllNotificationsStatusEpic, updateNotificationViewNotificationStatusEpic, updateOnboardingCustomerViewCompleteStatusEpic, updateOnboardingCustomerViewDashboardLoadedEpic, updateOnboardingCustomerViewEpic, updateOnboardingCustomerViewLocalStoreDataEpic, updateOnboardingPaymentAccountLoginStatusEpic, updateOnboardingPaymentAccountStatusEpic, updatePaymentAccountEpic, updatePaymentAccountLoginStatusEpic, updatePaymentAccountStatusEpic, updatePhysicalChargeCardAttemptEpic, updatePrimaryContactEpic, updatePrimaryFundingAccountEpic, updateQBOConnectionPoolExternalConnectionEpic, updateReferViewedEpic, updateRemiSetupViewLocalStoreDataEpic, updateReportUIOptionCOABalancesRangeEpic, updateReportUIOptionIsCompareModeEpic, updateReportUIOptionIsCompareModeOnEpic, updateReportUIOptionThisPeriodEpic, updateReportUIOptionTimeFrameEpic, updateSectionAccountsViewEpic, updateSectionClassesViewEpicV2, updateSectionProjectViewEpic, updateSelectedVendorForCreateFlowEpic, updateSetupViewLocalStoreDataEpic, updateTaskFromListViewEpic, updateTaskGroupNameEpic, updateTransactionDetailEpic, updateTreasuryVideoViewedEpic, updateVendorContactEpic, uploadAccountStatementEpic, uploadMissingAttachmentSuccessEpic, uploadMissingReceiptSuccessEpic, uploadTransactionReceiptSuccessEpic, vendorFiling1099UploadDetailsSaveEpic, verifyOtpEpic, verifyUserEpic, waitForBillDetailThenInitializeLocalStoreEpic, waitForForecastListThenFetchNetBurnOrIncomeWithForecastEpic, waitForForecastListThenFetchOpExWithForecastEpic, waitForForecastListThenFetchRevenueWithForecastEpic, waitForMerchantRecommendationFetchThenUpdateRecommendationInMerchantEpic, waitForVendorByIdThenSaveBillUpdatetoLocalStoreEpic, waitForVendorByNameThenParsetoLocalStoreEpic, waitForVendorByNameThenUpdateBillDetailEpic, waitForVendorRecommendationFetchThenUpdateRecommendationInBillEpic, wiseRedirectEpic);
548
549
  const rootEpic = (action$, store$, dependencies) => combinedEpics(action$, store$, dependencies).pipe(map(identity), catchError((error, source) => {
549
550
  console.error(error);
550
551
  return source;