@zeniai/client-epic-state 5.1.80 → 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 (203) 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/invoicing/invoicingCommonPayload.d.ts +42 -0
  11. package/lib/entity/invoicing/invoicingCommonPayload.js +66 -1
  12. package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
  13. package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
  14. package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
  15. package/lib/entity/sectionProjectView/sectionProjectView.d.ts +1 -1
  16. package/lib/entity/sectionProjectView/sectionProjectViewReducer.d.ts +2 -2
  17. package/lib/entity/tenant/clearAllEpic.d.ts +5 -1
  18. package/lib/entity/tenant/clearAllEpic.js +8 -0
  19. package/lib/epic.d.ts +9 -1
  20. package/lib/epic.js +14 -1
  21. package/lib/esm/commonStateTypes/viewAndReport/reportIDHelper.js +11 -0
  22. package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +3 -0
  23. package/lib/esm/entity/invoicing/invoicingCommonPayload.js +61 -0
  24. package/lib/esm/entity/tenant/clearAllEpic.js +8 -0
  25. package/lib/esm/epic.js +14 -1
  26. package/lib/esm/index.js +18 -3
  27. package/lib/esm/reducer.js +12 -0
  28. package/lib/esm/view/dashboard/dashboardSelector.js +14 -10
  29. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +4 -18
  30. package/lib/esm/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +6 -1
  31. package/lib/esm/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
  32. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +4 -5
  33. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +10 -11
  34. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +8 -10
  35. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
  36. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +1 -1
  37. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +1 -1
  38. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +43 -1
  39. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +2 -5
  40. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -2
  41. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +7 -1
  42. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
  43. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +25 -0
  44. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +15 -0
  45. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +15 -0
  46. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +15 -0
  47. package/lib/esm/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +1 -0
  48. package/lib/esm/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +26 -0
  49. package/lib/esm/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +18 -0
  50. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +47 -0
  51. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +128 -0
  52. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +20 -0
  53. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewState.js +1 -0
  54. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
  55. package/lib/esm/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -1
  56. package/lib/esm/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
  57. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeForTimeframeProjectViewEpic.js +45 -0
  58. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewEpic.js +30 -0
  59. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewPayload.js +1 -0
  60. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewReducer.js +111 -0
  61. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelector.js +65 -0
  62. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelectorTypes.js +1 -0
  63. package/lib/esm/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewState.js +1 -0
  64. package/lib/esm/view/opExProjectView/opExForTimeframeProjectViewEpic.js +43 -0
  65. package/lib/esm/view/opExProjectView/opExProjectViewEpic.js +30 -0
  66. package/lib/esm/view/opExProjectView/opExProjectViewPayload.js +1 -0
  67. package/lib/esm/view/opExProjectView/opExProjectViewReducer.js +111 -0
  68. package/lib/esm/view/opExProjectView/opExProjectViewSelector.js +52 -0
  69. package/lib/esm/view/opExProjectView/opExProjectViewSelectorTypes.js +1 -0
  70. package/lib/esm/view/opExProjectView/opExProjectViewState.js +1 -0
  71. package/lib/esm/view/reportsResync/reportsClassViewRefetchingEpic.js +0 -4
  72. package/lib/esm/view/reportsResync/reportsProjectViewRefetchingEpic.js +30 -0
  73. package/lib/esm/view/reportsResync/reportsResyncEpic.js +11 -3
  74. package/lib/esm/view/reportsResync/reportsResyncReducer.js +9 -1
  75. package/lib/esm/view/revenueProjectView/revenueForTimeframeProjectViewEpic.js +35 -0
  76. package/lib/esm/view/revenueProjectView/revenueProjectViewEpic.js +30 -0
  77. package/lib/esm/view/revenueProjectView/revenueProjectViewPayload.js +1 -0
  78. package/lib/esm/view/revenueProjectView/revenueProjectViewReducer.js +111 -0
  79. package/lib/esm/view/revenueProjectView/revenueProjectViewSelector.js +58 -0
  80. package/lib/esm/view/revenueProjectView/revenueProjectViewSelectorTypes.js +1 -0
  81. package/lib/esm/view/revenueProjectView/revenueProjectViewState.js +1 -0
  82. package/lib/index.d.ts +26 -3
  83. package/lib/index.js +106 -50
  84. package/lib/reducer.d.ts +12 -0
  85. package/lib/reducer.js +12 -0
  86. package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
  87. package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
  88. package/lib/view/cardBalance/cardBalanceSelector.d.ts +1 -1
  89. package/lib/view/cashBalance/cashBalanceSelector.d.ts +1 -1
  90. package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
  91. package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
  92. package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
  93. package/lib/view/dashboard/dashboardSelector.d.ts +2 -3
  94. package/lib/view/dashboard/dashboardSelector.js +13 -9
  95. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +3 -17
  96. package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
  97. package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
  98. package/lib/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +6 -1
  99. package/lib/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
  100. package/lib/view/invoicing/createCreditNote/createCreditNoteState.d.ts +3 -1
  101. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.d.ts +2 -1
  102. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +4 -5
  103. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +10 -11
  104. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState.d.ts +10 -5
  105. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +8 -10
  106. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
  107. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +3 -3
  108. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +2 -2
  109. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.d.ts +9 -2
  110. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +45 -0
  111. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +2 -5
  112. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewState.d.ts +3 -1
  113. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -2
  114. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +4 -1
  115. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
  116. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +6 -0
  117. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.d.ts +4 -1
  118. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
  119. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +4 -1
  120. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.d.ts +6 -0
  121. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +29 -0
  122. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.d.ts +6 -0
  123. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +19 -0
  124. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.d.ts +6 -0
  125. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +19 -0
  126. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.d.ts +6 -0
  127. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +19 -0
  128. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.d.ts +2 -0
  129. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +2 -0
  130. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.d.ts +6 -0
  131. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +30 -0
  132. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.d.ts +6 -0
  133. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +22 -0
  134. package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.d.ts +79 -0
  135. package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +52 -0
  136. package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.d.ts +25 -0
  137. package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +132 -0
  138. package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.d.ts +21 -0
  139. package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +24 -0
  140. package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.d.ts +14 -0
  141. package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.js +2 -0
  142. package/lib/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
  143. package/lib/view/invoicing/issueCreditNote/issueCreditNoteState.d.ts +3 -2
  144. package/lib/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -1
  145. package/lib/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
  146. package/lib/view/invoicing/recordPayment/recordPaymentState.d.ts +4 -2
  147. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeForTimeframeProjectViewEpic.d.ts +9 -0
  148. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeForTimeframeProjectViewEpic.js +49 -0
  149. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewEpic.d.ts +6 -0
  150. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewEpic.js +34 -0
  151. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewPayload.d.ts +11 -0
  152. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewPayload.js +2 -0
  153. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewReducer.d.ts +33 -0
  154. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewReducer.js +115 -0
  155. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelector.d.ts +13 -0
  156. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelector.js +69 -0
  157. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelectorTypes.d.ts +21 -0
  158. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewSelectorTypes.js +2 -0
  159. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewState.d.ts +20 -0
  160. package/lib/view/netBurnOrIncomeProjectView/netBurnOrIncomeProjectViewState.js +2 -0
  161. package/lib/view/opExProjectView/opExForTimeframeProjectViewEpic.d.ts +9 -0
  162. package/lib/view/opExProjectView/opExForTimeframeProjectViewEpic.js +47 -0
  163. package/lib/view/opExProjectView/opExProjectViewEpic.d.ts +6 -0
  164. package/lib/view/opExProjectView/opExProjectViewEpic.js +34 -0
  165. package/lib/view/opExProjectView/opExProjectViewPayload.d.ts +6 -0
  166. package/lib/view/opExProjectView/opExProjectViewPayload.js +2 -0
  167. package/lib/view/opExProjectView/opExProjectViewReducer.d.ts +33 -0
  168. package/lib/view/opExProjectView/opExProjectViewReducer.js +115 -0
  169. package/lib/view/opExProjectView/opExProjectViewSelector.d.ts +12 -0
  170. package/lib/view/opExProjectView/opExProjectViewSelector.js +56 -0
  171. package/lib/view/opExProjectView/opExProjectViewSelectorTypes.d.ts +19 -0
  172. package/lib/view/opExProjectView/opExProjectViewSelectorTypes.js +2 -0
  173. package/lib/view/opExProjectView/opExProjectViewState.d.ts +20 -0
  174. package/lib/view/opExProjectView/opExProjectViewState.js +2 -0
  175. package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
  176. package/lib/view/reportsResync/reportsClassViewRefetchingEpic.d.ts +1 -2
  177. package/lib/view/reportsResync/reportsClassViewRefetchingEpic.js +0 -4
  178. package/lib/view/reportsResync/reportsProjectViewRefetchingEpic.d.ts +10 -0
  179. package/lib/view/reportsResync/reportsProjectViewRefetchingEpic.js +34 -0
  180. package/lib/view/reportsResync/reportsResyncEpic.d.ts +2 -2
  181. package/lib/view/reportsResync/reportsResyncEpic.js +10 -2
  182. package/lib/view/reportsResync/reportsResyncReducer.d.ts +5 -3
  183. package/lib/view/reportsResync/reportsResyncReducer.js +10 -2
  184. package/lib/view/revenueProjectView/revenueForTimeframeProjectViewEpic.d.ts +9 -0
  185. package/lib/view/revenueProjectView/revenueForTimeframeProjectViewEpic.js +39 -0
  186. package/lib/view/revenueProjectView/revenueProjectViewEpic.d.ts +6 -0
  187. package/lib/view/revenueProjectView/revenueProjectViewEpic.js +34 -0
  188. package/lib/view/revenueProjectView/revenueProjectViewPayload.d.ts +9 -0
  189. package/lib/view/revenueProjectView/revenueProjectViewPayload.js +2 -0
  190. package/lib/view/revenueProjectView/revenueProjectViewReducer.d.ts +33 -0
  191. package/lib/view/revenueProjectView/revenueProjectViewReducer.js +115 -0
  192. package/lib/view/revenueProjectView/revenueProjectViewSelector.d.ts +12 -0
  193. package/lib/view/revenueProjectView/revenueProjectViewSelector.js +62 -0
  194. package/lib/view/revenueProjectView/revenueProjectViewSelectorTypes.d.ts +19 -0
  195. package/lib/view/revenueProjectView/revenueProjectViewSelectorTypes.js +2 -0
  196. package/lib/view/revenueProjectView/revenueProjectViewState.d.ts +20 -0
  197. package/lib/view/revenueProjectView/revenueProjectViewState.js +2 -0
  198. package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
  199. package/lib/view/topEx/topExSelector.d.ts +1 -1
  200. package/package.json +1 -1
  201. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -44
  202. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.d.ts +0 -5
  203. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -48
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchNetBurnOrIncomeProjectViewEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const netBurnOrIncomeProjectViewReducer_1 = require("./netBurnOrIncomeProjectViewReducer");
7
+ const fetchNetBurnOrIncomeProjectViewEpic = (actions$, state) => actions$.pipe((0, operators_1.filter)(netBurnOrIncomeProjectViewReducer_1.fetchNetBurnOrIncomeProjectView.match), (0, operators_1.switchMap)((action) => {
8
+ const { cacheOverride } = action.payload;
9
+ if (cacheOverride === true) {
10
+ return (0, rxjs_1.from)([
11
+ (0, netBurnOrIncomeProjectViewReducer_1.fetchNetBurnOrIncomeForTimeframeProjectView)('month'),
12
+ (0, netBurnOrIncomeProjectViewReducer_1.fetchNetBurnOrIncomeForTimeframeProjectView)('quarter'),
13
+ (0, netBurnOrIncomeProjectViewReducer_1.fetchNetBurnOrIncomeForTimeframeProjectView)('year'),
14
+ ]);
15
+ }
16
+ else {
17
+ const fetchActions = [];
18
+ const projectFetchState = state.value.netBurnOrIncomeProjectViewState.fetchState;
19
+ if (projectFetchState['month'].fetchState !== 'In-Progress' &&
20
+ projectFetchState['month'].fetchState !== 'Completed') {
21
+ fetchActions.push((0, netBurnOrIncomeProjectViewReducer_1.fetchNetBurnOrIncomeForTimeframeProjectView)('month'));
22
+ }
23
+ if (projectFetchState['quarter'].fetchState !== 'In-Progress' &&
24
+ projectFetchState['quarter'].fetchState !== 'Completed') {
25
+ fetchActions.push((0, netBurnOrIncomeProjectViewReducer_1.fetchNetBurnOrIncomeForTimeframeProjectView)('quarter'));
26
+ }
27
+ if (projectFetchState['year'].fetchState !== 'In-Progress' &&
28
+ projectFetchState['year'].fetchState !== 'Completed') {
29
+ fetchActions.push((0, netBurnOrIncomeProjectViewReducer_1.fetchNetBurnOrIncomeForTimeframeProjectView)('year'));
30
+ }
31
+ return (0, rxjs_1.from)(fetchActions);
32
+ }
33
+ }));
34
+ exports.fetchNetBurnOrIncomeProjectViewEpic = fetchNetBurnOrIncomeProjectViewEpic;
@@ -0,0 +1,11 @@
1
+ import { COABalanceGroupedPayloadV2 } from '../../commonPayloadTypes/v2/coaBalancePayload';
2
+ import { ZeniReportResponse } from '../../responsePayload';
3
+ import { ReportByProjectMetadataPayloadV2, SectionByProjectCOABalanceGroupedPayloadV2 } from '../profitAndLossProjectView/profitAndLossProjectViewPayload';
4
+ export interface NetBurnOrIncomeProjectViewPayload extends ReportByProjectMetadataPayloadV2 {
5
+ cogs: SectionByProjectCOABalanceGroupedPayloadV2;
6
+ expenses: SectionByProjectCOABalanceGroupedPayloadV2;
7
+ gross_burn: COABalanceGroupedPayloadV2;
8
+ income: SectionByProjectCOABalanceGroupedPayloadV2;
9
+ net_burn_or_income: COABalanceGroupedPayloadV2;
10
+ }
11
+ export type NetBurnOrIncomeReportProjectViewResponse = ZeniReportResponse<NetBurnOrIncomeProjectViewPayload>;
@@ -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 { NetBurnOrIncomeProjectViewPayload } from './netBurnOrIncomeProjectViewPayload';
4
+ import { NetBurnOrIncomeProjectViewState } from './netBurnOrIncomeProjectViewState';
5
+ export declare const initialState: NetBurnOrIncomeProjectViewState;
6
+ export declare const fetchNetBurnOrIncomeProjectView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride?: boolean | undefined], {
7
+ cacheOverride: boolean;
8
+ }, "netBurnOrIncomeProjectView/fetchNetBurnOrIncomeProjectView", never, never>, fetchNetBurnOrIncomeForTimeframeProjectView: 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
+ }, "netBurnOrIncomeProjectView/fetchNetBurnOrIncomeForTimeframeProjectView", never, never>, updateNetBurnOrIncomeForTimeframeProjectView: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
13
+ report: ZeniReportData<NetBurnOrIncomeProjectViewPayload>;
14
+ timeframe: "month" | "quarter" | "year";
15
+ }, "netBurnOrIncomeProjectView/updateNetBurnOrIncomeForTimeframeProjectView">, updateNetBurnOrIncomeForTimeframeProjectViewFailure: 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
+ }, "netBurnOrIncomeProjectView/updateNetBurnOrIncomeForTimeframeProjectViewFailure", never, never>, updateProjectsToFilterOut: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
19
+ projectsToFilterOut: ID[];
20
+ }, "netBurnOrIncomeProjectView/updateProjectsToFilterOut">, updateNetBurnOrIncomeProjectViewUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
21
+ nodeCollapseState?: {
22
+ isCollapsed: boolean;
23
+ nodeId: ID;
24
+ };
25
+ scrollPosition?: {
26
+ scrollTop: number;
27
+ scrollLeft?: number;
28
+ };
29
+ }, "netBurnOrIncomeProjectView/updateNetBurnOrIncomeProjectViewUIState">, updateProjectViewAccountViewMode: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
30
+ viewMode: AccountViewMode;
31
+ }, "netBurnOrIncomeProjectView/updateProjectViewAccountViewMode">, resetProjectNodeCollapseState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"netBurnOrIncomeProjectView/resetProjectNodeCollapseState">, clearNetBurnOrIncomeProjectView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"netBurnOrIncomeProjectView/clearNetBurnOrIncomeProjectView">;
32
+ declare const _default: import("redux").Reducer<NetBurnOrIncomeProjectViewState>;
33
+ export default _default;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.clearNetBurnOrIncomeProjectView = exports.resetProjectNodeCollapseState = exports.updateProjectViewAccountViewMode = exports.updateNetBurnOrIncomeProjectViewUIState = exports.updateProjectsToFilterOut = exports.updateNetBurnOrIncomeForTimeframeProjectViewFailure = exports.updateNetBurnOrIncomeForTimeframeProjectView = exports.fetchNetBurnOrIncomeForTimeframeProjectView = exports.fetchNetBurnOrIncomeProjectView = 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: 'net_burn_or_income_by_projects',
25
+ reportTitle: 'Net Income',
26
+ uiState: {
27
+ accountViewMode: 'account_group',
28
+ nodeCollapseState: {},
29
+ projectsToFilterOut: [],
30
+ scrollPosition: undefined,
31
+ },
32
+ };
33
+ const netBurnOrIncomeProjectView = (0, toolkit_1.createSlice)({
34
+ name: 'netBurnOrIncomeProjectView',
35
+ initialState: exports.initialState,
36
+ reducers: {
37
+ fetchNetBurnOrIncomeProjectView: {
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
+ fetchNetBurnOrIncomeForTimeframeProjectView: {
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
+ updateNetBurnOrIncomeForTimeframeProjectView(draft, action) {
60
+ doUpdateNetBurnOrIncomeProjectView(draft, action.payload.timeframe, action.payload.report);
61
+ },
62
+ updateNetBurnOrIncomeForTimeframeProjectViewFailure: {
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
+ updateNetBurnOrIncomeProjectViewUIState(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
+ clearNetBurnOrIncomeProjectView(draft) {
99
+ Object.assign(draft, exports.initialState);
100
+ },
101
+ },
102
+ });
103
+ _a = netBurnOrIncomeProjectView.actions, exports.fetchNetBurnOrIncomeProjectView = _a.fetchNetBurnOrIncomeProjectView, exports.fetchNetBurnOrIncomeForTimeframeProjectView = _a.fetchNetBurnOrIncomeForTimeframeProjectView, exports.updateNetBurnOrIncomeForTimeframeProjectView = _a.updateNetBurnOrIncomeForTimeframeProjectView, exports.updateNetBurnOrIncomeForTimeframeProjectViewFailure = _a.updateNetBurnOrIncomeForTimeframeProjectViewFailure, exports.updateProjectsToFilterOut = _a.updateProjectsToFilterOut, exports.updateNetBurnOrIncomeProjectViewUIState = _a.updateNetBurnOrIncomeProjectViewUIState, exports.updateProjectViewAccountViewMode = _a.updateProjectViewAccountViewMode, exports.resetProjectNodeCollapseState = _a.resetProjectNodeCollapseState, exports.clearNetBurnOrIncomeProjectView = _a.clearNetBurnOrIncomeProjectView;
104
+ exports.default = netBurnOrIncomeProjectView.reducer;
105
+ const doUpdateNetBurnOrIncomeProjectView = (draft, timeframe, netBurnReport) => {
106
+ const report = (0, viewAndReportPayloadv2_1.mapReportPayloadV2ToReportV2)(netBurnReport.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 = netBurnReport.report.projects.map((project) => project.accounting_project_id);
114
+ }
115
+ };
@@ -0,0 +1,13 @@
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 { NetBurnOrIncomeWithForecastState } from '../netBurnOrIncome/netBurnOrIncomeState';
7
+ import { NetBurnOrIncomeClassesViewCalculatedSectionID, NetBurnOrIncomeClassesViewSectionID } from '../netBurnOrIncomeClassesView/netBurnOrIncomeClassesViewSelectorTypes';
8
+ import { NetBurnOrIncomeProjectViewReport } from './netBurnOrIncomeProjectViewSelectorTypes';
9
+ import { NetBurnOrIncomeProjectViewState } from './netBurnOrIncomeProjectViewState';
10
+ export declare const netBurnOrIncomeProjectIdsInOrder: (NetBurnOrIncomeClassesViewSectionID | NetBurnOrIncomeClassesViewCalculatedSectionID)[];
11
+ export declare const getNetBurnOrIncomeProjectView: (filter: COABalancesFilterProjectView, accountState: AccountState, projectState: ProjectState, sectionsState: SectionProjectViewState, netBurnOrIncomeWithForecastState: NetBurnOrIncomeWithForecastState, netBurnOrIncomeProjectViewState: NetBurnOrIncomeProjectViewState) => NetBurnOrIncomeProjectViewReport;
12
+ export declare const getNetBurnOrIncomeProjectViewForSelectedRange: (state: RootState) => NetBurnOrIncomeProjectViewReport;
13
+ export declare const getNetBurnOrIncomeProjectViewForHighlightedRange: (state: RootState) => NetBurnOrIncomeProjectViewReport;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNetBurnOrIncomeProjectViewForHighlightedRange = exports.getNetBurnOrIncomeProjectViewForSelectedRange = exports.getNetBurnOrIncomeProjectView = exports.netBurnOrIncomeProjectIdsInOrder = void 0;
4
+ const toolkit_1 = require("@reduxjs/toolkit");
5
+ const getDifferenceOfBalancesGroupedByPeriod_1 = require("../../commonStateTypes/coaBalance/classBalances/getDifferenceOfBalancesGroupedByPeriod");
6
+ const getSumOfBalancesGroupedByPeriod_1 = require("../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod");
7
+ const coaBalance_1 = require("../../commonStateTypes/coaBalance/coaBalance");
8
+ const coaBalancesFilterProjectView_1 = require("../../commonStateTypes/coaBalance/coaBalancesFilterProjectView");
9
+ const reduceFetchState_1 = require("../../commonStateTypes/reduceFetchState");
10
+ const projectSelector_1 = require("../../entity/project/projectSelector");
11
+ const sectionProjectViewSelector_1 = require("../../entity/sectionProjectView/sectionProjectViewSelector");
12
+ const netBurnOrIncomeClassesViewSelectorTypes_1 = require("../netBurnOrIncomeClassesView/netBurnOrIncomeClassesViewSelectorTypes");
13
+ exports.netBurnOrIncomeProjectIdsInOrder = ['income', 'cogs', 'expenses', 'grossBurn', 'netBurnOrIncome'];
14
+ const getNetBurnOrIncomeProjectView = (filter, accountState, projectState, sectionsState, netBurnOrIncomeWithForecastState, netBurnOrIncomeProjectViewState) => {
15
+ const fetchState = (0, reduceFetchState_1.reduceFetchStateParallelTimeframes)([
16
+ netBurnOrIncomeProjectViewState.fetchState.month,
17
+ netBurnOrIncomeProjectViewState.fetchState.quarter,
18
+ netBurnOrIncomeProjectViewState.fetchState.year,
19
+ ]);
20
+ const reportId = 'net_burn_or_income_by_projects';
21
+ const sections = {};
22
+ const calculatedSections = {};
23
+ if (fetchState.fetchState === 'Completed') {
24
+ netBurnOrIncomeClassesViewSelectorTypes_1.ALL_NETBURN_OR_INCOME_CLASSES_VIEW_SECTION_IDS.forEach((sectionId) => {
25
+ sections[`${sectionId}`] = (0, sectionProjectViewSelector_1.getSectionProjectViewReport)(accountState, projectState, sectionsState, netBurnOrIncomeProjectViewState.projectIds, {
26
+ reportId,
27
+ sectionId,
28
+ }, filter);
29
+ });
30
+ const grossBurnBalancesByPeriod = (0, getSumOfBalancesGroupedByPeriod_1.getSumOfBalancesByGroupedByPeriod)([
31
+ sections['expenses'].sectionBalancesTotalByPeriod,
32
+ sections['cogs'].sectionBalancesTotalByPeriod,
33
+ ]);
34
+ calculatedSections['grossBurn'] = (0, coaBalance_1.getCOABalances)(grossBurnBalancesByPeriod, filter);
35
+ const netBurnOrIncomeBalances = (0, getDifferenceOfBalancesGroupedByPeriod_1.getDifferenceOfBalancesGroupedByPeriod)(sections['income'].sectionBalancesTotalByPeriod, grossBurnBalancesByPeriod);
36
+ calculatedSections['netBurnOrIncome'] = (0, coaBalance_1.getCOABalances)(netBurnOrIncomeBalances, filter);
37
+ }
38
+ return {
39
+ sections,
40
+ calculatedSections,
41
+ reportId: netBurnOrIncomeProjectViewState.reportId,
42
+ reportTitle: netBurnOrIncomeProjectViewState.reportTitle,
43
+ firstMonthOfFY: netBurnOrIncomeProjectViewState.firstMonthOfFY,
44
+ dataAvailable: netBurnOrIncomeProjectViewState.dataAvailable,
45
+ bookCloseDate: netBurnOrIncomeProjectViewState.bookCloseDate,
46
+ version: netBurnOrIncomeProjectViewState.version,
47
+ status: netBurnOrIncomeProjectViewState.status,
48
+ fetchState: fetchState.fetchState,
49
+ error: fetchState.error,
50
+ filter,
51
+ uiState: netBurnOrIncomeProjectViewState.uiState,
52
+ projects: (0, projectSelector_1.getProjectsByIds)(projectState, netBurnOrIncomeProjectViewState.projectIds),
53
+ projectsToFilterOut: netBurnOrIncomeProjectViewState.uiState.projectsToFilterOut,
54
+ idsInOrder: exports.netBurnOrIncomeProjectIdsInOrder,
55
+ runwayAndAverages: netBurnOrIncomeWithForecastState.netBurnOrIncome.runwayAndAverages,
56
+ };
57
+ };
58
+ exports.getNetBurnOrIncomeProjectView = getNetBurnOrIncomeProjectView;
59
+ exports.getNetBurnOrIncomeProjectViewForSelectedRange = (0, toolkit_1.createSelector)((state) => state.accountState, (state) => state.projectState, (state) => state.sectionProjectViewState, (state) => state.netBurnOrIncomeState, (state) => state.netBurnOrIncomeProjectViewState, (accountState, projectState, sectionsState, netBurnOrIncomeState, netBurnOrIncomeProjectViewState) => {
60
+ const { timeframe, selectedCOABalancesRange, selectedAdditionalBalances } = netBurnOrIncomeState.uiState;
61
+ const noFilter = (0, coaBalancesFilterProjectView_1.newBalancesFilterProjectView)(netBurnOrIncomeState.netBurnOrIncome.firstMonthOfFY, timeframe, selectedCOABalancesRange.numberOfPeriods, selectedCOABalancesRange.thisPeriod, 'ascending_date', selectedAdditionalBalances, netBurnOrIncomeProjectViewState.uiState.projectsToFilterOut);
62
+ return (0, exports.getNetBurnOrIncomeProjectView)(noFilter, accountState, projectState, sectionsState, netBurnOrIncomeState, netBurnOrIncomeProjectViewState);
63
+ });
64
+ exports.getNetBurnOrIncomeProjectViewForHighlightedRange = (0, toolkit_1.createSelector)((state) => state.accountState, (state) => state.projectState, (state) => state.sectionProjectViewState, (state) => state.netBurnOrIncomeState, (state) => state.netBurnOrIncomeProjectViewState, (accountState, projectState, sectionsState, netBurnOrIncomeState, netBurnOrIncomeProjectViewState) => {
65
+ const { timeframe, highlightedCOABalancesRange, selectedAdditionalBalances, maxNumOfPeriodsToHighlight, } = netBurnOrIncomeState.uiState;
66
+ const filter = (0, coaBalancesFilterProjectView_1.newBalancesFilterProjectView)(netBurnOrIncomeState.netBurnOrIncome.firstMonthOfFY, timeframe, highlightedCOABalancesRange?.numberOfPeriods ??
67
+ maxNumOfPeriodsToHighlight, highlightedCOABalancesRange?.thisPeriod, 'ascending_date', selectedAdditionalBalances, netBurnOrIncomeProjectViewState.uiState.projectsToFilterOut);
68
+ return (0, exports.getNetBurnOrIncomeProjectView)(filter, accountState, projectState, sectionsState, netBurnOrIncomeState, netBurnOrIncomeProjectViewState);
69
+ });
@@ -0,0 +1,21 @@
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 { RunwayAndAverages } from '../netBurnOrIncome/netBurnOrIncomeState';
9
+ import { NetBurnOrIncomeClassesViewCalculatedSectionID, NetBurnOrIncomeClassesViewSectionID } from '../netBurnOrIncomeClassesView/netBurnOrIncomeClassesViewSelectorTypes';
10
+ import { NetBurnOrIncomeProjectViewUIState } from './netBurnOrIncomeProjectViewState';
11
+ export interface NetBurnOrIncomeProjectViewReport extends SelectorReport {
12
+ calculatedSections: Record<NetBurnOrIncomeClassesViewCalculatedSectionID, CalculatedSection>;
13
+ filter: COABalancesFilterProjectView;
14
+ idsInOrder: (NetBurnOrIncomeClassesViewSectionID | NetBurnOrIncomeClassesViewCalculatedSectionID)[];
15
+ projects: Project[];
16
+ projectsToFilterOut: ID[];
17
+ runwayAndAverages: RunwayAndAverages;
18
+ sections: Record<NetBurnOrIncomeClassesViewSectionID, SectionProjectViewReport>;
19
+ uiState: NetBurnOrIncomeProjectViewUIState;
20
+ dataAvailable?: DataAvailable;
21
+ }
@@ -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 NetBurnOrIncomeProjectViewUIState {
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 NetBurnOrIncomeProjectViewState extends Report {
13
+ fetchState: {
14
+ month: FetchStateAndError;
15
+ quarter: FetchStateAndError;
16
+ year: FetchStateAndError;
17
+ };
18
+ projectIds: ID[];
19
+ uiState: NetBurnOrIncomeProjectViewUIState;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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 { fetchOpExForTimeframeProjectView, updateOpExForTimeframeProjectView, updateOpExForTimeframeProjectViewFailure } from './opExProjectViewReducer';
8
+ export type ActionType = ReturnType<typeof fetchOpExForTimeframeProjectView> | ReturnType<typeof updateOpExForTimeframeProjectView> | ReturnType<typeof updateOpExForTimeframeProjectViewFailure> | ReturnType<typeof updateProjects> | ReturnType<typeof updateSectionProjectView>;
9
+ export declare const fetchOpExForTimeframeProjectViewEpic: (actions$: ActionsObservable<ActionType>, _: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchOpExForTimeframeProjectViewEpic = 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 opExProjectViewReducer_1 = require("./opExProjectViewReducer");
10
+ const fetchOpExForTimeframeProjectViewEpic = (actions$, _, zeniAPI) => actions$.pipe((0, operators_1.filter)(opExProjectViewReducer_1.fetchOpExForTimeframeProjectView.match), (0, operators_1.mergeMap)((action) => {
11
+ const getTimeSeriesGroup = (timeframe) => {
12
+ switch (timeframe) {
13
+ case 'month':
14
+ return 'months';
15
+ case 'quarter':
16
+ return 'quarters';
17
+ case 'year':
18
+ return 'years';
19
+ }
20
+ };
21
+ const queryValue = {
22
+ is_full_response: action.payload.fetchFullReport,
23
+ time_series_groups: [getTimeSeriesGroup(action.payload.timeframe)],
24
+ is_group_by_project: true,
25
+ };
26
+ return zeniAPI
27
+ .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/2.0/reports/operating_expenses?query=${encodeURIComponent(JSON.stringify(queryValue))}`)
28
+ .pipe((0, operators_1.mergeMap)((response) => {
29
+ if (response.data != null && (0, responsePayload_1.isSuccessResponse)(response)) {
30
+ const actions = [];
31
+ const report = response.data.report;
32
+ const currency = report.currency;
33
+ actions.push((0, projectReducer_1.updateProjects)(report.projects));
34
+ actions.push((0, sectionProjectViewReducer_1.updateSectionProjectView)(action.payload.timeframe, 'expenses', 'operating_expenses_by_projects', report.expenses, report.accounts, currency));
35
+ actions.push((0, opExProjectViewReducer_1.updateOpExForTimeframeProjectView)({
36
+ timeframe: action.payload.timeframe,
37
+ report: response.data,
38
+ }));
39
+ return (0, rxjs_1.from)(actions);
40
+ }
41
+ else {
42
+ return (0, rxjs_1.of)((0, opExProjectViewReducer_1.updateOpExForTimeframeProjectViewFailure)(response.status, action.payload.timeframe));
43
+ }
44
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, opExProjectViewReducer_1.updateOpExForTimeframeProjectViewFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'OpEx by Projects REST API call errored out' +
45
+ (error instanceof Error ? error.message : String(error))), action.payload.timeframe))));
46
+ }));
47
+ exports.fetchOpExForTimeframeProjectViewEpic = fetchOpExForTimeframeProjectViewEpic;
@@ -0,0 +1,6 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../reducer';
4
+ import { fetchOpExForTimeframeProjectView, fetchOpExProjectView } from './opExProjectViewReducer';
5
+ export type ActionType = ReturnType<typeof fetchOpExProjectView> | ReturnType<typeof fetchOpExForTimeframeProjectView>;
6
+ export declare const fetchOpExProjectViewEpic: (actions$: ActionsObservable<ActionType>, state: StateObservable<RootState>) => Observable<ActionType>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchOpExProjectViewEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const opExProjectViewReducer_1 = require("./opExProjectViewReducer");
7
+ const fetchOpExProjectViewEpic = (actions$, state) => actions$.pipe((0, operators_1.filter)(opExProjectViewReducer_1.fetchOpExProjectView.match), (0, operators_1.switchMap)((action) => {
8
+ const { cacheOverride } = action.payload;
9
+ if (cacheOverride === true) {
10
+ return (0, rxjs_1.from)([
11
+ (0, opExProjectViewReducer_1.fetchOpExForTimeframeProjectView)('month'),
12
+ (0, opExProjectViewReducer_1.fetchOpExForTimeframeProjectView)('quarter'),
13
+ (0, opExProjectViewReducer_1.fetchOpExForTimeframeProjectView)('year'),
14
+ ]);
15
+ }
16
+ else {
17
+ const fetchActions = [];
18
+ const projectFetchState = state.value.opExProjectViewState.fetchState;
19
+ if (projectFetchState['month'].fetchState !== 'In-Progress' &&
20
+ projectFetchState['month'].fetchState !== 'Completed') {
21
+ fetchActions.push((0, opExProjectViewReducer_1.fetchOpExForTimeframeProjectView)('month'));
22
+ }
23
+ if (projectFetchState['quarter'].fetchState !== 'In-Progress' &&
24
+ projectFetchState['quarter'].fetchState !== 'Completed') {
25
+ fetchActions.push((0, opExProjectViewReducer_1.fetchOpExForTimeframeProjectView)('quarter'));
26
+ }
27
+ if (projectFetchState['year'].fetchState !== 'In-Progress' &&
28
+ projectFetchState['year'].fetchState !== 'Completed') {
29
+ fetchActions.push((0, opExProjectViewReducer_1.fetchOpExForTimeframeProjectView)('year'));
30
+ }
31
+ return (0, rxjs_1.from)(fetchActions);
32
+ }
33
+ }));
34
+ exports.fetchOpExProjectViewEpic = fetchOpExProjectViewEpic;
@@ -0,0 +1,6 @@
1
+ import { ZeniReportResponse } from '../../responsePayload';
2
+ import { ReportByProjectMetadataPayloadV2, SectionByProjectCOABalanceGroupedPayloadV2 } from '../profitAndLossProjectView/profitAndLossProjectViewPayload';
3
+ export interface OpExProjectViewPayload extends ReportByProjectMetadataPayloadV2 {
4
+ expenses: SectionByProjectCOABalanceGroupedPayloadV2;
5
+ }
6
+ export type OpExReportProjectViewResponse = ZeniReportResponse<OpExProjectViewPayload>;
@@ -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 { OpExProjectViewPayload } from './opExProjectViewPayload';
4
+ import { OpExProjectViewState } from './opExProjectViewState';
5
+ export declare const initialState: OpExProjectViewState;
6
+ export declare const fetchOpExProjectView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride?: boolean | undefined], {
7
+ cacheOverride: boolean;
8
+ }, "opExProjectView/fetchOpExProjectView", never, never>, fetchOpExForTimeframeProjectView: 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
+ }, "opExProjectView/fetchOpExForTimeframeProjectView", never, never>, updateOpExForTimeframeProjectView: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
13
+ report: ZeniReportData<OpExProjectViewPayload>;
14
+ timeframe: "month" | "quarter" | "year";
15
+ }, "opExProjectView/updateOpExForTimeframeProjectView">, updateOpExForTimeframeProjectViewFailure: 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
+ }, "opExProjectView/updateOpExForTimeframeProjectViewFailure", never, never>, updateProjectsToFilterOut: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
19
+ projectsToFilterOut: ID[];
20
+ }, "opExProjectView/updateProjectsToFilterOut">, updateOpExProjectViewUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
21
+ nodeCollapseState?: {
22
+ isCollapsed: boolean;
23
+ nodeId: ID;
24
+ };
25
+ scrollPosition?: {
26
+ scrollTop: number;
27
+ scrollLeft?: number;
28
+ };
29
+ }, "opExProjectView/updateOpExProjectViewUIState">, updateProjectViewAccountViewMode: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
30
+ viewMode: AccountViewMode;
31
+ }, "opExProjectView/updateProjectViewAccountViewMode">, resetProjectNodeCollapseState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"opExProjectView/resetProjectNodeCollapseState">, clearOpExProjectView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"opExProjectView/clearOpExProjectView">;
32
+ declare const _default: import("redux").Reducer<OpExProjectViewState>;
33
+ export default _default;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.clearOpExProjectView = exports.resetProjectNodeCollapseState = exports.updateProjectViewAccountViewMode = exports.updateOpExProjectViewUIState = exports.updateProjectsToFilterOut = exports.updateOpExForTimeframeProjectViewFailure = exports.updateOpExForTimeframeProjectView = exports.fetchOpExForTimeframeProjectView = exports.fetchOpExProjectView = 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: 'operating_expenses_by_projects',
25
+ reportTitle: 'operating_expenses_by_projects',
26
+ uiState: {
27
+ accountViewMode: 'account_group',
28
+ nodeCollapseState: {},
29
+ projectsToFilterOut: [],
30
+ scrollPosition: undefined,
31
+ },
32
+ };
33
+ const opExProjectView = (0, toolkit_1.createSlice)({
34
+ name: 'opExProjectView',
35
+ initialState: exports.initialState,
36
+ reducers: {
37
+ fetchOpExProjectView: {
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
+ fetchOpExForTimeframeProjectView: {
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
+ updateOpExForTimeframeProjectView(draft, action) {
60
+ doUpdateOpExProjectView(draft, action.payload.timeframe, action.payload.report);
61
+ },
62
+ updateOpExForTimeframeProjectViewFailure: {
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
+ updateOpExProjectViewUIState(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
+ clearOpExProjectView(draft) {
99
+ Object.assign(draft, exports.initialState);
100
+ },
101
+ },
102
+ });
103
+ _a = opExProjectView.actions, exports.fetchOpExProjectView = _a.fetchOpExProjectView, exports.fetchOpExForTimeframeProjectView = _a.fetchOpExForTimeframeProjectView, exports.updateOpExForTimeframeProjectView = _a.updateOpExForTimeframeProjectView, exports.updateOpExForTimeframeProjectViewFailure = _a.updateOpExForTimeframeProjectViewFailure, exports.updateProjectsToFilterOut = _a.updateProjectsToFilterOut, exports.updateOpExProjectViewUIState = _a.updateOpExProjectViewUIState, exports.updateProjectViewAccountViewMode = _a.updateProjectViewAccountViewMode, exports.resetProjectNodeCollapseState = _a.resetProjectNodeCollapseState, exports.clearOpExProjectView = _a.clearOpExProjectView;
104
+ exports.default = opExProjectView.reducer;
105
+ const doUpdateOpExProjectView = (draft, timeframe, opExReport) => {
106
+ const report = (0, viewAndReportPayloadv2_1.mapReportPayloadV2ToReportV2)(opExReport.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 = opExReport.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 { OpExClassesViewCalculatedSectionID, OpExClassesViewSectionID } from '../opExClassesView/opExClassesViewSelectorTypes';
7
+ import { OpExProjectViewReport } from './opExProjectViewSelectorTypes';
8
+ import { OpExProjectViewState } from './opExProjectViewState';
9
+ export declare const opExProjectIdsInOrder: (OpExClassesViewSectionID | OpExClassesViewCalculatedSectionID)[];
10
+ export declare const getOpExProjectView: (filter: COABalancesFilterProjectView, accountState: AccountState, projectState: ProjectState, sectionsState: SectionProjectViewState, opExProjectViewState: OpExProjectViewState) => OpExProjectViewReport;
11
+ export declare const getOpExProjectViewForSelectedRange: (state: RootState) => OpExProjectViewReport;
12
+ export declare const getOpExProjectViewForHighlightedRange: (state: RootState) => OpExProjectViewReport;