@zeniai/client-epic-state 4.20.3-betaSS2 → 4.20.3-betaSS4

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 (55) hide show
  1. package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +2 -2
  2. package/lib/commonStateTypes/viewAndReport/viewAndReport.js +1 -0
  3. package/lib/entity/account/accountPayload.d.ts +2 -0
  4. package/lib/entity/account/accountReducer.d.ts +5 -2
  5. package/lib/entity/account/accountReducer.js +7 -2
  6. package/lib/entity/account/accountState.d.ts +1 -1
  7. package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
  8. package/lib/entity/class/classReducer.d.ts +4 -4
  9. package/lib/entity/class/classState.d.ts +1 -1
  10. package/lib/entity/forecast/forecastState.d.ts +1 -1
  11. package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
  12. package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
  13. package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
  14. package/lib/entity/transaction/payloadTypes/transactionPayload.js +1 -0
  15. package/lib/epic.d.ts +9 -7
  16. package/lib/epic.js +9 -7
  17. package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +1 -0
  18. package/lib/esm/entity/account/accountReducer.js +6 -1
  19. package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +1 -0
  20. package/lib/esm/epic.js +9 -7
  21. package/lib/esm/index.js +2 -2
  22. package/lib/esm/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.js +44 -0
  23. package/lib/esm/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +4 -9
  24. package/lib/esm/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.js +44 -0
  25. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +163 -3
  26. package/lib/esm/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.js +1 -2
  27. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +112 -0
  28. package/lib/index.d.ts +3 -3
  29. package/lib/index.js +34 -31
  30. package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
  31. package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
  32. package/lib/view/cardBalance/cardBalanceSelector.d.ts +1 -1
  33. package/lib/view/cashBalance/cashBalanceSelector.d.ts +1 -1
  34. package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
  35. package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
  36. package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
  37. package/lib/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.d.ts +8 -0
  38. package/lib/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.js +48 -0
  39. package/lib/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +4 -9
  40. package/lib/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.d.ts +9 -0
  41. package/lib/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.js +48 -0
  42. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +33 -0
  43. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +18 -4
  44. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +164 -4
  45. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +6 -2
  46. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.js +2 -2
  47. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +112 -0
  48. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +13 -0
  49. package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
  50. package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
  51. package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
  52. package/lib/view/reportsResync/reportsResyncReducer.d.ts +2 -2
  53. package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
  54. package/lib/view/topEx/topExSelector.d.ts +1 -1
  55. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { RootState } from '../../reducer';
