@zeniai/client-epic-state 5.0.95-betaML1 → 5.0.96

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 (238) hide show
  1. package/lib/common/aiCfo/aiCfoSuggestedQuestionsPageContext.d.ts +1 -1
  2. package/lib/entity/aiCfo/aiCfoPayload.d.ts +5 -63
  3. package/lib/entity/aiCfo/aiCfoReducer.d.ts +2 -23
  4. package/lib/entity/aiCfo/aiCfoReducer.js +9 -249
  5. package/lib/entity/aiCfo/aiCfoSelector.d.ts +1 -4
  6. package/lib/entity/aiCfo/aiCfoSelector.js +1 -19
  7. package/lib/entity/aiCfo/aiCfoState.d.ts +4 -97
  8. package/lib/entity/aiCfo/aiCfoState.js +1 -18
  9. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +0 -1
  10. package/lib/entity/jeSchedules/jeSchedulesPayload.js +0 -7
  11. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +0 -2
  12. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
  13. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +1 -1
  14. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  15. package/lib/entity/snackbar/snackbarTypes.js +0 -3
  16. package/lib/entity/task/taskPayload.d.ts +1 -3
  17. package/lib/entity/task/taskPayload.js +0 -2
  18. package/lib/entity/task/taskState.d.ts +0 -2
  19. package/lib/entity/tenant/clearAllEpic.d.ts +2 -6
  20. package/lib/entity/tenant/clearAllEpic.js +0 -8
  21. package/lib/epic.d.ts +3 -18
  22. package/lib/epic.js +3 -18
  23. package/lib/esm/entity/aiCfo/aiCfoReducer.js +9 -249
  24. package/lib/esm/entity/aiCfo/aiCfoSelector.js +1 -17
  25. package/lib/esm/entity/aiCfo/aiCfoState.js +0 -15
  26. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +0 -7
  27. package/lib/esm/entity/snackbar/snackbarTypes.js +0 -3
  28. package/lib/esm/entity/task/taskPayload.js +0 -2
  29. package/lib/esm/entity/tenant/clearAllEpic.js +0 -8
  30. package/lib/esm/epic.js +3 -18
  31. package/lib/esm/index.js +12 -42
  32. package/lib/esm/reducer.js +0 -12
  33. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +3 -6
  34. package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -5
  35. package/lib/esm/view/aiCfoView/epics/createSessionEpic.js +1 -2
  36. package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +2 -12
  37. package/lib/esm/view/companyTaskManagerView/companyTaskManagerViewReducer.js +11 -39
  38. package/lib/esm/view/companyTaskManagerView/companyTaskManagerViewSelector.js +4 -14
  39. package/lib/esm/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +28 -37
  40. package/lib/esm/view/companyView/epic/fetchAllCockpitViewsEpic.js +2 -2
  41. package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/initializeTransactionCategorizationLocalDataEpic.js +0 -15
  42. package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +5 -63
  43. package/lib/esm/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +3 -12
  44. package/lib/esm/view/recommendation/recommendationReducer.js +1 -18
  45. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +0 -25
  46. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +2 -2
  47. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +4 -42
  48. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +0 -35
  49. package/lib/esm/view/transactionDetail/epics/initializeTransactionDetailLocalDataEpic.js +0 -7
  50. package/lib/esm/view/transactionDetail/transactionDetailReducer.js +3 -44
  51. package/lib/index.d.ts +14 -49
  52. package/lib/index.js +22 -194
  53. package/lib/reducer.d.ts +0 -12
  54. package/lib/reducer.js +0 -12
  55. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +2 -11
  56. package/lib/view/aiCfoView/aiCfoViewReducer.js +3 -6
  57. package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -5
  58. package/lib/view/aiCfoView/epics/createSessionEpic.js +1 -2
  59. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +1 -8
  60. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +2 -12
  61. package/lib/view/companyTaskManagerView/companyTaskManagerViewPayload.d.ts +11 -19
  62. package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.d.ts +4 -10
  63. package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.js +12 -40
  64. package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.d.ts +0 -2
  65. package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.js +3 -13
  66. package/lib/view/companyTaskManagerView/companyTaskManagerViewState.d.ts +3 -11
  67. package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.d.ts +3 -1
  68. package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +28 -37
  69. package/lib/view/companyView/epic/fetchAllCockpitViewsEpic.js +2 -2
  70. package/lib/view/companyView/types/cockpitTypes.d.ts +1 -2
  71. package/lib/view/expenseAutomationView/epics/transactionCategorization/initializeTransactionCategorizationLocalDataEpic.d.ts +1 -2
  72. package/lib/view/expenseAutomationView/epics/transactionCategorization/initializeTransactionCategorizationLocalDataEpic.js +0 -15
  73. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  74. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +5 -63
  75. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -1
  76. package/lib/view/people/peopleTypes.d.ts +1 -1
  77. package/lib/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.d.ts +2 -2
  78. package/lib/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +1 -10
  79. package/lib/view/recommendation/recommendationReducer.d.ts +1 -3
  80. package/lib/view/recommendation/recommendationReducer.js +2 -19
  81. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  82. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
  83. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.d.ts +0 -14
  84. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +1 -27
  85. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.d.ts +2 -2
  86. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +1 -1
  87. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +2 -12
  88. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +5 -43
  89. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +0 -7
  90. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +1 -42
  91. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +0 -5
  92. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +1 -1
  93. package/lib/view/transactionDetail/epics/initializeTransactionDetailLocalDataEpic.d.ts +1 -2
  94. package/lib/view/transactionDetail/epics/initializeTransactionDetailLocalDataEpic.js +0 -7
  95. package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +1 -1
  96. package/lib/view/transactionDetail/transactionDetailReducer.js +3 -44
  97. package/package.json +1 -1
  98. package/lib/entity/cardPolicy/cardPolicyPayload.d.ts +0 -277
  99. package/lib/entity/cardPolicy/cardPolicyPayload.js +0 -143
  100. package/lib/entity/cardPolicy/cardPolicyReducer.d.ts +0 -19
  101. package/lib/entity/cardPolicy/cardPolicyReducer.js +0 -175
  102. package/lib/entity/cardPolicy/cardPolicySelector.d.ts +0 -32
  103. package/lib/entity/cardPolicy/cardPolicySelector.js +0 -99
  104. package/lib/entity/cardPolicy/cardPolicyState.d.ts +0 -205
  105. package/lib/entity/cardPolicy/cardPolicyState.js +0 -14
  106. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.d.ts +0 -18
  107. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.js +0 -68
  108. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.d.ts +0 -26
  109. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +0 -47
  110. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.d.ts +0 -25
  111. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +0 -39
  112. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +0 -24
  113. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +0 -105
  114. package/lib/esm/entity/cardPolicy/cardPolicyPayload.js +0 -130
  115. package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +0 -171
  116. package/lib/esm/entity/cardPolicy/cardPolicySelector.js +0 -75
  117. package/lib/esm/entity/cardPolicy/cardPolicyState.js +0 -9
  118. package/lib/esm/entity/cardPolicy/extractPolicyDocumentEpic.js +0 -64
  119. package/lib/esm/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +0 -43
  120. package/lib/esm/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +0 -35
  121. package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +0 -101
  122. package/lib/esm/view/companyTaskManagerView/epics/fetchCockpitContextEpic.js +0 -38
  123. package/lib/esm/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.js +0 -16
  124. package/lib/esm/view/recommendation/recommendationStaleResponseHelper.js +0 -26
  125. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +0 -52
  126. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +0 -22
  127. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +0 -1
  128. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +0 -36
  129. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +0 -39
  130. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +0 -34
  131. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +0 -58
  132. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +0 -21
  133. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +0 -1
  134. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +0 -38
  135. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +0 -289
  136. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +0 -109
  137. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +0 -44
  138. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +0 -111
  139. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +0 -25
  140. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +0 -363
  141. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +0 -36
  142. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +0 -19
  143. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +0 -6
  144. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +0 -119
  145. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +0 -154
  146. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +0 -22
  147. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +0 -1
  148. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +0 -39
  149. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +0 -140
  150. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +0 -20
  151. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +0 -100
  152. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +0 -96
  153. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +0 -59
  154. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +0 -24
  155. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +0 -1
  156. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +0 -34
  157. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +0 -57
  158. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +0 -35
  159. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +0 -62
  160. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +0 -44
  161. package/lib/view/companyTaskManagerView/epics/fetchCockpitContextEpic.d.ts +0 -10
  162. package/lib/view/companyTaskManagerView/epics/fetchCockpitContextEpic.js +0 -42
  163. package/lib/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.d.ts +0 -6
  164. package/lib/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.js +0 -20
  165. package/lib/view/recommendation/recommendationStaleResponseHelper.d.ts +0 -7
  166. package/lib/view/recommendation/recommendationStaleResponseHelper.js +0 -30
  167. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.d.ts +0 -14
  168. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +0 -56
  169. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.d.ts +0 -15
  170. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +0 -28
  171. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.d.ts +0 -8
  172. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +0 -2
  173. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.d.ts +0 -8
  174. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +0 -40
  175. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.d.ts +0 -8
  176. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +0 -43
  177. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.d.ts +0 -8
  178. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +0 -38
  179. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.d.ts +0 -15
  180. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +0 -62
  181. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.d.ts +0 -15
  182. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +0 -27
  183. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.d.ts +0 -7
  184. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +0 -2
  185. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.d.ts +0 -8
  186. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +0 -42
  187. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +0 -8
  188. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +0 -294
  189. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +0 -8
  190. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +0 -113
  191. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +0 -9
  192. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +0 -48
  193. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +0 -8
  194. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +0 -115
  195. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +0 -13
  196. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +0 -29
  197. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +0 -14
  198. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +0 -369
  199. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +0 -6
  200. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +0 -40
  201. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +0 -7
  202. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +0 -26
  203. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +0 -116
  204. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +0 -10
  205. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +0 -33
  206. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +0 -126
  207. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +0 -52
  208. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +0 -158
  209. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +0 -11
  210. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +0 -31
  211. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +0 -12
  212. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +0 -2
  213. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.d.ts +0 -8
  214. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +0 -43
  215. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +0 -10
  216. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +0 -144
  217. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.d.ts +0 -7
  218. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +0 -24
  219. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +0 -11
  220. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +0 -104
  221. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +0 -22
  222. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +0 -100
  223. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +0 -8
  224. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +0 -63
  225. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +0 -3
  226. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +0 -28
  227. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +0 -34
  228. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +0 -2
  229. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +0 -7
  230. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +0 -38
  231. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +0 -12
  232. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +0 -61
  233. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +0 -9
  234. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +0 -39
  235. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +0 -11
  236. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +0 -66
  237. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +0 -3
  238. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +0 -48
