@zeniai/client-epic-state 5.0.96 → 5.0.97

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 (272) hide show
  1. package/lib/common/aiCfo/aiCfoSuggestedQuestionsPageContext.d.ts +1 -1
  2. package/lib/commonStateTypes/amount.d.ts +1 -0
  3. package/lib/commonStateTypes/amount.js +9 -1
  4. package/lib/commonStateTypes/workingDayHelper.d.ts +9 -0
  5. package/lib/commonStateTypes/workingDayHelper.js +28 -1
  6. package/lib/entity/aiCfo/aiCfoPayload.d.ts +63 -5
  7. package/lib/entity/aiCfo/aiCfoReducer.d.ts +23 -2
  8. package/lib/entity/aiCfo/aiCfoReducer.js +249 -9
  9. package/lib/entity/aiCfo/aiCfoSelector.d.ts +4 -1
  10. package/lib/entity/aiCfo/aiCfoSelector.js +19 -1
  11. package/lib/entity/aiCfo/aiCfoState.d.ts +97 -4
  12. package/lib/entity/aiCfo/aiCfoState.js +18 -1
  13. package/lib/entity/cardPolicy/cardPolicyPayload.d.ts +277 -0
  14. package/lib/entity/cardPolicy/cardPolicyPayload.js +143 -0
  15. package/lib/entity/cardPolicy/cardPolicyReducer.d.ts +19 -0
  16. package/lib/entity/cardPolicy/cardPolicyReducer.js +175 -0
  17. package/lib/entity/cardPolicy/cardPolicySelector.d.ts +32 -0
  18. package/lib/entity/cardPolicy/cardPolicySelector.js +99 -0
  19. package/lib/entity/cardPolicy/cardPolicyState.d.ts +205 -0
  20. package/lib/entity/cardPolicy/cardPolicyState.js +14 -0
  21. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.d.ts +18 -0
  22. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.js +68 -0
  23. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.d.ts +26 -0
  24. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +47 -0
  25. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.d.ts +25 -0
  26. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +39 -0
  27. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +24 -0
  28. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +105 -0
  29. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +1 -0
  30. package/lib/entity/jeSchedules/jeSchedulesPayload.js +7 -0
  31. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +2 -0
  32. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
  33. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +1 -1
  34. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  35. package/lib/entity/snackbar/snackbarTypes.js +3 -0
  36. package/lib/entity/task/taskPayload.d.ts +3 -1
  37. package/lib/entity/task/taskPayload.js +2 -0
  38. package/lib/entity/task/taskState.d.ts +2 -0
  39. package/lib/entity/tenant/clearAllEpic.d.ts +8 -2
  40. package/lib/entity/tenant/clearAllEpic.js +12 -0
  41. package/lib/epic.d.ts +24 -3
  42. package/lib/epic.js +24 -3
  43. package/lib/esm/commonStateTypes/amount.js +7 -0
  44. package/lib/esm/commonStateTypes/workingDayHelper.js +26 -0
  45. package/lib/esm/entity/aiCfo/aiCfoReducer.js +249 -9
  46. package/lib/esm/entity/aiCfo/aiCfoSelector.js +17 -1
  47. package/lib/esm/entity/aiCfo/aiCfoState.js +15 -0
  48. package/lib/esm/entity/cardPolicy/cardPolicyPayload.js +130 -0
  49. package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +171 -0
  50. package/lib/esm/entity/cardPolicy/cardPolicySelector.js +75 -0
  51. package/lib/esm/entity/cardPolicy/cardPolicyState.js +9 -0
  52. package/lib/esm/entity/cardPolicy/extractPolicyDocumentEpic.js +64 -0
  53. package/lib/esm/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +43 -0
  54. package/lib/esm/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +35 -0
  55. package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +101 -0
  56. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +7 -0
  57. package/lib/esm/entity/snackbar/snackbarTypes.js +3 -0
  58. package/lib/esm/entity/task/taskPayload.js +2 -0
  59. package/lib/esm/entity/tenant/clearAllEpic.js +12 -0
  60. package/lib/esm/epic.js +24 -3
  61. package/lib/esm/index.js +47 -12
  62. package/lib/esm/reducer.js +18 -0
  63. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +6 -3
  64. package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
  65. package/lib/esm/view/aiCfoView/epics/createSessionEpic.js +2 -1
  66. package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
  67. package/lib/esm/view/companyTaskManagerView/companyTaskManagerViewReducer.js +39 -11
  68. package/lib/esm/view/companyTaskManagerView/companyTaskManagerViewSelector.js +14 -4
  69. package/lib/esm/view/companyTaskManagerView/epics/fetchCockpitContextEpic.js +38 -0
  70. package/lib/esm/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +37 -28
  71. package/lib/esm/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.js +16 -0
  72. package/lib/esm/view/companyView/epic/fetchAllCockpitViewsEpic.js +2 -2
  73. package/lib/esm/view/spendManagement/autotransferRules/autoTransferRulesSelector.js +22 -2
  74. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.js +29 -0
  75. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.js +78 -0
  76. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.js +47 -0
  77. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.js +47 -0
  78. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.js +34 -0
  79. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.js +32 -0
  80. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +54 -0
  81. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +92 -0
  82. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +225 -0
  83. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +10 -0
  84. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +23 -0
  85. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +36 -0
  86. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.js +27 -0
  87. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.js +28 -0
  88. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +52 -0
  89. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +22 -0
  90. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +1 -0
  91. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +36 -0
  92. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +39 -0
  93. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +34 -0
  94. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +58 -0
  95. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +21 -0
  96. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +1 -0
  97. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +38 -0
  98. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +289 -0
  99. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +109 -0
  100. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +44 -0
  101. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +111 -0
  102. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +25 -0
  103. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +363 -0
  104. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +36 -0
  105. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +19 -0
  106. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +6 -0
  107. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +119 -0
  108. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +154 -0
  109. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +22 -0
  110. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +1 -0
  111. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +39 -0
  112. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +140 -0
  113. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +20 -0
  114. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +100 -0
  115. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +96 -0
  116. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +59 -0
  117. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +24 -0
  118. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +25 -0
  119. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +1 -0
  120. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +34 -0
  121. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +57 -0
  122. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +35 -0
  123. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +2 -2
  124. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +42 -4
  125. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +35 -0
  126. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +62 -0
  127. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +44 -0
  128. package/lib/index.d.ts +59 -15
  129. package/lib/index.js +213 -22
  130. package/lib/reducer.d.ts +18 -0
  131. package/lib/reducer.js +18 -0
  132. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +11 -2
  133. package/lib/view/aiCfoView/aiCfoViewReducer.js +6 -3
  134. package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
  135. package/lib/view/aiCfoView/epics/createSessionEpic.js +2 -1
  136. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +8 -1
  137. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
  138. package/lib/view/companyTaskManagerView/companyTaskManagerViewPayload.d.ts +19 -11
  139. package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.d.ts +10 -4
  140. package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.js +40 -12
  141. package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.d.ts +2 -0
  142. package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.js +13 -3
  143. package/lib/view/companyTaskManagerView/companyTaskManagerViewState.d.ts +11 -3
  144. package/lib/view/companyTaskManagerView/epics/fetchCockpitContextEpic.d.ts +10 -0
  145. package/lib/view/companyTaskManagerView/epics/fetchCockpitContextEpic.js +42 -0
  146. package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.d.ts +1 -3
  147. package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +37 -28
  148. package/lib/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.d.ts +6 -0
  149. package/lib/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.js +20 -0
  150. package/lib/view/companyView/epic/fetchAllCockpitViewsEpic.js +2 -2
  151. package/lib/view/companyView/types/cockpitTypes.d.ts +2 -1
  152. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  153. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -1
  154. package/lib/view/people/peopleTypes.d.ts +1 -1
  155. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  156. package/lib/view/spendManagement/autotransferRules/autoTransferRulesSelector.d.ts +8 -1
  157. package/lib/view/spendManagement/autotransferRules/autoTransferRulesSelector.js +21 -1
  158. package/lib/view/spendManagement/autotransferRules/autoTransferRulesState.d.ts +22 -0
  159. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.d.ts +47 -0
  160. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.js +34 -0
  161. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.d.ts +23 -0
  162. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.js +82 -0
  163. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.d.ts +40 -0
  164. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.js +51 -0
  165. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.d.ts +37 -0
  166. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.js +53 -0
  167. package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.d.ts +14 -0
  168. package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.js +38 -0
  169. package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.d.ts +7 -0
  170. package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.js +36 -0
  171. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.d.ts +56 -0
  172. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +60 -0
  173. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.d.ts +22 -0
  174. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +96 -0
  175. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.d.ts +59 -0
  176. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +230 -0
  177. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.d.ts +122 -0
  178. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +13 -0
  179. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.d.ts +7 -0
  180. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +27 -0
  181. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.d.ts +9 -0
  182. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +40 -0
  183. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.d.ts +7 -0
  184. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.js +31 -0
  185. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.d.ts +15 -0
  186. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.js +32 -0
  187. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.d.ts +14 -0
  188. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +56 -0
  189. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.d.ts +15 -0
  190. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +28 -0
  191. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.d.ts +8 -0
  192. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +2 -0
  193. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.d.ts +8 -0
  194. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +40 -0
  195. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.d.ts +8 -0
  196. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +43 -0
  197. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.d.ts +8 -0
  198. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +38 -0
  199. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.d.ts +15 -0
  200. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +62 -0
  201. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.d.ts +15 -0
  202. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +27 -0
  203. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.d.ts +7 -0
  204. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +2 -0
  205. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.d.ts +8 -0
  206. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +42 -0
  207. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +8 -0
  208. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +294 -0
  209. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +8 -0
  210. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +113 -0
  211. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +9 -0
  212. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +48 -0
  213. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +8 -0
  214. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +115 -0
  215. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +13 -0
  216. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +29 -0
  217. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +14 -0
  218. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +369 -0
  219. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +6 -0
  220. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +40 -0
  221. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +7 -0
  222. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +26 -0
  223. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +116 -0
  224. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +10 -0
  225. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +33 -0
  226. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +126 -0
  227. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +52 -0
  228. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +158 -0
  229. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +11 -0
  230. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +31 -0
  231. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +12 -0
  232. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +2 -0
  233. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.d.ts +8 -0
  234. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +43 -0
  235. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +10 -0
  236. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +144 -0
  237. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.d.ts +7 -0
  238. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +24 -0
  239. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +11 -0
  240. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +104 -0
  241. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +22 -0
  242. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +100 -0
  243. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +8 -0
  244. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +63 -0
  245. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +3 -0
  246. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +28 -0
  247. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
  248. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.d.ts +14 -0
  249. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +27 -1
  250. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +34 -0
  251. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +2 -0
  252. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +7 -0
  253. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +38 -0
  254. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +12 -0
  255. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +61 -0
  256. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +9 -0
  257. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +39 -0
  258. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.d.ts +2 -2
  259. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +1 -1
  260. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +12 -2
  261. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +43 -5
  262. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +7 -0
  263. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +42 -1
  264. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +5 -0
  265. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +11 -0
  266. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +66 -0
  267. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +3 -0
  268. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +48 -0
  269. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +1 -1
  270. package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +1 -1
  271. package/lib/zeniAPI.d.ts +1 -0
  272. package/package.json +1 -1