2
2
  export declare const getCardBalance: (state: RootState) => {
3
- reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card";
3
+ reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card" | "excluded_account_reconciliation";
4
4
  reportTitle: string;
5
5
  version: string | number | undefined;
6
6
  status: import("../..").Status | undefined;
@@ -1,6 +1,6 @@
1
1
  import { RootState } from '../../reducer';
2
2
  export declare const getCashBalance: (state: RootState) => {
3
- reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card";
3
+ reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card" | "excluded_account_reconciliation";
4
4
  reportTitle: string;
5
5
  version: string | number | undefined;
6
6
  status: import("../..").Status | undefined;
@@ -15,7 +15,7 @@ export declare const getCashInCashOut: (accountState: AccountState, accountGroup
15
15
  firstMonthOfFY: 1 | 3 | 12 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
16
16
  dataAvailable: import("../../commonStateTypes/timeframeTick").TimeframeTick | undefined;
17
17
  availableNumberOfPeriods: number | undefined;
18
- reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card";
18
+ reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card" | "excluded_account_reconciliation";
19
19
  reportTitle: string;
20
20
  version: string | number | undefined;
21
21
  status: import("../..").Status | undefined;
@@ -12,7 +12,7 @@ export declare const getCashPosition: (accountState: AccountState, cashPositionS
12
12
  firstMonthOfFY: 1 | 3 | 12 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
13
13
  dataAvailable: import("../../commonStateTypes/timeframeTick").TimeframeTick | undefined;
14
14
  availableNumberOfPeriods: number | undefined;
15
- reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card";
15
+ reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card" | "excluded_account_reconciliation";
16
16
  reportTitle: string;
17
17
  version: string | number | undefined;
18
18
  status: import("../..").Status | undefined;
@@ -1,12 +1,12 @@
1
1
  import { DashboardState } from './dashboardState';
2
2
  export declare const initialState: DashboardState;
3
- export declare const fetchDashboard: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[userId: string, companyId: string, tenantId: string, fetchFullReport?: any, cacheOverride?: any, excludeResources?: ("cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card")[] | undefined], {
3
+ export declare const fetchDashboard: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[userId: string, companyId: string, tenantId: string, fetchFullReport?: any, cacheOverride?: any, excludeResources?: ("cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card" | "excluded_account_reconciliation")[] | undefined], {
4
4
  userId: string;
5
5
  companyId: string;
6
6
  tenantId: string;
7
7
  fetchFullReport: any;
8
8
  cacheOverride: any;
9
- excludeResources: ("cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card")[];
9
+ excludeResources: ("cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "zeni_accounts_promo_card" | "zeni_treasury" | "charge_cards" | "other_connection" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses" | "fixed_assets" | "notification" | "rewards_card" | "billing" | "flux_analysis_operating_expense" | "account_reconciliation" | "zeni_credit_promo_card" | "treasury_promo_card" | "excluded_account_reconciliation")[];
10
10
  }, "dashboard/fetchDashboard", never, never>, updateTreasuryVideoClosed: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"dashboard/updateTreasuryVideoClosed">, clearDashboard: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"dashboard/clearDashboard">;
11
11
  declare const _default: import("redux").Reducer<DashboardState>;
12
12
  export default _default;
@@ -0,0 +1,8 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { changeAccountKey } from '../../../../entity/account/accountReducer';
4
+ import { RootState } from '../../../../reducer';
5
+ import { ZeniAPI } from '../../../../zeniAPI';
6
+ import { excludeAccountFromReconciliation, excludeAccountFromReconciliationFailure, excludeAccountFromReconciliationSuccess } from '../../reducers/reconciliationViewReducer';
7
+ export type ActionType = ReturnType<typeof excludeAccountFromReconciliation> | ReturnType<typeof changeAccountKey> | ReturnType<typeof excludeAccountFromReconciliationSuccess> | ReturnType<typeof excludeAccountFromReconciliationFailure>;
8
+ export declare const excludeAccountFromReconciliationEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.excludeAccountFromReconciliationEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const accountReducer_1 = require("../../../../entity/account/accountReducer");
7
+ const accountState_1 = require("../../../../entity/account/accountState");
8
+ const accountReconSelector_1 = require("../../../../entity/accountRecon/accountReconSelector");
9
+ const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
10
+ const responsePayload_1 = require("../../../../responsePayload");
11
+ const reconciliationViewReducer_1 = require("../../reducers/reconciliationViewReducer");
12
+ const excludeAccountFromReconciliationEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(reconciliationViewReducer_1.excludeAccountFromReconciliation.match), (0, operators_1.mergeMap)((action) => {
13
+ const { accountId } = action.payload;
14
+ const state = state$.value;
15
+ const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
16
+ const selectedPeriod = state.expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
17
+ const reconciliationData = (0, accountReconSelector_1.getAccountReconByAccountIdAndSelectedPeriod)(state, accountId, selectedPeriod);
18
+ const payload = {
19
+ account_id: accountId,
20
+ bank_balance: reconciliationData?.balance?.amount ?? null,
21
+ cleared_balance: reconciliationData?.clearedBalance?.amount ?? null,
22
+ variance: reconciliationData?.variance?.amount ?? null,
23
+ };
24
+ const apiUrl = `${zeniAPI.apiEndPoints.reconciliationMicroServiceBaseUrl}/1.0/reconciliation/excluded-accounts`;
25
+ return zeniAPI
26
+ .postAndGetJSON(apiUrl, payload)
27
+ .pipe((0, operators_1.mergeMap)((response) => {
28
+ if ((0, responsePayload_1.isSuccessResponse)(response)) {
29
+ const newAccountKey = (0, accountState_1.getAccountKey)('excluded_account_reconciliation', accountId);
30
+ const oldAccountKey = (0, accountState_1.getAccountKey)('account_reconciliation', accountId);
31
+ return (0, rxjs_1.of)((0, reconciliationViewReducer_1.excludeAccountFromReconciliationSuccess)({
32
+ account: response.data?.excluded_account ?? undefined,
33
+ selectedPeriod,
34
+ }), (0, accountReducer_1.changeAccountKey)({
35
+ oldKey: oldAccountKey,
36
+ newKey: newAccountKey,
37
+ }));
38
+ }
39
+ else {
40
+ return (0, rxjs_1.of)((0, reconciliationViewReducer_1.excludeAccountFromReconciliationFailure)({
41
+ error: response.status,
42
+ }));
43
+ }
44
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, reconciliationViewReducer_1.excludeAccountFromReconciliationFailure)({
45
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', `Exclude account from reconciliation REST API call errored out ${JSON.stringify(error)}`),
46
+ }))));
47
+ }));
48
+ exports.excludeAccountFromReconciliationEpic = excludeAccountFromReconciliationEpic;
@@ -56,22 +56,17 @@ const fetchReconciliationViewEpic = (actions$, state$, zeniAPI) => actions$.pipe
56
56
  return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.mergeMap)((response) => {
57
57
  if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
58
58
  const updateActions = [];
59
- updateActions.push((0, accountReducer_1.updateAccounts)(response.data.accounts, 'account_reconciliation'));
60
- updateActions.push((0, userReducer_1.updateAllUsers)({
59
+ const allTransactionsPerRecon = (0, reconciliationHelpers_1.getAllReviewTransactionsFromReconcilePayload)(response.data.reconciliation);
60
+ updateActions.push((0, accountReducer_1.updateAccounts)(response.data.accounts, 'account_reconciliation'), (0, accountReducer_1.updateAccounts)(response.data.excluded_accounts ?? [], 'excluded_account_reconciliation'), (0, userReducer_1.updateAllUsers)({
61
61
  users: response.data.users ?? [],
62
62
  updateType: 'merge',
63
- }));
64
- updateActions.push((0, fileReducer_1.updateFiles)({ files: response.data.files ?? [] }));
65
- const allTransactionsPerRecon = (0, reconciliationHelpers_1.getAllReviewTransactionsFromReconcilePayload)(response.data.reconciliation);
66
- updateActions.push((0, transactionReducer_1.updateMultipleReconcileTransactions)(allTransactionsPerRecon, 'merge'));
67
- updateActions.push((0, accountReconReducer_1.updateAccountRecon)(selectedPeriod, response.data.reconciliation));
63
+ }), (0, fileReducer_1.updateFiles)({ files: response.data.files ?? [] }), (0, transactionReducer_1.updateMultipleReconcileTransactions)(allTransactionsPerRecon, 'merge'), (0, accountReconReducer_1.updateAccountRecon)(selectedPeriod, response.data.reconciliation));
68
64
  const reviewTabLocalData = (0, exports.prepareReviewTabLocalData)(response.data.reconciliation[0]?.transactions?.review ?? []);
69
65
  if (accountId != null) {
70
66
  const selectedTransactionIds = (0, saveReconciliationDetailEpic_1.getTransactionIdFromCheckedMatchedTransactionPayload)(response.data.reconciliation[0].transactions.reconcile);
71
67
  updateActions.push((0, reconciliationViewReducer_1.updateReconcileTabLocalData)({
72
68
  selectedTransactionIds: selectedTransactionIds,
73
- }));
74
- updateActions.push((0, reconciliationViewReducer_1.initializeReconciliationReviewTabLocalData)(reviewTabLocalData));
69
+ }), (0, reconciliationViewReducer_1.initializeReconciliationReviewTabLocalData)(reviewTabLocalData));
75
70
  }
76
71
  updateActions.push((0, reconciliationViewReducer_1.fetchReconciliationSuccess)(selectedPeriod, response.data, refreshViewInBackground, accountId));
77
72
  return (0, rxjs_1.from)(updateActions);
@@ -0,0 +1,9 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { changeAccountKey } from '../../../../entity/account/accountReducer';
4
+ import { updateAccountRecon } from '../../../../entity/accountRecon/accountReconReducer';
5
+ import { RootState } from '../../../../reducer';
6
+ import { ZeniAPI } from '../../../../zeniAPI';
7
+ import { includeAccountInReconciliation, includeAccountInReconciliationFailure, includeAccountInReconciliationSuccess } from '../../reducers/reconciliationViewReducer';
8
+ export type ActionType = ReturnType<typeof includeAccountInReconciliation> | ReturnType<typeof includeAccountInReconciliationSuccess> | ReturnType<typeof includeAccountInReconciliationFailure> | ReturnType<typeof changeAccountKey> | ReturnType<typeof updateAccountRecon>;
9
+ export declare const includeAccountInReconciliationEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.includeAccountInReconciliationEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
7
+ const accountReducer_1 = require("../../../../entity/account/accountReducer");
8
+ const accountState_1 = require("../../../../entity/account/accountState");
9
+ const accountReconReducer_1 = require("../../../../entity/accountRecon/accountReconReducer");
10
+ const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
11
+ const responsePayload_1 = require("../../../../responsePayload");
12
+ const reconciliationViewReducer_1 = require("../../reducers/reconciliationViewReducer");
13
+ const includeAccountInReconciliationEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(reconciliationViewReducer_1.includeAccountInReconciliation.match), (0, operators_1.mergeMap)((action) => {
14
+ const { accountId } = action.payload;
15
+ const state = state$.value;
16
+ const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
17
+ const selectedPeriod = state.expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
18
+ const period = (0, timePeriod_1.convertToPeriod)(selectedPeriod, true);
19
+ const query = JSON.stringify({
20
+ start_date: period.start,
21
+ end_date: period.end,
22
+ });
23
+ const apiUrl = `${zeniAPI.apiEndPoints.reconciliationMicroServiceBaseUrl}/1.0/reconciliation/excluded-accounts/${accountId}?query=${encodeURIComponent(query)}`;
24
+ return zeniAPI
25
+ .deleteAndGetJSON(apiUrl)
26
+ .pipe((0, operators_1.mergeMap)((response) => {
27
+ if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
28
+ const reconciliation = response.data.reconciliation;
29
+ const oldAccountKey = (0, accountState_1.getAccountKey)('excluded_account_reconciliation', reconciliation.account_id);
30
+ const newAccountKey = (0, accountState_1.getAccountKey)('account_reconciliation', reconciliation.account_id);
31
+ return (0, rxjs_1.of)((0, accountReconReducer_1.updateAccountRecon)(selectedPeriod, [reconciliation]), (0, reconciliationViewReducer_1.includeAccountInReconciliationSuccess)({
32
+ reconciliation,
33
+ selectedPeriod,
34
+ }), (0, accountReducer_1.changeAccountKey)({
35
+ oldKey: oldAccountKey,
36
+ newKey: newAccountKey,
37
+ }));
38
+ }
39
+ else {
40
+ return (0, rxjs_1.of)((0, reconciliationViewReducer_1.includeAccountInReconciliationFailure)({
41
+ error: response.status,
42
+ }));
43
+ }
44
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, reconciliationViewReducer_1.includeAccountInReconciliationFailure)({
45
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', `Include account in reconciliation REST API call errored out ${JSON.stringify(error)}`),
46
+ }))));
47
+ }));
48
+ exports.includeAccountInReconciliationEpic = includeAccountInReconciliationEpic;
@@ -1,4 +1,5 @@
1
1
  import { StatusCodeWithLabelPayload } from '../../../commonPayloadTypes/statusPayload';
