@zeniai/client-epic-state 5.1.79 → 5.1.81

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 (116) hide show
  1. package/lib/commonStateTypes/viewAndReport/reportIDHelper.d.ts +1 -0
  2. package/lib/commonStateTypes/viewAndReport/reportIDHelper.js +13 -1
  3. package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +2 -2
  4. package/lib/commonStateTypes/viewAndReport/viewAndReport.js +3 -0
  5. package/lib/entity/account/accountState.d.ts +1 -1
  6. package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
  7. package/lib/entity/class/classReducer.d.ts +4 -4
  8. package/lib/entity/class/classState.d.ts +1 -1
  9. package/lib/entity/forecast/forecastState.d.ts +1 -1
  10. package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
  11. package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
  12. package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
  13. package/lib/entity/sectionProjectView/sectionProjectView.d.ts +1 -1
  14. package/lib/entity/sectionProjectView/sectionProjectViewReducer.d.ts +2 -2
  15. package/lib/entity/tenant/clearAllEpic.d.ts +4 -1
  16. package/lib/entity/tenant/clearAllEpic.js +6 -0
  17. package/lib/epic.d.ts +8 -1
  18. package/lib/epic.js +8 -1
  19. package/lib/esm/commonStateTypes/viewAndReport/reportIDHelper.js +11 -0
  20. package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +3 -0
  21. package/lib/esm/entity/tenant/clearAllEpic.js +6 -0
  22. package/lib/esm/epic.js +8 -1
  23. package/lib/esm/index.js +13 -2
  24. package/lib/esm/reducer.js +9 -0
  25. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeForTimeframeProjectViewEpic.js +45 -0
  26. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewEpic.js +30 -0
  27. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewPayload.js +1 -0
  28. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewReducer.js +111 -0
  29. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelector.js +65 -0
  30. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelectorTypes.js +1 -0
  31. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewState.js +1 -0
  32. package/lib/esm/view/opExProjectView/opExForTimeframeProjectViewEpic.js +43 -0
  33. package/lib/esm/view/opExProjectView/opExProjectViewEpic.js +30 -0
  34. package/lib/esm/view/opExProjectView/opExProjectViewPayload.js +1 -0
  35. package/lib/esm/view/opExProjectView/opExProjectViewReducer.js +111 -0
  36. package/lib/esm/view/opExProjectView/opExProjectViewSelector.js +52 -0
  37. package/lib/esm/view/opExProjectView/opExProjectViewSelectorTypes.js +1 -0
  38. package/lib/esm/view/opExProjectView/opExProjectViewState.js +1 -0
  39. package/lib/esm/view/reportsResync/reportsClassViewRefetchingEpic.js +0 -4
  40. package/lib/esm/view/reportsResync/reportsProjectViewRefetchingEpic.js +30 -0
  41. package/lib/esm/view/reportsResync/reportsResyncEpic.js +11 -3
  42. package/lib/esm/view/reportsResync/reportsResyncReducer.js +9 -1
  43. package/lib/esm/view/revenueProjectView/revenueForTimeframeProjectViewEpic.js +35 -0
  44. package/lib/esm/view/revenueProjectView/revenueProjectViewEpic.js +30 -0
  45. package/lib/esm/view/revenueProjectView/revenueProjectViewPayload.js +1 -0
  46. package/lib/esm/view/revenueProjectView/revenueProjectViewReducer.js +111 -0
  47. package/lib/esm/view/revenueProjectView/revenueProjectViewSelector.js +58 -0
  48. package/lib/esm/view/revenueProjectView/revenueProjectViewSelectorTypes.js +1 -0
  49. package/lib/esm/view/revenueProjectView/revenueProjectViewState.js +1 -0
  50. package/lib/index.d.ts +19 -2
  51. package/lib/index.js +87 -47
  52. package/lib/reducer.d.ts +9 -0
  53. package/lib/reducer.js +9 -0
  54. package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
  55. package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
  56. package/lib/view/cardBalance/cardBalanceSelector.d.ts +1 -1
  57. package/lib/view/cashBalance/cashBalanceSelector.d.ts +1 -1
  58. package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
  59. package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
  60. package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
  61. package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
  62. package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
  63. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeForTimeframeProjectViewEpic.d.ts +9 -0
  64. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeForTimeframeProjectViewEpic.js +49 -0
  65. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewEpic.d.ts +6 -0
  66. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewEpic.js +34 -0
  67. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewPayload.d.ts +11 -0
  68. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewPayload.js +2 -0
  69. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewReducer.d.ts +33 -0
  70. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewReducer.js +115 -0
  71. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelector.d.ts +13 -0
  72. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelector.js +69 -0
  73. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelectorTypes.d.ts +21 -0
  74. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelectorTypes.js +2 -0
  75. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewState.d.ts +20 -0
  76. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewState.js +2 -0
  77. package/lib/view/opExProjectView/opExForTimeframeProjectViewEpic.d.ts +9 -0
  78. package/lib/view/opExProjectView/opExForTimeframeProjectViewEpic.js +47 -0
  79. package/lib/view/opExProjectView/opExProjectViewEpic.d.ts +6 -0
  80. package/lib/view/opExProjectView/opExProjectViewEpic.js +34 -0
  81. package/lib/view/opExProjectView/opExProjectViewPayload.d.ts +6 -0
  82. package/lib/view/opExProjectView/opExProjectViewPayload.js +2 -0
  83. package/lib/view/opExProjectView/opExProjectViewReducer.d.ts +33 -0
  84. package/lib/view/opExProjectView/opExProjectViewReducer.js +115 -0
  85. package/lib/view/opExProjectView/opExProjectViewSelector.d.ts +12 -0
  86. package/lib/view/opExProjectView/opExProjectViewSelector.js +56 -0
  87. package/lib/view/opExProjectView/opExProjectViewSelectorTypes.d.ts +19 -0
  88. package/lib/view/opExProjectView/opExProjectViewSelectorTypes.js +2 -0
  89. package/lib/view/opExProjectView/opExProjectViewState.d.ts +20 -0
  90. package/lib/view/opExProjectView/opExProjectViewState.js +2 -0
  91. package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
  92. package/lib/view/reportsResync/reportsClassViewRefetchingEpic.d.ts +1 -2
  93. package/lib/view/reportsResync/reportsClassViewRefetchingEpic.js +0 -4
  94. package/lib/view/reportsResync/reportsProjectViewRefetchingEpic.d.ts +10 -0
  95. package/lib/view/reportsResync/reportsProjectViewRefetchingEpic.js +34 -0
  96. package/lib/view/reportsResync/reportsResyncEpic.d.ts +2 -2
  97. package/lib/view/reportsResync/reportsResyncEpic.js +10 -2
  98. package/lib/view/reportsResync/reportsResyncReducer.d.ts +5 -3
  99. package/lib/view/reportsResync/reportsResyncReducer.js +10 -2
  100. package/lib/view/revenueProjectView/revenueForTimeframeProjectViewEpic.d.ts +9 -0
  101. package/lib/view/revenueProjectView/revenueForTimeframeProjectViewEpic.js +39 -0
  102. package/lib/view/revenueProjectView/revenueProjectViewEpic.d.ts +6 -0
  103. package/lib/view/revenueProjectView/revenueProjectViewEpic.js +34 -0
  104. package/lib/view/revenueProjectView/revenueProjectViewPayload.d.ts +9 -0
  105. package/lib/view/revenueProjectView/revenueProjectViewPayload.js +2 -0
  106. package/lib/view/revenueProjectView/revenueProjectViewReducer.d.ts +33 -0
  107. package/lib/view/revenueProjectView/revenueProjectViewReducer.js +115 -0
  108. package/lib/view/revenueProjectView/revenueProjectViewSelector.d.ts +12 -0
  109. package/lib/view/revenueProjectView/revenueProjectViewSelector.js +62 -0
  110. package/lib/view/revenueProjectView/revenueProjectViewSelectorTypes.d.ts +19 -0
  111. package/lib/view/revenueProjectView/revenueProjectViewSelectorTypes.js +2 -0
  112. package/lib/view/revenueProjectView/revenueProjectViewState.d.ts +20 -0
  113. package/lib/view/revenueProjectView/revenueProjectViewState.js +2 -0
  114. package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
  115. package/lib/view/topEx/topExSelector.d.ts +1 -1
  116. package/package.json +1 -1
