@zeniai/client-epic-state 5.0.9-betaRD3 → 5.0.9-betaRD4

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.
@@ -1,3 +1,4 @@
1
+ import { NestedAccountIDHierarchy } from '../../commonStateTypes/accountView/nestedAccountID';
1
2
  import { COABalanceGroupedByPeriod } from '../../commonStateTypes/coaBalance/coaBalance';
2
3
  import { ID } from '../../commonStateTypes/common';
3
4
  import { ReportID } from '../../commonStateTypes/viewAndReport/viewAndReport';
@@ -6,6 +7,7 @@ export interface SectionProjectView {
6
7
  projectId: ID;
7
8
  sectionId: ID;
8
9
  balancesByPeriod?: COABalanceGroupedByPeriod;
10
+ nestedAccountIds?: NestedAccountIDHierarchy[];
9
11
  }
10
12
  export declare function getSectionProjectViewKey(sectionId: ID, projectId: ID, reportId: ReportID): `${string}-${string}-cash_balance` | `${string}-${string}-card_balance` | `${string}-${string}-expense_automation_card` | `${string}-${string}-operating_expenses` | `${string}-${string}-operating_expenses_by_classes` | `${string}-${string}-revenue` | `${string}-${string}-revenue_by_classes` | `${string}-${string}-net_burn_or_income` | `${string}-${string}-net_burn_or_income_story_card` | `${string}-${string}-net_burn_or_income_by_classes` | `${string}-${string}-cash_position` | `${string}-${string}-top_expenses` | `${string}-${string}-profit_and_loss` | `${string}-${string}-profit_and_loss_by_classes` | `${string}-${string}-profit_and_loss_by_projects` | `${string}-${string}-balance_sheet` | `${string}-${string}-cash_flow` | `${string}-${string}-dashboard` | `${string}-${string}-finance_statement` | `${string}-${string}-transaction_list_of_account` | `${string}-${string}-transaction_list_missing_receipt` | `${string}-${string}-transaction_list_of_account_by_class` | `${string}-${string}-transaction_detail` | `${string}-${string}-cash_in_cash_out` | `${string}-${string}-insights_dashboard` | `${string}-${string}-company_details` | `${string}-${string}-class_list` | `${string}-${string}-account_list` | `${string}-${string}-account_list_by_type` | `${string}-${string}-vendor` | `${string}-${string}-task_card` | `${string}-${string}-bill_pay` | `${string}-${string}-reimbursement` | `${string}-${string}-bill_pay_card` | `${string}-${string}-reimbursement_card` | `${string}-${string}-bill_pay_promo_card` | `${string}-${string}-zeni_accounts` | `${string}-${string}-zeni_accounts_promo_card` | `${string}-${string}-zeni_treasury` | `${string}-${string}-charge_cards` | `${string}-${string}-other_connection` | `${string}-${string}-reimbursement_promo_card` | `${string}-${string}-onboarding` | `${string}-${string}-operating_expenses_by_vendor` | `${string}-${string}-operating_expenses_by_vendor_summary` | `${string}-${string}-vendors_tab` | `${string}-${string}-accounts_payable_aging` | `${string}-${string}-accounts_receivable_aging` | `${string}-${string}-vendor_global_review` | `${string}-${string}-prepaid_expenses` | `${string}-${string}-fixed_assets` | `${string}-${string}-notification` | `${string}-${string}-rewards_card` | `${string}-${string}-billing` | `${string}-${string}-flux_analysis_operating_expense` | `${string}-${string}-account_reconciliation` | `${string}-${string}-zeni_credit_promo_card` | `${string}-${string}-treasury_promo_card` | `${string}-${string}-excluded_account_reconciliation`;
11
13
  export type SectionProjectKey = ReturnType<typeof getSectionProjectViewKey>;
@@ -1 +1 @@
1
- {"version":3,"file":"sectionProjectView.js","sourceRoot":"","sources":["../../../src/entity/sectionProjectView/sectionProjectView.ts"],"names":[],"mappings":";;AAWA,4DAMC;AAND,SAAgB,wBAAwB,CACtC,SAAa,EACb,SAAa,EACb,QAAkB;IAElB,OAAO,GAAG,SAAS,IAAI,SAAS,IAAI,QAAQ,EAAW,CAAC;AAC1D,CAAC","sourcesContent":["import {COABalanceGroupedByPeriod} from '../../commonStateTypes/coaBalance/coaBalance';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\n\nexport interface SectionProjectView {\n key: SectionProjectKey;\n projectId: ID;\n sectionId: ID;\n balancesByPeriod?: COABalanceGroupedByPeriod;\n}\n\nexport function getSectionProjectViewKey(\n sectionId: ID,\n projectId: ID,\n reportId: ReportID\n) {\n return `${sectionId}-${projectId}-${reportId}` as const;\n}\nexport type SectionProjectKey = ReturnType<typeof getSectionProjectViewKey>;\n"]}
1
+ {"version":3,"file":"sectionProjectView.js","sourceRoot":"","sources":["../../../src/entity/sectionProjectView/sectionProjectView.ts"],"names":[],"mappings":";;AAaA,4DAMC;AAND,SAAgB,wBAAwB,CACtC,SAAa,EACb,SAAa,EACb,QAAkB;IAElB,OAAO,GAAG,SAAS,IAAI,SAAS,IAAI,QAAQ,EAAW,CAAC;AAC1D,CAAC","sourcesContent":["import {NestedAccountIDHierarchy} from '../../commonStateTypes/accountView/nestedAccountID';\nimport {COABalanceGroupedByPeriod} from '../../commonStateTypes/coaBalance/coaBalance';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\n\nexport interface SectionProjectView {\n key: SectionProjectKey;\n projectId: ID;\n sectionId: ID;\n balancesByPeriod?: COABalanceGroupedByPeriod;\n nestedAccountIds?: NestedAccountIDHierarchy[];\n}\n\nexport function getSectionProjectViewKey(\n sectionId: ID,\n projectId: ID,\n reportId: ReportID\n) {\n return `${sectionId}-${projectId}-${reportId}` as const;\n}\nexport type SectionProjectKey = ReturnType<typeof getSectionProjectViewKey>;\n"]}
@@ -1,5 +1,6 @@
1
1
  import { COABalanceGroupedByPeriodPayloadV2 } from '../../commonPayloadTypes/v2/coaBalancePayload';
2
2
  import { CurrencyPayload } from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';
3
+ import { NestedAccountIDHierarchy } from '../../commonStateTypes/accountView/nestedAccountID';
3
4
  import { ID } from '../../commonStateTypes/common';
4
5
  import { ReportID } from '../../commonStateTypes/viewAndReport/viewAndReport';
5
6
  import { SectionProjectView } from './sectionProjectView';
@@ -7,4 +8,4 @@ export declare const mapProjectCOABalanceGroupedPayloadToSectionProjectView: (ti
7
8
  projectId: ID;
8
9
  reportId: ReportID;
9
10
  sectionId: ID;
10
- }) => SectionProjectView;
11
+ }, nestedAccountIds: NestedAccountIDHierarchy[]) => SectionProjectView;
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mapProjectCOABalanceGroupedPayloadToSectionProjectView = void 0;
4
4
  const coaBalancePayload_1 = require("../../commonPayloadTypes/v2/coaBalancePayload");
5
5
  const sectionProjectView_1 = require("./sectionProjectView");