2
+ import { ID } from '../../../commonStateTypes/common';
2
3
  import { MonthYearPeriod } from '../../../commonStateTypes/timePeriod';
3
4
  import { AccountPayload } from '../../../entity/account/accountPayload';
4
5
  import { ReconciliationDataPayload, StatementMetaDataPayload, TransactionsToReviewPayload } from '../../../entity/accountRecon/accountReconPayload';
@@ -12,11 +13,20 @@ import { BalancesLocalData, SaveReconcileDetailActionPayload } from '../types/re
12
13
  export interface AccountAndPaymentAccountPayload extends AccountPayload {
13
14
  payment_account_id: string | null;
14
15
  }
16
+ interface ExclusionInfoPayload {
17
+ bank_balance: number | null;
18
+ cleared_balance: number | null;
19
+ variance: number | null;
20
+ }
21
+ export interface ExcludedAccountPayload extends AccountAndPaymentAccountPayload {
22
+ exclusion_info: ExclusionInfoPayload;
23
+ }
15
24
  export interface ReconciliationPayload {
16
25
  accounts: AccountAndPaymentAccountPayload[];
17
26
  files: FilePayload[];
18
27
  reconciliation: ReconciliationDataPayload[];
19
28
  users: UserPayload[];
29
+ excluded_accounts?: ExcludedAccountPayload[];
20
30
  }