@@ -3,6 +3,6 @@ import { Observable } from 'rxjs';
3
3
  import { openSnackbar } from '../../entity/snackbar/snackbarReducer';
4
4
  import { RootState } from '../../reducer';
5
5
  import { ZeniAPI } from '../../zeniAPI';
6
- import { initiateReportsClassViewRefetching, initiateReportsResync, reportsResyncFailure, reportsResyncSuccess } from './reportsResyncReducer';
7
- export type ActionType = ReturnType<typeof initiateReportsClassViewRefetching> | ReturnType<typeof initiateReportsResync> | ReturnType<typeof reportsResyncSuccess> | ReturnType<typeof reportsResyncFailure> | ReturnType<typeof openSnackbar>;
6
+ import { initiateReportsClassViewRefetching, initiateReportsProjectViewRefetching, initiateReportsResync, reportsResyncFailure, reportsResyncSuccess } from './reportsResyncReducer';
7
+ export type ActionType = ReturnType<typeof initiateReportsClassViewRefetching> | ReturnType<typeof initiateReportsProjectViewRefetching> | ReturnType<typeof initiateReportsResync> | ReturnType<typeof reportsResyncSuccess> | ReturnType<typeof reportsResyncFailure> | ReturnType<typeof openSnackbar>;
8
8
  export declare const reportsResyncEpic: (actions$: ActionsObservable<ActionType>, _: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.reportsResyncEpic = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  const operators_1 = require("rxjs/operators");
6
+ const reportIDHelper_1 = require("../../commonStateTypes/viewAndReport/reportIDHelper");
6
7
  const snackbarReducer_1 = require("../../entity/snackbar/snackbarReducer");
7
8
  const responsePayload_1 = require("../../responsePayload");
8
9
  const reportsResyncReducer_1 = require("./reportsResyncReducer");
@@ -11,13 +12,20 @@ const reportsResyncEpic = (actions$, _, zeniAPI) => actions$.pipe((0, operators_
11
12
  const payload = {
12
13
  is_hard_refresh: true,
13
14
  };
15
+ const isProjectViewResync = (0, reportIDHelper_1.isPAndLProjectViewReport)(reportIdToResync) ||
16
+ (0, reportIDHelper_1.isDashboardProjectViewReport)(reportIdToResync);
17
+ const resyncTaskName = isProjectViewResync
18
+ ? 'generate-group-by-project-reports'
19
+ : 'generate-group-by-class-reports';
14
20
  return zeniAPI
15
- .postAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/2.0/tasks/generate-group-by-class-reports`, payload)
21
+ .postAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/2.0/tasks/${resyncTaskName}`, payload)
16
22
  .pipe((0, operators_1.switchMap)((response) => {
17
23
  if ((0, responsePayload_1.isSuccessResponse)(response)) {
18
24
  // 200 means new data is available, 204 means no new data
19
25
  const actions = [
20
- (0, reportsResyncReducer_1.initiateReportsClassViewRefetching)({ reportIdToResync }),
26
+ isProjectViewResync
27
+ ? (0, reportsResyncReducer_1.initiateReportsProjectViewRefetching)({ reportIdToResync })
28
+ : (0, reportsResyncReducer_1.initiateReportsClassViewRefetching)({ reportIdToResync }),
21
29
  (0, reportsResyncReducer_1.reportsResyncSuccess)({
22
30
  hasNewData: response.status.code === 200,
23
31
  }),
@@ -2,11 +2,13 @@ import { ReportID } from '../../commonStateTypes/viewAndReport/viewAndReport';
2
2
  import { ZeniAPIStatus } from '../../responsePayload';
3
3
  import { ReportsResyncState } from './reportsResyncState';
4
4
  export declare const initialReportsResyncState: ReportsResyncState;
5
- export declare const initiateReportsResync: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[reportIdToResync: "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" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "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" | "transfer_accounts" | "credit_card_transfer_accounts"], {
6
- reportIdToResync: "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" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "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" | "transfer_accounts" | "credit_card_transfer_accounts";
5
+ export declare const initiateReportsResync: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[reportIdToResync: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "operating_expenses_by_projects" | "revenue" | "revenue_by_classes" | "revenue_by_projects" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "net_burn_or_income_by_projects" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "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" | "transfer_accounts" | "credit_card_transfer_accounts"], {
6
+ reportIdToResync: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "operating_expenses_by_projects" | "revenue" | "revenue_by_classes" | "revenue_by_projects" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "net_burn_or_income_by_projects" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "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" | "transfer_accounts" | "credit_card_transfer_accounts";
7
7
  }, "initiateReportsResync/initiateReportsResync", never, never>, initiateReportsClassViewRefetching: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
8
8
  reportIdToResync: ReportID;
9
- }, "initiateReportsResync/initiateReportsClassViewRefetching">, reportsResyncSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
9
+ }, "initiateReportsResync/initiateReportsClassViewRefetching">, initiateReportsProjectViewRefetching: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
10
+ reportIdToResync: ReportID;
11
+ }, "initiateReportsResync/initiateReportsProjectViewRefetching">, reportsResyncSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
10
12
  hasNewData: boolean;
11
13
  }, "initiateReportsResync/reportsResyncSuccess">, reportsResyncFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
12
14
  error: ZeniAPIStatus;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.clearReportsResync = exports.reportsResyncFailure = exports.reportsResyncSuccess = exports.initiateReportsClassViewRefetching = exports.initiateReportsResync = exports.initialReportsResyncState = void 0;
4
+ exports.clearReportsResync = exports.reportsResyncFailure = exports.reportsResyncSuccess = exports.initiateReportsProjectViewRefetching = exports.initiateReportsClassViewRefetching = exports.initiateReportsResync = exports.initialReportsResyncState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  exports.initialReportsResyncState = {
7
7
  hasNewData: false,
@@ -34,6 +34,14 @@ const reportsResync = (0, toolkit_1.createSlice)({
34
34
  // This action is handled by initiateReportsClassViewRefetchingEpic
35
35
  // which dispatches the appropriate fetch actions
36
36
  },
37
+ initiateReportsProjectViewRefetching(
38
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
+ _draft,
40
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
41
+ _action) {
42
+ // This action is handled by initiateReportsProjectViewRefetchingEpic
43
+ // which dispatches the appropriate fetch actions
44
+ },
37
45
  reportsResyncSuccess(draft, action) {
38
46
  draft.reportsResyncFetchState.fetchState = 'Completed';
39
47
  draft.reportsResyncFetchState.error = undefined;
@@ -49,5 +57,5 @@ const reportsResync = (0, toolkit_1.createSlice)({
49
57
  },
50
58
  },
51
59
  });
52
- _a = reportsResync.actions, exports.initiateReportsResync = _a.initiateReportsResync, exports.initiateReportsClassViewRefetching = _a.initiateReportsClassViewRefetching, exports.reportsResyncSuccess = _a.reportsResyncSuccess, exports.reportsResyncFailure = _a.reportsResyncFailure, exports.clearReportsResync = _a.clearReportsResync;
60
+ _a = reportsResync.actions, exports.initiateReportsResync = _a.initiateReportsResync, exports.initiateReportsClassViewRefetching = _a.initiateReportsClassViewRefetching, exports.initiateReportsProjectViewRefetching = _a.initiateReportsProjectViewRefetching, exports.reportsResyncSuccess = _a.reportsResyncSuccess, exports.reportsResyncFailure = _a.reportsResyncFailure, exports.clearReportsResync = _a.clearReportsResync;
53
61
  exports.default = reportsResync.reducer;
@@ -0,0 +1,9 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { updateProjects } from '../../entity/project/projectReducer';
4
+ import { updateSectionProjectView } from '../../entity/sectionProjectView/sectionProjectViewReducer';
5
+ import { RootState } from '../../reducer';
6
+ import { ZeniAPI } from '../../zeniAPI';
7
+ import { fetchRevenueForTimeframeProjectView, updateRevenueForTimeframeProjectView, updateRevenueForTimeframeProjectViewFailure } from './revenueProjectViewReducer';
8
+ export type ActionType = ReturnType<typeof fetchRevenueForTimeframeProjectView> | ReturnType<typeof updateRevenueForTimeframeProjectView> | ReturnType<typeof updateRevenueForTimeframeProjectViewFailure> | ReturnType<typeof updateProjects> | ReturnType<typeof updateSectionProjectView>;
9
+ export declare const fetchRevenueForTimeframeProjectViewEpic: (actions$: ActionsObservable<ActionType>, _: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchRevenueForTimeframeProjectViewEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const projectReducer_1 = require("../../entity/project/projectReducer");
7
+ const sectionProjectViewReducer_1 = require("../../entity/sectionProjectView/sectionProjectViewReducer");
8
+ const responsePayload_1 = require("../../responsePayload");
9
+ const reportsHelpers_1 = require("../common/reportsHelpers");
10
+ const revenueProjectViewReducer_1 = require("./revenueProjectViewReducer");
11
+ const fetchRevenueForTimeframeProjectViewEpic = (actions$, _, zeniAPI) => actions$.pipe((0, operators_1.filter)(revenueProjectViewReducer_1.fetchRevenueForTimeframeProjectView.match), (0, operators_1.mergeMap)((action) => {
12
+ const queryValue = {
13
+ is_full_response: action.payload.fetchFullReport,
14
+ time_series_groups: [(0, reportsHelpers_1.getTimeSeriesGroup)(action.payload.timeframe)],
15
+ is_group_by_project: true,
16
+ };
17
+ return zeniAPI
18
+ .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/2.0/reports/revenue?query=${encodeURIComponent(JSON.stringify(queryValue))}`)
19
+ .pipe((0, operators_1.mergeMap)((response) => {
20
+ if (response.data != null && (0, responsePayload_1.isSuccessResponse)(response)) {
21
+ const actions = [];
22
+ const report = response.data.report;
23
+ const currency = report.currency;
24
+ actions.push((0, projectReducer_1.updateProjects)(report.projects));
25
+ actions.push((0, sectionProjectViewReducer_1.updateSectionProjectView)(action.payload.timeframe, 'cogs', 'revenue_by_projects', report.cogs, report.accounts, currency));
26
+ actions.push((0, sectionProjectViewReducer_1.updateSectionProjectView)(action.payload.timeframe, 'income', 'revenue_by_projects', report.income, report.accounts, currency));
27
+ actions.push((0, revenueProjectViewReducer_1.updateRevenueForTimeframeProjectView)({
28
+ timeframe: action.payload.timeframe,
29
+ report: response.data,
30
+ }));
31
+ return (0, rxjs_1.from)(actions);
32
+ }
33
+ else {
34
+ return (0, rxjs_1.of)((0, revenueProjectViewReducer_1.updateRevenueForTimeframeProjectViewFailure)(response.status, action.payload.timeframe));
35
+ }
36
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, revenueProjectViewReducer_1.updateRevenueForTimeframeProjectViewFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Revenue by Projects REST API call errored out' +
37
+ (error instanceof Error ? error.message : String(error))), action.payload.timeframe))));
38
+ }));
39
+ exports.fetchRevenueForTimeframeProjectViewEpic = fetchRevenueForTimeframeProjectViewEpic;
@@ -0,0 +1,6 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../reducer';
4
+ import { fetchRevenueForTimeframeProjectView, fetchRevenueProjectView } from './revenueProjectViewReducer';
5
+ export type ActionType = ReturnType<typeof fetchRevenueProjectView> | ReturnType<typeof fetchRevenueForTimeframeProjectView>;
6
+ export declare const fetchRevenueProjectViewEpic: (actions$: ActionsObservable<ActionType>, state: StateObservable<RootState>) => Observable<ActionType>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchRevenueProjectViewEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const revenueProjectViewReducer_1 = require("./revenueProjectViewReducer");
7
+ const fetchRevenueProjectViewEpic = (actions$, state) => actions$.pipe((0, operators_1.filter)(revenueProjectViewReducer_1.fetchRevenueProjectView.match), (0, operators_1.switchMap)((action) => {
8
+ const { cacheOverride } = action.payload;
9
+ if (cacheOverride === true) {
10
+ return (0, rxjs_1.from)([
11
+ (0, revenueProjectViewReducer_1.fetchRevenueForTimeframeProjectView)('month'),
12
+ (0, revenueProjectViewReducer_1.fetchRevenueForTimeframeProjectView)('quarter'),
13
+ (0, revenueProjectViewReducer_1.fetchRevenueForTimeframeProjectView)('year'),
14
+ ]);
15
+ }
16
+ else {
17
+ const fetchActions = [];
18
+ const projectFetchState = state.value.revenueProjectViewState.fetchState;
19
+ if (projectFetchState['month'].fetchState !== 'In-Progress' &&
20
+ projectFetchState['month'].fetchState !== 'Completed') {
21
+ fetchActions.push((0, revenueProjectViewReducer_1.fetchRevenueForTimeframeProjectView)('month'));
22
+ }
23
+ if (projectFetchState['quarter'].fetchState !== 'In-Progress' &&
24
+ projectFetchState['quarter'].fetchState !== 'Completed') {
25
+ fetchActions.push((0, revenueProjectViewReducer_1.fetchRevenueForTimeframeProjectView)('quarter'));
26
+ }
27
+ if (projectFetchState['year'].fetchState !== 'In-Progress' &&
28
+ projectFetchState['year'].fetchState !== 'Completed') {
29
+ fetchActions.push((0, revenueProjectViewReducer_1.fetchRevenueForTimeframeProjectView)('year'));
30
+ }
31
+ return (0, rxjs_1.from)(fetchActions);
32
+ }
33
+ }));
34
+ exports.fetchRevenueProjectViewEpic = fetchRevenueProjectViewEpic;
@@ -0,0 +1,9 @@
1
+ import { COABalanceGroupedByPeriodPayloadV2 } from '../../commonPayloadTypes/v2/coaBalancePayload';
2
+ import { ZeniReportResponse } from '../../responsePayload';
3
+ import { ReportByProjectMetadataPayloadV2, SectionByProjectCOABalanceGroupedPayloadV2 } from '../profitAndLossProjectView/profitAndLossProjectViewPayload';
4
+ export interface RevenueProjectViewPayload extends ReportByProjectMetadataPayloadV2 {
5
+ cogs: SectionByProjectCOABalanceGroupedPayloadV2;
6
+ gross_profit: COABalanceGroupedByPeriodPayloadV2;
7
+ income: SectionByProjectCOABalanceGroupedPayloadV2;
8
+ }
9
+ export type RevenueReportProjectViewResponse = ZeniReportResponse<RevenueProjectViewPayload>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,33 @@
1
+ import { AccountViewMode, ID } from '../../commonStateTypes/common';
2
+ import { ZeniAPIStatus, ZeniReportData } from '../../responsePayload';
3
+ import { RevenueProjectViewPayload } from './revenueProjectViewPayload';
4
+ import { RevenueProjectViewState } from './revenueProjectViewState';
5
+ export declare const initialState: RevenueProjectViewState;
6
+ export declare const fetchRevenueProjectView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride?: boolean | undefined], {
7
+ cacheOverride: boolean;
8
+ }, "revenueProjectView/fetchRevenueProjectView", never, never>, fetchRevenueForTimeframeProjectView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[timeframe: "month" | "year" | "quarter", fetchFullReport?: boolean | undefined, cacheOverride?: boolean | undefined], {
9
+ timeframe: "month" | "year" | "quarter";
10
+ fetchFullReport: boolean;
11
+ cacheOverride: boolean;
12
+ }, "revenueProjectView/fetchRevenueForTimeframeProjectView", never, never>, updateRevenueForTimeframeProjectView: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
13
+ report: ZeniReportData<RevenueProjectViewPayload>;
14
+ timeframe: "month" | "quarter" | "year";
15
+ }, "revenueProjectView/updateRevenueForTimeframeProjectView">, updateRevenueForTimeframeProjectViewFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[error: ZeniAPIStatus<Record<string, unknown>>, timeframe: "month" | "year" | "quarter"], {
16
+ error: ZeniAPIStatus<Record<string, unknown>>;
17
+ timeframe: "month" | "year" | "quarter";
18
+ }, "revenueProjectView/updateRevenueForTimeframeProjectViewFailure", never, never>, updateProjectsToFilterOut: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
19
+ projectsToFilterOut: ID[];
20
+ }, "revenueProjectView/updateProjectsToFilterOut">, updateRevenueProjectViewUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
21
+ nodeCollapseState?: {
22
+ isCollapsed: boolean;
23
+ nodeId: ID;
24
+ };
25
+ scrollPosition?: {
26
+ scrollTop: number;
27
+ scrollLeft?: number;
28
+ };
29
+ }, "revenueProjectView/updateRevenueProjectViewUIState">, updateProjectViewAccountViewMode: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
30
+ viewMode: AccountViewMode;
31
+ }, "revenueProjectView/updateProjectViewAccountViewMode">, resetProjectNodeCollapseState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"revenueProjectView/resetProjectNodeCollapseState">, clearRevenueProjectView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"revenueProjectView/clearRevenueProjectView">;
32
+ declare const _default: import("redux").Reducer<RevenueProjectViewState>;
33
+ export default _default;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.clearRevenueProjectView = exports.resetProjectNodeCollapseState = exports.updateProjectViewAccountViewMode = exports.updateRevenueProjectViewUIState = exports.updateProjectsToFilterOut = exports.updateRevenueForTimeframeProjectViewFailure = exports.updateRevenueForTimeframeProjectView = exports.fetchRevenueForTimeframeProjectView = exports.fetchRevenueProjectView = exports.initialState = void 0;
5
+ const toolkit_1 = require("@reduxjs/toolkit");
6
+ const viewAndReportPayloadv2_1 = require("../../commonPayloadTypes/v2/viewAndReportPayloadv2");
7
+ exports.initialState = {
8
+ fetchState: {
9
+ month: {
10
+ fetchState: 'Not-Started',
11
+ error: undefined,
12
+ },
13
+ quarter: {
14
+ fetchState: 'Not-Started',
15
+ error: undefined,
16
+ },
17
+ year: {
18
+ fetchState: 'Not-Started',
19
+ error: undefined,
20
+ },
21
+ },
22
+ firstMonthOfFY: 1,
23
+ projectIds: [],
24
+ reportId: 'revenue_by_projects',
25
+ reportTitle: 'revenue_by_projects',
26
+ uiState: {
27
+ accountViewMode: 'account_group',
28
+ nodeCollapseState: {},
29
+ projectsToFilterOut: [],
30
+ scrollPosition: undefined,
31
+ },
32
+ };
33
+ const revenueProjectView = (0, toolkit_1.createSlice)({
34
+ name: 'revenueProjectView',
35
+ initialState: exports.initialState,
36
+ reducers: {
37
+ fetchRevenueProjectView: {
38
+ prepare(cacheOverride = false) {
39
+ return { payload: { cacheOverride } };
40
+ },
41
+ reducer(
42
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
+ _draft,
44
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
45
+ _action) {
46
+ // nothing to do here
47
+ },
48
+ },
49
+ fetchRevenueForTimeframeProjectView: {
50
+ prepare(timeframe, fetchFullReport = true, cacheOverride = false) {
51
+ return { payload: { timeframe, fetchFullReport, cacheOverride } };
52
+ },
53
+ reducer(draft, action) {
54
+ const timeframe = action.payload.timeframe;
55
+ draft.fetchState[timeframe].fetchState = 'In-Progress';
56
+ draft.fetchState[timeframe].error = undefined;
57
+ },
58
+ },
59
+ updateRevenueForTimeframeProjectView(draft, action) {
60
+ doUpdateRevenueProjectView(draft, action.payload.timeframe, action.payload.report);
61
+ },
62
+ updateRevenueForTimeframeProjectViewFailure: {
63
+ prepare(error, timeframe) {
64
+ return {
65
+ payload: {
66
+ error,
67
+ timeframe,
68
+ },
69
+ };
70
+ },
71
+ reducer(draft, action) {
72
+ draft.fetchState[action.payload.timeframe] = {
73
+ fetchState: 'Error',
74
+ error: action.payload.error,
75
+ };
76
+ },
77
+ },
78
+ updateProjectsToFilterOut(draft, action) {
79
+ draft.uiState.projectsToFilterOut = action.payload.projectsToFilterOut;
80
+ },
81
+ updateRevenueProjectViewUIState(draft, action) {
82
+ const { nodeCollapseState, scrollPosition } = action.payload;
83
+ if (nodeCollapseState != null) {
84
+ draft.uiState.nodeCollapseState = Object.assign({}, draft.uiState.nodeCollapseState, {
85
+ [nodeCollapseState.nodeId]: nodeCollapseState.isCollapsed,
86
+ });
87
+ }
88
+ if (scrollPosition != null) {
89
+ draft.uiState.scrollPosition = scrollPosition;
90
+ }
91
+ },
92
+ updateProjectViewAccountViewMode(draft, action) {
93
+ draft.uiState.accountViewMode = action.payload.viewMode;
94
+ },
95
+ resetProjectNodeCollapseState(draft) {
96
+ draft.uiState.nodeCollapseState = {};
97
+ },
98
+ clearRevenueProjectView(draft) {
99
+ Object.assign(draft, exports.initialState);
100
+ },
101
+ },
102
+ });
103
+ _a = revenueProjectView.actions, exports.fetchRevenueProjectView = _a.fetchRevenueProjectView, exports.fetchRevenueForTimeframeProjectView = _a.fetchRevenueForTimeframeProjectView, exports.updateRevenueForTimeframeProjectView = _a.updateRevenueForTimeframeProjectView, exports.updateRevenueForTimeframeProjectViewFailure = _a.updateRevenueForTimeframeProjectViewFailure, exports.updateProjectsToFilterOut = _a.updateProjectsToFilterOut, exports.updateRevenueProjectViewUIState = _a.updateRevenueProjectViewUIState, exports.updateProjectViewAccountViewMode = _a.updateProjectViewAccountViewMode, exports.resetProjectNodeCollapseState = _a.resetProjectNodeCollapseState, exports.clearRevenueProjectView = _a.clearRevenueProjectView;
104
+ exports.default = revenueProjectView.reducer;
105
+ const doUpdateRevenueProjectView = (draft, timeframe, revenueReport) => {
106
+ const report = (0, viewAndReportPayloadv2_1.mapReportPayloadV2ToReportV2)(revenueReport.report);
107
+ draft.dataAvailable = report.dataAvailable;
108
+ draft.firstMonthOfFY = report.firstMonthOfFY;
109
+ draft.bookCloseDate = report.bookCloseDate;
110
+ draft.status = report.status;
111
+ draft.fetchState[timeframe].fetchState = 'Completed';
112
+ if (draft.projectIds.length <= 0) {
113
+ draft.projectIds = revenueReport.report.projects.map((project) => project.accounting_project_id);
114
+ }
115
+ };
@@ -0,0 +1,12 @@
1
+ import { COABalancesFilterProjectView } from '../../commonStateTypes/coaBalance/coaBalancesFilterProjectView';
2
+ import { AccountState } from '../../entity/account/accountState';
3
+ import { ProjectState } from '../../entity/project/projectReducer';
4
+ import { SectionProjectViewState } from '../../entity/sectionProjectView/sectionProjectViewState';
5
+ import { RootState } from '../../reducer';
6
+ import { RevenueClassesViewCalculatedSectionID, RevenueClassesViewSectionID } from '../revenueClassesView/revenueClassesViewSelectorTypes';
7
+ import { RevenueProjectViewReport } from './revenueProjectViewSelectorTypes';
8
+ import { RevenueProjectViewState } from './revenueProjectViewState';
9
+ export declare const revenueProjectIdsInOrder: (RevenueClassesViewSectionID | RevenueClassesViewCalculatedSectionID)[];
10
+ export declare const getRevenueProjectView: (filter: COABalancesFilterProjectView, accountState: AccountState, projectState: ProjectState, sectionsState: SectionProjectViewState, revenueProjectViewState: RevenueProjectViewState) => RevenueProjectViewReport;
11
+ export declare const getRevenueProjectViewForSelectedRange: (state: RootState) => RevenueProjectViewReport;
12
+ export declare const getRevenueProjectViewForHighlightedRange: (state: RootState) => RevenueProjectViewReport;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRevenueProjectViewForHighlightedRange = exports.getRevenueProjectViewForSelectedRange = exports.getRevenueProjectView = exports.revenueProjectIdsInOrder = void 0;
4
+ const toolkit_1 = require("@reduxjs/toolkit");
5
+ const getDifferenceOfBalancesGroupedByPeriod_1 = require("../../commonStateTypes/coaBalance/classBalances/getDifferenceOfBalancesGroupedByPeriod");
6
+ const coaBalance_1 = require("../../commonStateTypes/coaBalance/coaBalance");
7
+ const coaBalancesFilterProjectView_1 = require("../../commonStateTypes/coaBalance/coaBalancesFilterProjectView");
8
+ const reduceFetchState_1 = require("../../commonStateTypes/reduceFetchState");
9
+ const projectSelector_1 = require("../../entity/project/projectSelector");
10
+ const sectionProjectViewSelector_1 = require("../../entity/sectionProjectView/sectionProjectViewSelector");
11
+ const revenueClassesViewSelectorTypes_1 = require("../revenueClassesView/revenueClassesViewSelectorTypes");
12
+ exports.revenueProjectIdsInOrder = ['income', 'cogs', 'grossMargin'];
13
+ const getRevenueProjectView = (filter, accountState, projectState, sectionsState, revenueProjectViewState) => {
14
+ const fetchState = (0, reduceFetchState_1.reduceFetchStateParallelTimeframes)([
15
+ revenueProjectViewState.fetchState.month,
16
+ revenueProjectViewState.fetchState.quarter,
17
+ revenueProjectViewState.fetchState.year,
18
+ ]);
19
+ const reportId = 'revenue_by_projects';
20
+ const sections = {};
21
+ const calculatedSections = {};
22
+ if (fetchState.fetchState === 'Completed') {
23
+ revenueClassesViewSelectorTypes_1.ALL_REVENUE_CLASSES_VIEW_SECTION_IDS.forEach((sectionId) => {
24
+ sections[`${sectionId}`] = (0, sectionProjectViewSelector_1.getSectionProjectViewReport)(accountState, projectState, sectionsState, revenueProjectViewState.projectIds, {
25
+ reportId,
26
+ sectionId,
27
+ }, filter);
28
+ });
29
+ const grossProfitBalancesByPeriod = (0, getDifferenceOfBalancesGroupedByPeriod_1.getDifferenceOfBalancesGroupedByPeriod)(sections['income'].sectionBalancesTotalByPeriod, sections['cogs'].sectionBalancesTotalByPeriod);
30
+ calculatedSections['grossMargin'] = (0, coaBalance_1.getCOABalances)(grossProfitBalancesByPeriod, filter);
31
+ }
32
+ return {
33
+ sections,
34
+ calculatedSections,
35
+ reportId: revenueProjectViewState.reportId,
36
+ reportTitle: revenueProjectViewState.reportTitle,
37
+ firstMonthOfFY: revenueProjectViewState.firstMonthOfFY,
38
+ dataAvailable: revenueProjectViewState.dataAvailable,
39
+ bookCloseDate: revenueProjectViewState.bookCloseDate,
40
+ version: revenueProjectViewState.version,
41
+ status: revenueProjectViewState.status,
42
+ fetchState: fetchState.fetchState,
43
+ error: fetchState.error,
44
+ filter,
45
+ uiState: revenueProjectViewState.uiState,
46
+ projects: (0, projectSelector_1.getProjectsByIds)(projectState, revenueProjectViewState.projectIds),
47
+ projectsToFilterOut: revenueProjectViewState.uiState.projectsToFilterOut,
48
+ idsInOrder: exports.revenueProjectIdsInOrder,
49
+ };
50
+ };
51
+ exports.getRevenueProjectView = getRevenueProjectView;
52
+ exports.getRevenueProjectViewForSelectedRange = (0, toolkit_1.createSelector)((state) => state.accountState, (state) => state.projectState, (state) => state.sectionProjectViewState, (state) => state.revenueState, (state) => state.revenueProjectViewState, (accountState, projectState, sectionsState, revenueState, revenueProjectViewState) => {
53
+ const { timeframe, selectedCOABalancesRange, selectedAdditionalBalances } = revenueState.uiState;
54
+ const noFilter = (0, coaBalancesFilterProjectView_1.newBalancesFilterProjectView)(revenueState.revenue.firstMonthOfFY, timeframe, selectedCOABalancesRange.numberOfPeriods, selectedCOABalancesRange.thisPeriod, 'ascending_date', selectedAdditionalBalances, revenueProjectViewState.uiState.projectsToFilterOut);
55
+ return (0, exports.getRevenueProjectView)(noFilter, accountState, projectState, sectionsState, revenueProjectViewState);
56
+ });
57
+ exports.getRevenueProjectViewForHighlightedRange = (0, toolkit_1.createSelector)((state) => state.accountState, (state) => state.projectState, (state) => state.sectionProjectViewState, (state) => state.revenueState, (state) => state.revenueProjectViewState, (accountState, projectState, sectionsState, revenueState, revenueProjectViewState) => {
58
+ const { timeframe, highlightedCOABalancesRange, selectedAdditionalBalances, maxNumOfPeriodsToHighlight, } = revenueState.uiState;
59
+ const filter = (0, coaBalancesFilterProjectView_1.newBalancesFilterProjectView)(revenueState.revenue.firstMonthOfFY, timeframe, highlightedCOABalancesRange?.numberOfPeriods ??
60
+ maxNumOfPeriodsToHighlight, highlightedCOABalancesRange?.thisPeriod, 'ascending_date', selectedAdditionalBalances, revenueProjectViewState.uiState.projectsToFilterOut);
61
+ return (0, exports.getRevenueProjectView)(filter, accountState, projectState, sectionsState, revenueProjectViewState);
62
+ });
@@ -0,0 +1,19 @@
1
+ import { COABalancesFilterProjectView } from '../../commonStateTypes/coaBalance/coaBalancesFilterProjectView';
2
+ import { ID } from '../../commonStateTypes/common';
3
+ import { DataAvailable } from '../../commonStateTypes/dataAvailable';
4
+ import { CalculatedSection } from '../../commonStateTypes/selectorTypes/selectorTypes';
5
+ import { SelectorReport } from '../../commonStateTypes/viewAndReport/viewAndReport';
6
+ import { Project } from '../../entity/project/projectState';
7
+ import { SectionProjectViewReport } from '../../entity/sectionProjectView/sectionProjectViewSelectorTypes';
8
+ import { RevenueClassesViewCalculatedSectionID, RevenueClassesViewSectionID } from '../revenueClassesView/revenueClassesViewSelectorTypes';
9
+ import { RevenueProjectViewUIState } from './revenueProjectViewState';
10
+ export interface RevenueProjectViewReport extends SelectorReport {
11
+ calculatedSections: Record<RevenueClassesViewCalculatedSectionID, CalculatedSection>;
12
+ filter: COABalancesFilterProjectView;
13
+ idsInOrder: (RevenueClassesViewSectionID | RevenueClassesViewCalculatedSectionID)[];
14
+ projects: Project[];
15
+ projectsToFilterOut: ID[];
16
+ sections: Record<RevenueClassesViewSectionID, SectionProjectViewReport>;
17
+ uiState: RevenueProjectViewUIState;
18
+ dataAvailable?: DataAvailable;
19
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,20 @@
1
+ import { AccountViewMode, FetchStateAndError, ID } from '../../commonStateTypes/common';
2
+ import { Report } from '../../commonStateTypes/viewAndReport/viewAndReport';
3
+ export interface RevenueProjectViewUIState {
4
+ accountViewMode: AccountViewMode;
5
+ nodeCollapseState: Record<ID, boolean>;
6
+ projectsToFilterOut: ID[];
7
+ scrollPosition: {
8
+ scrollTop: number;
9
+ scrollLeft?: number;
10
+ } | undefined;
11
+ }
12
+ export interface RevenueProjectViewState extends Report {
13
+ fetchState: {
14
+ month: FetchStateAndError;
15
+ quarter: FetchStateAndError;
16
+ year: FetchStateAndError;
17
+ };
18
+ projectIds: ID[];
19
+ uiState: RevenueProjectViewUIState;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,6 @@
1
1
  import { RootState } from '../../reducer';
2
2
  export declare const getTasksCardReport: (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" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "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" | "transfer_accounts" | "credit_card_transfer_accounts";
3
+ reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "operating_expenses_by_projects" | "revenue" | "revenue_by_classes" | "revenue_by_projects" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "net_burn_or_income_by_projects" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "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" | "transfer_accounts" | "credit_card_transfer_accounts";
4
4
  reportTitle: string;
5
5
  version: string | number | undefined;
6
6
  status: import("../..").Status | undefined;
@@ -4,7 +4,7 @@ import { RootState } from '../../reducer';
4
4
  import { TopExReport, TopExTimePeriodWithMetaData } from './topExSelectorTypes';
5
5
  import { TopExState } from './topExState';
6
6
  export declare const getTopExpenses: (accountState: AccountState, topExState: TopExState, numberOfExpenses?: number) => {
7
- 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" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "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" | "transfer_accounts" | "credit_card_transfer_accounts";
7
+ reportId: "cash_balance" | "card_balance" | "expense_automation_card" | "operating_expenses" | "operating_expenses_by_classes" | "operating_expenses_by_projects" | "revenue" | "revenue_by_classes" | "revenue_by_projects" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "net_burn_or_income_by_projects" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "profit_and_loss_by_projects" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_list_of_account_by_project" | "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" | "transfer_accounts" | "credit_card_transfer_accounts";
8
8
  reportTitle: string;
9
9
  version: string | number | undefined;
10
10
  status: import("../..").Status | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.1.79",
3
+ "version": "5.1.81",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",