@@ -1,289 +0,0 @@
1
- import { deriveAiPolicyReviewRowsFromInputs } from './deriveAiPolicyReviewRowsFromInputs';
2
- // Computes the next draft after a watchHandler flush, branching on policyKind:
3
- // - auto: pass-through (review chip groups are canonical).
4
- // - guided: bridge review chip edits back into source slices, then re-derive review.
5
- // - upload: pass through user's review edits; patch "Applied to Cards" from `cardSelections`.
6
- export const applyAiCardPolicyFormDraftUpdate = ({ next, prev, context, }) => {
7
- if (next.policyKind === 'auto') {
8
- return next;
9
- }
10
- if (next.policyKind === 'upload') {
11
- return applyUploadUpdate({ next, prev });
12
- }
13
- return applyGuidedUpdate({ next, prev, context });
14
- };
15
- const applyGuidedUpdate = ({ next, prev, context, }) => {
16
- const bridged = bridgeGuidedPoliciesReviewToSources({ next, prev });
17
- if (context == null) {
18
- return bridged;
19
- }
20
- return {
21
- ...bridged,
22
- policiesReview: deriveAiPolicyReviewRowsFromInputs({
23
- vendorPolicy: bridged.vendorPolicy,
24
- categoryPolicy: bridged.categoryPolicy,
25
- cardSelections: bridged.cardSelections,
26
- limits: bridged.limits,
27
- suggestedPoliciesSeed: context.suggestedPoliciesSeed,
28
- prevPoliciesReview: bridged.policiesReview,
29
- }),
30
- };
31
- };
32
- const APPLIED_TO_CARDS_GROUP_ID = 'applied-to-cards';
33
- const LIMITS_GROUP_ID = 'limits';
34
- const applyUploadUpdate = ({ next, prev, }) => {
35
- // Mirror review avatar/limits edits into source slices so bulk-submit (which
36
- // reads `cardSelections` for upload's applyToCards) sees the latest intent.
37
- const bridged = bridgeUploadPoliciesReviewToSources({ next, prev });
38
- if (!haveCardSelectionsChanged(prev?.cardSelections, bridged.cardSelections)) {
39
- return bridged;
40
- }
41
- return {
42
- ...bridged,
43
- policiesReview: patchUploadReviewWithAppliedCards(bridged.policiesReview, bridged.cardSelections),
44
- };
45
- };
46
- const haveCardSelectionsChanged = (prevSelections, nextSelections) => {
47
- const prevCheckedIds = (prevSelections ?? [])
48
- .filter((row) => row.isChecked)
49
- .map((row) => row.id);
50
- const nextCheckedIds = nextSelections
51
- .filter((row) => row.isChecked)
52
- .map((row) => row.id);
53
- if (prevCheckedIds.length !== nextCheckedIds.length) {
54
- return true;
55
- }
56
- return prevCheckedIds.some((id, idx) => id !== nextCheckedIds[idx]);
57
- };
58
- const buildAppliedOwnerSummaries = (cardSelections) => {
59
- const summaries = new Map();
60
- for (const card of cardSelections) {
61
- if (!card.isChecked) {
62
- continue;
63
- }
64
- const existing = summaries.get(card.owner.userId);
65
- if (existing != null) {
66
- existing.cardIds.push(card.id);
67
- continue;
68
- }
69
- summaries.set(card.owner.userId, {
70
- userId: card.owner.userId,
71
- displayName: card.owner.displayName,
72
- cardIds: [card.id],
73
- });
74
- }
75
- return Array.from(summaries.values());
76
- };
77
- // Inserted before "Limits" so visual order stays Vendors → Categories → Cards → Limits.
78
- export const patchUploadReviewWithAppliedCards = (reviewRows, cardSelections) => {
79
- const owners = buildAppliedOwnerSummaries(cardSelections);
80
- const cardChips = owners.map((owner) => ({
81
- id: owner.userId,
82
- label: owner.displayName,
83
- chipKind: 'avatar',
84
- cardIds: owner.cardIds,
85
- isSelected: true,
86
- }));
87
- const cardsGroup = cardChips.length > 0
88
- ? {
89
- id: APPLIED_TO_CARDS_GROUP_ID,
90
- label: 'Applied to Cards',
91
- chips: cardChips,
92
- }
93
- : null;
94
- return reviewRows.map((row) => {
95
- const withoutCards = row.chipGroups.filter((group) => group.id !== APPLIED_TO_CARDS_GROUP_ID);
96
- if (cardsGroup == null) {
97
- return { ...row, chipGroups: withoutCards };
98
- }
99
- const limitsIdx = withoutCards.findIndex((group) => group.id === LIMITS_GROUP_ID);
100
- if (limitsIdx === -1) {
101
- return { ...row, chipGroups: [...withoutCards, cardsGroup] };
102
- }
103
- const before = withoutCards.slice(0, limitsIdx);
104
- const after = withoutCards.slice(limitsIdx);
105
- return { ...row, chipGroups: [...before, cardsGroup, ...after] };
106
- });
107
- };
108
- // Routes per-chip diffs back to source slices: limits → `limits`, avatar →
109
- // `cardSelections`, positive/negative → `vendorPolicy` / `categoryPolicy`.
110
- const bridgeGuidedPoliciesReviewToSources = ({ next, prev, }) => {
111
- if (prev == null || prev.policiesReview.length === 0) {
112
- return next;
113
- }
114
- const reviewDiffs = collectReviewChipDiffs(prev.policiesReview, next.policiesReview);
115
- if (reviewDiffs.length === 0) {
116
- return next;
117
- }
118
- let limits = next.limits;
119
- let cardSelections = next.cardSelections;
120
- let vendorPolicy = next.vendorPolicy;
121
- let categoryPolicy = next.categoryPolicy;
122
- for (const diff of reviewDiffs) {
123
- if (diff.groupKind === 'limits' || diff.chip.id.startsWith('limit-')) {
124
- limits = applyLimitChipDiffToLimits(limits, diff);
125
- continue;
126
- }
127
- if (diff.chip.chipKind === 'avatar') {
128
- cardSelections = applyAvatarChipDiffToCardSelections(cardSelections, diff);
129
- continue;
130
- }
131
- if (diff.changedFields.has('isSelected')) {
132
- const writtenToVendor = tryWriteAllowBlock(vendorPolicy, diff);
133
- if (writtenToVendor != null) {
134
- vendorPolicy = writtenToVendor;
135
- continue;
136
- }
137
- const writtenToCategory = tryWriteAllowBlock(categoryPolicy, diff);
138
- if (writtenToCategory != null) {
139
- categoryPolicy = writtenToCategory;
140
- }
141
- }
142
- }
143
- return {
144
- ...next,
145
- limits,
146
- cardSelections,
147
- vendorPolicy,
148
- categoryPolicy,
149
- };
150
- };
151
- // Upload only mirrors avatar chips into `cardSelections`; vendor/category/limit
152
- // chips are read by the wire directly from the review groups.
153
- const bridgeUploadPoliciesReviewToSources = ({ next, prev, }) => {
154
- if (prev == null || prev.policiesReview.length === 0) {
155
- return next;
156
- }
157
- const reviewDiffs = collectReviewChipDiffs(prev.policiesReview, next.policiesReview);
158
- if (reviewDiffs.length === 0) {
159
- return next;
160
- }
161
- let cardSelections = next.cardSelections;
162
- for (const diff of reviewDiffs) {
163
- if (diff.chip.chipKind === 'avatar') {
164
- cardSelections = applyAvatarChipDiffToCardSelections(cardSelections, diff);
165
- }
166
- }
167
- if (cardSelections === next.cardSelections) {
168
- return next;
169
- }
170
- return { ...next, cardSelections };
171
- };
172
- const collectReviewChipDiffs = (prevRows, nextRows) => {
173
- const prevById = new Map(prevRows.map((row) => [row.id, row]));
174
- const diffs = [];
175
- for (const row of nextRows) {
176
- const prevRow = prevById.get(row.id);
177
- if (prevRow == null) {
178
- continue;
179
- }
180
- const prevGroupsById = new Map(prevRow.chipGroups.map((group) => [group.id, group]));
181
- for (const group of row.chipGroups) {
182
- const prevGroup = prevGroupsById.get(group.id);
183
- if (prevGroup == null) {
184
- continue;
185
- }
186
- const prevChipsById = new Map(prevGroup.chips.map((chip) => [chip.id, chip]));
187
- for (const chip of group.chips) {
188
- const prevChip = prevChipsById.get(chip.id);
189
- if (prevChip == null) {
190
- continue;
191
- }
192
- const changed = new Set();
193
- if (chip.isSelected !== prevChip.isSelected) {
194
- changed.add('isSelected');
195
- }
196
- if (chip.optionalCode !== prevChip.optionalCode) {
197
- changed.add('optionalCode');
198
- }
199
- if (changed.size > 0) {
200
- diffs.push({ chip, changedFields: changed, groupKind: group.kind });
201
- }
202
- }
203
- }
204
- }
205
- return diffs;
206
- };
207
- const REVIEW_LIMIT_CHIP_ID_TO_LIMIT_ROW_ID = {
208
- 'limit-transaction': 'transactionLimit',
209
- 'limit-receipt': 'requireReceipt',
210
- };
211
- const applyLimitChipDiffToLimits = (limits, diff) => {
212
- const mapped = REVIEW_LIMIT_CHIP_ID_TO_LIMIT_ROW_ID[diff.chip.id];
213
- const directMatch = limits.find((row) => row.id === diff.chip.id) != null;
214
- const rowId = mapped ?? (directMatch ? diff.chip.id : undefined);
215
- if (rowId == null) {
216
- return limits;
217
- }
218
- const idx = limits.findIndex((row) => row.id === rowId);
219
- if (idx === -1) {
220
- return limits;
221
- }
222
- let nextRow = limits[idx];
223
- if (diff.changedFields.has('isSelected')) {
224
- nextRow = { ...nextRow, isEnabled: diff.chip.isSelected === true };
225
- }
226
- if (diff.changedFields.has('optionalCode')) {
227
- const raw = diff.chip.optionalCode;
228
- const numericNext = raw != null && raw !== '' ? Number(raw) : undefined;
229
- nextRow = { ...nextRow, amount: numericNext };
230
- }
231
- if (nextRow === limits[idx]) {
232
- return limits;
233
- }
234
- const copy = limits.slice();
235
- copy[idx] = nextRow;
236
- return copy;
237
- };
238
- const applyAvatarChipDiffToCardSelections = (cardSelections, diff) => {
239
- if (!diff.changedFields.has('isSelected')) {
240
- return cardSelections;
241
- }
242
- const targetIds = diff.chip.cardIds != null && diff.chip.cardIds.length > 0
243
- ? diff.chip.cardIds
244
- : [diff.chip.id];
245
- const targetSet = new Set(targetIds);
246
- let mutated = false;
247
- const next = cardSelections.map((row) => {
248
- if (!targetSet.has(row.id)) {
249
- return row;
250
- }
251
- const desired = diff.chip.isSelected === true;
252
- if (row.isChecked === desired) {
253
- return row;
254
- }
255
- mutated = true;
256
- return { ...row, isChecked: desired };
257
- });
258
- return mutated ? next : cardSelections;
259
- };
260
- const tryWriteAllowBlock = (field, diff) => {
261
- const desired = diff.chip.isSelected === true;
262
- const written = tryFlipItemInSide(field.allowItems, diff, desired);
263
- if (written != null) {
264
- return { ...field, allowItems: written };
265
- }
266
- const writtenBlock = tryFlipItemInSide(field.blockItems, diff, desired);
267
- if (writtenBlock != null) {
268
- return { ...field, blockItems: writtenBlock };
269
- }
270
- return null;
271
- };
272
- const tryFlipItemInSide = (items, diff, desired) => {
273
- let idx = items.findIndex((item) => item.id === diff.chip.id);
274
- if (idx === -1 && diff.chip.optionalCode != null) {
275
- // Auto/upload category chips key on raw MCC code; source items key on
276
- // `mcc-{name}`. Match by code so the bridge round-trips both shapes.
277
- idx = items.findIndex((item) => item.optionalCode === diff.chip.optionalCode ||
278
- (item.optionalCodes ?? []).includes(diff.chip.optionalCode ?? ''));
279
- }
280
- if (idx === -1) {
281
- return null;
282
- }
283
- if (items[idx].isSelected === desired) {
284
- return items;
285
- }
286
- const copy = items.slice();
287
- copy[idx] = { ...items[idx], isSelected: desired };
288
- return copy;
289
- };
@@ -1,109 +0,0 @@
1
- import { buildMccCategoryChipId, buildVendorChipId } from './cardPolicyChipIds';
2
- import { CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT, CARD_POLICY_LIMIT_ROW_ID_TRANSACTION, } from './cardPolicyFormDraftTypes';
3
- // Touches only the slices the extract API populates (vendor/category/limits);
4
- // `cardSelections` + `policiesReview` are preserved (seeded separately).
5
- export const applyExtractedPolicyToAiCardPolicyDraft = ({ extracted, current, vendorSearchOptions, categorySearchOptions, }) => ({
6
- ...current,
7
- vendorPolicy: buildAllowBlockField({
8
- allowList: extracted.allowedEntity.merchantNames,
9
- blockList: extracted.blockedEntity.merchantNames,
10
- currentAllowItems: current.vendorPolicy.allowItems,
11
- currentBlockItems: current.vendorPolicy.blockItems,
12
- universe: vendorSearchOptions,
13
- matchOnCode: false,
14
- }),
15
- categoryPolicy: buildAllowBlockField({
16
- allowList: extracted.allowedEntity.categoryCodes,
17
- blockList: extracted.blockedEntity.categoryCodes,
18
- currentAllowItems: current.categoryPolicy.allowItems,
19
- currentBlockItems: current.categoryPolicy.blockItems,
20
- universe: categorySearchOptions,
21
- matchOnCode: true,
22
- }),
23
- limits: buildLimitRows({
24
- current: current.limits,
25
- transactionLimit: extracted.transactionLimit,
26
- requiredReceiptThreshold: extracted.requiredReceiptThreshold,
27
- }),
28
- });
29
- const buildAllowBlockField = ({ allowList, blockList, currentAllowItems, currentBlockItems, universe, matchOnCode, }) => {
30
- const allowItems = buildSideItems({
31
- selectedValues: allowList,
32
- currentItems: currentAllowItems,
33
- universe,
34
- matchOnCode,
35
- });
36
- const blockItems = buildSideItems({
37
- selectedValues: blockList,
38
- currentItems: currentBlockItems,
39
- universe,
40
- matchOnCode,
41
- });
42
- const mode = allowList.length === 0 && blockList.length > 0 ? 'block' : 'allow';
43
- return { mode, allowItems, blockItems };
44
- };
45
- const buildSideItems = ({ selectedValues, currentItems, universe, matchOnCode, }) => {
46
- const selectedKeys = new Set(selectedValues
47
- .map((value) => normalizeKey(value))
48
- .filter((key) => key != null));
49
- const items = [];
50
- const seenIds = new Set();
51
- for (const item of currentItems) {
52
- const key = normalizeKey(matchOnCode ? item.optionalCode : item.label);
53
- const isSelected = key != null && selectedKeys.has(key);
54
- items.push({ ...item, isSelected });
55
- seenIds.add(item.id);
56
- if (isSelected && key != null) {
57
- selectedKeys.delete(key);
58
- }
59
- }
60
- for (const option of universe) {
61
- if (selectedKeys.size === 0) {
62
- break;
63
- }
64
- const key = normalizeKey(matchOnCode ? option.optionalCode : option.label);
65
- if (key == null || !selectedKeys.has(key) || seenIds.has(option.id)) {
66
- continue;
67
- }
68
- items.push({ ...option, isSelected: true });
69
- seenIds.add(option.id);
70
- selectedKeys.delete(key);
71
- }
72
- for (const value of selectedValues) {
73
- const key = normalizeKey(value);
74
- if (key == null || !selectedKeys.has(key)) {
75
- continue;
76
- }
77
- const id = matchOnCode
78
- ? buildMccCategoryChipId(value)
79
- : buildVendorChipId(value);
80
- if (seenIds.has(id)) {
81
- continue;
82
- }
83
- items.push({
84
- id,
85
- label: value,
86
- isSelected: true,
87
- ...(matchOnCode ? { optionalCode: value } : {}),
88
- });
89
- seenIds.add(id);
90
- selectedKeys.delete(key);
91
- }
92
- return items;
93
- };
94
- const buildLimitRows = ({ current, transactionLimit, requiredReceiptThreshold, }) => current.map((row) => {
95
- if (row.id === CARD_POLICY_LIMIT_ROW_ID_TRANSACTION) {
96
- return amountToLimitRow(row, transactionLimit);
97
- }
98
- if (row.id === CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT) {
99
- return amountToLimitRow(row, requiredReceiptThreshold);
100
- }
101
- return row;
102
- });
103
- const amountToLimitRow = (row, amount) => {
104
- if (amount > 0) {
105
- return { ...row, isEnabled: true, amount };
106
- }
107
- return { ...row, isEnabled: false, amount: row.amount };
108
- };
109
- const normalizeKey = (value) => value == null || value.length === 0 ? undefined : value.toLowerCase().trim();
@@ -1,44 +0,0 @@
1
- import { EMPTY, of } from 'rxjs';
2
- import { mergeMap } from 'rxjs/operators';
3
- import { updatePolicyDocumentExtractionSuccess } from '../../../../../entity/cardPolicy/cardPolicyReducer';
4
- import { toMccCategoryChipFieldValue, toVendorChipFieldValue, } from './cardPolicyChipIds';
5
- import { toMccCategoryLike, } from './cardPolicyFormDraftTypes';
6
- import { applyExtractedPolicyToAiCardPolicyDraft, applyExtractedPolicyToManualCardPolicyDraft, } from './createCardPolicyReducer';
7
- const toExtractedView = (rules) => ({
8
- allowedEntity: {
9
- categoryCodes: rules.allowedEntity.categoryCodes ?? [],
10
- merchantNames: rules.allowedEntity.merchantNames ?? [],
11
- },
12
- blockedEntity: {
13
- categoryCodes: rules.blockedEntity.categoryCodes ?? [],
14
- merchantNames: rules.blockedEntity.merchantNames ?? [],
15
- },
16
- confidenceScore: rules.confidenceScore,
17
- policyName: rules.policyName,
18
- requiredReceiptThreshold: rules.requiredReceiptThreshold,
19
- transactionLimit: rules.transactionLimit,
20
- });
21
- const readVendorSearchOptions = (state) => state.cardPolicyState.vendorSearch.vendors.map((vendor) => toVendorChipFieldValue(vendor.name, false));
22
- const readCategorySearchOptions = (state) => state.cardPolicyState.mccCategories.map((category) => toMccCategoryChipFieldValue(toMccCategoryLike(category), false));
23
- // Routes extract success to the AI or manual draft based on `aiCfoAnswerId`,
24
- // pulling vendor/category universes from CES so any caller wires up automatically.
25
- // AI step_5 review chips are patched separately by `policyRecommendationFromUploadEpic`.
26
- export const applyExtractedPolicyToDraftEpic = (actions$, state$) => actions$.pipe(mergeMap((action) => {
27
- if (!updatePolicyDocumentExtractionSuccess.match(action)) {
28
- return EMPTY;
29
- }
30
- const state = state$.value;
31
- const extraction = state.cardPolicyState.policyDocumentExtraction;
32
- const rules = extraction.extractedRules;
33
- if (rules == null) {
34
- return EMPTY;
35
- }
36
- const extracted = toExtractedView(rules);
37
- const vendorSearchOptions = readVendorSearchOptions(state);
38
- const categorySearchOptions = readCategorySearchOptions(state);
39
- const payload = { extracted, vendorSearchOptions, categorySearchOptions };
40
- if (extraction.aiCfoAnswerId != null) {
41
- return of(applyExtractedPolicyToAiCardPolicyDraft(payload));
42
- }
43
- return of(applyExtractedPolicyToManualCardPolicyDraft(payload));
44
- }));
@@ -1,111 +0,0 @@
1
- import { buildMccCategoryChipId, buildVendorChipId } from './cardPolicyChipIds';
2
- import { CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT, CARD_POLICY_LIMIT_ROW_ID_TRANSACTION, } from './cardPolicyFormDraftTypes';
3
- // Mirrors the AI variant plus name overwrite from `extracted.policyName`;
4
- // description / mode / cardSelections are preserved (extract API doesn't return them).
5
- export const applyExtractedPolicyToManualCardPolicyDraft = ({ extracted, current, vendorSearchOptions, categorySearchOptions, }) => ({
6
- ...current,
7
- name: extracted.policyName ?? current.name,
8
- description: current.description,
9
- vendorPolicy: buildAllowBlockField({
10
- allowList: extracted.allowedEntity.merchantNames,
11
- blockList: extracted.blockedEntity.merchantNames,
12
- currentAllowItems: current.vendorPolicy.allowItems,
13
- currentBlockItems: current.vendorPolicy.blockItems,
14
- universe: vendorSearchOptions,
15
- matchOnCode: false,
16
- }),
17
- categoryPolicy: buildAllowBlockField({
18
- allowList: extracted.allowedEntity.categoryCodes,
19
- blockList: extracted.blockedEntity.categoryCodes,
20
- currentAllowItems: current.categoryPolicy.allowItems,
21
- currentBlockItems: current.categoryPolicy.blockItems,
22
- universe: categorySearchOptions,
23
- matchOnCode: true,
24
- }),
25
- limits: buildLimitRows({
26
- current: current.limits,
27
- transactionLimit: extracted.transactionLimit,
28
- requiredReceiptThreshold: extracted.requiredReceiptThreshold,
29
- }),
30
- });
31
- const buildAllowBlockField = ({ allowList, blockList, currentAllowItems, currentBlockItems, universe, matchOnCode, }) => {
32
- const allowItems = buildSideItems({
33
- selectedValues: allowList,
34
- currentItems: currentAllowItems,
35
- universe,
36
- matchOnCode,
37
- });
38
- const blockItems = buildSideItems({
39
- selectedValues: blockList,
40
- currentItems: currentBlockItems,
41
- universe,
42
- matchOnCode,
43
- });
44
- const mode = allowList.length === 0 && blockList.length > 0 ? 'block' : 'allow';
45
- return { mode, allowItems, blockItems };
46
- };
47
- const buildSideItems = ({ selectedValues, currentItems, universe, matchOnCode, }) => {
48
- const selectedKeys = new Set(selectedValues
49
- .map((value) => normalizeKey(value))
50
- .filter((key) => key != null));
51
- const items = [];
52
- const seenIds = new Set();
53
- for (const item of currentItems) {
54
- const key = normalizeKey(matchOnCode ? item.optionalCode : item.label);
55
- const isSelected = key != null && selectedKeys.has(key);
56
- items.push({ ...item, isSelected });
57
- seenIds.add(item.id);
58
- if (isSelected && key != null) {
59
- selectedKeys.delete(key);
60
- }
61
- }
62
- for (const option of universe) {
63
- if (selectedKeys.size === 0) {
64
- break;
65
- }
66
- const key = normalizeKey(matchOnCode ? option.optionalCode : option.label);
67
- if (key == null || !selectedKeys.has(key) || seenIds.has(option.id)) {
68
- continue;
69
- }
70
- items.push({ ...option, isSelected: true });
71
- seenIds.add(option.id);
72
- selectedKeys.delete(key);
73
- }
74
- for (const value of selectedValues) {
75
- const key = normalizeKey(value);
76
- if (key == null || !selectedKeys.has(key)) {
77
- continue;
78
- }
79
- const id = matchOnCode
80
- ? buildMccCategoryChipId(value)
81
- : buildVendorChipId(value);
82
- if (seenIds.has(id)) {
83
- continue;
84
- }
85
- items.push({
86
- id,
87
- label: value,
88
- isSelected: true,
89
- ...(matchOnCode ? { optionalCode: value } : {}),
90
- });
91
- seenIds.add(id);
92
- selectedKeys.delete(key);
93
- }
94
- return items;
95
- };
96
- const buildLimitRows = ({ current, transactionLimit, requiredReceiptThreshold, }) => current.map((row) => {
97
- if (row.id === CARD_POLICY_LIMIT_ROW_ID_TRANSACTION) {
98
- return amountToLimitRow(row, transactionLimit);
99
- }
100
- if (row.id === CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT) {
101
- return amountToLimitRow(row, requiredReceiptThreshold);
102
- }
103
- return row;
104
- });
105
- const amountToLimitRow = (row, amount) => {
106
- if (amount > 0) {
107
- return { ...row, isEnabled: true, amount };
108
- }
109
- return { ...row, isEnabled: false, amount: row.amount };
110
- };
111
- const normalizeKey = (value) => value == null || value.length === 0 ? undefined : value.toLowerCase().trim();
@@ -1,25 +0,0 @@
1
- import { buildUploadReviewRows } from './buildAiCardPolicyFormDraftSeed';
2
- // Re-derives Step 5 review from a fresh `wizardPlan` while preserving the
3
- // user's Step 2 `cardSelections` and Step 1 `limits`. No-op outside upload mode.
4
- export const applyUploadPlanToAiCardPolicyDraft = ({ current, context, wizardPlan, source, }) => {
5
- if (current.policyKind !== 'upload') {
6
- return { draft: current, context };
7
- }
8
- const policiesReview = buildUploadReviewRows(wizardPlan.step5Review.draftPolicies, context.cardsMasterList, context.categorySearchOptions);
9
- return {
10
- draft: {
11
- ...current,
12
- policiesReview,
13
- },
14
- context: {
15
- ...context,
16
- wizardPlan,
17
- source: source ?? context.source,
18
- suggestedPoliciesSeed: wizardPlan.step5Review.draftPolicies.map((draft) => ({
19
- id: draft.id,
20
- name: draft.name,
21
- isChecked: true,
22
- })),
23
- },
24
- };
25
- };