21
31
  export type ReconciliationResponse = ZeniAPIResponse<ReconciliationPayload>;
22
32
  export interface SaveReconciliationReviewPayload {
@@ -29,6 +39,28 @@ export declare function createSaveReconciliationPayloadBasedOnActionAndMethod(st
29
39
  review: TransactionsToReviewPayload[];
30
40
  };
31
41
  };
42
+ export interface ExcludeAccountFromReconciliationRequestPayload {
43
+ account_id: ID;
44
+ bank_balance: number;
45
+ cleared_balance: number;
46
+ variance: number;
47
+ }
48
+ export interface ExcludedAccountFromReconciliationPayload {
49
+ account_id: ID;
50
+ bank_balance: number | null;
51
+ cleared_balance: number | null;
52
+ variance: number | null;
53
+ currency_code?: string;
54
+ currency_symbol?: string;
55
+ }
56
+ export interface ExcludeAccountFromReconciliationResponsePayload {
57
+ excluded_account: ExcludedAccountFromReconciliationPayload;
58
+ }
59
+ export type ExcludeAccountFromReconciliationResponse = ZeniAPIResponse<ExcludeAccountFromReconciliationResponsePayload>;
60
+ export interface IncludeAccountInReconciliationResponsePayload {
61
+ reconciliation: ReconciliationDataPayload;
62
+ }
63
+ export type IncludeAccountInReconciliationResponse = ZeniAPIResponse<IncludeAccountInReconciliationResponsePayload>;
32
64
  export interface DeleteStatementResponsePayload {
33
65
  statement_upload: {
34
66
  statement_data_status: StatusCodeWithLabelPayload;
@@ -54,3 +86,4 @@ export interface UploadStatementResponsePayload {
54
86
  };
55
87
  }
56
88
  export type UploadStatementResponse = ZeniAPIResponse<UploadStatementResponsePayload>;
89
+ export {};
@@ -2,9 +2,10 @@ import { Amount } from '../../../commonStateTypes/amount';
2
2
  import { FetchState, ID } from '../../../commonStateTypes/common';
3
3
  import { SortOrder } from '../../../commonStateTypes/selectorTypes/sortOrderTypes';
4
4
  import { MonthYearPeriod } from '../../../commonStateTypes/timePeriod';
5
+ import { ReconciliationDataPayload } from '../../../entity/accountRecon/accountReconPayload';
5
6
  import { ZeniAPIStatus } from '../../../responsePayload';
6
- import { ReconciliationPayload, UploadStatementDocumentAIPayload } from '../payload/reconciliationPayload';
7
- import { AccountReconciliationLocalData, ActionFetchStates, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReviewTabLocalData, ReconciliationTabsState, ReconciliationViewState, ReconciliationViewTabType, SaveReconcileDetailActionPayload, SaveReconciliationDetailFailurePayload, TransactionSummary } from '../types/reconciliationViewState';
7
+ import { ExcludedAccountFromReconciliationPayload, ReconciliationPayload, UploadStatementDocumentAIPayload } from '../payload/reconciliationPayload';
8
+ import { AccountReconciliationLocalData, ActionFetchStates, ExcludeAccountFromReconciliationPayload, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReviewTabLocalData, ReconciliationTabsState, ReconciliationViewState, ReconciliationViewTabType, SaveReconcileDetailActionPayload, SaveReconciliationDetailFailurePayload, TransactionSummary } from '../types/reconciliationViewState';
8
9
  export declare const initialReconciliationTabsState: ReconciliationTabsState;
9
10
  export declare const initialActionFetchState: ActionFetchStates;
10
11
  export declare const initialState: ReconciliationViewState;
@@ -86,7 +87,17 @@ export declare const fetchReconciliation: import("@reduxjs/toolkit").ActionCreat
86
87
  accountId: ID;
87
88
  error: ZeniAPIStatus;
88
89
  selectedPeriod: MonthYearPeriod;
89
- }, "expenseAutomationReconciliationView/deleteAccountStatementFailure">, uploadAccountStatement: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
90
+ }, "expenseAutomationReconciliationView/deleteAccountStatementFailure">, excludeAccountFromReconciliation: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: ExcludeAccountFromReconciliationPayload], ExcludeAccountFromReconciliationPayload, "expenseAutomationReconciliationView/excludeAccountFromReconciliation", never, never>, excludeAccountFromReconciliationSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
91
+ selectedPeriod: MonthYearPeriod;
92
+ account?: ExcludedAccountFromReconciliationPayload;
93
+ }, "expenseAutomationReconciliationView/excludeAccountFromReconciliationSuccess">, excludeAccountFromReconciliationFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
94
+ error: ZeniAPIStatus;
95
+ }, "expenseAutomationReconciliationView/excludeAccountFromReconciliationFailure">, includeAccountInReconciliation: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: ExcludeAccountFromReconciliationPayload], ExcludeAccountFromReconciliationPayload, "expenseAutomationReconciliationView/includeAccountInReconciliation", never, never>, includeAccountInReconciliationSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
96
+ selectedPeriod: MonthYearPeriod;
97
+ reconciliation?: ReconciliationDataPayload;
98
+ }, "expenseAutomationReconciliationView/includeAccountInReconciliationSuccess">, includeAccountInReconciliationFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
99
+ error: ZeniAPIStatus;
100
+ }, "expenseAutomationReconciliationView/includeAccountInReconciliationFailure">, uploadAccountStatement: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
90
101
  accountId: ID;
