@zeniai/client-epic-state 5.1.26 → 5.1.27-betaAK0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/lib/commonStateTypes/viewAndReport/agingReportStateTypes.d.ts +1 -1
- package/lib/entity/invoicing/coupon/couponReducer.d.ts +12 -0
- package/lib/entity/invoicing/coupon/couponReducer.js +33 -0
- package/lib/entity/invoicing/creditNote/creditNoteReducer.d.ts +12 -0
- package/lib/entity/invoicing/creditNote/creditNoteReducer.js +35 -0
- package/lib/entity/invoicing/customer/customerReducer.d.ts +12 -0
- package/lib/entity/invoicing/customer/customerReducer.js +33 -0
- package/lib/entity/invoicing/dunningCase/dunningCaseReducer.d.ts +12 -0
- package/lib/entity/invoicing/dunningCase/dunningCaseReducer.js +35 -0
- package/lib/entity/invoicing/invoice/invoiceReducer.d.ts +10 -0
- package/lib/entity/invoicing/invoice/invoiceReducer.js +36 -0
- package/lib/entity/invoicing/invoice/invoiceSelector.d.ts +5 -0
- package/lib/entity/invoicing/invoice/invoiceSelector.js +9 -0
- package/lib/entity/invoicing/invoice/invoiceState.d.ts +5 -0
- package/lib/entity/invoicing/invoice/invoiceState.js +2 -0
- package/lib/entity/invoicing/invoicingTypes.d.ts +766 -0
- package/lib/entity/invoicing/invoicingTypes.js +15 -0
- package/lib/entity/invoicing/plan/planReducer.d.ts +12 -0
- package/lib/entity/invoicing/plan/planReducer.js +33 -0
- package/lib/entity/invoicing/product/productReducer.d.ts +12 -0
- package/lib/entity/invoicing/product/productReducer.js +33 -0
- package/lib/entity/invoicing/subscription/subscriptionReducer.d.ts +12 -0
- package/lib/entity/invoicing/subscription/subscriptionReducer.js +35 -0
- package/lib/entity/invoicing/transaction/transactionReducer.d.ts +12 -0
- package/lib/entity/invoicing/transaction/transactionReducer.js +35 -0
- package/lib/entity/task/taskState.d.ts +1 -1
- package/lib/entity/tenant/clearAllEpic.d.ts +39 -2
- package/lib/entity/tenant/clearAllEpic.js +82 -8
- package/lib/entity/tenant/tenantReducer.js +3 -3
- package/lib/epic.d.ts +32 -1
- package/lib/epic.js +33 -1
- package/lib/esm/entity/invoicing/coupon/couponReducer.js +29 -0
- package/lib/esm/entity/invoicing/creditNote/creditNoteReducer.js +31 -0
- package/lib/esm/entity/invoicing/customer/customerReducer.js +29 -0
- package/lib/esm/entity/invoicing/dunningCase/dunningCaseReducer.js +31 -0
- package/lib/esm/entity/invoicing/invoice/invoiceReducer.js +32 -0
- package/lib/esm/entity/invoicing/invoice/invoiceSelector.js +4 -0
- package/lib/esm/entity/invoicing/invoice/invoiceState.js +1 -0
- package/lib/esm/entity/invoicing/invoicingTypes.js +14 -0
- package/lib/esm/entity/invoicing/plan/planReducer.js +29 -0
- package/lib/esm/entity/invoicing/product/productReducer.js +29 -0
- package/lib/esm/entity/invoicing/subscription/subscriptionReducer.js +31 -0
- package/lib/esm/entity/invoicing/transaction/transactionReducer.js +31 -0
- package/lib/esm/entity/tenant/clearAllEpic.js +74 -0
- package/lib/esm/entity/tenant/tenantReducer.js +3 -3
- package/lib/esm/epic.js +33 -1
- package/lib/esm/index.js +80 -2
- package/lib/esm/reducer.js +114 -0
- package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +29 -3
- package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +11 -0
- package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -2
- package/lib/esm/view/aiCfoView/epics/fetchSkillsEpic.js +34 -0
- package/lib/esm/view/aiCfoView/epics/submitQuestionEpic.js +7 -1
- package/lib/esm/view/invoicing/analyticsView/analyticsViewEpics.js +42 -0
- package/lib/esm/view/invoicing/analyticsView/analyticsViewReducer.js +45 -0
- package/lib/esm/view/invoicing/analyticsView/analyticsViewSelector.js +10 -0
- package/lib/esm/view/invoicing/approvalAction/approvalActionEpic.js +28 -0
- package/lib/esm/view/invoicing/approvalAction/approvalActionReducer.js +36 -0
- package/lib/esm/view/invoicing/approvalAction/approvalActionSelector.js +5 -0
- package/lib/esm/view/invoicing/approvalsView/approvalsViewEpics.js +37 -0
- package/lib/esm/view/invoicing/approvalsView/approvalsViewReducer.js +62 -0
- package/lib/esm/view/invoicing/approvalsView/approvalsViewSelector.js +8 -0
- package/lib/esm/view/invoicing/auditView/auditViewEpics.js +46 -0
- package/lib/esm/view/invoicing/auditView/auditViewReducer.js +56 -0
- package/lib/esm/view/invoicing/auditView/auditViewSelector.js +8 -0
- package/lib/esm/view/invoicing/catalogView/catalogViewEpics.js +143 -0
- package/lib/esm/view/invoicing/catalogView/catalogViewReducer.js +162 -0
- package/lib/esm/view/invoicing/catalogView/catalogViewSelector.js +31 -0
- package/lib/esm/view/invoicing/catalogWrite/catalogWriteEpic.js +34 -0
- package/lib/esm/view/invoicing/catalogWrite/catalogWriteReducer.js +39 -0
- package/lib/esm/view/invoicing/catalogWrite/catalogWriteSelector.js +6 -0
- package/lib/esm/view/invoicing/couponView/couponViewEpics.js +83 -0
- package/lib/esm/view/invoicing/couponView/couponViewReducer.js +105 -0
- package/lib/esm/view/invoicing/couponView/couponViewSelector.js +18 -0
- package/lib/esm/view/invoicing/couponWrite/couponWriteEpic.js +29 -0
- package/lib/esm/view/invoicing/couponWrite/couponWriteReducer.js +36 -0
- package/lib/esm/view/invoicing/couponWrite/couponWriteSelector.js +5 -0
- package/lib/esm/view/invoicing/createInvoice/createInvoiceEpic.js +23 -0
- package/lib/esm/view/invoicing/createInvoice/createInvoiceReducer.js +36 -0
- package/lib/esm/view/invoicing/createInvoice/createInvoiceSelector.js +5 -0
- package/lib/esm/view/invoicing/creditNoteView/creditNoteViewEpics.js +87 -0
- package/lib/esm/view/invoicing/creditNoteView/creditNoteViewReducer.js +105 -0
- package/lib/esm/view/invoicing/creditNoteView/creditNoteViewSelector.js +20 -0
- package/lib/esm/view/invoicing/customerPaymentMethod/customerPaymentMethodEpic.js +63 -0
- package/lib/esm/view/invoicing/customerPaymentMethod/customerPaymentMethodReducer.js +84 -0
- package/lib/esm/view/invoicing/customerPaymentMethod/customerPaymentMethodSelector.js +7 -0
- package/lib/esm/view/invoicing/customerView/customerViewEpics.js +71 -0
- package/lib/esm/view/invoicing/customerView/customerViewReducer.js +90 -0
- package/lib/esm/view/invoicing/customerView/customerViewSelector.js +17 -0
- package/lib/esm/view/invoicing/customerWrite/customerWriteEpic.js +23 -0
- package/lib/esm/view/invoicing/customerWrite/customerWriteReducer.js +36 -0
- package/lib/esm/view/invoicing/customerWrite/customerWriteSelector.js +5 -0
- package/lib/esm/view/invoicing/dataImportAction/dataImportActionEpic.js +41 -0
- package/lib/esm/view/invoicing/dataImportAction/dataImportActionReducer.js +73 -0
- package/lib/esm/view/invoicing/dataImportAction/dataImportActionSelector.js +5 -0
- package/lib/esm/view/invoicing/dataImportView/dataImportViewEpics.js +41 -0
- package/lib/esm/view/invoicing/dataImportView/dataImportViewReducer.js +66 -0
- package/lib/esm/view/invoicing/dataImportView/dataImportViewSelector.js +6 -0
- package/lib/esm/view/invoicing/dunningAction/dunningActionEpic.js +28 -0
- package/lib/esm/view/invoicing/dunningAction/dunningActionReducer.js +36 -0
- package/lib/esm/view/invoicing/dunningAction/dunningActionSelector.js +5 -0
- package/lib/esm/view/invoicing/dunningCaseView/dunningCaseViewEpics.js +85 -0
- package/lib/esm/view/invoicing/dunningCaseView/dunningCaseViewReducer.js +105 -0
- package/lib/esm/view/invoicing/dunningCaseView/dunningCaseViewSelector.js +20 -0
- package/lib/esm/view/invoicing/invoiceAction/invoiceActionEpic.js +50 -0
- package/lib/esm/view/invoicing/invoiceAction/invoiceActionReducer.js +42 -0
- package/lib/esm/view/invoicing/invoiceAction/invoiceActionSelector.js +5 -0
- package/lib/esm/view/invoicing/invoiceDetail/fetchInvoiceDetailEpic.js +20 -0
- package/lib/esm/view/invoicing/invoiceDetail/invoiceDetailReducer.js +34 -0
- package/lib/esm/view/invoicing/invoiceDetail/invoiceDetailSelector.js +9 -0
- package/lib/esm/view/invoicing/invoiceDetail/invoiceDetailState.js +1 -0
- package/lib/esm/view/invoicing/invoiceList/fetchInvoiceCountsEpic.js +32 -0
- package/lib/esm/view/invoicing/invoiceList/fetchInvoiceKPIsEpic.js +17 -0
- package/lib/esm/view/invoicing/invoiceList/fetchInvoiceListEpic.js +55 -0
- package/lib/esm/view/invoicing/invoiceList/invoiceListReducer.js +90 -0
- package/lib/esm/view/invoicing/invoiceList/invoiceListSelector.js +11 -0
- package/lib/esm/view/invoicing/invoiceList/invoiceListState.js +1 -0
- package/lib/esm/view/invoicing/invoicePdf/invoicePdfEpic.js +37 -0
- package/lib/esm/view/invoicing/invoicePdf/invoicePdfReducer.js +33 -0
- package/lib/esm/view/invoicing/invoicePdf/invoicePdfSelector.js +5 -0
- package/lib/esm/view/invoicing/invoicingApiHelper.js +38 -0
- package/lib/esm/view/invoicing/paymentAction/paymentActionEpic.js +28 -0
- package/lib/esm/view/invoicing/paymentAction/paymentActionReducer.js +36 -0
- package/lib/esm/view/invoicing/paymentAction/paymentActionSelector.js +5 -0
- package/lib/esm/view/invoicing/recordPayment/recordPaymentEpic.js +23 -0
- package/lib/esm/view/invoicing/recordPayment/recordPaymentReducer.js +36 -0
- package/lib/esm/view/invoicing/recordPayment/recordPaymentSelector.js +5 -0
- package/lib/esm/view/invoicing/reportsView/reportsViewEpics.js +28 -0
- package/lib/esm/view/invoicing/reportsView/reportsViewReducer.js +54 -0
- package/lib/esm/view/invoicing/reportsView/reportsViewSelector.js +13 -0
- package/lib/esm/view/invoicing/settingsView/settingsViewEpics.js +53 -0
- package/lib/esm/view/invoicing/settingsView/settingsViewReducer.js +69 -0
- package/lib/esm/view/invoicing/settingsView/settingsViewSelector.js +7 -0
- package/lib/esm/view/invoicing/subscriptionAction/subscriptionActionEpic.js +28 -0
- package/lib/esm/view/invoicing/subscriptionAction/subscriptionActionReducer.js +36 -0
- package/lib/esm/view/invoicing/subscriptionAction/subscriptionActionSelector.js +5 -0
- package/lib/esm/view/invoicing/subscriptionView/subscriptionViewEpics.js +85 -0
- package/lib/esm/view/invoicing/subscriptionView/subscriptionViewReducer.js +90 -0
- package/lib/esm/view/invoicing/subscriptionView/subscriptionViewSelector.js +19 -0
- package/lib/esm/view/invoicing/subscriptionWrite/subscriptionWriteEpic.js +25 -0
- package/lib/esm/view/invoicing/subscriptionWrite/subscriptionWriteReducer.js +36 -0
- package/lib/esm/view/invoicing/subscriptionWrite/subscriptionWriteSelector.js +5 -0
- package/lib/esm/view/invoicing/transactionView/transactionViewEpics.js +76 -0
- package/lib/esm/view/invoicing/transactionView/transactionViewReducer.js +90 -0
- package/lib/esm/view/invoicing/transactionView/transactionViewSelector.js +19 -0
- package/lib/index.d.ts +101 -4
- package/lib/index.js +373 -5
- package/lib/reducer.d.ts +114 -0
- package/lib/reducer.js +126 -12
- package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +14 -0
- package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +8 -4
- package/lib/view/aiCfoView/aiCfoViewReducer.js +30 -4
- package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +2 -1
- package/lib/view/aiCfoView/aiCfoViewSelector.js +12 -0
- package/lib/view/aiCfoView/aiCfoViewState.d.ts +15 -0
- package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -2
- package/lib/view/aiCfoView/epics/fetchSkillsEpic.d.ts +8 -0
- package/lib/view/aiCfoView/epics/fetchSkillsEpic.js +38 -0
- package/lib/view/aiCfoView/epics/submitQuestionEpic.js +7 -1
- package/lib/view/invoicing/analyticsView/analyticsViewEpics.d.ts +7 -0
- package/lib/view/invoicing/analyticsView/analyticsViewEpics.js +46 -0
- package/lib/view/invoicing/analyticsView/analyticsViewReducer.d.ts +22 -0
- package/lib/view/invoicing/analyticsView/analyticsViewReducer.js +49 -0
- package/lib/view/invoicing/analyticsView/analyticsViewSelector.d.ts +10 -0
- package/lib/view/invoicing/analyticsView/analyticsViewSelector.js +20 -0
- package/lib/view/invoicing/approvalAction/approvalActionEpic.d.ts +8 -0
- package/lib/view/invoicing/approvalAction/approvalActionEpic.js +32 -0
- package/lib/view/invoicing/approvalAction/approvalActionReducer.d.ts +20 -0
- package/lib/view/invoicing/approvalAction/approvalActionReducer.js +40 -0
- package/lib/view/invoicing/approvalAction/approvalActionSelector.d.ts +3 -0
- package/lib/view/invoicing/approvalAction/approvalActionSelector.js +9 -0
- package/lib/view/invoicing/approvalsView/approvalsViewEpics.d.ts +7 -0
- package/lib/view/invoicing/approvalsView/approvalsViewEpics.js +41 -0
- package/lib/view/invoicing/approvalsView/approvalsViewReducer.d.ts +33 -0
- package/lib/view/invoicing/approvalsView/approvalsViewReducer.js +66 -0
- package/lib/view/invoicing/approvalsView/approvalsViewSelector.d.ts +9 -0
- package/lib/view/invoicing/approvalsView/approvalsViewSelector.js +16 -0
- package/lib/view/invoicing/auditView/auditViewEpics.d.ts +7 -0
- package/lib/view/invoicing/auditView/auditViewEpics.js +50 -0
- package/lib/view/invoicing/auditView/auditViewReducer.d.ts +36 -0
- package/lib/view/invoicing/auditView/auditViewReducer.js +60 -0
- package/lib/view/invoicing/auditView/auditViewSelector.d.ts +9 -0
- package/lib/view/invoicing/auditView/auditViewSelector.js +16 -0
- package/lib/view/invoicing/catalogView/catalogViewEpics.d.ts +14 -0
- package/lib/view/invoicing/catalogView/catalogViewEpics.js +152 -0
- package/lib/view/invoicing/catalogView/catalogViewReducer.d.ts +76 -0
- package/lib/view/invoicing/catalogView/catalogViewReducer.js +166 -0
- package/lib/view/invoicing/catalogView/catalogViewSelector.d.ts +22 -0
- package/lib/view/invoicing/catalogView/catalogViewSelector.js +52 -0
- package/lib/view/invoicing/catalogWrite/catalogWriteEpic.d.ts +9 -0
- package/lib/view/invoicing/catalogWrite/catalogWriteEpic.js +38 -0
- package/lib/view/invoicing/catalogWrite/catalogWriteReducer.d.ts +21 -0
- package/lib/view/invoicing/catalogWrite/catalogWriteReducer.js +43 -0
- package/lib/view/invoicing/catalogWrite/catalogWriteSelector.d.ts +6 -0
- package/lib/view/invoicing/catalogWrite/catalogWriteSelector.js +12 -0
- package/lib/view/invoicing/couponView/couponViewEpics.d.ts +11 -0
- package/lib/view/invoicing/couponView/couponViewEpics.js +90 -0
- package/lib/view/invoicing/couponView/couponViewReducer.d.ts +42 -0
- package/lib/view/invoicing/couponView/couponViewReducer.js +109 -0
- package/lib/view/invoicing/couponView/couponViewSelector.d.ts +14 -0
- package/lib/view/invoicing/couponView/couponViewSelector.js +31 -0
- package/lib/view/invoicing/couponWrite/couponWriteEpic.d.ts +8 -0
- package/lib/view/invoicing/couponWrite/couponWriteEpic.js +33 -0
- package/lib/view/invoicing/couponWrite/couponWriteReducer.d.ts +17 -0
- package/lib/view/invoicing/couponWrite/couponWriteReducer.js +40 -0
- package/lib/view/invoicing/couponWrite/couponWriteSelector.d.ts +4 -0
- package/lib/view/invoicing/couponWrite/couponWriteSelector.js +10 -0
- package/lib/view/invoicing/createInvoice/createInvoiceEpic.d.ts +8 -0
- package/lib/view/invoicing/createInvoice/createInvoiceEpic.js +27 -0
- package/lib/view/invoicing/createInvoice/createInvoiceReducer.d.ts +34 -0
- package/lib/view/invoicing/createInvoice/createInvoiceReducer.js +40 -0
- package/lib/view/invoicing/createInvoice/createInvoiceSelector.d.ts +4 -0
- package/lib/view/invoicing/createInvoice/createInvoiceSelector.js +10 -0
- package/lib/view/invoicing/creditNoteView/creditNoteViewEpics.d.ts +11 -0
- package/lib/view/invoicing/creditNoteView/creditNoteViewEpics.js +94 -0
- package/lib/view/invoicing/creditNoteView/creditNoteViewReducer.d.ts +43 -0
- package/lib/view/invoicing/creditNoteView/creditNoteViewReducer.js +109 -0
- package/lib/view/invoicing/creditNoteView/creditNoteViewSelector.d.ts +14 -0
- package/lib/view/invoicing/creditNoteView/creditNoteViewSelector.js +33 -0
- package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodEpic.d.ts +11 -0
- package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodEpic.js +70 -0
- package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodReducer.d.ts +42 -0
- package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodReducer.js +88 -0
- package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodSelector.d.ts +10 -0
- package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodSelector.js +17 -0
- package/lib/view/invoicing/customerView/customerViewEpics.d.ts +10 -0
- package/lib/view/invoicing/customerView/customerViewEpics.js +77 -0
- package/lib/view/invoicing/customerView/customerViewReducer.d.ts +41 -0
- package/lib/view/invoicing/customerView/customerViewReducer.js +94 -0
- package/lib/view/invoicing/customerView/customerViewSelector.d.ts +13 -0
- package/lib/view/invoicing/customerView/customerViewSelector.js +29 -0
- package/lib/view/invoicing/customerWrite/customerWriteEpic.d.ts +8 -0
- package/lib/view/invoicing/customerWrite/customerWriteEpic.js +27 -0
- package/lib/view/invoicing/customerWrite/customerWriteReducer.d.ts +17 -0
- package/lib/view/invoicing/customerWrite/customerWriteReducer.js +40 -0
- package/lib/view/invoicing/customerWrite/customerWriteSelector.d.ts +4 -0
- package/lib/view/invoicing/customerWrite/customerWriteSelector.js +10 -0
- package/lib/view/invoicing/dataImportAction/dataImportActionEpic.d.ts +7 -0
- package/lib/view/invoicing/dataImportAction/dataImportActionEpic.js +45 -0
- package/lib/view/invoicing/dataImportAction/dataImportActionReducer.d.ts +23 -0
- package/lib/view/invoicing/dataImportAction/dataImportActionReducer.js +77 -0
- package/lib/view/invoicing/dataImportAction/dataImportActionSelector.d.ts +4 -0
- package/lib/view/invoicing/dataImportAction/dataImportActionSelector.js +9 -0
- package/lib/view/invoicing/dataImportView/dataImportViewEpics.d.ts +9 -0
- package/lib/view/invoicing/dataImportView/dataImportViewEpics.js +47 -0
- package/lib/view/invoicing/dataImportView/dataImportViewReducer.d.ts +15 -0
- package/lib/view/invoicing/dataImportView/dataImportViewReducer.js +70 -0
- package/lib/view/invoicing/dataImportView/dataImportViewSelector.d.ts +9 -0
- package/lib/view/invoicing/dataImportView/dataImportViewSelector.js +15 -0
- package/lib/view/invoicing/dunningAction/dunningActionEpic.d.ts +8 -0
- package/lib/view/invoicing/dunningAction/dunningActionEpic.js +32 -0
- package/lib/view/invoicing/dunningAction/dunningActionReducer.d.ts +21 -0
- package/lib/view/invoicing/dunningAction/dunningActionReducer.js +40 -0
- package/lib/view/invoicing/dunningAction/dunningActionSelector.d.ts +3 -0
- package/lib/view/invoicing/dunningAction/dunningActionSelector.js +9 -0
- package/lib/view/invoicing/dunningCaseView/dunningCaseViewEpics.d.ts +11 -0
- package/lib/view/invoicing/dunningCaseView/dunningCaseViewEpics.js +92 -0
- package/lib/view/invoicing/dunningCaseView/dunningCaseViewReducer.d.ts +42 -0
- package/lib/view/invoicing/dunningCaseView/dunningCaseViewReducer.js +109 -0
- package/lib/view/invoicing/dunningCaseView/dunningCaseViewSelector.d.ts +14 -0
- package/lib/view/invoicing/dunningCaseView/dunningCaseViewSelector.js +33 -0
- package/lib/view/invoicing/invoiceAction/invoiceActionEpic.d.ts +9 -0
- package/lib/view/invoicing/invoiceAction/invoiceActionEpic.js +55 -0
- package/lib/view/invoicing/invoiceAction/invoiceActionReducer.d.ts +26 -0
- package/lib/view/invoicing/invoiceAction/invoiceActionReducer.js +46 -0
- package/lib/view/invoicing/invoiceAction/invoiceActionSelector.d.ts +3 -0
- package/lib/view/invoicing/invoiceAction/invoiceActionSelector.js +9 -0
- package/lib/view/invoicing/invoiceDetail/fetchInvoiceDetailEpic.d.ts +8 -0
- package/lib/view/invoicing/invoiceDetail/fetchInvoiceDetailEpic.js +24 -0
- package/lib/view/invoicing/invoiceDetail/invoiceDetailReducer.d.ts +11 -0
- package/lib/view/invoicing/invoiceDetail/invoiceDetailReducer.js +38 -0
- package/lib/view/invoicing/invoiceDetail/invoiceDetailSelector.d.ts +5 -0
- package/lib/view/invoicing/invoiceDetail/invoiceDetailSelector.js +14 -0
- package/lib/view/invoicing/invoiceDetail/invoiceDetailState.d.ts +4 -0
- package/lib/view/invoicing/invoiceDetail/invoiceDetailState.js +2 -0
- package/lib/view/invoicing/invoiceList/fetchInvoiceCountsEpic.d.ts +7 -0
- package/lib/view/invoicing/invoiceList/fetchInvoiceCountsEpic.js +36 -0
- package/lib/view/invoicing/invoiceList/fetchInvoiceKPIsEpic.d.ts +7 -0
- package/lib/view/invoicing/invoiceList/fetchInvoiceKPIsEpic.js +21 -0
- package/lib/view/invoicing/invoiceList/fetchInvoiceListEpic.d.ts +8 -0
- package/lib/view/invoicing/invoiceList/fetchInvoiceListEpic.js +59 -0
- package/lib/view/invoicing/invoiceList/invoiceListReducer.d.ts +22 -0
- package/lib/view/invoicing/invoiceList/invoiceListReducer.js +94 -0
- package/lib/view/invoicing/invoiceList/invoiceListSelector.d.ts +11 -0
- package/lib/view/invoicing/invoiceList/invoiceListSelector.js +21 -0
- package/lib/view/invoicing/invoiceList/invoiceListState.d.ts +25 -0
- package/lib/view/invoicing/invoiceList/invoiceListState.js +2 -0
- package/lib/view/invoicing/invoicePdf/invoicePdfEpic.d.ts +7 -0
- package/lib/view/invoicing/invoicePdf/invoicePdfEpic.js +41 -0
- package/lib/view/invoicing/invoicePdf/invoicePdfReducer.d.ts +20 -0
- package/lib/view/invoicing/invoicePdf/invoicePdfReducer.js +37 -0
- package/lib/view/invoicing/invoicePdf/invoicePdfSelector.d.ts +3 -0
- package/lib/view/invoicing/invoicePdf/invoicePdfSelector.js +9 -0
- package/lib/view/invoicing/invoicingApiHelper.d.ts +22 -0
- package/lib/view/invoicing/invoicingApiHelper.js +44 -0
- package/lib/view/invoicing/paymentAction/paymentActionEpic.d.ts +8 -0
- package/lib/view/invoicing/paymentAction/paymentActionEpic.js +32 -0
- package/lib/view/invoicing/paymentAction/paymentActionReducer.d.ts +21 -0
- package/lib/view/invoicing/paymentAction/paymentActionReducer.js +40 -0
- package/lib/view/invoicing/paymentAction/paymentActionSelector.d.ts +3 -0
- package/lib/view/invoicing/paymentAction/paymentActionSelector.js +9 -0
- package/lib/view/invoicing/recordPayment/recordPaymentEpic.d.ts +8 -0
- package/lib/view/invoicing/recordPayment/recordPaymentEpic.js +27 -0
- package/lib/view/invoicing/recordPayment/recordPaymentReducer.d.ts +32 -0
- package/lib/view/invoicing/recordPayment/recordPaymentReducer.js +40 -0
- package/lib/view/invoicing/recordPayment/recordPaymentSelector.d.ts +4 -0
- package/lib/view/invoicing/recordPayment/recordPaymentSelector.js +10 -0
- package/lib/view/invoicing/reportsView/reportsViewEpics.d.ts +7 -0
- package/lib/view/invoicing/reportsView/reportsViewEpics.js +32 -0
- package/lib/view/invoicing/reportsView/reportsViewReducer.d.ts +20 -0
- package/lib/view/invoicing/reportsView/reportsViewReducer.js +58 -0
- package/lib/view/invoicing/reportsView/reportsViewSelector.d.ts +12 -0
- package/lib/view/invoicing/reportsView/reportsViewSelector.js +24 -0
- package/lib/view/invoicing/settingsView/settingsViewEpics.d.ts +10 -0
- package/lib/view/invoicing/settingsView/settingsViewEpics.js +60 -0
- package/lib/view/invoicing/settingsView/settingsViewReducer.d.ts +12 -0
- package/lib/view/invoicing/settingsView/settingsViewReducer.js +73 -0
- package/lib/view/invoicing/settingsView/settingsViewSelector.d.ts +7 -0
- package/lib/view/invoicing/settingsView/settingsViewSelector.js +14 -0
- package/lib/view/invoicing/subscriptionAction/subscriptionActionEpic.d.ts +8 -0
- package/lib/view/invoicing/subscriptionAction/subscriptionActionEpic.js +32 -0
- package/lib/view/invoicing/subscriptionAction/subscriptionActionReducer.d.ts +21 -0
- package/lib/view/invoicing/subscriptionAction/subscriptionActionReducer.js +40 -0
- package/lib/view/invoicing/subscriptionAction/subscriptionActionSelector.d.ts +3 -0
- package/lib/view/invoicing/subscriptionAction/subscriptionActionSelector.js +9 -0
- package/lib/view/invoicing/subscriptionView/subscriptionViewEpics.d.ts +10 -0
- package/lib/view/invoicing/subscriptionView/subscriptionViewEpics.js +91 -0
- package/lib/view/invoicing/subscriptionView/subscriptionViewReducer.d.ts +44 -0
- package/lib/view/invoicing/subscriptionView/subscriptionViewReducer.js +94 -0
- package/lib/view/invoicing/subscriptionView/subscriptionViewSelector.d.ts +13 -0
- package/lib/view/invoicing/subscriptionView/subscriptionViewSelector.js +31 -0
- package/lib/view/invoicing/subscriptionWrite/subscriptionWriteEpic.d.ts +8 -0
- package/lib/view/invoicing/subscriptionWrite/subscriptionWriteEpic.js +29 -0
- package/lib/view/invoicing/subscriptionWrite/subscriptionWriteReducer.d.ts +17 -0
- package/lib/view/invoicing/subscriptionWrite/subscriptionWriteReducer.js +40 -0
- package/lib/view/invoicing/subscriptionWrite/subscriptionWriteSelector.d.ts +4 -0
- package/lib/view/invoicing/subscriptionWrite/subscriptionWriteSelector.js +10 -0
- package/lib/view/invoicing/transactionView/transactionViewEpics.d.ts +10 -0
- package/lib/view/invoicing/transactionView/transactionViewEpics.js +82 -0
- package/lib/view/invoicing/transactionView/transactionViewReducer.d.ts +43 -0
- package/lib/view/invoicing/transactionView/transactionViewReducer.js +94 -0
- package/lib/view/invoicing/transactionView/transactionViewSelector.d.ts +13 -0
- package/lib/view/invoicing/transactionView/transactionViewSelector.js +31 -0
- package/lib/view/reviewCompanyView/reviewCompanyViewState.d.ts +1 -1
- package/lib/view/spendManagement/billPay/billList/billListReducer.d.ts +1 -1
- package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
- package/lib/view/spendManagement/reimbursement/remiListView/remiListReducer.d.ts +1 -1
- package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +3 -3
- package/lib/zeniAPI.d.ts +1 -0
- package/package.json +5 -2
package/lib/esm/reducer.js
CHANGED
|
@@ -33,6 +33,15 @@ import forecast, { initialState as initialForecastState, } from './entity/foreca
|
|
|
33
33
|
import entity, { initialState as initialEntityState, } from './entity/genericEntity/entityReducer';
|
|
34
34
|
import globalMerchant, { initialState as initialGlobalMerchantState, } from './entity/globalMerchant/globalMerchantReducer';
|
|
35
35
|
import insights, { initialState as initialInsightState, } from './entity/insights/insightReducer';
|
|
36
|
+
import invoicingCoupon, { initialState as initialInvoicingCouponState, } from './entity/invoicing/coupon/couponReducer';
|
|
37
|
+
import invoicingCreditNote, { initialState as initialInvoicingCreditNoteState, } from './entity/invoicing/creditNote/creditNoteReducer';
|
|
38
|
+
import invoicingCustomer, { initialState as initialInvoicingCustomerState, } from './entity/invoicing/customer/customerReducer';
|
|
39
|
+
import invoicingDunningCase, { initialState as initialInvoicingDunningCaseState, } from './entity/invoicing/dunningCase/dunningCaseReducer';
|
|
40
|
+
import invoicingInvoice, { initialState as initialInvoicingInvoiceState, } from './entity/invoicing/invoice/invoiceReducer';
|
|
41
|
+
import invoicingPlan, { initialState as initialInvoicingPlanState, } from './entity/invoicing/plan/planReducer';
|
|
42
|
+
import invoicingProduct, { initialState as initialInvoicingProductState, } from './entity/invoicing/product/productReducer';
|
|
43
|
+
import invoicingSubscription, { initialState as initialInvoicingSubscriptionState, } from './entity/invoicing/subscription/subscriptionReducer';
|
|
44
|
+
import invoicingTransaction, { initialState as initialInvoicingTransactionState, } from './entity/invoicing/transaction/transactionReducer';
|
|
36
45
|
import jeSchedules, { initialState as initialJESchedulesState, } from './entity/jeSchedules/jeSchedulesReducer';
|
|
37
46
|
import merchant, { initialState as initialMerchantState, } from './entity/merchant/merchantReducer';
|
|
38
47
|
import monthEndCloseChecks, { initialState as initialMonthEndCloseChecksState, } from './entity/monthEndCloseChecks/monthEndCloseChecksReducer';
|
|
@@ -117,6 +126,35 @@ import forecastList, { initialState as initialForecastListState, } from './view/
|
|
|
117
126
|
import globalMerchantAutoComplete, { initialState as initialGlobalMerchantAutoCompleteState, } from './view/globalMerchantView/globalMerchantAutoCompleteView/globalMerchantAutoCompleteViewReducer';
|
|
118
127
|
import globalMerchantView, { initialState as initialGlobalMerchantViewState, } from './view/globalMerchantView/globalMerchantViewReducer';
|
|
119
128
|
import insightsCard, { initialState as initialInsightCardState, } from './view/insightsCard/insightsCardReducer';
|
|
129
|
+
import invoicingAnalyticsView, { initialState as initialInvoicingAnalyticsViewState, } from './view/invoicing/analyticsView/analyticsViewReducer';
|
|
130
|
+
import invoicingApprovalAction, { initialState as initialInvoicingApprovalActionState, } from './view/invoicing/approvalAction/approvalActionReducer';
|
|
131
|
+
import invoicingApprovalsView, { initialState as initialInvoicingApprovalsViewState, } from './view/invoicing/approvalsView/approvalsViewReducer';
|
|
132
|
+
import invoicingAuditView, { initialState as initialInvoicingAuditViewState, } from './view/invoicing/auditView/auditViewReducer';
|
|
133
|
+
import invoicingCatalogView, { initialState as initialInvoicingCatalogViewState, } from './view/invoicing/catalogView/catalogViewReducer';
|
|
134
|
+
import invoicingCatalogWrite, { initialState as initialInvoicingCatalogWriteState, } from './view/invoicing/catalogWrite/catalogWriteReducer';
|
|
135
|
+
import invoicingCouponWrite, { initialState as initialInvoicingCouponWriteState, } from './view/invoicing/couponWrite/couponWriteReducer';
|
|
136
|
+
import invoicingCouponView, { initialState as initialInvoicingCouponViewState, } from './view/invoicing/couponView/couponViewReducer';
|
|
137
|
+
import invoicingCreateInvoice, { initialState as initialInvoicingCreateInvoiceState, } from './view/invoicing/createInvoice/createInvoiceReducer';
|
|
138
|
+
import invoicingCreditNoteView, { initialState as initialInvoicingCreditNoteViewState, } from './view/invoicing/creditNoteView/creditNoteViewReducer';
|
|
139
|
+
import invoicingCustomerPaymentMethod, { initialState as initialInvoicingCustomerPaymentMethodState, } from './view/invoicing/customerPaymentMethod/customerPaymentMethodReducer';
|
|
140
|
+
import invoicingCustomerView, { initialState as initialInvoicingCustomerViewState, } from './view/invoicing/customerView/customerViewReducer';
|
|
141
|
+
import invoicingCustomerWrite, { initialState as initialInvoicingCustomerWriteState, } from './view/invoicing/customerWrite/customerWriteReducer';
|
|
142
|
+
import invoicingDataImportAction, { initialState as initialInvoicingDataImportActionState, } from './view/invoicing/dataImportAction/dataImportActionReducer';
|
|
143
|
+
import invoicingDataImportView, { initialState as initialInvoicingDataImportViewState, } from './view/invoicing/dataImportView/dataImportViewReducer';
|
|
144
|
+
import invoicingDunningAction, { initialState as initialInvoicingDunningActionState, } from './view/invoicing/dunningAction/dunningActionReducer';
|
|
145
|
+
import invoicingDunningCaseView, { initialState as initialInvoicingDunningCaseViewState, } from './view/invoicing/dunningCaseView/dunningCaseViewReducer';
|
|
146
|
+
import invoicingInvoiceAction, { initialState as initialInvoicingInvoiceActionState, } from './view/invoicing/invoiceAction/invoiceActionReducer';
|
|
147
|
+
import invoicingInvoiceDetail, { initialState as initialInvoicingInvoiceDetailState, } from './view/invoicing/invoiceDetail/invoiceDetailReducer';
|
|
148
|
+
import invoicingInvoiceList, { initialState as initialInvoicingInvoiceListState, } from './view/invoicing/invoiceList/invoiceListReducer';
|
|
149
|
+
import invoicingInvoicePdf, { initialState as initialInvoicingInvoicePdfState, } from './view/invoicing/invoicePdf/invoicePdfReducer';
|
|
150
|
+
import invoicingPaymentAction, { initialState as initialInvoicingPaymentActionState, } from './view/invoicing/paymentAction/paymentActionReducer';
|
|
151
|
+
import invoicingRecordPayment, { initialState as initialInvoicingRecordPaymentState, } from './view/invoicing/recordPayment/recordPaymentReducer';
|
|
152
|
+
import invoicingReportsView, { initialState as initialInvoicingReportsViewState, } from './view/invoicing/reportsView/reportsViewReducer';
|
|
153
|
+
import invoicingSettingsView, { initialState as initialInvoicingSettingsViewState, } from './view/invoicing/settingsView/settingsViewReducer';
|
|
154
|
+
import invoicingSubscriptionAction, { initialState as initialInvoicingSubscriptionActionState, } from './view/invoicing/subscriptionAction/subscriptionActionReducer';
|
|
155
|
+
import invoicingSubscriptionView, { initialState as initialInvoicingSubscriptionViewState, } from './view/invoicing/subscriptionView/subscriptionViewReducer';
|
|
156
|
+
import invoicingSubscriptionWrite, { initialState as initialInvoicingSubscriptionWriteState, } from './view/invoicing/subscriptionWrite/subscriptionWriteReducer';
|
|
157
|
+
import invoicingTransactionView, { initialState as initialInvoicingTransactionViewState, } from './view/invoicing/transactionView/transactionViewReducer';
|
|
120
158
|
import monthEndCloseChecksView, { initialState as initialMonthEndCloseChecksViewState, } from './view/monthEndCloseChecksView/monthEndCloseChecksViewReducer';
|
|
121
159
|
import netBurnOrIncome, { initialState as initialNetBurnOrIncomeWithForecastState, } from './view/netBurnOrIncome/netBurnOrIncomeReducer';
|
|
122
160
|
import netBurnOrIncomeClassesView, { initialState as initialNetBurnOrIncomeClassesViewState, } from './view/netBurnOrIncomeClassesView/netBurnOrIncomeClassesViewReducer';
|
|
@@ -266,6 +304,15 @@ const initialEntitiesState = {
|
|
|
266
304
|
forecastState: initialForecastState,
|
|
267
305
|
globalMerchantState: initialGlobalMerchantState,
|
|
268
306
|
insightState: initialInsightState,
|
|
307
|
+
invoicingCouponState: initialInvoicingCouponState,
|
|
308
|
+
invoicingCreditNoteState: initialInvoicingCreditNoteState,
|
|
309
|
+
invoicingCustomerState: initialInvoicingCustomerState,
|
|
310
|
+
invoicingDunningCaseState: initialInvoicingDunningCaseState,
|
|
311
|
+
invoicingInvoiceState: initialInvoicingInvoiceState,
|
|
312
|
+
invoicingPlanState: initialInvoicingPlanState,
|
|
313
|
+
invoicingProductState: initialInvoicingProductState,
|
|
314
|
+
invoicingSubscriptionState: initialInvoicingSubscriptionState,
|
|
315
|
+
invoicingTransactionState: initialInvoicingTransactionState,
|
|
269
316
|
jeSchedulesState: initialJESchedulesState,
|
|
270
317
|
merchantState: initialMerchantState,
|
|
271
318
|
monthEndCloseChecksState: initialMonthEndCloseChecksState,
|
|
@@ -382,6 +429,35 @@ const initialViewsState = {
|
|
|
382
429
|
globalMerchantAutoCompleteState: initialGlobalMerchantAutoCompleteState,
|
|
383
430
|
globalMerchantViewState: initialGlobalMerchantViewState,
|
|
384
431
|
insightsCardState: initialInsightCardState,
|
|
432
|
+
invoicingAnalyticsViewState: initialInvoicingAnalyticsViewState,
|
|
433
|
+
invoicingApprovalActionState: initialInvoicingApprovalActionState,
|
|
434
|
+
invoicingApprovalsViewState: initialInvoicingApprovalsViewState,
|
|
435
|
+
invoicingAuditViewState: initialInvoicingAuditViewState,
|
|
436
|
+
invoicingCatalogViewState: initialInvoicingCatalogViewState,
|
|
437
|
+
invoicingCatalogWriteState: initialInvoicingCatalogWriteState,
|
|
438
|
+
invoicingCouponWriteState: initialInvoicingCouponWriteState,
|
|
439
|
+
invoicingCouponViewState: initialInvoicingCouponViewState,
|
|
440
|
+
invoicingCreditNoteViewState: initialInvoicingCreditNoteViewState,
|
|
441
|
+
invoicingCreateInvoiceState: initialInvoicingCreateInvoiceState,
|
|
442
|
+
invoicingRecordPaymentState: initialInvoicingRecordPaymentState,
|
|
443
|
+
invoicingCustomerPaymentMethodState: initialInvoicingCustomerPaymentMethodState,
|
|
444
|
+
invoicingCustomerViewState: initialInvoicingCustomerViewState,
|
|
445
|
+
invoicingCustomerWriteState: initialInvoicingCustomerWriteState,
|
|
446
|
+
invoicingDataImportActionState: initialInvoicingDataImportActionState,
|
|
447
|
+
invoicingDataImportViewState: initialInvoicingDataImportViewState,
|
|
448
|
+
invoicingDunningActionState: initialInvoicingDunningActionState,
|
|
449
|
+
invoicingDunningCaseViewState: initialInvoicingDunningCaseViewState,
|
|
450
|
+
invoicingInvoiceActionState: initialInvoicingInvoiceActionState,
|
|
451
|
+
invoicingInvoiceDetailState: initialInvoicingInvoiceDetailState,
|
|
452
|
+
invoicingInvoiceListState: initialInvoicingInvoiceListState,
|
|
453
|
+
invoicingInvoicePdfState: initialInvoicingInvoicePdfState,
|
|
454
|
+
invoicingPaymentActionState: initialInvoicingPaymentActionState,
|
|
455
|
+
invoicingReportsViewState: initialInvoicingReportsViewState,
|
|
456
|
+
invoicingSettingsViewState: initialInvoicingSettingsViewState,
|
|
457
|
+
invoicingSubscriptionActionState: initialInvoicingSubscriptionActionState,
|
|
458
|
+
invoicingSubscriptionViewState: initialInvoicingSubscriptionViewState,
|
|
459
|
+
invoicingSubscriptionWriteState: initialInvoicingSubscriptionWriteState,
|
|
460
|
+
invoicingTransactionViewState: initialInvoicingTransactionViewState,
|
|
385
461
|
internationalWireState: initialInternationalWireState,
|
|
386
462
|
issueChargeCardState: issueChargeCardInitialstate,
|
|
387
463
|
internationalWireVerificationState: initialInternationalWireVerificationState,
|
|
@@ -509,6 +585,15 @@ const entityReducers = {
|
|
|
509
585
|
forecastState: forecast,
|
|
510
586
|
globalMerchantState: globalMerchant,
|
|
511
587
|
insightState: insights,
|
|
588
|
+
invoicingCouponState: invoicingCoupon,
|
|
589
|
+
invoicingCreditNoteState: invoicingCreditNote,
|
|
590
|
+
invoicingCustomerState: invoicingCustomer,
|
|
591
|
+
invoicingDunningCaseState: invoicingDunningCase,
|
|
592
|
+
invoicingInvoiceState: invoicingInvoice,
|
|
593
|
+
invoicingPlanState: invoicingPlan,
|
|
594
|
+
invoicingProductState: invoicingProduct,
|
|
595
|
+
invoicingSubscriptionState: invoicingSubscription,
|
|
596
|
+
invoicingTransactionState: invoicingTransaction,
|
|
512
597
|
jeSchedulesState: jeSchedules,
|
|
513
598
|
merchantState: merchant,
|
|
514
599
|
monthEndCloseChecksState: monthEndCloseChecks,
|
|
@@ -624,6 +709,35 @@ const viewReducers = {
|
|
|
624
709
|
globalMerchantAutoCompleteState: globalMerchantAutoComplete,
|
|
625
710
|
globalMerchantViewState: globalMerchantView,
|
|
626
711
|
insightsCardState: insightsCard,
|
|
712
|
+
invoicingAnalyticsViewState: invoicingAnalyticsView,
|
|
713
|
+
invoicingApprovalActionState: invoicingApprovalAction,
|
|
714
|
+
invoicingApprovalsViewState: invoicingApprovalsView,
|
|
715
|
+
invoicingAuditViewState: invoicingAuditView,
|
|
716
|
+
invoicingCatalogViewState: invoicingCatalogView,
|
|
717
|
+
invoicingCatalogWriteState: invoicingCatalogWrite,
|
|
718
|
+
invoicingCouponWriteState: invoicingCouponWrite,
|
|
719
|
+
invoicingCouponViewState: invoicingCouponView,
|
|
720
|
+
invoicingCreditNoteViewState: invoicingCreditNoteView,
|
|
721
|
+
invoicingCreateInvoiceState: invoicingCreateInvoice,
|
|
722
|
+
invoicingRecordPaymentState: invoicingRecordPayment,
|
|
723
|
+
invoicingCustomerPaymentMethodState: invoicingCustomerPaymentMethod,
|
|
724
|
+
invoicingCustomerViewState: invoicingCustomerView,
|
|
725
|
+
invoicingCustomerWriteState: invoicingCustomerWrite,
|
|
726
|
+
invoicingDataImportActionState: invoicingDataImportAction,
|
|
727
|
+
invoicingDataImportViewState: invoicingDataImportView,
|
|
728
|
+
invoicingDunningActionState: invoicingDunningAction,
|
|
729
|
+
invoicingDunningCaseViewState: invoicingDunningCaseView,
|
|
730
|
+
invoicingInvoiceActionState: invoicingInvoiceAction,
|
|
731
|
+
invoicingInvoiceDetailState: invoicingInvoiceDetail,
|
|
732
|
+
invoicingInvoiceListState: invoicingInvoiceList,
|
|
733
|
+
invoicingInvoicePdfState: invoicingInvoicePdf,
|
|
734
|
+
invoicingPaymentActionState: invoicingPaymentAction,
|
|
735
|
+
invoicingReportsViewState: invoicingReportsView,
|
|
736
|
+
invoicingSettingsViewState: invoicingSettingsView,
|
|
737
|
+
invoicingSubscriptionActionState: invoicingSubscriptionAction,
|
|
738
|
+
invoicingSubscriptionViewState: invoicingSubscriptionView,
|
|
739
|
+
invoicingSubscriptionWriteState: invoicingSubscriptionWrite,
|
|
740
|
+
invoicingTransactionViewState: invoicingTransactionView,
|
|
627
741
|
internationalWireState: internationalWire,
|
|
628
742
|
issueChargeCardState: issueChargeCards,
|
|
629
743
|
internationalWireVerificationState: internationalWireVerification,
|
|
@@ -47,6 +47,7 @@ export const initialAiCfoViewState = {
|
|
|
47
47
|
responseStateByChatSessionId: {},
|
|
48
48
|
stopSubmitStateByChatSessionId: {},
|
|
49
49
|
suggestedQuestionsByPageContext: {},
|
|
50
|
+
skills: { fetchState: 'Not-Started', error: undefined, skills: [] },
|
|
50
51
|
};
|
|
51
52
|
const aiCfoView = createSlice({
|
|
52
53
|
name: 'aiCfoView',
|
|
@@ -62,7 +63,7 @@ const aiCfoView = createSlice({
|
|
|
62
63
|
answer: { fetchState: 'In-Progress', error: undefined },
|
|
63
64
|
};
|
|
64
65
|
},
|
|
65
|
-
prepare(sessionId, questionAnswerId, userId, questionId, createdAt, question, files) {
|
|
66
|
+
prepare(sessionId, questionAnswerId, userId, questionId, createdAt, question, files, macroId) {
|
|
66
67
|
return {
|
|
67
68
|
payload: {
|
|
68
69
|
sessionId,
|
|
@@ -72,6 +73,7 @@ const aiCfoView = createSlice({
|
|
|
72
73
|
createdAt,
|
|
73
74
|
question,
|
|
74
75
|
files,
|
|
76
|
+
macroId,
|
|
75
77
|
},
|
|
76
78
|
};
|
|
77
79
|
},
|
|
@@ -222,7 +224,7 @@ const aiCfoView = createSlice({
|
|
|
222
224
|
draft.createSessionAndSubmitState.fetchState = 'In-Progress';
|
|
223
225
|
draft.createSessionAndSubmitState.error = undefined;
|
|
224
226
|
},
|
|
225
|
-
prepare(agentId, userId, questionAnswerId, questionId, createdAt, question, files, pageContext) {
|
|
227
|
+
prepare(agentId, userId, questionAnswerId, questionId, createdAt, question, files, pageContext, macroId) {
|
|
226
228
|
return {
|
|
227
229
|
payload: {
|
|
228
230
|
agentId,
|
|
@@ -233,6 +235,7 @@ const aiCfoView = createSlice({
|
|
|
233
235
|
question,
|
|
234
236
|
files,
|
|
235
237
|
pageContext,
|
|
238
|
+
macroId,
|
|
236
239
|
},
|
|
237
240
|
};
|
|
238
241
|
},
|
|
@@ -445,6 +448,29 @@ const aiCfoView = createSlice({
|
|
|
445
448
|
error,
|
|
446
449
|
};
|
|
447
450
|
},
|
|
451
|
+
fetchSkills(draft) {
|
|
452
|
+
// Optional-chain: persisted/rehydrated state from before this slice existed
|
|
453
|
+
// may have no `skills`, so don't assume draft.skills is set.
|
|
454
|
+
draft.skills = {
|
|
455
|
+
fetchState: 'In-Progress',
|
|
456
|
+
error: undefined,
|
|
457
|
+
skills: draft.skills?.skills ?? [],
|
|
458
|
+
};
|
|
459
|
+
},
|
|
460
|
+
fetchSkillsSuccess(draft, action) {
|
|
461
|
+
draft.skills = {
|
|
462
|
+
fetchState: 'Completed',
|
|
463
|
+
error: undefined,
|
|
464
|
+
skills: action.payload.skills,
|
|
465
|
+
};
|
|
466
|
+
},
|
|
467
|
+
fetchSkillsFailure(draft, action) {
|
|
468
|
+
draft.skills = {
|
|
469
|
+
fetchState: 'Error',
|
|
470
|
+
error: action.payload,
|
|
471
|
+
skills: draft.skills?.skills ?? [],
|
|
472
|
+
};
|
|
473
|
+
},
|
|
448
474
|
clearAiCfoView(draft) {
|
|
449
475
|
Object.assign(draft, initialAiCfoViewState);
|
|
450
476
|
},
|
|
@@ -455,5 +481,5 @@ const aiCfoView = createSlice({
|
|
|
455
481
|
},
|
|
456
482
|
},
|
|
457
483
|
});
|
|
458
|
-
export const { submitQuestion, submitQuestionSuccess, submitQuestionFailure, updateResponseState, updateAiCfoViewScrollPosition, updateCurrentInput, clearInput, setSession, createSession, createSessionSuccess, createSessionFailure, createSessionAndSubmit, initializeNewSessionState, createSessionAndSubmitSuccess, createSessionAndSubmitFailure, fetchChatSessionsForUser, fetchChatSessionsForUserSuccess, fetchChatSessionsForUserFailure, fetchChatHistory, fetchChatHistorySuccess, fetchChatHistoryFailure, clearCurrentSessionId, clearLastContextMessage, stopSubmit, stopSubmitSuccess, stopSubmitFailure, stopSubmitQuestion, stopSubmitQuestionSuccess, stopSubmitQuestionFailure, acceptMasterTOS, acceptMasterTOSSuccess, acceptMasterTOSFailure, deleteChatSession, deleteChatSessionSuccess, deleteChatSessionFailure, clearDeleteChatSessionStatus, clearAiCfoView, updateCotCollapsedState, fetchSuggestedQuestions, fetchSuggestedQuestionsSuccess, fetchSuggestedQuestionsFailure, applyAiCfoSidePanelHostPageTransition, clearAiCfoSidePanelHostPageContext, } = aiCfoView.actions;
|
|
484
|
+
export const { submitQuestion, submitQuestionSuccess, submitQuestionFailure, updateResponseState, updateAiCfoViewScrollPosition, updateCurrentInput, clearInput, setSession, createSession, createSessionSuccess, createSessionFailure, createSessionAndSubmit, initializeNewSessionState, createSessionAndSubmitSuccess, createSessionAndSubmitFailure, fetchChatSessionsForUser, fetchChatSessionsForUserSuccess, fetchChatSessionsForUserFailure, fetchChatHistory, fetchChatHistorySuccess, fetchChatHistoryFailure, clearCurrentSessionId, clearLastContextMessage, stopSubmit, stopSubmitSuccess, stopSubmitFailure, stopSubmitQuestion, stopSubmitQuestionSuccess, stopSubmitQuestionFailure, acceptMasterTOS, acceptMasterTOSSuccess, acceptMasterTOSFailure, deleteChatSession, deleteChatSessionSuccess, deleteChatSessionFailure, clearDeleteChatSessionStatus, clearAiCfoView, updateCotCollapsedState, fetchSuggestedQuestions, fetchSuggestedQuestionsSuccess, fetchSuggestedQuestionsFailure, fetchSkills, fetchSkillsSuccess, fetchSkillsFailure, applyAiCfoSidePanelHostPageTransition, clearAiCfoSidePanelHostPageContext, } = aiCfoView.actions;
|
|
459
485
|
export default aiCfoView.reducer;
|
|
@@ -22,3 +22,14 @@ export const getAiCfoView = (state) => {
|
|
|
22
22
|
export function getSuggestedQuestionsForPageContext(state, pageContext) {
|
|
23
23
|
return state.aiCfoViewState?.suggestedQuestionsByPageContext?.[pageContext];
|
|
24
24
|
}
|
|
25
|
+
// Stable fallback so getSkills returns a referentially-stable object when skills
|
|
26
|
+
// state is absent — a fresh literal each call would defeat useSelector identity
|
|
27
|
+
// checks and cause needless re-renders.
|
|
28
|
+
const EMPTY_SKILLS_STATE = {
|
|
29
|
+
fetchState: 'Not-Started',
|
|
30
|
+
error: undefined,
|
|
31
|
+
skills: [],
|
|
32
|
+
};
|
|
33
|
+
export function getSkills(state) {
|
|
34
|
+
return state.aiCfoViewState?.skills ?? EMPTY_SKILLS_STATE;
|
|
35
|
+
}
|
|
@@ -66,7 +66,7 @@ function waitForChannelSubscription(pusherInstance, channelName, timeoutMs = 500
|
|
|
66
66
|
}));
|
|
67
67
|
}
|
|
68
68
|
export const createSessionAndSubmitEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(createSessionAndSubmit.match), switchMap((action) => {
|
|
69
|
-
const { agentId, userId, questionAnswerId, questionId, createdAt, question, files, pageContext, } = action.payload;
|
|
69
|
+
const { agentId, userId, questionAnswerId, questionId, createdAt, question, files, pageContext, macroId, } = action.payload;
|
|
70
70
|
const payload = {
|
|
71
71
|
agent_id: agentId,
|
|
72
72
|
...(pageContext != null && { page_context: pageContext }),
|
|
@@ -113,7 +113,7 @@ export const createSessionAndSubmitEpic = (actions$, _state$, zeniAPI) => action
|
|
|
113
113
|
// This allows fetchChatHistory to run after the question is submitted
|
|
114
114
|
of(createSessionAndSubmitSuccess(),
|
|
115
115
|
// Submit the question after handlers are bound
|
|
116
|
-
submitQuestion(sessionId, questionAnswerId, userId, questionId, createdAt, question, files),
|
|
116
|
+
submitQuestion(sessionId, questionAnswerId, userId, questionId, createdAt, question, files, macroId),
|
|
117
117
|
// Add question payload optimistically after submitQuestion (matches original order)
|
|
118
118
|
// This is idempotent - won't create duplicates if called multiple times
|
|
119
119
|
// submitQuestionEpic will find the question already exists and only update the response
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
|
|
3
|
+
import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
|
|
4
|
+
import { fetchSkills, fetchSkillsFailure, fetchSkillsSuccess, } from '../aiCfoViewReducer';
|
|
5
|
+
const toSkill = (s) => ({
|
|
6
|
+
macroId: s.macro_id,
|
|
7
|
+
name: s.name,
|
|
8
|
+
displayName: s.display_name,
|
|
9
|
+
description: s.description,
|
|
10
|
+
semver: s.semver,
|
|
11
|
+
parameterHints: s.parameter_hints,
|
|
12
|
+
hasScripts: s.has_scripts,
|
|
13
|
+
});
|
|
14
|
+
/** GET {aiCfoMicroServiceBaseUrl}/1.0/skills — chat-visible skills for the `/` menu. */
|
|
15
|
+
export const fetchSkillsEpic = (actions$,
|
|
16
|
+
// state$ intentionally unused: the `/` menu dispatches this once per slash-entry
|
|
17
|
+
// (the composer dedupes), so we always re-fetch the (small, singleton) list.
|
|
18
|
+
_state$, zeniAPI) => actions$.pipe(filter(fetchSkills.match),
|
|
19
|
+
// switchMap: a singleton list endpoint with no key — cancel any in-flight
|
|
20
|
+
// fetch so the latest dispatch wins (no racing writes to `skills`).
|
|
21
|
+
switchMap(() => {
|
|
22
|
+
// aiCfoMicroServiceBaseUrl already targets the chat service (it serves the
|
|
23
|
+
// /1.0/agents/{id} submit route too); /1.0/skills lives on the same service.
|
|
24
|
+
const url = `${zeniAPI.apiEndPoints.aiCfoMicroServiceBaseUrl}/1.0/skills`;
|
|
25
|
+
return zeniAPI.getJSON(url).pipe(mergeMap((response) => {
|
|
26
|
+
if (isSuccessResponse(response) && response.data != null) {
|
|
27
|
+
// Guard the array: a malformed 2xx body without `skills` must not crash .map.
|
|
28
|
+
return of(fetchSkillsSuccess({
|
|
29
|
+
skills: (response.data.skills ?? []).map(toSkill),
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
return of(fetchSkillsFailure(response.status));
|
|
33
|
+
}), catchError((error) => of(fetchSkillsFailure(createZeniAPIStatus('Unexpected Error', 'Fetch skills REST API call failed', error instanceof Error ? { message: error.message } : undefined)))));
|
|
34
|
+
}));
|
|
@@ -4,7 +4,7 @@ import { upsertOrAddQuestionAnswerPayload } from '../../../entity/aiCfo/aiCfoRed
|
|
|
4
4
|
import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
|
|
5
5
|
import { submitQuestion, submitQuestionFailure, submitQuestionSuccess, } from '../aiCfoViewReducer';
|
|
6
6
|
export const submitQuestionEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(submitQuestion.match), mergeMap((action) => {
|
|
7
|
-
const { questionAnswerId, userId, sessionId, questionId, createdAt, question, files, } = action.payload;
|
|
7
|
+
const { questionAnswerId, userId, sessionId, questionId, createdAt, question, files, macroId, } = action.payload;
|
|
8
8
|
const { aiCfoViewState } = state$.value;
|
|
9
9
|
const { uiState } = aiCfoViewState;
|
|
10
10
|
const agentId = uiState.agentId;
|
|
@@ -17,15 +17,21 @@ export const submitQuestionEpic = (actions$, state$, zeniAPI) => actions$.pipe(f
|
|
|
17
17
|
const formData = new FormData();
|
|
18
18
|
formData.append('chat_session_id', sessionId);
|
|
19
19
|
formData.append('message', question);
|
|
20
|
+
if (macroId != null) {
|
|
21
|
+
formData.append('macro_id', macroId);
|
|
22
|
+
}
|
|
20
23
|
for (const file of files) {
|
|
21
24
|
formData.append('files', file, file.name);
|
|
22
25
|
}
|
|
23
26
|
apiCall = zeniAPI.postFormData(endpoint, formData);
|
|
24
27
|
}
|
|
25
28
|
else {
|
|
29
|
+
// `message` is the display token (e.g. "/flux"); `macro_id` tells the chat
|
|
30
|
+
// service to expand the skill's instructions as the actual agent prompt.
|
|
26
31
|
apiCall = zeniAPI.postAndGetJSON(endpoint, {
|
|
27
32
|
chat_session_id: sessionId,
|
|
28
33
|
message: question,
|
|
34
|
+
...(macroId != null && { macro_id: macroId }),
|
|
29
35
|
});
|
|
30
36
|
}
|
|
31
37
|
return apiCall.pipe(mergeMap((response) => {
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { forkJoin, of } from 'rxjs';
|
|
2
|
+
import { catchError, filter, switchMap } from 'rxjs/operators';
|
|
3
|
+
import { createZeniAPIStatus, isSuccessResponse, } from '../../../responsePayload';
|
|
4
|
+
import { invoicingBaseUrl } from '../invoicingApiHelper';
|
|
5
|
+
import { fetchInvoicingAnalytics, updateInvoicingAnalytics, updateInvoicingAnalyticsFailure, } from './analyticsViewReducer';
|
|
6
|
+
const REVENUE_MONTHS = 12;
|
|
7
|
+
const MRR_MONTHS = 6;
|
|
8
|
+
function listData(response) {
|
|
9
|
+
return isSuccessResponse(response) && response.data != null
|
|
10
|
+
? response.data
|
|
11
|
+
: [];
|
|
12
|
+
}
|
|
13
|
+
function optionalData(response) {
|
|
14
|
+
return isSuccessResponse(response) && response.data != null
|
|
15
|
+
? response.data
|
|
16
|
+
: undefined;
|
|
17
|
+
}
|
|
18
|
+
export const fetchInvoicingAnalyticsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingAnalytics.match), switchMap((action) => {
|
|
19
|
+
const base = invoicingBaseUrl(zeniAPI);
|
|
20
|
+
const period = `year=${action.payload.year}&month=${action.payload.month}`;
|
|
21
|
+
return forkJoin([
|
|
22
|
+
zeniAPI.getJSON(`${base}/analytics/kpis?${period}`),
|
|
23
|
+
zeniAPI.getJSON(`${base}/analytics/revenue?months=${REVENUE_MONTHS}&${period}`),
|
|
24
|
+
zeniAPI.getJSON(`${base}/analytics/mrr?months=${MRR_MONTHS}&${period}`),
|
|
25
|
+
zeniAPI.getJSON(`${base}/analytics/churn?months=${MRR_MONTHS}&${period}`),
|
|
26
|
+
zeniAPI.getJSON(`${base}/analytics/plan-revenue?${period}`),
|
|
27
|
+
zeniAPI.getJSON(`${base}/analytics/dashboard-summary?${period}`),
|
|
28
|
+
]).pipe(switchMap(([kpisRes, revenueRes, mrrRes, churnRes, planRes, summaryRes]) => {
|
|
29
|
+
if (!isSuccessResponse(kpisRes)) {
|
|
30
|
+
return of(updateInvoicingAnalyticsFailure(kpisRes.status));
|
|
31
|
+
}
|
|
32
|
+
return of(updateInvoicingAnalytics({
|
|
33
|
+
kpis: optionalData(kpisRes),
|
|
34
|
+
revenue: listData(revenueRes),
|
|
35
|
+
mrr: listData(mrrRes),
|
|
36
|
+
churn: listData(churnRes),
|
|
37
|
+
planRevenue: listData(planRes),
|
|
38
|
+
summary: optionalData(summaryRes),
|
|
39
|
+
}));
|
|
40
|
+
}), catchError((error) => of(updateInvoicingAnalyticsFailure(createZeniAPIStatus('Unexpected Error', 'Fetch analytics REST API call errored out ' +
|
|
41
|
+
JSON.stringify(error))))));
|
|
42
|
+
}));
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
export const initialState = {
|
|
3
|
+
fetchState: 'Not-Started',
|
|
4
|
+
error: undefined,
|
|
5
|
+
churn: [],
|
|
6
|
+
kpis: undefined,
|
|
7
|
+
mrr: [],
|
|
8
|
+
period: undefined,
|
|
9
|
+
planRevenue: [],
|
|
10
|
+
revenue: [],
|
|
11
|
+
summary: undefined,
|
|
12
|
+
hasValidState() {
|
|
13
|
+
return this.fetchState === 'Completed' && this.kpis != null;
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
const analyticsView = createSlice({
|
|
17
|
+
name: 'invoicingAnalyticsView',
|
|
18
|
+
initialState,
|
|
19
|
+
reducers: {
|
|
20
|
+
fetchInvoicingAnalytics(draft, action) {
|
|
21
|
+
draft.fetchState = 'In-Progress';
|
|
22
|
+
draft.error = undefined;
|
|
23
|
+
draft.period = action.payload;
|
|
24
|
+
},
|
|
25
|
+
updateInvoicingAnalytics(draft, action) {
|
|
26
|
+
draft.kpis = action.payload.kpis;
|
|
27
|
+
draft.revenue = action.payload.revenue;
|
|
28
|
+
draft.mrr = action.payload.mrr;
|
|
29
|
+
draft.churn = action.payload.churn;
|
|
30
|
+
draft.planRevenue = action.payload.planRevenue;
|
|
31
|
+
draft.summary = action.payload.summary;
|
|
32
|
+
draft.fetchState = 'Completed';
|
|
33
|
+
draft.error = undefined;
|
|
34
|
+
},
|
|
35
|
+
updateInvoicingAnalyticsFailure(draft, action) {
|
|
36
|
+
draft.fetchState = 'Error';
|
|
37
|
+
draft.error = action.payload;
|
|
38
|
+
},
|
|
39
|
+
clearInvoicingAnalytics(draft) {
|
|
40
|
+
Object.assign(draft, initialState);
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
export const { fetchInvoicingAnalytics, updateInvoicingAnalytics, updateInvoicingAnalyticsFailure, clearInvoicingAnalytics, } = analyticsView.actions;
|
|
45
|
+
export default analyticsView.reducer;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const getInvoicingAnalyticsKPIs = (state) => state.invoicingAnalyticsViewState.kpis;
|
|
2
|
+
export const getInvoicingAnalyticsRevenue = (state) => state.invoicingAnalyticsViewState.revenue;
|
|
3
|
+
export const getInvoicingAnalyticsMRR = (state) => state.invoicingAnalyticsViewState.mrr;
|
|
4
|
+
export const getInvoicingAnalyticsChurn = (state) => state.invoicingAnalyticsViewState.churn;
|
|
5
|
+
export const getInvoicingAnalyticsPlanRevenue = (state) => state.invoicingAnalyticsViewState.planRevenue;
|
|
6
|
+
export const getInvoicingAnalyticsSummary = (state) => state.invoicingAnalyticsViewState.summary;
|
|
7
|
+
export const getInvoicingAnalyticsFetchState = (state) => ({
|
|
8
|
+
fetchState: state.invoicingAnalyticsViewState.fetchState,
|
|
9
|
+
error: state.invoicingAnalyticsViewState.error,
|
|
10
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { catchError, filter, mergeMap } from 'rxjs/operators';
|
|
3
|
+
import { createZeniAPIStatus, isSuccessResponse, } from '../../../responsePayload';
|
|
4
|
+
import { invoicingBaseUrl } from '../invoicingApiHelper';
|
|
5
|
+
import { upsertInvoicingApproval } from '../approvalsView/approvalsViewReducer';
|
|
6
|
+
import { runInvoicingApprovalAction, runInvoicingApprovalActionFailure, runInvoicingApprovalActionSuccess, } from './approvalActionReducer';
|
|
7
|
+
export const runInvoicingApprovalActionEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(runInvoicingApprovalAction.match), mergeMap((action) => {
|
|
8
|
+
const { action: kind, approvalId } = action.payload;
|
|
9
|
+
const apiUrl = `${invoicingBaseUrl(zeniAPI)}/approvals/${encodeURIComponent(approvalId)}/${kind}`;
|
|
10
|
+
return zeniAPI
|
|
11
|
+
.postAndGetJSON(apiUrl, {})
|
|
12
|
+
.pipe(mergeMap((response) => {
|
|
13
|
+
if (isSuccessResponse(response) && response.data != null) {
|
|
14
|
+
return [
|
|
15
|
+
upsertInvoicingApproval(response.data),
|
|
16
|
+
runInvoicingApprovalActionSuccess({ approvalId }),
|
|
17
|
+
];
|
|
18
|
+
}
|
|
19
|
+
return of(runInvoicingApprovalActionFailure({
|
|
20
|
+
error: response.status,
|
|
21
|
+
approvalId,
|
|
22
|
+
}));
|
|
23
|
+
}), catchError((error) => of(runInvoicingApprovalActionFailure({
|
|
24
|
+
error: createZeniAPIStatus('Unexpected Error', 'Approval action REST API call errored out ' +
|
|
25
|
+
JSON.stringify(error)),
|
|
26
|
+
approvalId,
|
|
27
|
+
}))));
|
|
28
|
+
}));
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
export const initialState = {
|
|
3
|
+
byApprovalId: {},
|
|
4
|
+
};
|
|
5
|
+
const approvalAction = createSlice({
|
|
6
|
+
name: 'invoicingApprovalAction',
|
|
7
|
+
initialState,
|
|
8
|
+
reducers: {
|
|
9
|
+
runInvoicingApprovalAction(draft, action) {
|
|
10
|
+
draft.byApprovalId[action.payload.approvalId] = {
|
|
11
|
+
fetchState: 'In-Progress',
|
|
12
|
+
error: undefined,
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
runInvoicingApprovalActionSuccess(draft, action) {
|
|
16
|
+
draft.byApprovalId[action.payload.approvalId] = {
|
|
17
|
+
fetchState: 'Completed',
|
|
18
|
+
error: undefined,
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
runInvoicingApprovalActionFailure(draft, action) {
|
|
22
|
+
draft.byApprovalId[action.payload.approvalId] = {
|
|
23
|
+
fetchState: 'Error',
|
|
24
|
+
error: action.payload.error,
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
clearInvoicingApprovalAction(draft, action) {
|
|
28
|
+
delete draft.byApprovalId[action.payload];
|
|
29
|
+
},
|
|
30
|
+
clearAllInvoicingApprovalActions(draft) {
|
|
31
|
+
draft.byApprovalId = {};
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
export const { runInvoicingApprovalAction, runInvoicingApprovalActionSuccess, runInvoicingApprovalActionFailure, clearInvoicingApprovalAction, clearAllInvoicingApprovalActions, } = approvalAction.actions;
|
|
36
|
+
export default approvalAction.reducer;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { catchError, filter, switchMap } from 'rxjs/operators';
|
|
3
|
+
import { createZeniAPIStatus, isSuccessResponse, } from '../../../responsePayload';
|
|
4
|
+
import { INVOICING_LIST_PAGE_SIZE, applyListSortParams, invoicingBaseUrl, withQuery, } from '../invoicingApiHelper';
|
|
5
|
+
import { fetchInvoicingApprovals, updateInvoicingApprovals, updateInvoicingApprovalsFailure, } from './approvalsViewReducer';
|
|
6
|
+
const buildQuery = (filters, cursor, sort) => {
|
|
7
|
+
const params = new URLSearchParams();
|
|
8
|
+
if (filters.search != null && filters.search.length > 0) {
|
|
9
|
+
params.set('search', filters.search);
|
|
10
|
+
}
|
|
11
|
+
if (filters.status != null && filters.status.length > 0) {
|
|
12
|
+
params.set('status', filters.status);
|
|
13
|
+
}
|
|
14
|
+
params.set('limit', String(INVOICING_LIST_PAGE_SIZE));
|
|
15
|
+
if (cursor != null) {
|
|
16
|
+
params.set('cursor', cursor);
|
|
17
|
+
}
|
|
18
|
+
applyListSortParams(params, sort);
|
|
19
|
+
return params;
|
|
20
|
+
};
|
|
21
|
+
export const fetchInvoicingApprovalsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingApprovals.match), switchMap((action) => {
|
|
22
|
+
const { filters, cursor, keepExistingListItems, sort } = action.payload;
|
|
23
|
+
const apiUrl = withQuery(`${invoicingBaseUrl(zeniAPI)}/approvals`, buildQuery(filters, cursor, sort));
|
|
24
|
+
return zeniAPI
|
|
25
|
+
.getJSON(apiUrl)
|
|
26
|
+
.pipe(switchMap((response) => {
|
|
27
|
+
if (isSuccessResponse(response)) {
|
|
28
|
+
return of(updateInvoicingApprovals({
|
|
29
|
+
items: response.data?.items ?? [],
|
|
30
|
+
nextCursor: response.data?.next_cursor ?? null,
|
|
31
|
+
keepExistingListItems,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
return of(updateInvoicingApprovalsFailure(response.status));
|
|
35
|
+
}), catchError((error) => of(updateInvoicingApprovalsFailure(createZeniAPIStatus('Unexpected Error', 'Fetch approvals REST API call errored out ' +
|
|
36
|
+
JSON.stringify(error))))));
|
|
37
|
+
}));
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
export const initialState = {
|
|
3
|
+
fetchState: 'Not-Started',
|
|
4
|
+
error: undefined,
|
|
5
|
+
items: [],
|
|
6
|
+
nextCursor: null,
|
|
7
|
+
filters: {},
|
|
8
|
+
hasValidState() {
|
|
9
|
+
return this.fetchState === 'Completed';
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
const approvalsView = createSlice({
|
|
13
|
+
name: 'invoicingApprovalsView',
|
|
14
|
+
initialState,
|
|
15
|
+
reducers: {
|
|
16
|
+
fetchInvoicingApprovals: {
|
|
17
|
+
reducer(draft, action) {
|
|
18
|
+
if (!action.payload.keepExistingListItems) {
|
|
19
|
+
draft.items = [];
|
|
20
|
+
draft.nextCursor = null;
|
|
21
|
+
}
|
|
22
|
+
draft.filters = action.payload.filters;
|
|
23
|
+
draft.sort = action.payload.sort;
|
|
24
|
+
draft.fetchState = 'In-Progress';
|
|
25
|
+
draft.error = undefined;
|
|
26
|
+
},
|
|
27
|
+
prepare(payload) {
|
|
28
|
+
return {
|
|
29
|
+
payload: {
|
|
30
|
+
filters: payload.filters ?? {},
|
|
31
|
+
cursor: payload.cursor,
|
|
32
|
+
keepExistingListItems: payload.keepExistingListItems ?? false,
|
|
33
|
+
sort: payload.sort,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
updateInvoicingApprovals(draft, action) {
|
|
39
|
+
draft.items = action.payload.keepExistingListItems
|
|
40
|
+
? [...draft.items, ...action.payload.items]
|
|
41
|
+
: action.payload.items;
|
|
42
|
+
draft.nextCursor = action.payload.nextCursor;
|
|
43
|
+
draft.fetchState = 'Completed';
|
|
44
|
+
draft.error = undefined;
|
|
45
|
+
},
|
|
46
|
+
updateInvoicingApprovalsFailure(draft, action) {
|
|
47
|
+
draft.fetchState = 'Error';
|
|
48
|
+
draft.error = action.payload;
|
|
49
|
+
},
|
|
50
|
+
upsertInvoicingApproval(draft, action) {
|
|
51
|
+
const index = draft.items.findIndex((item) => item.id === action.payload.id);
|
|
52
|
+
if (index >= 0) {
|
|
53
|
+
draft.items[index] = action.payload;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
clearInvoicingApprovalsView(draft) {
|
|
57
|
+
Object.assign(draft, initialState);
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
export const { fetchInvoicingApprovals, updateInvoicingApprovals, updateInvoicingApprovalsFailure, upsertInvoicingApproval, clearInvoicingApprovalsView, } = approvalsView.actions;
|
|
62
|
+
export default approvalsView.reducer;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const getInvoicingApprovals = (state) => state.invoicingApprovalsViewState.items;
|
|
2
|
+
export const getInvoicingApprovalsFetchState = (state) => ({
|
|
3
|
+
fetchState: state.invoicingApprovalsViewState.fetchState,
|
|
4
|
+
error: state.invoicingApprovalsViewState.error,
|
|
5
|
+
});
|
|
6
|
+
export const getInvoicingApprovalsNextCursor = (state) => state.invoicingApprovalsViewState.nextCursor;
|
|
7
|
+
export const getInvoicingApprovalsHasMore = (state) => state.invoicingApprovalsViewState.nextCursor != null;
|
|
8
|
+
export const getInvoicingApprovalsFilters = (state) => state.invoicingApprovalsViewState.filters;
|