6
- const mapProjectCOABalanceGroupedPayloadToSectionProjectView = (timeframe, projectBalancesPayload, currencyPayload, id) => {
6
+ const mapProjectCOABalanceGroupedPayloadToSectionProjectView = (timeframe, projectBalancesPayload, currencyPayload, id, nestedAccountIds) => {
7
7
  return {
8
8
  key: (0, sectionProjectView_1.getSectionProjectViewKey)(id.sectionId, id.projectId, id.reportId),
9
9
  projectId: id.projectId,
10
10
  sectionId: id.sectionId,
11
11
  balancesByPeriod: (0, coaBalancePayload_1.mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod)(projectBalancesPayload, currencyPayload, timeframe),
12
+ nestedAccountIds,
12
13
  };
13
14
  };
14
15
  exports.mapProjectCOABalanceGroupedPayloadToSectionProjectView = mapProjectCOABalanceGroupedPayloadToSectionProjectView;
@@ -1 +1 @@
1
- {"version":3,"file":"sectionProjectViewHelper.js","sourceRoot":"","sources":["../../../src/entity/sectionProjectView/sectionProjectViewHelper.ts"],"names":[],"mappings":";;;AAAA,qFAGuD;AAIvD,6DAG8B;AAEvB,MAAM,sDAAsD,GAAG,CACpE,SAAuC,EACvC,sBAA0D,EAC1D,eAAgC,EAChC,EAIC,EACmB,EAAE;IACtB,OAAO;QACL,GAAG,EAAE,IAAA,6CAAwB,EAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC;QACtE,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,gBAAgB,EACd,IAAA,oFAAgE,EAC9D,sBAAsB,EACtB,eAAe,EACf,SAAS,CACV;KACJ,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,sDAAsD,0DAqBjE","sourcesContent":["import {\n COABalanceGroupedByPeriodPayloadV2,\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod,\n} from '../../commonPayloadTypes/v2/coaBalancePayload';\nimport {CurrencyPayload} from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {\n SectionProjectView,\n getSectionProjectViewKey,\n} from './sectionProjectView';\n\nexport const mapProjectCOABalanceGroupedPayloadToSectionProjectView = (\n timeframe: 'month' | 'quarter' | 'year',\n projectBalancesPayload: COABalanceGroupedByPeriodPayloadV2,\n currencyPayload: CurrencyPayload,\n id: {\n projectId: ID;\n reportId: ReportID;\n sectionId: ID;\n }\n): SectionProjectView => {\n return {\n key: getSectionProjectViewKey(id.sectionId, id.projectId, id.reportId),\n projectId: id.projectId,\n sectionId: id.sectionId,\n balancesByPeriod:\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(\n projectBalancesPayload,\n currencyPayload,\n timeframe\n ),\n };\n};\n"]}
1
+ {"version":3,"file":"sectionProjectViewHelper.js","sourceRoot":"","sources":["../../../src/entity/sectionProjectView/sectionProjectViewHelper.ts"],"names":[],"mappings":";;;AAAA,qFAGuD;AAKvD,6DAG8B;AAEvB,MAAM,sDAAsD,GAAG,CACpE,SAAuC,EACvC,sBAA0D,EAC1D,eAAgC,EAChC,EAIC,EACD,gBAA4C,EACxB,EAAE;IACtB,OAAO;QACL,GAAG,EAAE,IAAA,6CAAwB,EAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC;QACtE,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,gBAAgB,EACd,IAAA,oFAAgE,EAC9D,sBAAsB,EACtB,eAAe,EACf,SAAS,CACV;QACH,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AAvBW,QAAA,sDAAsD,0DAuBjE","sourcesContent":["import {\n COABalanceGroupedByPeriodPayloadV2,\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod,\n} from '../../commonPayloadTypes/v2/coaBalancePayload';\nimport {CurrencyPayload} from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';\nimport {NestedAccountIDHierarchy} from '../../commonStateTypes/accountView/nestedAccountID';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {\n SectionProjectView,\n getSectionProjectViewKey,\n} from './sectionProjectView';\n\nexport const mapProjectCOABalanceGroupedPayloadToSectionProjectView = (\n timeframe: 'month' | 'quarter' | 'year',\n projectBalancesPayload: COABalanceGroupedByPeriodPayloadV2,\n currencyPayload: CurrencyPayload,\n id: {\n projectId: ID;\n reportId: ReportID;\n sectionId: ID;\n },\n nestedAccountIds: NestedAccountIDHierarchy[]\n): SectionProjectView => {\n return {\n key: getSectionProjectViewKey(id.sectionId, id.projectId, id.reportId),\n projectId: id.projectId,\n sectionId: id.sectionId,\n balancesByPeriod:\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(\n projectBalancesPayload,\n currencyPayload,\n timeframe\n ),\n nestedAccountIds,\n };\n};\n"]}
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.clearAllSectionsProjectView = exports.updateSectionProjectView = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const coaBalancePayload_1 = require("../../commonPayloadTypes/v2/coaBalancePayload");
7
+ const accountPayload_1 = require("../account/accountPayload");
8
+ const getNestedAccountIDHierarchyForSection_1 = require("../sectionAccountsView/getNestedAccountIDHierarchyForSection");
7
9
  const sectionProjectView_1 = require("./sectionProjectView");
8
10
  const sectionProjectViewHelper_1 = require("./sectionProjectViewHelper");
9
11
  exports.initialState = {
@@ -27,11 +29,16 @@ const sectionProjectView = (0, toolkit_1.createSlice)({
27
29
  };
28
30
  },
29
31
  reducer(draft, action) {
30
- const { timeframe, sectionPayload, sectionId, reportId, currencyPayload } = action.payload;
32
+ const { timeframe, sectionPayload, sectionId, reportId, currencyPayload, accountsMetadataPayload, } = action.payload;
31
33
  if (sectionPayload.projects != null) {
34
+ const accountsMetadata = accountsMetadataPayload.map((eachAccount) => (0, accountPayload_1.mapAccountMetadataPayloadToAccountMetadata)(eachAccount));
32
35
  Object.keys(sectionPayload.projects).forEach((projectId) => {
33
36
  const projectPayload = sectionPayload.projects[projectId];
34
- updateSectionProject(draft, timeframe, projectPayload, sectionId, projectId, reportId, currencyPayload);
37
+ const projectAccountIds = projectPayload.accounts != null
38
+ ? Object.keys(projectPayload.accounts)
39
+ : [];
40
+ const nestedAccountIds = (0, getNestedAccountIDHierarchyForSection_1.getNestedAccountIDHierarchyForAccounts)(projectAccountIds, accountsMetadata);
41
+ updateSectionProject(draft, timeframe, projectPayload, sectionId, projectId, reportId, currencyPayload, nestedAccountIds);
35
42
  });
36
43
  }
37
44
  },
@@ -43,15 +50,16 @@ const sectionProjectView = (0, toolkit_1.createSlice)({
43
50
  });
44
51
  _a = sectionProjectView.actions, exports.updateSectionProjectView = _a.updateSectionProjectView, exports.clearAllSectionsProjectView = _a.clearAllSectionsProjectView;
45
52
  exports.default = sectionProjectView.reducer;
46
- const updateSectionProject = (draft, timeframe, projectPayload, sectionId, projectId, reportId, currencyPayload) => {
53
+ const updateSectionProject = (draft, timeframe, projectPayload, sectionId, projectId, reportId, currencyPayload, nestedAccountIds) => {
47
54
  const sectionKey = (0, sectionProjectView_1.getSectionProjectViewKey)(sectionId, projectId, reportId);
48
55
  const section = draft.sectionsByKey[sectionKey];
49
56
  if (section != null) {
50
57
  draft.sectionsByKey[sectionKey].balancesByPeriod = Object.assign({}, draft.sectionsByKey[sectionKey].balancesByPeriod, (0, coaBalancePayload_1.mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod)(projectPayload, currencyPayload, timeframe));
58
+ draft.sectionsByKey[sectionKey].nestedAccountIds = nestedAccountIds;
51
59
  }
52
60
  else {
53
61
  draft.sectionsByKey[sectionKey] =
54
- (0, sectionProjectViewHelper_1.mapProjectCOABalanceGroupedPayloadToSectionProjectView)(timeframe, projectPayload, currencyPayload, { sectionId, projectId, reportId });
62
+ (0, sectionProjectViewHelper_1.mapProjectCOABalanceGroupedPayloadToSectionProjectView)(timeframe, projectPayload, currencyPayload, { sectionId, projectId, reportId }, nestedAccountIds);
55
63
  }
56
64
  };
57
65
  //# sourceMappingURL=sectionProjectViewReducer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sectionProjectViewReducer.js","sourceRoot":"","sources":["../../../src/entity/sectionProjectView/sectionProjectViewReducer.ts"],"names":[],"mappings":";;;;AAAA,8CAA4D;AAE5D,qFAAmK;AAMnK,6DAA8D;AAC9D,yEAAkG;AAGrF,QAAA,YAAY,GAA4B;IACnD,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAA,qBAAW,EAAC;IACrC,IAAI,EAAE,oBAAoB;IAC1B,YAAY,EAAZ,oBAAY;IACZ,QAAQ,EAAE;QACR,wBAAwB,EAAE;YACxB,OAAO,CACL,SAAuC,EACvC,SAAa,EACb,QAAkB,EAClB,cAA0D,EAC1D,uBAAiD,EACjD,eAAgC;gBAEhC,OAAO;oBACL,OAAO,EAAE;wBACP,SAAS;wBACT,QAAQ;wBACR,SAAS;wBACT,cAAc;wBACd,uBAAuB;wBACvB,eAAe;qBAChB;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,CACL,KAAK,EACL,MAOE;gBAEF,MAAM,EAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAC,GACrE,MAAM,CAAC,OAAO,CAAC;gBAEjB,IAAI,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACpC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;wBACzD,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBAC1D,oBAAoB,CAClB,KAAK,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,eAAe,CAChB,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF;QACD,2BAA2B,CAAC,KAAK;YAC/B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAY,CAAC,CAAC;QACrC,CAAC;KACF;CACF,CAAC,CAAC;AAEU,KACX,kBAAkB,CAAC,OAAO,EADd,gCAAwB,gCAAE,mCAA2B,kCACtC;AAE7B,kBAAe,kBAAkB,CAAC,OAAO,CAAC;AAE1C,MAAM,oBAAoB,GAAG,CAC3B,KAA8B,EAC9B,SAAuC,EACvC,cAAkD,EAClD,SAAa,EACb,SAAa,EACb,QAAkB,EAClB,eAAgC,EAChC,EAAE;IACF,MAAM,UAAU,GAAG,IAAA,6CAAwB,EAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAC9D,EAAE,EACF,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAChD,IAAA,oFAAgE,EAC9D,cAAc,EACd,eAAe,EACf,SAAS,CACV,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;YAC7B,IAAA,iFAAsD,EACpD,SAAS,EACT,cAAc,EACd,eAAe,EACf,EAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAC,CACjC,CAAC;IACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["import {PayloadAction, createSlice} from '@reduxjs/toolkit';\n\nimport {COABalanceGroupedByPeriodPayloadV2, mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod} from '../../commonPayloadTypes/v2/coaBalancePayload';\nimport {CurrencyPayload} from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {AccountMetadataPayload} from '../account/accountPayload';\nimport {SectionByProjectCOABalanceGroupedPayloadV2} from '../../view/profitAndLossProjectView/profitAndLossProjectViewPayload';\nimport {getSectionProjectViewKey} from './sectionProjectView';\nimport {mapProjectCOABalanceGroupedPayloadToSectionProjectView} from './sectionProjectViewHelper';\nimport {SectionProjectViewState} from './sectionProjectViewState';\n\nexport const initialState: SectionProjectViewState = {\n sectionsByKey: {},\n};\n\nconst sectionProjectView = createSlice({\n name: 'sectionProjectView',\n initialState,\n reducers: {\n updateSectionProjectView: {\n prepare(\n timeframe: 'month' | 'quarter' | 'year',\n sectionId: ID,\n reportId: ReportID,\n sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2,\n accountsMetadataPayload: AccountMetadataPayload[],\n currencyPayload: CurrencyPayload\n ) {\n return {\n payload: {\n timeframe,\n reportId,\n sectionId,\n sectionPayload,\n accountsMetadataPayload,\n currencyPayload,\n },\n };\n },\n reducer(\n draft,\n action: PayloadAction<{\n accountsMetadataPayload: AccountMetadataPayload[];\n currencyPayload: CurrencyPayload;\n reportId: ReportID;\n sectionId: ID;\n sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2;\n timeframe: 'month' | 'quarter' | 'year';\n }>\n ) {\n const {timeframe, sectionPayload, sectionId, reportId, currencyPayload} =\n action.payload;\n\n if (sectionPayload.projects != null) {\n Object.keys(sectionPayload.projects).forEach((projectId) => {\n const projectPayload = sectionPayload.projects[projectId];\n updateSectionProject(\n draft,\n timeframe,\n projectPayload,\n sectionId,\n projectId,\n reportId,\n currencyPayload\n );\n });\n }\n },\n },\n clearAllSectionsProjectView(draft) {\n Object.assign(draft, initialState);\n },\n },\n});\n\nexport const {updateSectionProjectView, clearAllSectionsProjectView} =\n sectionProjectView.actions;\n\nexport default sectionProjectView.reducer;\n\nconst updateSectionProject = (\n draft: SectionProjectViewState,\n timeframe: 'month' | 'quarter' | 'year',\n projectPayload: COABalanceGroupedByPeriodPayloadV2,\n sectionId: ID,\n projectId: ID,\n reportId: ReportID,\n currencyPayload: CurrencyPayload\n) => {\n const sectionKey = getSectionProjectViewKey(sectionId, projectId, reportId);\n const section = draft.sectionsByKey[sectionKey];\n\n if (section != null) {\n draft.sectionsByKey[sectionKey].balancesByPeriod = Object.assign(\n {},\n draft.sectionsByKey[sectionKey].balancesByPeriod,\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(\n projectPayload,\n currencyPayload,\n timeframe\n )\n );\n } else {\n draft.sectionsByKey[sectionKey] =\n mapProjectCOABalanceGroupedPayloadToSectionProjectView(\n timeframe,\n projectPayload,\n currencyPayload,\n {sectionId, projectId, reportId}\n );\n }\n};\n"]}
1
+ {"version":3,"file":"sectionProjectViewReducer.js","sourceRoot":"","sources":["../../../src/entity/sectionProjectView/sectionProjectViewReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {PayloadAction, createSlice} from '@reduxjs/toolkit';\n\nimport {mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod} from '../../commonPayloadTypes/v2/coaBalancePayload';\nimport {CurrencyPayload} from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';\nimport {NestedAccountIDHierarchy} from '../../commonStateTypes/accountView/nestedAccountID';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {\n AccountMetadataPayload,\n mapAccountMetadataPayloadToAccountMetadata,\n} from '../account/accountPayload';\nimport {\n ProjectCOABalanceGroupedPayloadV2,\n SectionByProjectCOABalanceGroupedPayloadV2,\n} from '../../view/profitAndLossProjectView/profitAndLossProjectViewPayload';\nimport {getNestedAccountIDHierarchyForAccounts} from '../sectionAccountsView/getNestedAccountIDHierarchyForSection';\nimport {getSectionProjectViewKey} from './sectionProjectView';\nimport {mapProjectCOABalanceGroupedPayloadToSectionProjectView} from './sectionProjectViewHelper';\nimport {SectionProjectViewState} from './sectionProjectViewState';\n\nexport const initialState: SectionProjectViewState = {\n sectionsByKey: {},\n};\n\nconst sectionProjectView = createSlice({\n name: 'sectionProjectView',\n initialState,\n reducers: {\n updateSectionProjectView: {\n prepare(\n timeframe: 'month' | 'quarter' | 'year',\n sectionId: ID,\n reportId: ReportID,\n sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2,\n accountsMetadataPayload: AccountMetadataPayload[],\n currencyPayload: CurrencyPayload\n ) {\n return {\n payload: {\n timeframe,\n reportId,\n sectionId,\n sectionPayload,\n accountsMetadataPayload,\n currencyPayload,\n },\n };\n },\n reducer(\n draft,\n action: PayloadAction<{\n accountsMetadataPayload: AccountMetadataPayload[];\n currencyPayload: CurrencyPayload;\n reportId: ReportID;\n sectionId: ID;\n sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2;\n timeframe: 'month' | 'quarter' | 'year';\n }>\n ) {\n const {\n timeframe,\n sectionPayload,\n sectionId,\n reportId,\n currencyPayload,\n accountsMetadataPayload,\n } = action.payload;\n\n if (sectionPayload.projects != null) {\n const accountsMetadata = accountsMetadataPayload.map((eachAccount) =>\n mapAccountMetadataPayloadToAccountMetadata(eachAccount)\n );\n\n Object.keys(sectionPayload.projects).forEach((projectId) => {\n const projectPayload = sectionPayload.projects[projectId];\n const projectAccountIds =\n projectPayload.accounts != null\n ? Object.keys(projectPayload.accounts)\n : [];\n const nestedAccountIds = getNestedAccountIDHierarchyForAccounts(\n projectAccountIds,\n accountsMetadata\n );\n updateSectionProject(\n draft,\n timeframe,\n projectPayload,\n sectionId,\n projectId,\n reportId,\n currencyPayload,\n nestedAccountIds\n );\n });\n }\n },\n },\n clearAllSectionsProjectView(draft) {\n Object.assign(draft, initialState);\n },\n },\n});\n\nexport const {updateSectionProjectView, clearAllSectionsProjectView} =\n sectionProjectView.actions;\n\nexport default sectionProjectView.reducer;\n\nconst updateSectionProject = (\n draft: SectionProjectViewState,\n timeframe: 'month' | 'quarter' | 'year',\n projectPayload: ProjectCOABalanceGroupedPayloadV2,\n sectionId: ID,\n projectId: ID,\n reportId: ReportID,\n currencyPayload: CurrencyPayload,\n nestedAccountIds: NestedAccountIDHierarchy[]\n) => {\n const sectionKey = getSectionProjectViewKey(sectionId, projectId, reportId);\n const section = draft.sectionsByKey[sectionKey];\n\n if (section != null) {\n draft.sectionsByKey[sectionKey].balancesByPeriod = Object.assign(\n {},\n draft.sectionsByKey[sectionKey].balancesByPeriod,\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(\n projectPayload,\n currencyPayload,\n timeframe\n )\n );\n draft.sectionsByKey[sectionKey].nestedAccountIds = nestedAccountIds;\n } else {\n draft.sectionsByKey[sectionKey] =\n mapProjectCOABalanceGroupedPayloadToSectionProjectView(\n timeframe,\n projectPayload,\n currencyPayload,\n {sectionId, projectId, reportId},\n nestedAccountIds\n );\n }\n};\n"]}
@@ -7,49 +7,21 @@ exports.getSectionProjectViewReport = void 0;
7
7
  const get_1 = __importDefault(require("lodash/get"));
8
8
  const coaBalance_1 = require("../../commonStateTypes/coaBalance/coaBalance");
9
9
  const getSumOfBalancesGroupedByPeriod_1 = require("../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod");
10
- const accountPayload_1 = require("../account/accountPayload");
11
- const accountState_1 = require("../account/accountState");
12
10
  const subAccountSelector_1 = require("../account/subAccountSelector");
13
11
  const projectSelector_1 = require("../project/projectSelector");
14
- const getNestedAccountIDHierarchyForSection_1 = require("../sectionAccountsView/getNestedAccountIDHierarchyForSection");
15
12
  const sectionProjectView_1 = require("./sectionProjectView");
16
13
  const getSectionProjectViewReport = (accountState, projectState, sectionState, projectIds, id, filter) => {
17
14
  const projectIdsToShow = projectIds.filter((projectId) => !filter.projectsToFilterOut.includes(projectId));
18
- console.log('$$$ [getSectionProjectViewReport] IN section:', id.sectionId, 'reportId:', id.reportId, 'projectIds:', projectIds, 'projectIdsToShow:', projectIdsToShow, 'filter:', filter);
19
- console.log('$$$ [getSectionProjectViewReport] sectionState.sectionsByKey keys:', Object.keys(sectionState.sectionsByKey));
20
- console.log('$$$ [getSectionProjectViewReport] projectState.projects keys:', Object.keys(projectState.projects));
21
15
  const projectReports = [];
22
16
  const sectionBalancesTotalByPeriodArray = [];
23
- const accountsByProject = getAccountsByProject(accountState, id.sectionId, id.reportId);
24
- console.log('$$$ [getSectionProjectViewReport] accountsByProject for section', id.sectionId, ':', accountsByProject);
25
17
  projectIdsToShow.forEach((projectId) => {
26
18
  const project = (0, projectSelector_1.getProjectById)(projectState, projectId);
27
19
  if (project == null) {
28
- console.log('$$$ [getSectionProjectViewReport] SKIP projectId', projectId, '- not found in projectState');
29
20
  return;
30
21
  }
31
- const projectAccountIds = accountsByProject[projectId] ?? [];
32
- console.log('$$$ [getSectionProjectViewReport] project', projectId, '(', project.projectName, ') has', projectAccountIds.length, 'accountIds:', projectAccountIds);
33
- const accountsMetadata = projectAccountIds
34
- .map((accountId) => {
35
- const key = (0, accountState_1.getAccountKey)(id.reportId, accountId, undefined, undefined, { projectId, sectionId: id.sectionId });
36
- const account = accountState.accountsByKey[key];
37
- if (account == null) {
38
- console.log('$$$ [getSectionProjectViewReport] account lookup MISS for key', key);
39
- return undefined;
40
- }
41
- return (0, accountPayload_1.mapAccountMetadataPayloadToAccountMetadata)({
42
- account_id: account.accountId,
43
- account_name: account.accountName,
44
- account_description: account.accountDescription,
45
- labels: account.labels,
46
- is_sub_account: account.accountsViewParentId != null,
47
- parent_account_id: account.accountsViewParentId?.parentAccountId?.[0] ?? null,
48
- });
49
- })
50
- .filter((metadata) => metadata != null);
51
- const nestedAccountHierarchy = (0, getNestedAccountIDHierarchyForSection_1.getNestedAccountIDHierarchyForAccounts)(projectAccountIds, accountsMetadata);
52
- console.log('$$$ [getSectionProjectViewReport] project', projectId, 'nestedAccountHierarchy length:', nestedAccountHierarchy.length, 'hierarchy:', nestedAccountHierarchy);
22
+ const projectSectionKey = (0, sectionProjectView_1.getSectionProjectViewKey)(id.sectionId, projectId, id.reportId);
23
+ const projectSectionView = (0, get_1.default)(sectionState.sectionsByKey, projectSectionKey, undefined);
24
+ const nestedAccountHierarchy = projectSectionView?.nestedAccountIds ?? [];
53
25
  const nestedAccountReports = [];
54
26
  nestedAccountHierarchy.forEach((accountIdHierarchy) => {
55
27
  const report = (0, subAccountSelector_1.getNestedAccountReportForAccount)(accountState, {
@@ -63,13 +35,7 @@ const getSectionProjectViewReport = (accountState, projectState, sectionState, p
63
35
  if (report != null) {
64
36
  nestedAccountReports.push(report);
65
37
  }
66
- else {
67
- console.log('$$$ [getSectionProjectViewReport] nested report NULL for hierarchy', accountIdHierarchy);
68
- }
69
38
  });
70
- const projectSectionKey = (0, sectionProjectView_1.getSectionProjectViewKey)(id.sectionId, projectId, id.reportId);
71
- const projectSectionView = (0, get_1.default)(sectionState.sectionsByKey, projectSectionKey, undefined);
72
- console.log('$$$ [getSectionProjectViewReport] project', projectId, 'projectSectionKey:', projectSectionKey, 'projectSectionView found:', projectSectionView != null, 'balancesByPeriod keys:', projectSectionView?.balancesByPeriod ? Object.keys(projectSectionView.balancesByPeriod) : 'n/a');
73
39
  const projectBalancesTotalByPeriod = projectSectionView?.balancesByPeriod ?? {};
74
40
  const projectReport = {
75
41
  projectId,
@@ -78,12 +44,10 @@ const getSectionProjectViewReport = (accountState, projectState, sectionState, p
78
44
  ...(0, coaBalance_1.getCOABalances)(projectBalancesTotalByPeriod, filter),
79
45
  projectBalancesTotalByPeriod,
80
46
  };
81
- console.log('$$$ [getSectionProjectViewReport] built projectReport for', projectId, '- accounts:', nestedAccountReports.length, 'report:', projectReport);
82
47
  projectReports.push(projectReport);
83
48
  sectionBalancesTotalByPeriodArray.push(projectBalancesTotalByPeriod);
84
49
  });
85
50
  const sectionBalancesTotalByPeriod = (0, getSumOfBalancesGroupedByPeriod_1.getSumOfBalancesByGroupedByPeriod)(sectionBalancesTotalByPeriodArray) ?? {};
86
- console.log('$$$ [getSectionProjectViewReport] OUT section:', id.sectionId, 'projectReports count:', projectReports.length, 'projectReports:', projectReports);
87
51
  return {
88
52
  projects: projectReports,
89
53
  ...(0, coaBalance_1.getCOABalances)(sectionBalancesTotalByPeriod, filter),
@@ -91,34 +55,4 @@ const getSectionProjectViewReport = (accountState, projectState, sectionState, p
91
55
  };
92
56
  };
93
57
  exports.getSectionProjectViewReport = getSectionProjectViewReport;
94
- const getAccountsByProject = (accountState, sectionId, reportId) => {
95
- const result = {};
96
- const allKeys = Object.keys(accountState.accountsByKey);
97
- let matched = 0;
98
- let skippedNoProjectParent = 0;
99
- let skippedSectionMismatch = 0;
100
- let skippedReportMismatch = 0;
101
- Object.values(accountState.accountsByKey).forEach((account) => {
102
- if (account.projectsViewParentId == null) {
103
- skippedNoProjectParent += 1;
104
- return;
105
- }
106
- if (account.projectsViewParentId.sectionId !== sectionId) {
107
- skippedSectionMismatch += 1;
108
- return;
109
- }
110
- if (!account.key.endsWith(reportId)) {
111
- skippedReportMismatch += 1;
112
- return;
113
- }
114
- matched += 1;
115
- const projectId = account.projectsViewParentId.projectId;
116
- if (result[projectId] == null) {
117
- result[projectId] = [];
118
- }
119
- result[projectId].push(account.accountId);
120
- });
121
- console.log('$$$ [getAccountsByProject] section:', sectionId, 'reportId:', reportId, 'totalAccounts:', allKeys.length, 'matched:', matched, 'skippedNoProjectParent:', skippedNoProjectParent, 'skippedSectionMismatch:', skippedSectionMismatch, 'skippedReportMismatch:', skippedReportMismatch);
122
- return result;
123
- };
124
58
  //# sourceMappingURL=sectionProjectViewSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sectionProjectViewSelector.js","sourceRoot":"","sources":["../../../src/entity/sectionProjectView/sectionProjectViewSelector.ts"],"names":[],"mappings":"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","sourcesContent":["import recordGet from 'lodash/get';\n\nimport {COABalancesFilterProjectView} from '../../commonStateTypes/coaBalance/coaBalancesFilterProjectView';\nimport {\n COABalanceGroupedByPeriod,\n getCOABalances,\n} from '../../commonStateTypes/coaBalance/coaBalance';\nimport {getSumOfBalancesByGroupedByPeriod} from '../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {mapAccountMetadataPayloadToAccountMetadata} from '../account/accountPayload';\nimport {Account, AccountState, getAccountKey} from '../account/accountState';\nimport {\n NestedAccountReport,\n getNestedAccountReportForAccount,\n} from '../account/subAccountSelector';\nimport {getProjectById} from '../project/projectSelector';\nimport {ProjectState} from '../project/projectReducer';\nimport {getNestedAccountIDHierarchyForAccounts} from '../sectionAccountsView/getNestedAccountIDHierarchyForSection';\nimport {getSectionProjectViewKey} from './sectionProjectView';\nimport {\n ProjectReportWithBalances,\n SectionProjectViewReport,\n} from './sectionProjectViewSelectorTypes';\nimport {SectionProjectViewState} from './sectionProjectViewState';\n\nexport const getSectionProjectViewReport = (\n accountState: AccountState,\n projectState: ProjectState,\n sectionState: SectionProjectViewState,\n projectIds: ID[],\n id: {\n reportId: ReportID;\n sectionId: ID;\n },\n filter: COABalancesFilterProjectView\n): SectionProjectViewReport => {\n const projectIdsToShow = projectIds.filter(\n (projectId) => !filter.projectsToFilterOut.includes(projectId)\n );\n\n console.log('$$$ [getSectionProjectViewReport] IN section:', id.sectionId, 'reportId:', id.reportId, 'projectIds:', projectIds, 'projectIdsToShow:', projectIdsToShow, 'filter:', filter);\n console.log('$$$ [getSectionProjectViewReport] sectionState.sectionsByKey keys:', Object.keys(sectionState.sectionsByKey));\n console.log('$$$ [getSectionProjectViewReport] projectState.projects keys:', Object.keys(projectState.projects));\n\n const projectReports: ProjectReportWithBalances[] = [];\n const sectionBalancesTotalByPeriodArray: COABalanceGroupedByPeriod[] = [];\n\n const accountsByProject = getAccountsByProject(\n accountState,\n id.sectionId,\n id.reportId\n );\n\n console.log('$$$ [getSectionProjectViewReport] accountsByProject for section', id.sectionId, ':', accountsByProject);\n\n projectIdsToShow.forEach((projectId) => {\n const project = getProjectById(projectState, projectId);\n if (project == null) {\n console.log('$$$ [getSectionProjectViewReport] SKIP projectId', projectId, '- not found in projectState');\n return;\n }\n\n const projectAccountIds = accountsByProject[projectId] ?? [];\n\n console.log('$$$ [getSectionProjectViewReport] project', projectId, '(', project.projectName, ') has', projectAccountIds.length, 'accountIds:', projectAccountIds);\n\n const accountsMetadata = projectAccountIds\n .map((accountId) => {\n const key = getAccountKey(\n id.reportId,\n accountId,\n undefined,\n undefined,\n {projectId, sectionId: id.sectionId}\n );\n const account = accountState.accountsByKey[key];\n if (account == null) {\n console.log('$$$ [getSectionProjectViewReport] account lookup MISS for key', key);\n return undefined;\n }\n return mapAccountMetadataPayloadToAccountMetadata({\n account_id: account.accountId,\n account_name: account.accountName,\n account_description: account.accountDescription,\n labels: account.labels,\n is_sub_account: account.accountsViewParentId != null,\n parent_account_id:\n account.accountsViewParentId?.parentAccountId?.[0] ?? null,\n });\n })\n .filter(\n (metadata): metadata is NonNullable<typeof metadata> =>\n metadata != null\n );\n\n const nestedAccountHierarchy = getNestedAccountIDHierarchyForAccounts(\n projectAccountIds,\n accountsMetadata\n );\n\n console.log('$$$ [getSectionProjectViewReport] project', projectId, 'nestedAccountHierarchy length:', nestedAccountHierarchy.length, 'hierarchy:', nestedAccountHierarchy);\n\n const nestedAccountReports: NestedAccountReport[] = [];\n nestedAccountHierarchy.forEach((accountIdHierarchy) => {\n const report = getNestedAccountReportForAccount(\n accountState,\n {\n accountIdHierarchy,\n reportId: id.reportId,\n projectsViewParentId: {\n projectId,\n sectionId: id.sectionId,\n },\n },\n filter,\n nestedAccountHierarchy.length > 1\n );\n if (report != null) {\n nestedAccountReports.push(report);\n } else {\n console.log('$$$ [getSectionProjectViewReport] nested report NULL for hierarchy', accountIdHierarchy);\n }\n });\n\n const projectSectionKey = getSectionProjectViewKey(\n id.sectionId,\n projectId,\n id.reportId\n );\n const projectSectionView = recordGet(\n sectionState.sectionsByKey,\n projectSectionKey,\n undefined\n );\n\n console.log('$$$ [getSectionProjectViewReport] project', projectId, 'projectSectionKey:', projectSectionKey, 'projectSectionView found:', projectSectionView != null, 'balancesByPeriod keys:', projectSectionView?.balancesByPeriod ? Object.keys(projectSectionView.balancesByPeriod) : 'n/a');\n\n const projectBalancesTotalByPeriod =\n projectSectionView?.balancesByPeriod ?? {};\n\n const projectReport: ProjectReportWithBalances = {\n projectId,\n projectName: project.projectName,\n accounts: nestedAccountReports,\n ...getCOABalances(projectBalancesTotalByPeriod, filter),\n projectBalancesTotalByPeriod,\n };\n\n console.log('$$$ [getSectionProjectViewReport] built projectReport for', projectId, '- accounts:', nestedAccountReports.length, 'report:', projectReport);\n\n projectReports.push(projectReport);\n sectionBalancesTotalByPeriodArray.push(projectBalancesTotalByPeriod);\n });\n\n const sectionBalancesTotalByPeriod =\n getSumOfBalancesByGroupedByPeriod(sectionBalancesTotalByPeriodArray) ?? {};\n\n console.log('$$$ [getSectionProjectViewReport] OUT section:', id.sectionId, 'projectReports count:', projectReports.length, 'projectReports:', projectReports);\n\n return {\n projects: projectReports,\n ...getCOABalances(sectionBalancesTotalByPeriod, filter),\n sectionBalancesTotalByPeriod,\n };\n};\n\nconst getAccountsByProject = (\n accountState: AccountState,\n sectionId: ID,\n reportId: ReportID\n): Record<ID, ID[]> => {\n const result: Record<ID, ID[]> = {};\n const allKeys = Object.keys(accountState.accountsByKey);\n let matched = 0;\n let skippedNoProjectParent = 0;\n let skippedSectionMismatch = 0;\n let skippedReportMismatch = 0;\n Object.values(accountState.accountsByKey).forEach((account: Account) => {\n if (account.projectsViewParentId == null) {\n skippedNoProjectParent += 1;\n return;\n }\n if (account.projectsViewParentId.sectionId !== sectionId) {\n skippedSectionMismatch += 1;\n return;\n }\n if (!account.key.endsWith(reportId)) {\n skippedReportMismatch += 1;\n return;\n }\n matched += 1;\n const projectId = account.projectsViewParentId.projectId;\n if (result[projectId] == null) {\n result[projectId] = [];\n }\n result[projectId].push(account.accountId);\n });\n console.log('$$$ [getAccountsByProject] section:', sectionId, 'reportId:', reportId, 'totalAccounts:', allKeys.length, 'matched:', matched, 'skippedNoProjectParent:', skippedNoProjectParent, 'skippedSectionMismatch:', skippedSectionMismatch, 'skippedReportMismatch:', skippedReportMismatch);\n return result;\n};\n"]}
1
+ {"version":3,"file":"sectionProjectViewSelector.js","sourceRoot":"","sources":["../../../src/entity/sectionProjectView/sectionProjectViewSelector.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAmC;AAGnC,6EAGsD;AACtD,qIAAkI;AAIlI,sEAGuC;AACvC,gEAA0D;AAE1D,6DAA8D;AAOvD,MAAM,2BAA2B,GAAG,CACzC,YAA0B,EAC1B,YAA0B,EAC1B,YAAqC,EACrC,UAAgB,EAChB,EAGC,EACD,MAAoC,EACV,EAAE;IAC5B,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC/D,CAAC;IAEF,MAAM,cAAc,GAAgC,EAAE,CAAC;IACvD,MAAM,iCAAiC,GAAgC,EAAE,CAAC;IAE1E,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,IAAA,gCAAc,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAA,6CAAwB,EAChD,EAAE,CAAC,SAAS,EACZ,SAAS,EACT,EAAE,CAAC,QAAQ,CACZ,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAA,aAAS,EAClC,YAAY,CAAC,aAAa,EAC1B,iBAAiB,EACjB,SAAS,CACV,CAAC;QAEF,MAAM,sBAAsB,GAAG,kBAAkB,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAE1E,MAAM,oBAAoB,GAA0B,EAAE,CAAC;QACvD,sBAAsB,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,EAAE;YACpD,MAAM,MAAM,GAAG,IAAA,qDAAgC,EAC7C,YAAY,EACZ;gBACE,kBAAkB;gBAClB,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,oBAAoB,EAAE;oBACpB,SAAS;oBACT,SAAS,EAAE,EAAE,CAAC,SAAS;iBACxB;aACF,EACD,MAAM,EACN,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAClC,CAAC;YACF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,4BAA4B,GAChC,kBAAkB,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAE7C,MAAM,aAAa,GAA8B;YAC/C,SAAS;YACT,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,IAAA,2BAAc,EAAC,4BAA4B,EAAE,MAAM,CAAC;YACvD,4BAA4B;SAC7B,CAAC;QAEF,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,iCAAiC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,MAAM,4BAA4B,GAChC,IAAA,mEAAiC,EAAC,iCAAiC,CAAC,IAAI,EAAE,CAAC;IAE7E,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,GAAG,IAAA,2BAAc,EAAC,4BAA4B,EAAE,MAAM,CAAC;QACvD,4BAA4B;KAC7B,CAAC;AACJ,CAAC,CAAC;AAhFW,QAAA,2BAA2B,+BAgFtC","sourcesContent":["import recordGet from 'lodash/get';\n\nimport {COABalancesFilterProjectView} from '../../commonStateTypes/coaBalance/coaBalancesFilterProjectView';\nimport {\n COABalanceGroupedByPeriod,\n getCOABalances,\n} from '../../commonStateTypes/coaBalance/coaBalance';\nimport {getSumOfBalancesByGroupedByPeriod} from '../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {AccountState} from '../account/accountState';\nimport {\n NestedAccountReport,\n getNestedAccountReportForAccount,\n} from '../account/subAccountSelector';\nimport {getProjectById} from '../project/projectSelector';\nimport {ProjectState} from '../project/projectReducer';\nimport {getSectionProjectViewKey} from './sectionProjectView';\nimport {\n ProjectReportWithBalances,\n SectionProjectViewReport,\n} from './sectionProjectViewSelectorTypes';\nimport {SectionProjectViewState} from './sectionProjectViewState';\n\nexport const getSectionProjectViewReport = (\n accountState: AccountState,\n projectState: ProjectState,\n sectionState: SectionProjectViewState,\n projectIds: ID[],\n id: {\n reportId: ReportID;\n sectionId: ID;\n },\n filter: COABalancesFilterProjectView\n): SectionProjectViewReport => {\n const projectIdsToShow = projectIds.filter(\n (projectId) => !filter.projectsToFilterOut.includes(projectId)\n );\n\n const projectReports: ProjectReportWithBalances[] = [];\n const sectionBalancesTotalByPeriodArray: COABalanceGroupedByPeriod[] = [];\n\n projectIdsToShow.forEach((projectId) => {\n const project = getProjectById(projectState, projectId);\n if (project == null) {\n return;\n }\n\n const projectSectionKey = getSectionProjectViewKey(\n id.sectionId,\n projectId,\n id.reportId\n );\n const projectSectionView = recordGet(\n sectionState.sectionsByKey,\n projectSectionKey,\n undefined\n );\n\n const nestedAccountHierarchy = projectSectionView?.nestedAccountIds ?? [];\n\n const nestedAccountReports: NestedAccountReport[] = [];\n nestedAccountHierarchy.forEach((accountIdHierarchy) => {\n const report = getNestedAccountReportForAccount(\n accountState,\n {\n accountIdHierarchy,\n reportId: id.reportId,\n projectsViewParentId: {\n projectId,\n sectionId: id.sectionId,\n },\n },\n filter,\n nestedAccountHierarchy.length > 1\n );\n if (report != null) {\n nestedAccountReports.push(report);\n }\n });\n\n const projectBalancesTotalByPeriod =\n projectSectionView?.balancesByPeriod ?? {};\n\n const projectReport: ProjectReportWithBalances = {\n projectId,\n projectName: project.projectName,\n accounts: nestedAccountReports,\n ...getCOABalances(projectBalancesTotalByPeriod, filter),\n projectBalancesTotalByPeriod,\n };\n\n projectReports.push(projectReport);\n sectionBalancesTotalByPeriodArray.push(projectBalancesTotalByPeriod);\n });\n\n const sectionBalancesTotalByPeriod =\n getSumOfBalancesByGroupedByPeriod(sectionBalancesTotalByPeriodArray) ?? {};\n\n return {\n projects: projectReports,\n ...getCOABalances(sectionBalancesTotalByPeriod, filter),\n sectionBalancesTotalByPeriod,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sectionProjectView.js","sourceRoot":"","sources":["../../../../src/entity/sectionProjectView/sectionProjectView.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,wBAAwB,CACtC,SAAa,EACb,SAAa,EACb,QAAkB;IAElB,OAAO,GAAG,SAAS,IAAI,SAAS,IAAI,QAAQ,EAAW,CAAC;AAC1D,CAAC","sourcesContent":["import {COABalanceGroupedByPeriod} from '../../commonStateTypes/coaBalance/coaBalance';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\n\nexport interface SectionProjectView {\n key: SectionProjectKey;\n projectId: ID;\n sectionId: ID;\n balancesByPeriod?: COABalanceGroupedByPeriod;\n}\n\nexport function getSectionProjectViewKey(\n sectionId: ID,\n projectId: ID,\n reportId: ReportID\n) {\n return `${sectionId}-${projectId}-${reportId}` as const;\n}\nexport type SectionProjectKey = ReturnType<typeof getSectionProjectViewKey>;\n"]}
1
+ {"version":3,"file":"sectionProjectView.js","sourceRoot":"","sources":["../../../../src/entity/sectionProjectView/sectionProjectView.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,wBAAwB,CACtC,SAAa,EACb,SAAa,EACb,QAAkB;IAElB,OAAO,GAAG,SAAS,IAAI,SAAS,IAAI,QAAQ,EAAW,CAAC;AAC1D,CAAC","sourcesContent":["import {NestedAccountIDHierarchy} from '../../commonStateTypes/accountView/nestedAccountID';\nimport {COABalanceGroupedByPeriod} from '../../commonStateTypes/coaBalance/coaBalance';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\n\nexport interface SectionProjectView {\n key: SectionProjectKey;\n projectId: ID;\n sectionId: ID;\n balancesByPeriod?: COABalanceGroupedByPeriod;\n nestedAccountIds?: NestedAccountIDHierarchy[];\n}\n\nexport function getSectionProjectViewKey(\n sectionId: ID,\n projectId: ID,\n reportId: ReportID\n) {\n return `${sectionId}-${projectId}-${reportId}` as const;\n}\nexport type SectionProjectKey = ReturnType<typeof getSectionProjectViewKey>;\n"]}
@@ -1,11 +1,12 @@
1
1
  import { mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod, } from '../../commonPayloadTypes/v2/coaBalancePayload';
2
2
  import { getSectionProjectViewKey, } from './sectionProjectView';
3
- export const mapProjectCOABalanceGroupedPayloadToSectionProjectView = (timeframe, projectBalancesPayload, currencyPayload, id) => {
3
+ export const mapProjectCOABalanceGroupedPayloadToSectionProjectView = (timeframe, projectBalancesPayload, currencyPayload, id, nestedAccountIds) => {
4
4
  return {
5
5
  key: getSectionProjectViewKey(id.sectionId, id.projectId, id.reportId),
6
6
  projectId: id.projectId,
7
7
  sectionId: id.sectionId,
8
8
  balancesByPeriod: mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(projectBalancesPayload, currencyPayload, timeframe),
9
+ nestedAccountIds,
9
10
  };
10
11
  };
11
12
  //# sourceMappingURL=sectionProjectViewHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sectionProjectViewHelper.js","sourceRoot":"","sources":["../../../../src/entity/sectionProjectView/sectionProjectViewHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gEAAgE,GACjE,MAAM,+CAA+C,CAAC;AAIvD,OAAO,EAEL,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,sDAAsD,GAAG,CACpE,SAAuC,EACvC,sBAA0D,EAC1D,eAAgC,EAChC,EAIC,EACmB,EAAE;IACtB,OAAO;QACL,GAAG,EAAE,wBAAwB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC;QACtE,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,gBAAgB,EACd,gEAAgE,CAC9D,sBAAsB,EACtB,eAAe,EACf,SAAS,CACV;KACJ,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n COABalanceGroupedByPeriodPayloadV2,\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod,\n} from '../../commonPayloadTypes/v2/coaBalancePayload';\nimport {CurrencyPayload} from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {\n SectionProjectView,\n getSectionProjectViewKey,\n} from './sectionProjectView';\n\nexport const mapProjectCOABalanceGroupedPayloadToSectionProjectView = (\n timeframe: 'month' | 'quarter' | 'year',\n projectBalancesPayload: COABalanceGroupedByPeriodPayloadV2,\n currencyPayload: CurrencyPayload,\n id: {\n projectId: ID;\n reportId: ReportID;\n sectionId: ID;\n }\n): SectionProjectView => {\n return {\n key: getSectionProjectViewKey(id.sectionId, id.projectId, id.reportId),\n projectId: id.projectId,\n sectionId: id.sectionId,\n balancesByPeriod:\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(\n projectBalancesPayload,\n currencyPayload,\n timeframe\n ),\n };\n};\n"]}
1
+ {"version":3,"file":"sectionProjectViewHelper.js","sourceRoot":"","sources":["../../../../src/entity/sectionProjectView/sectionProjectViewHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gEAAgE,GACjE,MAAM,+CAA+C,CAAC;AAKvD,OAAO,EAEL,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,sDAAsD,GAAG,CACpE,SAAuC,EACvC,sBAA0D,EAC1D,eAAgC,EAChC,EAIC,EACD,gBAA4C,EACxB,EAAE;IACtB,OAAO;QACL,GAAG,EAAE,wBAAwB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC;QACtE,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,gBAAgB,EACd,gEAAgE,CAC9D,sBAAsB,EACtB,eAAe,EACf,SAAS,CACV;QACH,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n COABalanceGroupedByPeriodPayloadV2,\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod,\n} from '../../commonPayloadTypes/v2/coaBalancePayload';\nimport {CurrencyPayload} from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';\nimport {NestedAccountIDHierarchy} from '../../commonStateTypes/accountView/nestedAccountID';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {\n SectionProjectView,\n getSectionProjectViewKey,\n} from './sectionProjectView';\n\nexport const mapProjectCOABalanceGroupedPayloadToSectionProjectView = (\n timeframe: 'month' | 'quarter' | 'year',\n projectBalancesPayload: COABalanceGroupedByPeriodPayloadV2,\n currencyPayload: CurrencyPayload,\n id: {\n projectId: ID;\n reportId: ReportID;\n sectionId: ID;\n },\n nestedAccountIds: NestedAccountIDHierarchy[]\n): SectionProjectView => {\n return {\n key: getSectionProjectViewKey(id.sectionId, id.projectId, id.reportId),\n projectId: id.projectId,\n sectionId: id.sectionId,\n balancesByPeriod:\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(\n projectBalancesPayload,\n currencyPayload,\n timeframe\n ),\n nestedAccountIds,\n };\n};\n"]}
@@ -1,5 +1,7 @@
1
1
  import { createSlice } from '@reduxjs/toolkit';
2
2
  import { mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod } from '../../commonPayloadTypes/v2/coaBalancePayload';
3
+ import { mapAccountMetadataPayloadToAccountMetadata, } from '../account/accountPayload';
4
+ import { getNestedAccountIDHierarchyForAccounts } from '../sectionAccountsView/getNestedAccountIDHierarchyForSection';
3
5
  import { getSectionProjectViewKey } from './sectionProjectView';
4
6
  import { mapProjectCOABalanceGroupedPayloadToSectionProjectView } from './sectionProjectViewHelper';
5
7
  export const initialState = {
@@ -23,11 +25,16 @@ const sectionProjectView = createSlice({
23
25
  };
24
26
  },
25
27
  reducer(draft, action) {
26
- const { timeframe, sectionPayload, sectionId, reportId, currencyPayload } = action.payload;
28
+ const { timeframe, sectionPayload, sectionId, reportId, currencyPayload, accountsMetadataPayload, } = action.payload;
27
29
  if (sectionPayload.projects != null) {
30
+ const accountsMetadata = accountsMetadataPayload.map((eachAccount) => mapAccountMetadataPayloadToAccountMetadata(eachAccount));
28
31
  Object.keys(sectionPayload.projects).forEach((projectId) => {
29
32
  const projectPayload = sectionPayload.projects[projectId];
30
- updateSectionProject(draft, timeframe, projectPayload, sectionId, projectId, reportId, currencyPayload);
33
+ const projectAccountIds = projectPayload.accounts != null
34
+ ? Object.keys(projectPayload.accounts)
35
+ : [];
36
+ const nestedAccountIds = getNestedAccountIDHierarchyForAccounts(projectAccountIds, accountsMetadata);
37
+ updateSectionProject(draft, timeframe, projectPayload, sectionId, projectId, reportId, currencyPayload, nestedAccountIds);
31
38
  });
32
39
  }
33
40
  },
@@ -39,15 +46,16 @@ const sectionProjectView = createSlice({
39
46
  });
40
47
  export const { updateSectionProjectView, clearAllSectionsProjectView } = sectionProjectView.actions;
41
48
  export default sectionProjectView.reducer;
42
- const updateSectionProject = (draft, timeframe, projectPayload, sectionId, projectId, reportId, currencyPayload) => {
49
+ const updateSectionProject = (draft, timeframe, projectPayload, sectionId, projectId, reportId, currencyPayload, nestedAccountIds) => {
43
50
  const sectionKey = getSectionProjectViewKey(sectionId, projectId, reportId);
44
51
  const section = draft.sectionsByKey[sectionKey];
45
52
  if (section != null) {
46
53
  draft.sectionsByKey[sectionKey].balancesByPeriod = Object.assign({}, draft.sectionsByKey[sectionKey].balancesByPeriod, mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(projectPayload, currencyPayload, timeframe));
54
+ draft.sectionsByKey[sectionKey].nestedAccountIds = nestedAccountIds;
47
55
  }
48
56
  else {
49
57
  draft.sectionsByKey[sectionKey] =
50
- mapProjectCOABalanceGroupedPayloadToSectionProjectView(timeframe, projectPayload, currencyPayload, { sectionId, projectId, reportId });
58
+ mapProjectCOABalanceGroupedPayloadToSectionProjectView(timeframe, projectPayload, currencyPayload, { sectionId, projectId, reportId }, nestedAccountIds);
51
59
  }
52
60
  };
53
61
  //# sourceMappingURL=sectionProjectViewReducer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sectionProjectViewReducer.js","sourceRoot":"","sources":["../../../../src/entity/sectionProjectView/sectionProjectViewReducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAqC,gEAAgE,EAAC,MAAM,+CAA+C,CAAC;AAMnK,OAAO,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAC,sDAAsD,EAAC,MAAM,4BAA4B,CAAC;AAGlG,MAAM,CAAC,MAAM,YAAY,GAA4B;IACnD,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,kBAAkB,GAAG,WAAW,CAAC;IACrC,IAAI,EAAE,oBAAoB;IAC1B,YAAY;IACZ,QAAQ,EAAE;QACR,wBAAwB,EAAE;YACxB,OAAO,CACL,SAAuC,EACvC,SAAa,EACb,QAAkB,EAClB,cAA0D,EAC1D,uBAAiD,EACjD,eAAgC;gBAEhC,OAAO;oBACL,OAAO,EAAE;wBACP,SAAS;wBACT,QAAQ;wBACR,SAAS;wBACT,cAAc;wBACd,uBAAuB;wBACvB,eAAe;qBAChB;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,CACL,KAAK,EACL,MAOE;gBAEF,MAAM,EAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAC,GACrE,MAAM,CAAC,OAAO,CAAC;gBAEjB,IAAI,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACpC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;wBACzD,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBAC1D,oBAAoB,CAClB,KAAK,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,eAAe,CAChB,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF;QACD,2BAA2B,CAAC,KAAK;YAC/B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACrC,CAAC;KACF;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAC,wBAAwB,EAAE,2BAA2B,EAAC,GAClE,kBAAkB,CAAC,OAAO,CAAC;AAE7B,eAAe,kBAAkB,CAAC,OAAO,CAAC;AAE1C,MAAM,oBAAoB,GAAG,CAC3B,KAA8B,EAC9B,SAAuC,EACvC,cAAkD,EAClD,SAAa,EACb,SAAa,EACb,QAAkB,EAClB,eAAgC,EAChC,EAAE;IACF,MAAM,UAAU,GAAG,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAC9D,EAAE,EACF,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAChD,gEAAgE,CAC9D,cAAc,EACd,eAAe,EACf,SAAS,CACV,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;YAC7B,sDAAsD,CACpD,SAAS,EACT,cAAc,EACd,eAAe,EACf,EAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAC,CACjC,CAAC;IACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["import {PayloadAction, createSlice} from '@reduxjs/toolkit';\n\nimport {COABalanceGroupedByPeriodPayloadV2, mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod} from '../../commonPayloadTypes/v2/coaBalancePayload';\nimport {CurrencyPayload} from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {AccountMetadataPayload} from '../account/accountPayload';\nimport {SectionByProjectCOABalanceGroupedPayloadV2} from '../../view/profitAndLossProjectView/profitAndLossProjectViewPayload';\nimport {getSectionProjectViewKey} from './sectionProjectView';\nimport {mapProjectCOABalanceGroupedPayloadToSectionProjectView} from './sectionProjectViewHelper';\nimport {SectionProjectViewState} from './sectionProjectViewState';\n\nexport const initialState: SectionProjectViewState = {\n sectionsByKey: {},\n};\n\nconst sectionProjectView = createSlice({\n name: 'sectionProjectView',\n initialState,\n reducers: {\n updateSectionProjectView: {\n prepare(\n timeframe: 'month' | 'quarter' | 'year',\n sectionId: ID,\n reportId: ReportID,\n sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2,\n accountsMetadataPayload: AccountMetadataPayload[],\n currencyPayload: CurrencyPayload\n ) {\n return {\n payload: {\n timeframe,\n reportId,\n sectionId,\n sectionPayload,\n accountsMetadataPayload,\n currencyPayload,\n },\n };\n },\n reducer(\n draft,\n action: PayloadAction<{\n accountsMetadataPayload: AccountMetadataPayload[];\n currencyPayload: CurrencyPayload;\n reportId: ReportID;\n sectionId: ID;\n sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2;\n timeframe: 'month' | 'quarter' | 'year';\n }>\n ) {\n const {timeframe, sectionPayload, sectionId, reportId, currencyPayload} =\n action.payload;\n\n if (sectionPayload.projects != null) {\n Object.keys(sectionPayload.projects).forEach((projectId) => {\n const projectPayload = sectionPayload.projects[projectId];\n updateSectionProject(\n draft,\n timeframe,\n projectPayload,\n sectionId,\n projectId,\n reportId,\n currencyPayload\n );\n });\n }\n },\n },\n clearAllSectionsProjectView(draft) {\n Object.assign(draft, initialState);\n },\n },\n});\n\nexport const {updateSectionProjectView, clearAllSectionsProjectView} =\n sectionProjectView.actions;\n\nexport default sectionProjectView.reducer;\n\nconst updateSectionProject = (\n draft: SectionProjectViewState,\n timeframe: 'month' | 'quarter' | 'year',\n projectPayload: COABalanceGroupedByPeriodPayloadV2,\n sectionId: ID,\n projectId: ID,\n reportId: ReportID,\n currencyPayload: CurrencyPayload\n) => {\n const sectionKey = getSectionProjectViewKey(sectionId, projectId, reportId);\n const section = draft.sectionsByKey[sectionKey];\n\n if (section != null) {\n draft.sectionsByKey[sectionKey].balancesByPeriod = Object.assign(\n {},\n draft.sectionsByKey[sectionKey].balancesByPeriod,\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(\n projectPayload,\n currencyPayload,\n timeframe\n )\n );\n } else {\n draft.sectionsByKey[sectionKey] =\n mapProjectCOABalanceGroupedPayloadToSectionProjectView(\n timeframe,\n projectPayload,\n currencyPayload,\n {sectionId, projectId, reportId}\n );\n }\n};\n"]}
1
+ {"version":3,"file":"sectionProjectViewReducer.js","sourceRoot":"","sources":["../../../../src/entity/sectionProjectView/sectionProjectViewReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {PayloadAction, createSlice} from '@reduxjs/toolkit';\n\nimport {mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod} from '../../commonPayloadTypes/v2/coaBalancePayload';\nimport {CurrencyPayload} from '../../commonPayloadTypes/v2/viewAndReportPayloadv2';\nimport {NestedAccountIDHierarchy} from '../../commonStateTypes/accountView/nestedAccountID';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {\n AccountMetadataPayload,\n mapAccountMetadataPayloadToAccountMetadata,\n} from '../account/accountPayload';\nimport {\n ProjectCOABalanceGroupedPayloadV2,\n SectionByProjectCOABalanceGroupedPayloadV2,\n} from '../../view/profitAndLossProjectView/profitAndLossProjectViewPayload';\nimport {getNestedAccountIDHierarchyForAccounts} from '../sectionAccountsView/getNestedAccountIDHierarchyForSection';\nimport {getSectionProjectViewKey} from './sectionProjectView';\nimport {mapProjectCOABalanceGroupedPayloadToSectionProjectView} from './sectionProjectViewHelper';\nimport {SectionProjectViewState} from './sectionProjectViewState';\n\nexport const initialState: SectionProjectViewState = {\n sectionsByKey: {},\n};\n\nconst sectionProjectView = createSlice({\n name: 'sectionProjectView',\n initialState,\n reducers: {\n updateSectionProjectView: {\n prepare(\n timeframe: 'month' | 'quarter' | 'year',\n sectionId: ID,\n reportId: ReportID,\n sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2,\n accountsMetadataPayload: AccountMetadataPayload[],\n currencyPayload: CurrencyPayload\n ) {\n return {\n payload: {\n timeframe,\n reportId,\n sectionId,\n sectionPayload,\n accountsMetadataPayload,\n currencyPayload,\n },\n };\n },\n reducer(\n draft,\n action: PayloadAction<{\n accountsMetadataPayload: AccountMetadataPayload[];\n currencyPayload: CurrencyPayload;\n reportId: ReportID;\n sectionId: ID;\n sectionPayload: SectionByProjectCOABalanceGroupedPayloadV2;\n timeframe: 'month' | 'quarter' | 'year';\n }>\n ) {\n const {\n timeframe,\n sectionPayload,\n sectionId,\n reportId,\n currencyPayload,\n accountsMetadataPayload,\n } = action.payload;\n\n if (sectionPayload.projects != null) {\n const accountsMetadata = accountsMetadataPayload.map((eachAccount) =>\n mapAccountMetadataPayloadToAccountMetadata(eachAccount)\n );\n\n Object.keys(sectionPayload.projects).forEach((projectId) => {\n const projectPayload = sectionPayload.projects[projectId];\n const projectAccountIds =\n projectPayload.accounts != null\n ? Object.keys(projectPayload.accounts)\n : [];\n const nestedAccountIds = getNestedAccountIDHierarchyForAccounts(\n projectAccountIds,\n accountsMetadata\n );\n updateSectionProject(\n draft,\n timeframe,\n projectPayload,\n sectionId,\n projectId,\n reportId,\n currencyPayload,\n nestedAccountIds\n );\n });\n }\n },\n },\n clearAllSectionsProjectView(draft) {\n Object.assign(draft, initialState);\n },\n },\n});\n\nexport const {updateSectionProjectView, clearAllSectionsProjectView} =\n sectionProjectView.actions;\n\nexport default sectionProjectView.reducer;\n\nconst updateSectionProject = (\n draft: SectionProjectViewState,\n timeframe: 'month' | 'quarter' | 'year',\n projectPayload: ProjectCOABalanceGroupedPayloadV2,\n sectionId: ID,\n projectId: ID,\n reportId: ReportID,\n currencyPayload: CurrencyPayload,\n nestedAccountIds: NestedAccountIDHierarchy[]\n) => {\n const sectionKey = getSectionProjectViewKey(sectionId, projectId, reportId);\n const section = draft.sectionsByKey[sectionKey];\n\n if (section != null) {\n draft.sectionsByKey[sectionKey].balancesByPeriod = Object.assign(\n {},\n draft.sectionsByKey[sectionKey].balancesByPeriod,\n mapCOABalanceGroupedByPeriodPayloadV2ToCOABalanceGroupedByPeriod(\n projectPayload,\n currencyPayload,\n timeframe\n )\n );\n draft.sectionsByKey[sectionKey].nestedAccountIds = nestedAccountIds;\n } else {\n draft.sectionsByKey[sectionKey] =\n mapProjectCOABalanceGroupedPayloadToSectionProjectView(\n timeframe,\n projectPayload,\n currencyPayload,\n {sectionId, projectId, reportId},\n nestedAccountIds\n );\n }\n};\n"]}
@@ -1,49 +1,21 @@
1
1
  import recordGet from 'lodash/get';
2
2
  import { getCOABalances, } from '../../commonStateTypes/coaBalance/coaBalance';
3
3
  import { getSumOfBalancesByGroupedByPeriod } from '../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod';
4
- import { mapAccountMetadataPayloadToAccountMetadata } from '../account/accountPayload';
5
- import { getAccountKey } from '../account/accountState';
6
4
  import { getNestedAccountReportForAccount, } from '../account/subAccountSelector';
7
5
  import { getProjectById } from '../project/projectSelector';
8
- import { getNestedAccountIDHierarchyForAccounts } from '../sectionAccountsView/getNestedAccountIDHierarchyForSection';
9
6
  import { getSectionProjectViewKey } from './sectionProjectView';
10
7
  export const getSectionProjectViewReport = (accountState, projectState, sectionState, projectIds, id, filter) => {
11
8
  const projectIdsToShow = projectIds.filter((projectId) => !filter.projectsToFilterOut.includes(projectId));
12
- console.log('$$$ [getSectionProjectViewReport] IN section:', id.sectionId, 'reportId:', id.reportId, 'projectIds:', projectIds, 'projectIdsToShow:', projectIdsToShow, 'filter:', filter);
13
- console.log('$$$ [getSectionProjectViewReport] sectionState.sectionsByKey keys:', Object.keys(sectionState.sectionsByKey));
14
- console.log('$$$ [getSectionProjectViewReport] projectState.projects keys:', Object.keys(projectState.projects));
15
9
  const projectReports = [];
16
10
  const sectionBalancesTotalByPeriodArray = [];
17
- const accountsByProject = getAccountsByProject(accountState, id.sectionId, id.reportId);
18
- console.log('$$$ [getSectionProjectViewReport] accountsByProject for section', id.sectionId, ':', accountsByProject);
19
11
  projectIdsToShow.forEach((projectId) => {
20
12
  const project = getProjectById(projectState, projectId);
21
13
  if (project == null) {
22
- console.log('$$$ [getSectionProjectViewReport] SKIP projectId', projectId, '- not found in projectState');
23
14
  return;
24
15
  }
25
- const projectAccountIds = accountsByProject[projectId] ?? [];
26
- console.log('$$$ [getSectionProjectViewReport] project', projectId, '(', project.projectName, ') has', projectAccountIds.length, 'accountIds:', projectAccountIds);
27
- const accountsMetadata = projectAccountIds
28
- .map((accountId) => {
29
- const key = getAccountKey(id.reportId, accountId, undefined, undefined, { projectId, sectionId: id.sectionId });
30
- const account = accountState.accountsByKey[key];
31
- if (account == null) {
32
- console.log('$$$ [getSectionProjectViewReport] account lookup MISS for key', key);
33
- return undefined;
34
- }
35
- return mapAccountMetadataPayloadToAccountMetadata({
36
- account_id: account.accountId,
37
- account_name: account.accountName,
38
- account_description: account.accountDescription,
39
- labels: account.labels,
40
- is_sub_account: account.accountsViewParentId != null,
41
- parent_account_id: account.accountsViewParentId?.parentAccountId?.[0] ?? null,
42
- });
43
- })
44
- .filter((metadata) => metadata != null);
45
- const nestedAccountHierarchy = getNestedAccountIDHierarchyForAccounts(projectAccountIds, accountsMetadata);
46
- console.log('$$$ [getSectionProjectViewReport] project', projectId, 'nestedAccountHierarchy length:', nestedAccountHierarchy.length, 'hierarchy:', nestedAccountHierarchy);
16
+ const projectSectionKey = getSectionProjectViewKey(id.sectionId, projectId, id.reportId);
17
+ const projectSectionView = recordGet(sectionState.sectionsByKey, projectSectionKey, undefined);
18
+ const nestedAccountHierarchy = projectSectionView?.nestedAccountIds ?? [];
47
19
  const nestedAccountReports = [];
48
20
  nestedAccountHierarchy.forEach((accountIdHierarchy) => {
49
21
  const report = getNestedAccountReportForAccount(accountState, {
@@ -57,13 +29,7 @@ export const getSectionProjectViewReport = (accountState, projectState, sectionS
57
29
  if (report != null) {
58
30
  nestedAccountReports.push(report);
59
31
  }
60
- else {
61
- console.log('$$$ [getSectionProjectViewReport] nested report NULL for hierarchy', accountIdHierarchy);
62
- }
63
32
  });
64
- const projectSectionKey = getSectionProjectViewKey(id.sectionId, projectId, id.reportId);
65
- const projectSectionView = recordGet(sectionState.sectionsByKey, projectSectionKey, undefined);
66
- console.log('$$$ [getSectionProjectViewReport] project', projectId, 'projectSectionKey:', projectSectionKey, 'projectSectionView found:', projectSectionView != null, 'balancesByPeriod keys:', projectSectionView?.balancesByPeriod ? Object.keys(projectSectionView.balancesByPeriod) : 'n/a');
67
33
  const projectBalancesTotalByPeriod = projectSectionView?.balancesByPeriod ?? {};
68
34
  const projectReport = {
69
35
  projectId,
@@ -72,46 +38,14 @@ export const getSectionProjectViewReport = (accountState, projectState, sectionS
72
38
  ...getCOABalances(projectBalancesTotalByPeriod, filter),
73
39
  projectBalancesTotalByPeriod,
74
40
  };
75
- console.log('$$$ [getSectionProjectViewReport] built projectReport for', projectId, '- accounts:', nestedAccountReports.length, 'report:', projectReport);
76
41
  projectReports.push(projectReport);
77
42
  sectionBalancesTotalByPeriodArray.push(projectBalancesTotalByPeriod);
78
43
  });
79
44
  const sectionBalancesTotalByPeriod = getSumOfBalancesByGroupedByPeriod(sectionBalancesTotalByPeriodArray) ?? {};
80
- console.log('$$$ [getSectionProjectViewReport] OUT section:', id.sectionId, 'projectReports count:', projectReports.length, 'projectReports:', projectReports);
81
45
  return {
82
46
  projects: projectReports,
83
47
  ...getCOABalances(sectionBalancesTotalByPeriod, filter),
84
48
  sectionBalancesTotalByPeriod,
85
49
  };
86
50
  };
87
- const getAccountsByProject = (accountState, sectionId, reportId) => {
88
- const result = {};
89
- const allKeys = Object.keys(accountState.accountsByKey);
90
- let matched = 0;
91
- let skippedNoProjectParent = 0;
92
- let skippedSectionMismatch = 0;
93
- let skippedReportMismatch = 0;
94
- Object.values(accountState.accountsByKey).forEach((account) => {
95
- if (account.projectsViewParentId == null) {
96
- skippedNoProjectParent += 1;
97
- return;
98
- }
99
- if (account.projectsViewParentId.sectionId !== sectionId) {
100
- skippedSectionMismatch += 1;
101
- return;
102
- }
103
- if (!account.key.endsWith(reportId)) {
104
- skippedReportMismatch += 1;
105
- return;
106
- }
107
- matched += 1;
108
- const projectId = account.projectsViewParentId.projectId;
109
- if (result[projectId] == null) {
110
- result[projectId] = [];
111
- }
112
- result[projectId].push(account.accountId);
113
- });
114
- console.log('$$$ [getAccountsByProject] section:', sectionId, 'reportId:', reportId, 'totalAccounts:', allKeys.length, 'matched:', matched, 'skippedNoProjectParent:', skippedNoProjectParent, 'skippedSectionMismatch:', skippedSectionMismatch, 'skippedReportMismatch:', skippedReportMismatch);
115
- return result;
116
- };
117
51
  //# sourceMappingURL=sectionProjectViewSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sectionProjectViewSelector.js","sourceRoot":"","sources":["../../../../src/entity/sectionProjectView/sectionProjectViewSelector.ts"],"names":[],"mappings":"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","sourcesContent":["import recordGet from 'lodash/get';\n\nimport {COABalancesFilterProjectView} from '../../commonStateTypes/coaBalance/coaBalancesFilterProjectView';\nimport {\n COABalanceGroupedByPeriod,\n getCOABalances,\n} from '../../commonStateTypes/coaBalance/coaBalance';\nimport {getSumOfBalancesByGroupedByPeriod} from '../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {mapAccountMetadataPayloadToAccountMetadata} from '../account/accountPayload';\nimport {Account, AccountState, getAccountKey} from '../account/accountState';\nimport {\n NestedAccountReport,\n getNestedAccountReportForAccount,\n} from '../account/subAccountSelector';\nimport {getProjectById} from '../project/projectSelector';\nimport {ProjectState} from '../project/projectReducer';\nimport {getNestedAccountIDHierarchyForAccounts} from '../sectionAccountsView/getNestedAccountIDHierarchyForSection';\nimport {getSectionProjectViewKey} from './sectionProjectView';\nimport {\n ProjectReportWithBalances,\n SectionProjectViewReport,\n} from './sectionProjectViewSelectorTypes';\nimport {SectionProjectViewState} from './sectionProjectViewState';\n\nexport const getSectionProjectViewReport = (\n accountState: AccountState,\n projectState: ProjectState,\n sectionState: SectionProjectViewState,\n projectIds: ID[],\n id: {\n reportId: ReportID;\n sectionId: ID;\n },\n filter: COABalancesFilterProjectView\n): SectionProjectViewReport => {\n const projectIdsToShow = projectIds.filter(\n (projectId) => !filter.projectsToFilterOut.includes(projectId)\n );\n\n console.log('$$$ [getSectionProjectViewReport] IN section:', id.sectionId, 'reportId:', id.reportId, 'projectIds:', projectIds, 'projectIdsToShow:', projectIdsToShow, 'filter:', filter);\n console.log('$$$ [getSectionProjectViewReport] sectionState.sectionsByKey keys:', Object.keys(sectionState.sectionsByKey));\n console.log('$$$ [getSectionProjectViewReport] projectState.projects keys:', Object.keys(projectState.projects));\n\n const projectReports: ProjectReportWithBalances[] = [];\n const sectionBalancesTotalByPeriodArray: COABalanceGroupedByPeriod[] = [];\n\n const accountsByProject = getAccountsByProject(\n accountState,\n id.sectionId,\n id.reportId\n );\n\n console.log('$$$ [getSectionProjectViewReport] accountsByProject for section', id.sectionId, ':', accountsByProject);\n\n projectIdsToShow.forEach((projectId) => {\n const project = getProjectById(projectState, projectId);\n if (project == null) {\n console.log('$$$ [getSectionProjectViewReport] SKIP projectId', projectId, '- not found in projectState');\n return;\n }\n\n const projectAccountIds = accountsByProject[projectId] ?? [];\n\n console.log('$$$ [getSectionProjectViewReport] project', projectId, '(', project.projectName, ') has', projectAccountIds.length, 'accountIds:', projectAccountIds);\n\n const accountsMetadata = projectAccountIds\n .map((accountId) => {\n const key = getAccountKey(\n id.reportId,\n accountId,\n undefined,\n undefined,\n {projectId, sectionId: id.sectionId}\n );\n const account = accountState.accountsByKey[key];\n if (account == null) {\n console.log('$$$ [getSectionProjectViewReport] account lookup MISS for key', key);\n return undefined;\n }\n return mapAccountMetadataPayloadToAccountMetadata({\n account_id: account.accountId,\n account_name: account.accountName,\n account_description: account.accountDescription,\n labels: account.labels,\n is_sub_account: account.accountsViewParentId != null,\n parent_account_id:\n account.accountsViewParentId?.parentAccountId?.[0] ?? null,\n });\n })\n .filter(\n (metadata): metadata is NonNullable<typeof metadata> =>\n metadata != null\n );\n\n const nestedAccountHierarchy = getNestedAccountIDHierarchyForAccounts(\n projectAccountIds,\n accountsMetadata\n );\n\n console.log('$$$ [getSectionProjectViewReport] project', projectId, 'nestedAccountHierarchy length:', nestedAccountHierarchy.length, 'hierarchy:', nestedAccountHierarchy);\n\n const nestedAccountReports: NestedAccountReport[] = [];\n nestedAccountHierarchy.forEach((accountIdHierarchy) => {\n const report = getNestedAccountReportForAccount(\n accountState,\n {\n accountIdHierarchy,\n reportId: id.reportId,\n projectsViewParentId: {\n projectId,\n sectionId: id.sectionId,\n },\n },\n filter,\n nestedAccountHierarchy.length > 1\n );\n if (report != null) {\n nestedAccountReports.push(report);\n } else {\n console.log('$$$ [getSectionProjectViewReport] nested report NULL for hierarchy', accountIdHierarchy);\n }\n });\n\n const projectSectionKey = getSectionProjectViewKey(\n id.sectionId,\n projectId,\n id.reportId\n );\n const projectSectionView = recordGet(\n sectionState.sectionsByKey,\n projectSectionKey,\n undefined\n );\n\n console.log('$$$ [getSectionProjectViewReport] project', projectId, 'projectSectionKey:', projectSectionKey, 'projectSectionView found:', projectSectionView != null, 'balancesByPeriod keys:', projectSectionView?.balancesByPeriod ? Object.keys(projectSectionView.balancesByPeriod) : 'n/a');\n\n const projectBalancesTotalByPeriod =\n projectSectionView?.balancesByPeriod ?? {};\n\n const projectReport: ProjectReportWithBalances = {\n projectId,\n projectName: project.projectName,\n accounts: nestedAccountReports,\n ...getCOABalances(projectBalancesTotalByPeriod, filter),\n projectBalancesTotalByPeriod,\n };\n\n console.log('$$$ [getSectionProjectViewReport] built projectReport for', projectId, '- accounts:', nestedAccountReports.length, 'report:', projectReport);\n\n projectReports.push(projectReport);\n sectionBalancesTotalByPeriodArray.push(projectBalancesTotalByPeriod);\n });\n\n const sectionBalancesTotalByPeriod =\n getSumOfBalancesByGroupedByPeriod(sectionBalancesTotalByPeriodArray) ?? {};\n\n console.log('$$$ [getSectionProjectViewReport] OUT section:', id.sectionId, 'projectReports count:', projectReports.length, 'projectReports:', projectReports);\n\n return {\n projects: projectReports,\n ...getCOABalances(sectionBalancesTotalByPeriod, filter),\n sectionBalancesTotalByPeriod,\n };\n};\n\nconst getAccountsByProject = (\n accountState: AccountState,\n sectionId: ID,\n reportId: ReportID\n): Record<ID, ID[]> => {\n const result: Record<ID, ID[]> = {};\n const allKeys = Object.keys(accountState.accountsByKey);\n let matched = 0;\n let skippedNoProjectParent = 0;\n let skippedSectionMismatch = 0;\n let skippedReportMismatch = 0;\n Object.values(accountState.accountsByKey).forEach((account: Account) => {\n if (account.projectsViewParentId == null) {\n skippedNoProjectParent += 1;\n return;\n }\n if (account.projectsViewParentId.sectionId !== sectionId) {\n skippedSectionMismatch += 1;\n return;\n }\n if (!account.key.endsWith(reportId)) {\n skippedReportMismatch += 1;\n return;\n }\n matched += 1;\n const projectId = account.projectsViewParentId.projectId;\n if (result[projectId] == null) {\n result[projectId] = [];\n }\n result[projectId].push(account.accountId);\n });\n console.log('$$$ [getAccountsByProject] section:', sectionId, 'reportId:', reportId, 'totalAccounts:', allKeys.length, 'matched:', matched, 'skippedNoProjectParent:', skippedNoProjectParent, 'skippedSectionMismatch:', skippedSectionMismatch, 'skippedReportMismatch:', skippedReportMismatch);\n return result;\n};\n"]}
1
+ {"version":3,"file":"sectionProjectViewSelector.js","sourceRoot":"","sources":["../../../../src/entity/sectionProjectView/sectionProjectViewSelector.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,OAAO,EAEL,cAAc,GACf,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAC,iCAAiC,EAAC,MAAM,iFAAiF,CAAC;AAIlI,OAAO,EAEL,gCAAgC,GACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAC;AAO9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,YAA0B,EAC1B,YAA0B,EAC1B,YAAqC,EACrC,UAAgB,EAChB,EAGC,EACD,MAAoC,EACV,EAAE;IAC5B,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC/D,CAAC;IAEF,MAAM,cAAc,GAAgC,EAAE,CAAC;IACvD,MAAM,iCAAiC,GAAgC,EAAE,CAAC;IAE1E,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,wBAAwB,CAChD,EAAE,CAAC,SAAS,EACZ,SAAS,EACT,EAAE,CAAC,QAAQ,CACZ,CAAC;QACF,MAAM,kBAAkB,GAAG,SAAS,CAClC,YAAY,CAAC,aAAa,EAC1B,iBAAiB,EACjB,SAAS,CACV,CAAC;QAEF,MAAM,sBAAsB,GAAG,kBAAkB,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAE1E,MAAM,oBAAoB,GAA0B,EAAE,CAAC;QACvD,sBAAsB,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,EAAE;YACpD,MAAM,MAAM,GAAG,gCAAgC,CAC7C,YAAY,EACZ;gBACE,kBAAkB;gBAClB,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,oBAAoB,EAAE;oBACpB,SAAS;oBACT,SAAS,EAAE,EAAE,CAAC,SAAS;iBACxB;aACF,EACD,MAAM,EACN,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAClC,CAAC;YACF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,4BAA4B,GAChC,kBAAkB,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAE7C,MAAM,aAAa,GAA8B;YAC/C,SAAS;YACT,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,oBAAoB;YAC9B,GAAG,cAAc,CAAC,4BAA4B,EAAE,MAAM,CAAC;YACvD,4BAA4B;SAC7B,CAAC;QAEF,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,iCAAiC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,MAAM,4BAA4B,GAChC,iCAAiC,CAAC,iCAAiC,CAAC,IAAI,EAAE,CAAC;IAE7E,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,GAAG,cAAc,CAAC,4BAA4B,EAAE,MAAM,CAAC;QACvD,4BAA4B;KAC7B,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import recordGet from 'lodash/get';\n\nimport {COABalancesFilterProjectView} from '../../commonStateTypes/coaBalance/coaBalancesFilterProjectView';\nimport {\n COABalanceGroupedByPeriod,\n getCOABalances,\n} from '../../commonStateTypes/coaBalance/coaBalance';\nimport {getSumOfBalancesByGroupedByPeriod} from '../../commonStateTypes/coaBalance/classBalances/getSumOfBalancesGroupedByPeriod';\nimport {ID} from '../../commonStateTypes/common';\nimport {ReportID} from '../../commonStateTypes/viewAndReport/viewAndReport';\nimport {AccountState} from '../account/accountState';\nimport {\n NestedAccountReport,\n getNestedAccountReportForAccount,\n} from '../account/subAccountSelector';\nimport {getProjectById} from '../project/projectSelector';\nimport {ProjectState} from '../project/projectReducer';\nimport {getSectionProjectViewKey} from './sectionProjectView';\nimport {\n ProjectReportWithBalances,\n SectionProjectViewReport,\n} from './sectionProjectViewSelectorTypes';\nimport {SectionProjectViewState} from './sectionProjectViewState';\n\nexport const getSectionProjectViewReport = (\n accountState: AccountState,\n projectState: ProjectState,\n sectionState: SectionProjectViewState,\n projectIds: ID[],\n id: {\n reportId: ReportID;\n sectionId: ID;\n },\n filter: COABalancesFilterProjectView\n): SectionProjectViewReport => {\n const projectIdsToShow = projectIds.filter(\n (projectId) => !filter.projectsToFilterOut.includes(projectId)\n );\n\n const projectReports: ProjectReportWithBalances[] = [];\n const sectionBalancesTotalByPeriodArray: COABalanceGroupedByPeriod[] = [];\n\n projectIdsToShow.forEach((projectId) => {\n const project = getProjectById(projectState, projectId);\n if (project == null) {\n return;\n }\n\n const projectSectionKey = getSectionProjectViewKey(\n id.sectionId,\n projectId,\n id.reportId\n );\n const projectSectionView = recordGet(\n sectionState.sectionsByKey,\n projectSectionKey,\n undefined\n );\n\n const nestedAccountHierarchy = projectSectionView?.nestedAccountIds ?? [];\n\n const nestedAccountReports: NestedAccountReport[] = [];\n nestedAccountHierarchy.forEach((accountIdHierarchy) => {\n const report = getNestedAccountReportForAccount(\n accountState,\n {\n accountIdHierarchy,\n reportId: id.reportId,\n projectsViewParentId: {\n projectId,\n sectionId: id.sectionId,\n },\n },\n filter,\n nestedAccountHierarchy.length > 1\n );\n if (report != null) {\n nestedAccountReports.push(report);\n }\n });\n\n const projectBalancesTotalByPeriod =\n projectSectionView?.balancesByPeriod ?? {};\n\n const projectReport: ProjectReportWithBalances = {\n projectId,\n projectName: project.projectName,\n accounts: nestedAccountReports,\n ...getCOABalances(projectBalancesTotalByPeriod, filter),\n projectBalancesTotalByPeriod,\n };\n\n projectReports.push(projectReport);\n sectionBalancesTotalByPeriodArray.push(projectBalancesTotalByPeriod);\n });\n\n const sectionBalancesTotalByPeriod =\n getSumOfBalancesByGroupedByPeriod(sectionBalancesTotalByPeriodArray) ?? {};\n\n return {\n projects: projectReports,\n ...getCOABalances(sectionBalancesTotalByPeriod, filter),\n sectionBalancesTotalByPeriod,\n };\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.0.9-betaRD3",
3
+ "version": "5.0.9-betaRD4",
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",