91
102
  payload: UploadStatementDocumentAIPayload;
92
103
  selectedPeriod: MonthYearPeriod;
@@ -99,6 +110,9 @@ export declare const fetchReconciliation: import("@reduxjs/toolkit").ActionCreat
99
110
  selectedPeriod: MonthYearPeriod;
100
111
  }, "expenseAutomationReconciliationView/uploadAccountStatementFailure">, updateStatementUploadChosen: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
101
112
  statementUploadChosen: boolean;
102
- }, "expenseAutomationReconciliationView/updateStatementUploadChosen">;
113
+ }, "expenseAutomationReconciliationView/updateStatementUploadChosen">, updateNodeCollapseState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
114
+ collapsed: boolean;
115
+ nodeId: ID;
116
+ }, "expenseAutomationReconciliationView/updateNodeCollapseState">;
103
117
  declare const _default: import("redux").Reducer<ReconciliationViewState>;
104
118
  export default _default;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.updateStatementUploadChosen = exports.uploadAccountStatementFailure = exports.uploadAccountStatementSuccess = exports.uploadAccountStatement = exports.deleteAccountStatementFailure = exports.deleteAccountStatementSuccess = exports.deleteAccountStatement = exports.updateAccountReconciliationLocalData = exports.updateReconListScrollPosition = exports.updateSaveReconciliationReviewFetchStatus = exports.saveReconciliationReview = exports.updateReviewTabLocalData = exports.initializeReconciliationReviewTabLocalData = exports.updateReviewTabSortState = exports.updateSelectedDrawerAccountId = exports.clearExpenseAutomationReconciliationView = exports.initialiseLocalDataForSelectedAccountId = exports.updateBalancesLocalData = exports.updateSelectedTab = exports.saveReconciliationDetailSuccess = exports.updateReconcileTabListScrollState = exports.updateReconcileTabListSortState = exports.updateReconcileTabLocalData = exports.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
