@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.
- package/lib/entity/sectionProjectView/sectionProjectView.d.ts +2 -0
- package/lib/entity/sectionProjectView/sectionProjectView.js.map +1 -1
- package/lib/entity/sectionProjectView/sectionProjectViewHelper.d.ts +2 -1
- package/lib/entity/sectionProjectView/sectionProjectViewHelper.js +2 -1
- package/lib/entity/sectionProjectView/sectionProjectViewHelper.js.map +1 -1
- package/lib/entity/sectionProjectView/sectionProjectViewReducer.js +12 -4
- package/lib/entity/sectionProjectView/sectionProjectViewReducer.js.map +1 -1
- package/lib/entity/sectionProjectView/sectionProjectViewSelector.js +3 -69
- package/lib/entity/sectionProjectView/sectionProjectViewSelector.js.map +1 -1
- package/lib/esm/entity/sectionProjectView/sectionProjectView.js.map +1 -1
- package/lib/esm/entity/sectionProjectView/sectionProjectViewHelper.js +2 -1
- package/lib/esm/entity/sectionProjectView/sectionProjectViewHelper.js.map +1 -1
- package/lib/esm/entity/sectionProjectView/sectionProjectViewReducer.js +12 -4
- package/lib/esm/entity/sectionProjectView/sectionProjectViewReducer.js.map +1 -1
- package/lib/esm/entity/sectionProjectView/sectionProjectViewSelector.js +3 -69
- package/lib/esm/entity/sectionProjectView/sectionProjectViewSelector.js.map +1 -1
- package/package.json +1 -1
|
@@ -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":";;
|
|
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;
|
|
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
|
-
|
|
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,
|
|
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
|
|
32
|
-
|
|
33
|
-
const
|
|
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":"
|
|
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;
|
|
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
|
-
|
|
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,
|
|
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
|
|
26
|
-
|
|
27
|
-
const
|
|
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-
|
|
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",
|