@zeniai/client-epic-state 5.0.95 → 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 (219) 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 +10 -40
  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/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +0 -25
  42. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +2 -2
  43. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +4 -42
  44. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +0 -35
  45. package/lib/index.d.ts +12 -47
  46. package/lib/index.js +22 -193
  47. package/lib/reducer.d.ts +0 -12
  48. package/lib/reducer.js +0 -12
  49. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +2 -11
  50. package/lib/view/aiCfoView/aiCfoViewReducer.js +3 -6
  51. package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -5
  52. package/lib/view/aiCfoView/epics/createSessionEpic.js +1 -2
  53. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +1 -8
  54. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +2 -12
  55. package/lib/view/companyTaskManagerView/companyTaskManagerViewPayload.d.ts +11 -19
  56. package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.d.ts +4 -10
  57. package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.js +12 -40
  58. package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.d.ts +0 -2
  59. package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.js +3 -13
  60. package/lib/view/companyTaskManagerView/companyTaskManagerViewState.d.ts +3 -11
  61. package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.d.ts +3 -1
  62. package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +28 -37
  63. package/lib/view/companyView/epic/fetchAllCockpitViewsEpic.js +2 -2
  64. package/lib/view/companyView/types/cockpitTypes.d.ts +1 -2
  65. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  66. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -1
  67. package/lib/view/people/peopleTypes.d.ts +1 -1
  68. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  69. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
  70. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.d.ts +0 -14
  71. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +1 -27
  72. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.d.ts +2 -2
  73. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +1 -1
  74. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +2 -12
  75. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +5 -43
  76. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +0 -7
  77. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +1 -42
  78. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +0 -5
  79. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +1 -1
  80. package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +1 -1
  81. package/package.json +1 -1
  82. package/lib/entity/cardPolicy/cardPolicyPayload.d.ts +0 -277
  83. package/lib/entity/cardPolicy/cardPolicyPayload.js +0 -143
  84. package/lib/entity/cardPolicy/cardPolicyReducer.d.ts +0 -19
  85. package/lib/entity/cardPolicy/cardPolicyReducer.js +0 -175
  86. package/lib/entity/cardPolicy/cardPolicySelector.d.ts +0 -32
  87. package/lib/entity/cardPolicy/cardPolicySelector.js +0 -99
  88. package/lib/entity/cardPolicy/cardPolicyState.d.ts +0 -205
  89. package/lib/entity/cardPolicy/cardPolicyState.js +0 -14
  90. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.d.ts +0 -18
  91. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.js +0 -68
  92. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.d.ts +0 -26
  93. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +0 -47
  94. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.d.ts +0 -25
  95. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +0 -39
  96. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +0 -24
  97. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +0 -105
  98. package/lib/esm/entity/cardPolicy/cardPolicyPayload.js +0 -130
  99. package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +0 -171
  100. package/lib/esm/entity/cardPolicy/cardPolicySelector.js +0 -75
  101. package/lib/esm/entity/cardPolicy/cardPolicyState.js +0 -9
  102. package/lib/esm/entity/cardPolicy/extractPolicyDocumentEpic.js +0 -64
  103. package/lib/esm/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +0 -43
  104. package/lib/esm/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +0 -35
  105. package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +0 -101
  106. package/lib/esm/view/companyTaskManagerView/epics/fetchCockpitContextEpic.js +0 -38
  107. package/lib/esm/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.js +0 -16
  108. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +0 -52
  109. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +0 -22
  110. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +0 -1
  111. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +0 -36
  112. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +0 -39
  113. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +0 -34
  114. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +0 -58
  115. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +0 -21
  116. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +0 -1
  117. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +0 -38
  118. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +0 -289
  119. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +0 -109
  120. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +0 -44
  121. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +0 -111
  122. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +0 -25
  123. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +0 -363
  124. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +0 -36
  125. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +0 -19
  126. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +0 -6
  127. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +0 -119
  128. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +0 -154
  129. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +0 -22
  130. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +0 -1
  131. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +0 -39
  132. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +0 -140
  133. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +0 -20
  134. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +0 -100
  135. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +0 -96
  136. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +0 -59
  137. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +0 -24
  138. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +0 -1
  139. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +0 -34
  140. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +0 -57
  141. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +0 -35
  142. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +0 -62
  143. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +0 -44
  144. package/lib/view/companyTaskManagerView/epics/fetchCockpitContextEpic.d.ts +0 -10
  145. package/lib/view/companyTaskManagerView/epics/fetchCockpitContextEpic.js +0 -42
  146. package/lib/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.d.ts +0 -6
  147. package/lib/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.js +0 -20
  148. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.d.ts +0 -14
  149. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +0 -56
  150. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.d.ts +0 -15
  151. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +0 -28
  152. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.d.ts +0 -8
  153. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +0 -2
  154. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.d.ts +0 -8
  155. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +0 -40
  156. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.d.ts +0 -8
  157. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +0 -43
  158. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.d.ts +0 -8
  159. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +0 -38
  160. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.d.ts +0 -15
  161. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +0 -62
  162. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.d.ts +0 -15
  163. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +0 -27
  164. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.d.ts +0 -7
  165. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +0 -2
  166. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.d.ts +0 -8
  167. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +0 -42
  168. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +0 -8
  169. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +0 -294
  170. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +0 -8
  171. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +0 -113
  172. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +0 -9
  173. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +0 -48
  174. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +0 -8
  175. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +0 -115
  176. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +0 -13
  177. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +0 -29
  178. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +0 -14
  179. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +0 -369
  180. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +0 -6
  181. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +0 -40
  182. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +0 -7
  183. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +0 -26
  184. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +0 -116
  185. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +0 -10
  186. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +0 -33
  187. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +0 -126
  188. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +0 -52
  189. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +0 -158
  190. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +0 -11
  191. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +0 -31
  192. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +0 -12
  193. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +0 -2
  194. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.d.ts +0 -8
  195. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +0 -43
  196. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +0 -10
  197. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +0 -144
  198. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.d.ts +0 -7
  199. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +0 -24
  200. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +0 -11
  201. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +0 -104
  202. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +0 -22
  203. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +0 -100
  204. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +0 -8
  205. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +0 -63
  206. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +0 -3
  207. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +0 -28
  208. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +0 -34
  209. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +0 -2
  210. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +0 -7
  211. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +0 -38
  212. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +0 -12
  213. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +0 -61
  214. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +0 -9
  215. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +0 -39
  216. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +0 -11
  217. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +0 -66
  218. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +0 -3
  219. 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
- };