4
+ exports.updateNodeCollapseState = exports.updateStatementUploadChosen = exports.uploadAccountStatementFailure = exports.uploadAccountStatementSuccess = exports.uploadAccountStatement = exports.includeAccountInReconciliationFailure = exports.includeAccountInReconciliationSuccess = exports.includeAccountInReconciliation = exports.excludeAccountFromReconciliationFailure = exports.excludeAccountFromReconciliationSuccess = exports.excludeAccountFromReconciliation = exports.deleteAccountStatementFailure = exports.deleteAccountStatementSuccess = exports.deleteAccountStatement = exports.updateAccountReconciliationLocalData = exports.updateReconListScrollPosition = exports.updateSaveReconciliationReviewFetchStatus = exports.saveReconciliationReview = exports.updateReviewTabLocalData = exports.initializeReconciliationReviewTabLocalData = exports.updateReviewTabSortState = exports.updateSelectedDrawerAccountId = exports.clearExpenseAutomationReconciliationView = exports.initialiseLocalDataForSelectedAccountId = exports.updateBalancesLocalData = exports.updateSelectedTab = exports.saveReconciliationDetailSuccess = exports.updateReconcileTabListScrollState = exports.updateReconcileTabListSortState = exports.updateReconcileTabLocalData = exports.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
7
7
  const accountState_1 = require("../../../entity/account/accountState");
@@ -41,7 +41,15 @@ exports.initialReconciliationTabsState = {
41
41
  },
42
42
  };