@@ -3,7 +3,8 @@ export const initialUIState = {
3
3
  filterText: '',
4
4
  sortKey: 'dueDate',
5
5
  sortOrder: 'descending',
6
- pageToken: null,
6
+ from: 0,
7
+ filters: {},
7
8
  };
8
9
  const initialMetrics = {
9
10
  closed: 0,
@@ -18,6 +19,13 @@ export const initialState = {
18
19
  metrics: initialMetrics,
19
20
  metricsFetchState: 'Not-Started',
20
21
  uiState: initialUIState,
22
+ cockpitContext: {
23
+ fetchState: 'Not-Started',
24
+ error: undefined,
25
+ companyIds: [],
26
+ userIds: [],
27
+ userGroupIds: [],
28
+ },
21
29
  hasValidState() {
22
30
  return this.fetchState == 'Completed';
23
31
  },
@@ -28,10 +36,11 @@ const companyTaskManagerView = createSlice({
28
36
  initialState,
29
37
  reducers: {
30
38
  fetchCompanyTaskManagerView: {
31
- prepare(pageToken, sortKey, sortOrder, keepExistingListItems = true, searchString) {
39
+ prepare(from, sortKey, sortOrder, keepExistingListItems = true, searchString, filters) {
32
40
  return {
33
41
  payload: {
34
- pageToken,
42
+ from,
43
+ filters,
35
44
  searchString,
36
45
  sortKey,
37
46
  sortOrder,
@@ -40,10 +49,10 @@ const companyTaskManagerView = createSlice({
40
49
  };
41
50
  },
42
51
  reducer(draft, action) {
43
- const { pageToken, searchString, sortKey, sortOrder, keepExistingListItems, } = action.payload;
52
+ const { from, searchString, sortKey, sortOrder, keepExistingListItems } = action.payload;
44
53
  draft.uiState.sortKey = sortKey;
45
54
  draft.uiState.sortOrder = sortOrder;
46
- draft.uiState.pageToken = pageToken;
55
+ draft.uiState.from = from;
47
56
  if (keepExistingListItems === false) {
48
57
  draft.taskIds = [];
49
58
  }
@@ -56,15 +65,14 @@ const companyTaskManagerView = createSlice({
56
65
  },
57
66
  updateCompanyTaskManagerViewOnSuccess(draft, action) {
58
67
  const { data } = action.payload;
59
- const { tasks, query, total_count } = data;
68
+ const tasks = data.aggregations.group_by_company_name.buckets.flatMap((bucket) => bucket.tasks);
60
69
  draft.fetchState = 'Completed';
61
70
  draft.error = undefined;
62
71
  draft.taskIds = [...draft.taskIds, ...tasks.map((task) => task.task_id)];
63
- // consider total count only when fetching for first time
64
- if (draft.uiState.filterText === '' && draft.uiState.pageToken == null) {
65
- draft.totalTaskCount = total_count;
72
+ if (draft.uiState.filterText === '' && draft.uiState.from === 0) {
73
+ draft.totalTaskCount = data.total;
66
74
  }
67
- draft.uiState.pageToken = query.page_token;
75
+ draft.uiState.from = data.from + data.limit;
68
76
  },
69
77
  updateCompanyTaskManagerViewOnFailure: {
70
78
  reducer(draft, action) {
@@ -85,10 +93,30 @@ const companyTaskManagerView = createSlice({
85
93
  updateTaskManagerMetricsOnFailure(draft) {
86
94
  draft.metricsFetchState = 'Error';
87
95
  },
96
+ updateCompanyTaskManagerViewFilters(draft, action) {
97
+ if (action.payload.filters != null) {
98
+ draft.uiState.filters = action.payload.filters;
99
+ }
100
+ },
101
+ fetchCockpitContext(draft) {
102
+ draft.cockpitContext.fetchState = 'In-Progress';
103
+ draft.cockpitContext.error = undefined;
104
+ },
105
+ updateCockpitContextOnSuccess(draft, action) {
106
+ draft.cockpitContext.fetchState = 'Completed';
107
+ draft.cockpitContext.error = undefined;
108
+ draft.cockpitContext.companyIds = action.payload.companyIds;
109
+ draft.cockpitContext.userIds = action.payload.userIds;
110
+ draft.cockpitContext.userGroupIds = action.payload.userGroupIds;
111
+ },
112
+ updateCockpitContextOnFailure(draft, action) {
113
+ draft.cockpitContext.fetchState = 'Error';
114
+ draft.cockpitContext.error = action.payload;
115
+ },
88
116
  clearCompanyTaskManagerView(draft) {
89
117
  Object.assign(draft, initialState);
90
118
  },
91
119
  },
92
120
  });
93
- export const { fetchCompanyTaskManagerView, updateCompanyTaskManagerViewOnSuccess, updateCompanyTaskManagerViewOnFailure, fetchTaskManagerMetrics, updateTaskManagerMetrics, updateTaskManagerMetricsOnFailure, clearCompanyTaskManagerView, } = companyTaskManagerView.actions;
121
+ export const { fetchCompanyTaskManagerView, updateCompanyTaskManagerViewOnSuccess, updateCompanyTaskManagerViewOnFailure, fetchTaskManagerMetrics, updateTaskManagerMetrics, updateTaskManagerMetricsOnFailure, clearCompanyTaskManagerView, updateCompanyTaskManagerViewFilters, fetchCockpitContext, updateCockpitContextOnSuccess, updateCockpitContextOnFailure, } = companyTaskManagerView.actions;
94
122
  export default companyTaskManagerView.reducer;
@@ -1,10 +1,11 @@
1
1
  import { createSelector } from '@reduxjs/toolkit';
2
- import { getCompanyByCompanyId } from '../../entity/company/companySelector';
2
+ import { reduceAnyFetchState } from '../../commonStateTypes/reduceFetchState';
3
+ import { getCompanyByCompanyId, getCompanyByCompanyIds, } from '../../entity/company/companySelector';
3
4
  import { getTagsByIds } from '../../entity/tag/tagSelector';
4
5
  import { getTaskById } from '../../entity/task/taskSelector';
5
6
  import { getUserByUserId, getUsersByUserIds, } from '../../entity/user/userSelector';
6
7
  export const getCompanyTaskManagerView = createSelector((state) => state.companyTaskManagerViewState, (state) => state.companyState, (state) => state.userState, (state) => state.taskState, (state) => state.tagState, (companyTaskManagerViewState, companyState, userState, taskState, tagState) => {
7
- const { taskIds, uiState, fetchState, error, totalTaskCount, metrics, metricsFetchState, } = companyTaskManagerViewState;
8
+ const { taskIds, uiState, totalTaskCount, metrics, metricsFetchState } = companyTaskManagerViewState;
8
9
  const tasksList = [];
9
10
  taskIds.forEach((taskId) => {
10
11
  const task = getTaskById(taskState, taskId);
@@ -26,13 +27,22 @@ export const getCompanyTaskManagerView = createSelector((state) => state.company
26
27
  }
27
28
  }
28
29
  });
30
+ const allCompanyIds = companyTaskManagerViewState.cockpitContext.companyIds;
31
+ const companies = getCompanyByCompanyIds(companyState, allCompanyIds).map((c) => c.company);
32
+ const users = getUsersByUserIds(userState, companyTaskManagerViewState.cockpitContext.userIds);
33
+ const fetchStateAndError = reduceAnyFetchState([
34
+ companyTaskManagerViewState,
35
+ companyTaskManagerViewState.cockpitContext,
36
+ ]);
29
37
  return {
38
+ companies,
30
39
  metrics,
31
40
  metricsFetchState,
32
41
  tasksList,
33
42
  uiState,
34
- fetchState,
35
- error,
43
+ fetchState: fetchStateAndError.fetchState,
44
+ error: fetchStateAndError.error,
36
45
  totalTaskCount,
46
+ users,
37
47
  };
38
48
  });
@@ -0,0 +1,38 @@
1
+ import { from, of } from 'rxjs';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
+ import { updateCompanies } from '../../../entity/company/companyReducer';
4
+ import { updateAllUsers } from '../../../entity/user/userReducer';
5
+ import { updateAllUserGroups } from '../../../entity/userGroups/userGroupsReducer';
6
+ import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
7
+ import { fetchCockpitContext, updateCockpitContextOnFailure, updateCockpitContextOnSuccess, } from '../companyTaskManagerViewReducer';
8
+ export const fetchCockpitContextEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchCockpitContext.match), switchMap(() => zeniAPI
9
+ .getJSON(`${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/cockpit-panels/cockpit-context`)
10
+ .pipe(mergeMap((response) => {
11
+ if (isSuccessResponse(response) && response.data != null) {
12
+ const companies = response.data?.companies ?? [];
13
+ const users = response.data?.users ?? [];
14
+ const userGroups = response.data?.user_groups ?? [];
15
+ const companyIds = companies.map((company) => company.company_id);
16
+ const userIds = users.map((user) => user.user_id);
17
+ const userGroupIds = userGroups.map((userGroup) => userGroup.id);
18
+ const actions = [
19
+ updateCompanies({
20
+ payload: response.data.companies,
21
+ schema: {},
22
+ }),
23
+ updateAllUsers({ users: response.data.users }),
24
+ updateAllUserGroups({
25
+ userGroups: response.data.user_groups,
26
+ }),
27
+ updateCockpitContextOnSuccess({
28
+ companyIds,
29
+ userIds,
30
+ userGroupIds,
31
+ }),
32
+ ];
33
+ return from(actions);
34
+ }
35
+ else {
36
+ return of(updateCockpitContextOnFailure(response.status));
37
+ }
38
+ }), catchError((error) => of(updateCockpitContextOnFailure(createZeniAPIStatus('Unexpected error', 'Cockpit context fetch errored out' + JSON.stringify(error))))))));
@@ -1,51 +1,35 @@
1
1
  import { from } from 'rxjs';
2
2
  import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
3
  import { getSortOrder } from '../../../commonPayloadTypes/sortOrderPayload';
4
- import { updateCompanies } from '../../../entity/company/companyReducer';
5
4
  import { updateTags } from '../../../entity/tag/tagReducer';
6
5
  import { updateTasks } from '../../../entity/task/taskReducer';
7
- import { updateAllUsers } from '../../../entity/user/userReducer';
8
6
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
9
7
  import { fetchCompanyTaskManagerView, updateCompanyTaskManagerViewOnFailure, updateCompanyTaskManagerViewOnSuccess, } from '../companyTaskManagerViewReducer';
10
- const toSortKeyPayload = (sortKey) => {
11
- switch (sortKey) {
12
- case 'taskName':
13
- return 'name';
14
- case 'dueDate':
15
- return 'due_date';
16
- case 'createdBy':
17
- return 'created_by';
18
- case 'name':
19
- return 'company_name';
20
- default:
21
- return sortKey;
22
- }
23
- };
8
+ const DEFAULT_PAGE_SIZE = 100;
24
9
  export const fetchCompanyTaskManagerViewEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchCompanyTaskManagerView.match), switchMap((action) => {
25
- const { pageToken, sortKey, sortOrder, searchString } = action.payload;
10
+ const { from: fromOffset, searchString, sortKey, sortOrder, filters, } = action.payload;
26
11
  const queryValue = {
27
- page_token: pageToken,
12
+ size: DEFAULT_PAGE_SIZE,
13
+ from: fromOffset,
14
+ global_search: searchString ?? '',
28
15
  sort_by: toSortKeyPayload(sortKey),
29
16
  sort_order: getSortOrder(sortOrder),
30
- search_text: searchString ?? '',
31
- view: 'cockpit_task_manager_view',
17
+ filter_join: filters?.categoryCombinationOperator === 'AND' ? 'and' : 'or',
18
+ ...(filters?.categories != null && filters.categories.length > 0
19
+ ? { filter_by: toFilterByPayload(filters) }
20
+ : {}),
32
21
  };
33
22
  return zeniAPI
34
- .getJSON(`${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/cockpit-panels/tasks?query=${encodeURIComponent(JSON.stringify(queryValue))}`)
23
+ .getJSON(`${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/cockpit-panels/tasks-es?query=${encodeURIComponent(JSON.stringify(queryValue))}`)
35
24
  .pipe(mergeMap((response) => {
36
25
  if (isSuccessResponse(response) && response.data != null) {
37
- const tasksList = response.data.tasks;
26
+ const tasksList = response.data.aggregations.group_by_company_name.buckets.flatMap((bucket) => bucket.tasks);
38
27
  const actions = [
39
28
  updateCompanyTaskManagerViewOnSuccess({
40
29
  data: response.data,
41
30
  }),
42
31
  updateTasks(tasksList),
43
- updateCompanies({
44
- payload: response.data.companies,
45
- schema: {},
46
- }),
47
- updateTags(tasksList.map((task) => task.tags).flat()),
48
- updateAllUsers({ users: response.data.users }),
32
+ updateTags(tasksList.flatMap((task) => task.tags)),
49
33
  ];
50
34
  return from(actions);
51
35
  }
@@ -62,3 +46,28 @@ export const fetchCompanyTaskManagerViewEpic = (actions$, _state$, zeniAPI) => a
62
46
  return from(actions);
63
47
  }));
64
48
  }));
49
+ const toSortKeyPayload = (sortKey) => {
50
+ switch (sortKey) {
51
+ case 'taskName':
52
+ return 'name';
53
+ case 'dueDate':
54
+ return 'due_date';
55
+ case 'createdBy':
56
+ return 'created_by';
57
+ case 'name':
58
+ return 'company_name';
59
+ default:
60
+ return sortKey;
61
+ }
62
+ };
63
+ const toFilterByPayload = (filters) => {
64
+ if (filters.categories == null) {
65
+ return [];
66
+ }
67
+ return filters.categories.map((category) => ({
68
+ field: category.field ?? '',
69
+ operator: category.matchingOperator === 'equal' ? 'is' : 'is_not',
70
+ values: category.values.map((v) => String(v)),
71
+ join: category.valuesCombinationOperator === 'ALL' ? 'and' : 'or',
72
+ }));
73
+ };
@@ -0,0 +1,16 @@
1
+ import { EMPTY, of } from 'rxjs';
2
+ import { filter, switchMap } from 'rxjs/operators';
3
+ import { fetchCompanyTaskManagerView, updateCompanyTaskManagerViewFilters, } from '../companyTaskManagerViewReducer';
4
+ export const updateCompanyTaskManagerViewFiltersEpic = (actions$, state$) => actions$.pipe(filter(updateCompanyTaskManagerViewFilters.match), switchMap((action) => {
5
+ const filters = action.payload.filters;
6
+ const allCategoriesValid = filters?.categories == null
7
+ ? true
8
+ : filters?.categories?.every((category) => category.field != null &&
9
+ category.values != null &&
10
+ category.values.length > 0);
11
+ if (!allCategoriesValid) {
12
+ return EMPTY;
13
+ }
14
+ const { uiState } = state$.value.companyTaskManagerViewState;
15
+ return of(fetchCompanyTaskManagerView(0, uiState.sortKey, uiState.sortOrder, false, uiState.filterText, filters));
16
+ }));
@@ -21,7 +21,7 @@ export const fetchAllCockpitViewsEpic = (actions$, state$) => actions$.pipe(filt
21
21
  fetchReviewCompanyView(),
22
22
  fetchCompanyHealthMetricView(),
23
23
  fetchCompanyMetaData(),
24
- fetchCompanyTaskManagerView(null, 'dueDate', 'descending', false),
24
+ fetchCompanyTaskManagerView(0, 'dueDate', 'descending', false),
25
25
  fetchCompanyHealthMetricConfig(),
26
26
  ]);
27
27
  }
@@ -74,7 +74,7 @@ export const fetchAllCockpitViewsEpic = (actions$, state$) => actions$.pipe(filt
74
74
  }
75
75
  if (state.companyTaskManagerViewState.fetchState !== 'In-Progress' &&
76
76
  state.companyTaskManagerViewState.hasValidState() === false) {
77
- fetchActions.push(fetchCompanyTaskManagerView(null, 'dueDate', 'descending', false));
77
+ fetchActions.push(fetchCompanyTaskManagerView(0, 'dueDate', 'descending', false));
78
78
  }
79
79
  return from(fetchActions);
80
80
  }
@@ -1,10 +1,29 @@
1
1
  import recordGet from 'lodash/get';
2
2
  import { reduceAllFetchState } from '../../../commonStateTypes/reduceFetchState';
3
- import { getAllFundingAccounts, } from '../commonSetup/setupViewSelector';
3
+ import { getDepositAccountByDepositAccountId } from '../../../entity/depositAccount/depositAccountSelector';
4
+ import { getAllFundingAccounts, mapDepositAccToFundingAccount, } from '../commonSetup/setupViewSelector';
4
5
  import { getAllDepositAccounts } from '../zeniAccounts/depositAccountList/depositAccountListSelector';
5
6
  import { getAllPaymentAccounts } from '../zeniAccounts/paymentAccountList/paymentAccountListSelector';
7
+ const buildCashManagementRule = (autoSweepFlowState, depositAccountState, treasuryDetailState) => {
8
+ const { settingsId, bufferAmount, frequency, memo, primaryFundingAccountId, nextTransferDate } = autoSweepFlowState;
9
+ if (settingsId == null || primaryFundingAccountId == null) {
10
+ return undefined;
11
+ }
12
+ const depositAccount = getDepositAccountByDepositAccountId(depositAccountState, primaryFundingAccountId);
13
+ return {
14
+ bufferAmount,
15
+ frequency,
16
+ memo,
17
+ settingsId,
18
+ primaryFundingAccount: depositAccount != null
19
+ ? mapDepositAccToFundingAccount(depositAccount)
20
+ : undefined,
21
+ treasurySummary: treasuryDetailState.accountSummary,
22
+ nextTransferDate,
23
+ };
24
+ };
6
25
  export const getAutoTransferRules = (state) => {
7
- const { autotransferRulesState, depositAccountState, paymentAccountState, depositAccountListState, paymentAccountListState, treasuryDetailState, } = state;
26
+ const { autotransferRulesState, autoSweepFlowState, depositAccountState, paymentAccountState, depositAccountListState, paymentAccountListState, treasuryDetailState, } = state;
8
27
  const { rules, error, historyByRuleId, ruleUpdateLocalData, ruleUpdateStatusById, ruleDeleteStatusById, createRuleFetchState, autoTransferReviewDetail, } = autotransferRulesState;
9
28
  const depositAccountsView = getAllDepositAccounts(depositAccountState, depositAccountListState);
10
29
  const paymentAccountsView = getAllPaymentAccounts(paymentAccountState, paymentAccountListState);
@@ -39,6 +58,7 @@ export const getAutoTransferRules = (state) => {
39
58
  transferMoneyParties,
40
59
  transferMoneyPartiesFetchState,
41
60
  createRuleFetchState,
61
+ cashManagementRule: buildCashManagementRule(autoSweepFlowState, depositAccountState, treasuryDetailState),
42
62
  fetchState,
43
63
  error,
44
64
  version: 0,
@@ -0,0 +1,29 @@
1
+ import { toAmount } from '../../../../commonStateTypes/amount';
2
+ import { date } from '../../../../zeniDayJS';
3
+ import { toAutoSweepFrequency, } from './autoSweepFlowState';
4
+ export const toSaveAutoSweepSettingsBody = (state) => ({
5
+ frequency: state.frequency,
6
+ memo: state.memo,
7
+ minimum_buffer_usd: state.bufferAmount.amount,
8
+ });
9
+ /**
10
+ * Map a `GET /cash-management/settings` payload into the slice's writable
11
+ * fields. Defensive on the frequency (string-from-the-wire → union via
12
+ * `toAutoSweepFrequency`, falling back to `'weekly'` if the server returns
13
+ * something we don't model yet). Only the source account *id* is stored
14
+ * here — the full deposit-account payload is published to the entity bucket
15
+ * by the fetch epic.
16
+ */
17
+ export const toAutoSweepFlowStatePatch = (payload) => {
18
+ const currencyCode = payload.source_bank_account.balances?.currency_code;
19
+ const currencySymbol = payload.source_bank_account.balances?.currency_symbol;
20
+ return {
21
+ bufferAmount: toAmount(payload.minimum_buffer_usd, currencyCode ?? 'USD', currencySymbol ?? '$'),
22
+ frequency: toAutoSweepFrequency(payload.frequency) ?? 'weekly',
23
+ nextTransferDate: payload.next_transfer_date != null && payload.next_transfer_date !== ''
24
+ ? date(payload.next_transfer_date)
25
+ : undefined,
26
+ primaryFundingAccountId: payload.source_bank_account.deposit_account_id ?? undefined,
27
+ settingsId: payload.cash_management_settings_id ?? undefined,
28
+ };
29
+ };
@@ -0,0 +1,78 @@
1
+ import { createSlice } from '@reduxjs/toolkit';
2
+ import { toAutoSweepFlowStatePatch, } from './autoSweepFlowPayload';
3
+ import { initialAutoSweepFlowState, } from './autoSweepFlowState';
4
+ export const initialState = initialAutoSweepFlowState;
5
+ const autoSweepFlow = createSlice({
6
+ name: 'autoSweepFlow',
7
+ initialState,
8
+ reducers: {
9
+ /**
10
+ * Kicks off `GET /cash-management/settings`. Flips the top-level
11
+ * fetchState to `In-Progress`; the fetch epic picks this up.
12
+ */
13
+ fetchCashManagementSettings(draft) {
14
+ draft.fetchState = 'In-Progress';
15
+ draft.error = undefined;
16
+ },
17
+ /**
18
+ * Hydrates the form fields with the server-side settings (and stashes
19
+ * the settings id for subsequent saves). Marks the GET as `Completed`.
20
+ */
21
+ updateCashManagementSettings(draft, action) {
22
+ const patch = toAutoSweepFlowStatePatch(action.payload.data);
23
+ draft.bufferAmount = patch.bufferAmount;
24
+ draft.frequency = patch.frequency;
25
+ draft.nextTransferDate = patch.nextTransferDate;
26
+ draft.primaryFundingAccountId = patch.primaryFundingAccountId;
27
+ draft.settingsId = patch.settingsId;
28
+ draft.fetchState = 'Completed';
29
+ draft.error = undefined;
30
+ },
31
+ updateCashManagementSettingsFetchStatus(draft, action) {
32
+ draft.fetchState = action.payload.fetchState;
33
+ draft.error = action.payload.error;
34
+ },
35
+ /**
36
+ * Live-update the buffer (risk band) as the user toggles the risk picker
37
+ * on the setup page, without staging frequency/memo. The selector derives
38
+ * the risk-adjusted sweep amount off `bufferAmount`, so dispatching this on
39
+ * every risk change keeps the setup and review screens in sync.
40
+ */
41
+ updateAutoSweepRisk(draft, action) {
42
+ draft.bufferAmount = action.payload.bufferAmount;
43
+ },
44
+ /**
45
+ * Stage the in-flight form values without submitting them — fired from
46
+ * the setup→review transition so other selectors (and devtools) can see
47
+ * what the user is about to confirm. Leaves `saveStatus` untouched; the
48
+ * actual PUT only kicks off when the user clicks "Confirm Sweep" via
49
+ * `saveAutoSweepSettings`.
50
+ */
51
+ updateAutoSweepDraft(draft, action) {
52
+ draft.bufferAmount = action.payload.bufferAmount;
53
+ draft.frequency = action.payload.frequency;
54
+ draft.memo = action.payload.memo;
55
+ },
56
+ /**
57
+ * Trigger the PUT for the auto-sweep settings already staged via
58
+ * `updateAutoSweepDraft`. Carries no payload — flips `saveStatus` to
59
+ * `In-Progress` and the save epic reads `bufferAmount` / `frequency` /
60
+ * `memo` straight from the slice. Callers must ensure those fields
61
+ * reflect the user's latest input before dispatching.
62
+ */
63
+ saveAutoSweepSettings(draft) {
64
+ draft.saveStatus = { fetchState: 'In-Progress', error: undefined };
65
+ },
66
+ updateAutoSweepSettingsFetchStatus(draft, action) {
67
+ draft.saveStatus = {
68
+ fetchState: action.payload.fetchState,
69
+ error: action.payload.error,
70
+ };
71
+ },
72
+ clearAutoSweepFlow() {
73
+ return initialAutoSweepFlowState;
74
+ },
75
+ },
76
+ });
77
+ export const { fetchCashManagementSettings, updateCashManagementSettings, updateCashManagementSettingsFetchStatus, updateAutoSweepRisk, updateAutoSweepDraft, saveAutoSweepSettings, updateAutoSweepSettingsFetchStatus, clearAutoSweepFlow, } = autoSweepFlow.actions;
78
+ export default autoSweepFlow.reducer;
@@ -0,0 +1,47 @@
1
+ import { getDepositAccountByDepositAccountId } from '../../../../entity/depositAccount/depositAccountSelector';
2
+ import { mapDepositAccToFundingAccount, } from '../../commonSetup/setupViewSelector';
3
+ import { getTreasuryDetail } from '../../treasury/treasuryList/treasuryDetailSelector';
4
+ import { getCashManagementOverviewBanner } from '../cashManagementOverview/cashManagementOverviewSelector';
5
+ import { RISK_BUFFER_AMOUNT, bufferAmountToRisk, } from './autoSweepFlowState';
6
+ /**
7
+ * Risk band the agent's recommended sweep amount is computed against. The
8
+ * `sweepAmount` returned by the banner assumes this buffer, so the selector
9
+ * adjusts the displayed sweep by the delta between the user's selected band
10
+ * and this default.
11
+ */
12
+ const DEFAULT_RISK_LEVEL = 'moderate';
13
+ export const getAutoSweepFlow = (state) => {
14
+ const { bufferAmount, frequency, memo, saveStatus, settingsId, primaryFundingAccountId, fetchState, error, } = state.autoSweepFlowState;
15
+ const depositAccount = primaryFundingAccountId != null
16
+ ? getDepositAccountByDepositAccountId(state.depositAccountState, primaryFundingAccountId)
17
+ : undefined;
18
+ const risk = bufferAmountToRisk(bufferAmount.amount);
19
+ // The banner's recommended sweep assumes the default buffer band; shift it
20
+ // by the delta between the user's selected band and that default so a
21
+ // tighter buffer sweeps more and a looser buffer sweeps less.
22
+ const baseSweepAmount = getCashManagementOverviewBanner(state).amount;
23
+ const sweepAmount = {
24
+ ...baseSweepAmount,
25
+ amount: baseSweepAmount.amount +
26
+ RISK_BUFFER_AMOUNT[risk] -
27
+ RISK_BUFFER_AMOUNT[DEFAULT_RISK_LEVEL],
28
+ };
29
+ return {
30
+ fetchState,
31
+ error,
32
+ formData: {
33
+ bufferAmount,
34
+ frequency,
35
+ memo,
36
+ risk,
37
+ },
38
+ primaryFundingAccount: depositAccount != null
39
+ ? mapDepositAccToFundingAccount(depositAccount)
40
+ : undefined,
41
+ saveStatus,
42
+ settingsId,
43
+ sweepAmount,
44
+ treasurySummary: getTreasuryDetail(state).accountSummary,
45
+ version: 0,
46
+ };
47
+ };
@@ -0,0 +1,47 @@
1
+ import { toAmount } from '../../../../commonStateTypes/amount';
2
+ import { stringToUnion } from '../../../../commonStateTypes/stringToUnion';
3
+ /**
4
+ * Cadence at which the auto-sweep transfer fires. Lowercase to match the
5
+ * cash-management settings API contract (and the `SweepFrequency` literal
6
+ * already used by `<AutoSweepSetupPage>` in web-components).
7
+ */
8
+ export const ALL_AUTO_SWEEP_FREQUENCIES = [
9
+ 'daily',
10
+ 'weekly',
11
+ 'biweekly',
12
+ 'monthly',
13
+ ];
14
+ export const toAutoSweepFrequency = (v) => stringToUnion(v ?? '', ALL_AUTO_SWEEP_FREQUENCIES);
15
+ /**
16
+ * Risk presets the auto-sweep setup form exposes. Each level maps to a
17
+ * canonical minimum-buffer amount (USD). Selecting a level in the UI is
18
+ * shorthand for choosing that buffer.
19
+ */
20
+ export const ALL_AUTO_SWEEP_RISK_LEVELS = ['low', 'moderate', 'high'];
21
+ export const toAutoSweepRiskLevel = (v) => stringToUnion(v ?? '', ALL_AUTO_SWEEP_RISK_LEVELS);
22
+ export const RISK_BUFFER_AMOUNT = {
23
+ low: 15000,
24
+ moderate: 10000,
25
+ high: 5000,
26
+ };
27
+ /**
28
+ * Maps a buffer amount back onto the closest preset risk level. Falls back
29
+ * to `'moderate'` when the amount doesn't match a known preset (e.g. the
30
+ * server returned a custom value). The dropdown in `<AutoSweepSetupPage>`
31
+ * uses this so it can pre-select the user's existing band on edit.
32
+ */
33
+ export const bufferAmountToRisk = (amount) => {
34
+ const match = Object.entries(RISK_BUFFER_AMOUNT).find(([, presetAmount]) => presetAmount === amount);
35
+ return match != null ? match[0] : 'moderate';
36
+ };
37
+ export const initialAutoSweepFlowState = {
38
+ bufferAmount: toAmount(10000, 'USD', '$'),
39
+ frequency: 'weekly',
40
+ memo: '',
41
+ saveStatus: { fetchState: 'Not-Started', error: undefined },
42
+ nextTransferDate: undefined,
43
+ primaryFundingAccountId: undefined,
44
+ settingsId: undefined,
45
+ fetchState: 'Not-Started',
46
+ error: undefined,
47
+ };
@@ -0,0 +1,34 @@
1
+ import { of } from 'rxjs';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
+ import { updateDepositAccounts } from '../../../../../entity/depositAccount/depositAccountReducer';
4
+ import { createZeniAPIStatus, isSuccessResponse, } from '../../../../../responsePayload';
5
+ import { fetchCashManagementSettings, updateCashManagementSettings, updateCashManagementSettingsFetchStatus, } from '../autoSweepFlowReducer';
6
+ /**
7
+ * Hits `GET /cash-management/settings` and hydrates the auto-sweep slice
8
+ * with the server's existing settings (frequency, minimum buffer, settings
9
+ * id). Called from the cash management overview page-fetch epic alongside
10
+ * the other top-level fetches.
11
+ */
12
+ export const fetchCashManagementSettingsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchCashManagementSettings.match), switchMap(() => {
13
+ const endpoint = `${zeniAPI.apiEndPoints.cashManagementAgentBaseUrl}/1.0/cash-management/settings`;
14
+ return zeniAPI
15
+ .getJSON(endpoint)
16
+ .pipe(mergeMap((response) => {
17
+ if (isSuccessResponse(response) && response.data != null) {
18
+ return of(
19
+ // Publish the source deposit account into the shared entity
20
+ // bucket so the selector can hydrate the full `FundingAccount`
21
+ // from `getDepositAccountByDepositAccountId` rather than the
22
+ // auto-sweep slice holding a duplicate copy.
23
+ updateDepositAccounts([response.data.source_bank_account]), updateCashManagementSettings({ data: response.data }));
24
+ }
25
+ return of(updateCashManagementSettingsFetchStatus({
26
+ fetchState: 'Error',
27
+ error: response.status,
28
+ }));
29
+ }), catchError((error) => of(updateCashManagementSettingsFetchStatus({
30
+ fetchState: 'Error',
31
+ error: createZeniAPIStatus('Unexpected Error', 'Fetch cash management settings REST API call errored out: ' +
32
+ (error?.message ?? String(error))),
33
+ }))));
34
+ }));
@@ -0,0 +1,32 @@
1
+ import { of } from 'rxjs';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
+ import { createZeniAPIStatus, isSuccessResponse, } from '../../../../../responsePayload';
4
+ import { toSaveAutoSweepSettingsBody, } from '../autoSweepFlowPayload';
5
+ import { saveAutoSweepSettings, updateAutoSweepSettingsFetchStatus, } from '../autoSweepFlowReducer';
6
+ export const saveAutoSweepSettingsEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(saveAutoSweepSettings.match), switchMap(() => {
7
+ const endpoint = `${zeniAPI.apiEndPoints.cashManagementAgentBaseUrl}/1.0/cash-management/settings`;
8
+ const { bufferAmount, frequency, memo, settingsId } = state$.value.autoSweepFlowState;
9
+ const payload = toSaveAutoSweepSettingsBody({
10
+ bufferAmount,
11
+ frequency,
12
+ memo,
13
+ });
14
+ // First-time setup (no settings id from the GET yet) → POST a new
15
+ // record. Subsequent edits update the existing one via PUT.
16
+ const request$ = settingsId == null
17
+ ? zeniAPI.postAndGetJSON(endpoint, payload)
18
+ : zeniAPI.putAndGetJSON(endpoint, payload);
19
+ return request$.pipe(mergeMap((response) => {
20
+ if (isSuccessResponse(response) && response.data != null) {
21
+ return of(updateAutoSweepSettingsFetchStatus({ fetchState: 'Completed' }));
22
+ }
23
+ return of(updateAutoSweepSettingsFetchStatus({
24
+ fetchState: 'Error',
25
+ error: response?.status,
26
+ }));
27
+ }), catchError((error) => of(updateAutoSweepSettingsFetchStatus({
28
+ fetchState: 'Error',
29
+ error: createZeniAPIStatus('Unexpected Error', 'Save auto-sweep settings REST API call errored out: ' +
30
+ (error?.message ?? String(error))),
31
+ }))));
32
+ }));