43
43
  exports.initialActionFetchState = {
44
+ excludeAccountFetch: {
45
+ fetchState: 'Not-Started',
46
+ error: undefined,
47
+ },
44
48
  excludeFetchById: {},
49
+ includeAccountFetch: {
50
+ fetchState: 'Not-Started',
51
+ error: undefined,
52
+ },
45
53
  reconcileFetch: {
46
54
  fetchState: 'Not-Started',
47
55
  error: undefined,
@@ -55,6 +63,7 @@ exports.initialActionFetchState = {
55
63
  exports.initialState = {
56
64
  accountReconciliationRecordsBySelectedPeriod: {},
57
65
  accountConnectionStatusByAccountID: {},
66
+ excludedAccountExclusionInfo: {},
58
67
  fetchState: 'Not-Started',
59
68
  error: undefined,
60
69
  selectedTab: 'review',
@@ -64,10 +73,12 @@ exports.initialState = {
64
73
  selectedAccountId: undefined,
65
74
  statementUploadChosen: false,
66
75
  reconListUIState: {
76
+ nodeCollapseState: {},
67
77
  scrollPosition: {
68
78
  scrollTop: 0,
69
79
  },
70
80
  },
81
+ excludedAccountIDs: [],
71
82
  };
72
83
  // Create slice with reducers
73
84
  const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
@@ -136,7 +147,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
136
147
  fetchReconciliationSuccess: {
137
148
  reducer(draft, action) {
138
149
  if (action.payload.accountId == null) {
139
- updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground);
150
+ updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? []);
140
151
  }
141
152
  else if (action.payload.reconciliation.reconciliation.length > 0 &&
142
153
  action.payload.reconciliation.accounts.length > 0) {
@@ -348,6 +359,10 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
348
359
  updateReconListScrollPosition: (draft, action) => {
349
360
  draft.reconListUIState.scrollPosition = action.payload.scrollPosition;
350
361
  },
362
+ updateNodeCollapseState: (draft, action) => {
363
+ draft.reconListUIState.nodeCollapseState[action.payload.nodeId] =
364
+ action.payload.collapsed;
365
+ },
351
366
  setConnectionInProgressForAccount: (draft, action) => {
352
367
  if (draft.accountConnectionStatusByAccountID[action.payload.accountId] ==
353
368
  null) {
@@ -425,6 +440,85 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
425
440
  ...localData,
426
441
  };
427
442
  },
443
+ excludeAccountFromReconciliation: {
444
+ reducer(draft) {
445
+ draft.actionFetchState.excludeAccountFetch = {
446
+ fetchState: 'In-Progress',
447
+ error: undefined,
448
+ };
449
+ },
450
+ prepare(payload) {
451
+ return { payload };
452
+ },
453
+ },
454
+ excludeAccountFromReconciliationSuccess: (draft, action) => {
455
+ draft.actionFetchState.excludeAccountFetch = {
456
+ fetchState: 'Completed',
457
+ error: undefined,
458
+ };
459
+ const { account, selectedPeriod } = action.payload;
460
+ if (account != null) {
461
+ if (!draft.excludedAccountIDs.includes(account.account_id)) {
462
+ draft.excludedAccountIDs.push(account.account_id);
463
+ }
464
+ updateExcludedAccountExclusionInfo(draft, account);
465
+ const monthYearPeriodId = (0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod);
466
+ if (draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId]
467
+ ?.accountIDs != null) {
468
+ draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId].accountIDs = draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId].accountIDs.filter((id) => id !== account.account_id);
469
+ }
470
+ }
471
+ },
472
+ excludeAccountFromReconciliationFailure: (draft, action) => {
473
+ draft.actionFetchState.excludeAccountFetch = {
474
+ fetchState: 'Error',
475
+ error: action.payload.error,
476
+ };
477
+ },
478
+ includeAccountInReconciliation: {
479
+ reducer(draft) {
480
+ draft.actionFetchState.includeAccountFetch = {
481
+ fetchState: 'In-Progress',
482
+ error: undefined,
483
+ };
484
+ },
485
+ prepare(payload) {
486
+ return { payload };
487
+ },
488
+ },
489
+ includeAccountInReconciliationSuccess: (draft, action) => {
490
+ draft.actionFetchState.includeAccountFetch = {
491
+ fetchState: 'Completed',
492
+ error: undefined,
493
+ };
494
+ const { reconciliation, selectedPeriod } = action.payload;
495
+ if (reconciliation == null) {
496
+ return;
497
+ }
498
+ const accountId = reconciliation.account_id;
499
+ draft.excludedAccountIDs = draft.excludedAccountIDs.filter((id) => id !== accountId);
500
+ delete draft.excludedAccountExclusionInfo[accountId];
501
+ const monthYearPeriodId = (0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod);
502
+ const accountReconciliationRecords = draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId];
503
+ if (accountReconciliationRecords != null) {
504
+ if (!accountReconciliationRecords.accountIDs.includes(accountId)) {
505
+ accountReconciliationRecords.accountIDs.push(accountId);
506
+ }
507
+ // put this in a function
508
+ updateReconciliationByAccountIDOnIncludeAccount(draft, accountId, reconciliation, monthYearPeriodId);
509
+ }
510
+ draft.accountConnectionStatusByAccountID[accountId] = {
511
+ status: (0, accountReconState_1.toBankStatusCodeType)(reconciliation.bank_status.code),
512
+ connectionInProgress: false,
513
+ paymentAccountId: undefined,
514
+ };
515
+ },
516
+ includeAccountInReconciliationFailure: (draft, action) => {
517
+ draft.actionFetchState.includeAccountFetch = {
518
+ fetchState: 'Error',
519
+ error: action.payload.error,
520
+ };
521
+ },
428
522
  updateStatementUploadChosen: (draft, action) => {
429
523
  draft.statementUploadChosen = action.payload.statementUploadChosen;
430
524
  },
@@ -434,10 +528,38 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
434
528
  },
435
529
  });
436
530
  // Export actions
437
- _a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen;
531
+ _a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.excludeAccountFromReconciliation = _a.excludeAccountFromReconciliation, exports.excludeAccountFromReconciliationSuccess = _a.excludeAccountFromReconciliationSuccess, exports.excludeAccountFromReconciliationFailure = _a.excludeAccountFromReconciliationFailure, exports.includeAccountInReconciliation = _a.includeAccountInReconciliation, exports.includeAccountInReconciliationSuccess = _a.includeAccountInReconciliationSuccess, exports.includeAccountInReconciliationFailure = _a.includeAccountInReconciliationFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
438
532
  // Export reducer
439
533
  exports.default = expenseAutomationReconciliationView.reducer;
440
- function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground) {
534
+ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts) {
535
+ draft.excludedAccountIDs = excludedAccounts.map((ea) => ea.account_id);
536
+ draft.excludedAccountExclusionInfo = {};
537
+ excludedAccounts.forEach((ea) => {
538
+ const { exclusion_info } = ea;
539
+ draft.excludedAccountExclusionInfo[ea.account_id] = {
540
+ bankBalance: exclusion_info.bank_balance != null
541
+ ? {
542
+ amount: exclusion_info.bank_balance,
543
+ currencyCode: ea.currency_code ?? 'USD',
544
+ currencySymbol: ea.currency_symbol ?? '$',
545
+ }
546
+ : undefined,
547
+ clearedBalance: exclusion_info.cleared_balance != null
548
+ ? {
549
+ amount: exclusion_info.cleared_balance,
550
+ currencyCode: ea.currency_code ?? 'USD',
551
+ currencySymbol: ea.currency_symbol ?? '$',
552
+ }
553
+ : undefined,
554
+ variance: exclusion_info.variance != null
555
+ ? {
556
+ amount: exclusion_info.variance,
557
+ currencyCode: ea.currency_code ?? 'USD',
558
+ currencySymbol: ea.currency_symbol ?? '$',
559
+ }
560
+ : undefined,
561
+ };
562
+ });
441
563
  draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = {
442
564
  accountIDs: [],
443
565
  reconciliationByAccountID: {},
@@ -520,3 +642,41 @@ function updateReconciliationByAccountID(draft, accounts, selectedPeriod, accoun
520
642
  };
521
643
  }
522
644
  }
645
+ const updateExcludedAccountExclusionInfo = (draft, account) => {
646
+ draft.excludedAccountExclusionInfo[account.account_id] = {
647
+ bankBalance: account.bank_balance != null
648
+ ? {
649
+ amount: account.bank_balance,
650
+ currencyCode: account.currency_code ?? 'USD',
651
+ currencySymbol: account.currency_symbol ?? '$',
652
+ }
653
+ : undefined,
654
+ clearedBalance: account.cleared_balance != null
655
+ ? {
656
+ amount: account.cleared_balance,
657
+ currencyCode: account.currency_code ?? 'USD',
658
+ currencySymbol: account.currency_symbol ?? '$',
659
+ }
660
+ : undefined,
661
+ variance: account.variance != null
662
+ ? {
663
+ amount: account.variance,
664
+ currencyCode: account.currency_code ?? 'USD',
665
+ currencySymbol: account.currency_symbol ?? '$',
666
+ }
667
+ : undefined,
668
+ };
669
+ };
670
+ const updateReconciliationByAccountIDOnIncludeAccount = (draft, accountId, reconciliation, monthYearPeriodId) => {
671
+ draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId].reconciliationByAccountID[accountId] = {
672
+ accountId,
673
+ reconciliationId: reconciliation.reconciliation_id ?? undefined,
674
+ transactionFetchState: { fetchState: 'Not-Started', error: undefined },
675
+ refreshStatus: { fetchState: 'Not-Started', error: undefined },
676
+ statementDeleteStatus: { fetchState: 'Not-Started', error: undefined },
677
+ statementUploadStatus: { fetchState: 'Not-Started', error: undefined },
678
+ statementUpdateStatus: { fetchState: 'Not-Started', error: undefined },
679
+ statementParseInProgress: reconciliation.bank_status.code === 'parsing',
680
+ localData: {},
681
+ };
682
+ };
@@ -11,7 +11,7 @@ import { Vendor } from '../../../entity/vendor/vendorState';
11
11
  import { PlaidConnectionDetails } from '../../spendManagement/plaidAccount/plaidAccountViewState';
12
12
  import { AccountReconciliationLocalData, ActionFetchStates, ReconListUIState, ReconciliationTabsState, ReconciliationViewTabType } from '../types/reconciliationViewState';
13
13
  export declare const ALL_ACCOUNT_RECON_SECTION_IDS: readonly ["assets", "liabilities"];
14
- declare const toAccountReconSectionID: (v: string) => "assets" | "liabilities";
14
+ export declare const toAccountReconSectionID: (v: string) => "assets" | "liabilities";
15
15
  export type AccountReconSectionID = ReturnType<typeof toAccountReconSectionID>;
16
16
  export interface ExpenseAutomationReconciliationViewSelector {
17
17
  accountListNestedAccountHierarchy: NestedAccountHierarchyForReport[];
@@ -24,7 +24,12 @@ export interface ExpenseAutomationReconciliationViewSelector {
24
24
  classListNestedAccountHierarchy: NestedClassHierarchyForReport[];
25
25
  completionStatus: CompletionStatusType;
26
26
  creditCards: AccountBase[];
27
+ excludeAccountFetchState: FetchStateAndError;
28
+ excludedAccountIDs: ID[];
29
+ excludedAccountReconciliationByAccountID: Record<ID, AccountReconciliationByAccount>;
30
+ excludedAccountReconciliationBySectionID: Record<AccountReconSectionID, AccountReconciliationBySection>;
27
31
  fetchStatus: FetchStateAndError;
32
+ includeAccountFetchState: FetchStateAndError;
28
33
  monthYearPeriod: MonthYearPeriod;
29
34
  plaidConnectionDetails: PlaidConnectionDetails;
30
35
  reconciliationTabsState: ReconciliationTabsState;
@@ -59,4 +64,3 @@ export interface AccountReconciliationByAccount {
59
64
  transactionFetchState: FetchStateAndError;
60
65
  paymentAccountId?: ID;
61
66
  }
62
- export {};