@zeniai/client-epic-state 5.2.89 → 5.2.90
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/invoicing/creditNote/creditNotePayload.d.ts +2 -0
- package/lib/entity/invoicing/creditNote/creditNotePayload.js +5 -0
- package/lib/entity/invoicing/creditNote/creditNoteState.d.ts +1 -0
- package/lib/esm/entity/invoicing/creditNote/creditNotePayload.js +5 -0
- package/lib/esm/view/financeStatement/financeStatementReducer.js +6 -11
- package/lib/esm/view/reportUIOptions/financeStatementCompareBalances.js +16 -0
- package/lib/esm/view/reportUIOptions/updateReportUIOptionCompareModeEpic.js +2 -5
- package/lib/esm/view/reportUIOptions/updateReportUIOptionIsCompareModeOnEpic.js +6 -10
- package/lib/view/financeStatement/financeStatementReducer.js +6 -11
- package/lib/view/reportUIOptions/financeStatementCompareBalances.d.ts +2 -0
- package/lib/view/reportUIOptions/financeStatementCompareBalances.js +19 -0
- package/lib/view/reportUIOptions/updateReportUIOptionCompareModeEpic.js +2 -5
- package/lib/view/reportUIOptions/updateReportUIOptionIsCompareModeOnEpic.js +6 -10
- package/package.json +1 -1
|
@@ -39,6 +39,8 @@ export interface InvoicingCreditNotePayload {
|
|
|
39
39
|
status?: InvoicingCreditNoteStatus;
|
|
40
40
|
sub_total?: number;
|
|
41
41
|
subscription_id?: string;
|
|
42
|
+
/** The subscription's display number (SUB-####), resolved by the service. */
|
|
43
|
+
subscription_number?: string | null;
|
|
42
44
|
total?: number;
|
|
43
45
|
type?: InvoicingCreditNoteType;
|
|
44
46
|
}
|
|
@@ -54,6 +54,11 @@ const mapInvoicingCreditNotePayloadToState = (payload) => {
|
|
|
54
54
|
status: payload.status,
|
|
55
55
|
subTotal: payload.sub_total != null ? toAmt(payload.sub_total) : undefined,
|
|
56
56
|
subscriptionID: payload.subscription_id,
|
|
57
|
+
// Blank when the credit note has no subscription; the API sends "".
|
|
58
|
+
subscriptionNumber: payload.subscription_number != null &&
|
|
59
|
+
payload.subscription_number.trim() !== ''
|
|
60
|
+
? payload.subscription_number.trim()
|
|
61
|
+
: undefined,
|
|
57
62
|
total: payload.total != null ? toAmt(payload.total) : undefined,
|
|
58
63
|
type: payload.type,
|
|
59
64
|
};
|
|
@@ -49,6 +49,11 @@ export const mapInvoicingCreditNotePayloadToState = (payload) => {
|
|
|
49
49
|
status: payload.status,
|
|
50
50
|
subTotal: payload.sub_total != null ? toAmt(payload.sub_total) : undefined,
|
|
51
51
|
subscriptionID: payload.subscription_id,
|
|
52
|
+
// Blank when the credit note has no subscription; the API sends "".
|
|
53
|
+
subscriptionNumber: payload.subscription_number != null &&
|
|
54
|
+
payload.subscription_number.trim() !== ''
|
|
55
|
+
? payload.subscription_number.trim()
|
|
56
|
+
: undefined,
|
|
52
57
|
total: payload.total != null ? toAmt(payload.total) : undefined,
|
|
53
58
|
type: payload.type,
|
|
54
59
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
import { stripCompareAdditionalBalanceTypes, } from '../../commonStateTypes/coaBalance/coaBalanceType';
|
|
2
3
|
import { extractThisPeriod, getMatchingThisPeriod, } from '../../commonStateTypes/viewAndReport/thisPeriodHelpers';
|
|
3
4
|
import { clearAll } from '../../rootActions';
|
|
4
5
|
import { dateNow } from '../../zeniDayJS';
|
|
@@ -88,17 +89,11 @@ const financeStatement = createSlice({
|
|
|
88
89
|
updateFinanceStatementAdditionalBalancesSelection(draft, action) {
|
|
89
90
|
const { additionalBalances: additionalBalancesPayload, maxNumOfPeriodsToHighlight, } = action.payload;
|
|
90
91
|
const additionalBalances = additionalBalancesPayload ?? [];
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
additionalBalances.includes(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (id > -1) {
|
|
97
|
-
const balance = tempAdditionalBalances.splice(id, 1);
|
|
98
|
-
tempAdditionalBalances = [...balance, ...tempAdditionalBalances];
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
draft.selectedAdditionalBalances = tempAdditionalBalances;
|
|
92
|
+
const otherBalances = stripCompareAdditionalBalanceTypes(additionalBalances);
|
|
93
|
+
draft.selectedAdditionalBalances = [
|
|
94
|
+
...additionalBalances.filter((balance) => !otherBalances.includes(balance)),
|
|
95
|
+
...otherBalances,
|
|
96
|
+
];
|
|
102
97
|
draft.maxNumOfPeriodsToHighlight = maxNumOfPeriodsToHighlight;
|
|
103
98
|
draft.isAdditionalBalancesShown =
|
|
104
99
|
additionalBalances.length != 0 ? true : false;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { stripCompareAdditionalBalanceTypes, } from '../../commonStateTypes/coaBalance/coaBalanceType';
|
|
2
|
+
// Reports can show the $ and % change columns together, so every requested compare type is kept;
|
|
3
|
+
// compareMode picks one only when none was requested.
|
|
4
|
+
export function getFinanceStatementAdditionalBalances(requestedBalances, isCompareModeOn, compareBalanceFromMode) {
|
|
5
|
+
const otherBalances = stripCompareAdditionalBalanceTypes(requestedBalances);
|
|
6
|
+
if (!isCompareModeOn) {
|
|
7
|
+
return otherBalances;
|
|
8
|
+
}
|
|
9
|
+
const requestedCompareBalances = requestedBalances.filter((balance) => !otherBalances.includes(balance));
|
|
10
|
+
return [
|
|
11
|
+
...otherBalances,
|
|
12
|
+
...(requestedCompareBalances.length > 0
|
|
13
|
+
? requestedCompareBalances
|
|
14
|
+
: [compareBalanceFromMode]),
|
|
15
|
+
];
|
|
16
|
+
}
|
|
@@ -7,6 +7,7 @@ import { getFinanceStatement } from '../financeStatement/financeStatementSelecto
|
|
|
7
7
|
import { updateNetBurnOrIncomeAdditionalBalancesSelection } from '../netBurnOrIncome/netBurnOrIncomeReducer';
|
|
8
8
|
import { updateOpExAdditionalBalancesSelection } from '../opEx/opExReducer';
|
|
9
9
|
import { updateRevenueAdditionalBalancesSelection } from '../revenue/revenueReducer';
|
|
10
|
+
import { getFinanceStatementAdditionalBalances } from './financeStatementCompareBalances';
|
|
10
11
|
import { updateReportUIOptionCompareMode } from './reportUIOptionsReducer';
|
|
11
12
|
export const updateReportUIOptionIsCompareModeEpic = (actions$, state) => actions$.pipe(filter(updateReportUIOptionCompareMode.match), switchMap((action) => {
|
|
12
13
|
const { additionalBalances } = action.payload;
|
|
@@ -15,11 +16,7 @@ export const updateReportUIOptionIsCompareModeEpic = (actions$, state) => action
|
|
|
15
16
|
? 'this_period_vs_last_period_percent'
|
|
16
17
|
: 'this_period_vs_last_period';
|
|
17
18
|
const financeStatementState = getFinanceStatement(state.value);
|
|
18
|
-
const
|
|
19
|
-
balance !== 'this_period_vs_last_period_percent');
|
|
20
|
-
const financeAdditionalBalances = isCompareModeOn
|
|
21
|
-
? [...filteredFinanceAdditionalBalances, additionalBalance]
|
|
22
|
-
: filteredFinanceAdditionalBalances;
|
|
19
|
+
const financeAdditionalBalances = getFinanceStatementAdditionalBalances(additionalBalances, isCompareModeOn, additionalBalance);
|
|
23
20
|
return of(updateNetBurnOrIncomeAdditionalBalancesSelection({
|
|
24
21
|
isCompareModeOn,
|
|
25
22
|
additionalBalances: isCompareModeOn ? [additionalBalance] : [],
|
|
@@ -7,22 +7,18 @@ import { getFinanceStatement } from '../financeStatement/financeStatementSelecto
|
|
|
7
7
|
import { updateNetBurnOrIncomeAdditionalBalancesSelection } from '../netBurnOrIncome/netBurnOrIncomeReducer';
|
|
8
8
|
import { updateOpExAdditionalBalancesSelection } from '../opEx/opExReducer';
|
|
9
9
|
import { updateRevenueAdditionalBalancesSelection } from '../revenue/revenueReducer';
|
|
10
|
+
import { getFinanceStatementAdditionalBalances } from './financeStatementCompareBalances';
|
|
10
11
|
import { toggleReportUIOptionForecastMode, updateReportUIOptionIsCompareModeOn, } from './reportUIOptionsReducer';
|
|
11
12
|
export const updateReportUIOptionIsCompareModeOnEpic = (actions$, state) => actions$.pipe(filter(updateReportUIOptionIsCompareModeOn.match), switchMap((action) => {
|
|
12
13
|
const { additionalBalances } = action.payload;
|
|
14
|
+
const compareBalanceFromMode = state.value.reportUIOptionsState.compareMode === 'compare_mode_percent'
|
|
15
|
+
? 'this_period_vs_last_period_percent'
|
|
16
|
+
: 'this_period_vs_last_period';
|
|
13
17
|
const additionalBalance = action.payload.isCompareModeOn
|
|
14
|
-
?
|
|
15
|
-
'compare_mode_percent'
|
|
16
|
-
? ['this_period_vs_last_period_percent']
|
|
17
|
-
: ['this_period_vs_last_period']
|
|
18
|
+
? [compareBalanceFromMode]
|
|
18
19
|
: [];
|
|
19
20
|
const financeStatementState = getFinanceStatement(state.value);
|
|
20
|
-
const
|
|
21
|
-
balance !== 'this_period_vs_last_period_percent');
|
|
22
|
-
const financeAdditionalBalances = [
|
|
23
|
-
...filteredFinanceAdditionalBalances,
|
|
24
|
-
...additionalBalance,
|
|
25
|
-
];
|
|
21
|
+
const financeAdditionalBalances = getFinanceStatementAdditionalBalances(additionalBalances, action.payload.isCompareModeOn, compareBalanceFromMode);
|
|
26
22
|
const actions = [
|
|
27
23
|
updateNetBurnOrIncomeAdditionalBalancesSelection({
|
|
28
24
|
isCompareModeOn: action.payload.isCompareModeOn,
|
|
@@ -3,6 +3,7 @@ var _a;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.updateFinanceStatementFormat = exports.updateFinanceStatementDisplayOrder = exports.updateDownloadState = exports.updateFinanceStatementAdditionalBalancesSelection = exports.updateSelectedReportId = exports.updateCOABalancesRange = exports.updateFinanceStatementThisPeriod = exports.updateFinanceStatementTimeframe = exports.fetchFinanceStatement = exports.initialFinanceStatementState = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
+
const coaBalanceType_1 = require("../../commonStateTypes/coaBalance/coaBalanceType");
|
|
6
7
|
const thisPeriodHelpers_1 = require("../../commonStateTypes/viewAndReport/thisPeriodHelpers");
|
|
7
8
|
const rootActions_1 = require("../../rootActions");
|
|
8
9
|
const zeniDayJS_1 = require("../../zeniDayJS");
|
|
@@ -92,17 +93,11 @@ const financeStatement = (0, toolkit_1.createSlice)({
|
|
|
92
93
|
updateFinanceStatementAdditionalBalancesSelection(draft, action) {
|
|
93
94
|
const { additionalBalances: additionalBalancesPayload, maxNumOfPeriodsToHighlight, } = action.payload;
|
|
94
95
|
const additionalBalances = additionalBalancesPayload ?? [];
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
additionalBalances.includes(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (id > -1) {
|
|
101
|
-
const balance = tempAdditionalBalances.splice(id, 1);
|
|
102
|
-
tempAdditionalBalances = [...balance, ...tempAdditionalBalances];
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
draft.selectedAdditionalBalances = tempAdditionalBalances;
|
|
96
|
+
const otherBalances = (0, coaBalanceType_1.stripCompareAdditionalBalanceTypes)(additionalBalances);
|
|
97
|
+
draft.selectedAdditionalBalances = [
|
|
98
|
+
...additionalBalances.filter((balance) => !otherBalances.includes(balance)),
|
|
99
|
+
...otherBalances,
|
|
100
|
+
];
|
|
106
101
|
draft.maxNumOfPeriodsToHighlight = maxNumOfPeriodsToHighlight;
|
|
107
102
|
draft.isAdditionalBalancesShown =
|
|
108
103
|
additionalBalances.length != 0 ? true : false;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFinanceStatementAdditionalBalances = getFinanceStatementAdditionalBalances;
|
|
4
|
+
const coaBalanceType_1 = require("../../commonStateTypes/coaBalance/coaBalanceType");
|
|
5
|
+
// Reports can show the $ and % change columns together, so every requested compare type is kept;
|
|
6
|
+
// compareMode picks one only when none was requested.
|
|
7
|
+
function getFinanceStatementAdditionalBalances(requestedBalances, isCompareModeOn, compareBalanceFromMode) {
|
|
8
|
+
const otherBalances = (0, coaBalanceType_1.stripCompareAdditionalBalanceTypes)(requestedBalances);
|
|
9
|
+
if (!isCompareModeOn) {
|
|
10
|
+
return otherBalances;
|
|
11
|
+
}
|
|
12
|
+
const requestedCompareBalances = requestedBalances.filter((balance) => !otherBalances.includes(balance));
|
|
13
|
+
return [
|
|
14
|
+
...otherBalances,
|
|
15
|
+
...(requestedCompareBalances.length > 0
|
|
16
|
+
? requestedCompareBalances
|
|
17
|
+
: [compareBalanceFromMode]),
|
|
18
|
+
];
|
|
19
|
+
}
|
|
@@ -10,6 +10,7 @@ const financeStatementSelector_1 = require("../financeStatement/financeStatement
|
|
|
10
10
|
const netBurnOrIncomeReducer_1 = require("../netBurnOrIncome/netBurnOrIncomeReducer");
|
|
11
11
|
const opExReducer_1 = require("../opEx/opExReducer");
|
|
12
12
|
const revenueReducer_1 = require("../revenue/revenueReducer");
|
|
13
|
+
const financeStatementCompareBalances_1 = require("./financeStatementCompareBalances");
|
|
13
14
|
const reportUIOptionsReducer_1 = require("./reportUIOptionsReducer");
|
|
14
15
|
const updateReportUIOptionIsCompareModeEpic = (actions$, state) => actions$.pipe((0, operators_1.filter)(reportUIOptionsReducer_1.updateReportUIOptionCompareMode.match), (0, operators_1.switchMap)((action) => {
|
|
15
16
|
const { additionalBalances } = action.payload;
|
|
@@ -18,11 +19,7 @@ const updateReportUIOptionIsCompareModeEpic = (actions$, state) => actions$.pipe
|
|
|
18
19
|
? 'this_period_vs_last_period_percent'
|
|
19
20
|
: 'this_period_vs_last_period';
|
|
20
21
|
const financeStatementState = (0, financeStatementSelector_1.getFinanceStatement)(state.value);
|
|
21
|
-
const
|
|
22
|
-
balance !== 'this_period_vs_last_period_percent');
|
|
23
|
-
const financeAdditionalBalances = isCompareModeOn
|
|
24
|
-
? [...filteredFinanceAdditionalBalances, additionalBalance]
|
|
25
|
-
: filteredFinanceAdditionalBalances;
|
|
22
|
+
const financeAdditionalBalances = (0, financeStatementCompareBalances_1.getFinanceStatementAdditionalBalances)(additionalBalances, isCompareModeOn, additionalBalance);
|
|
26
23
|
return (0, rxjs_1.of)((0, netBurnOrIncomeReducer_1.updateNetBurnOrIncomeAdditionalBalancesSelection)({
|
|
27
24
|
isCompareModeOn,
|
|
28
25
|
additionalBalances: isCompareModeOn ? [additionalBalance] : [],
|
|
@@ -10,22 +10,18 @@ const financeStatementSelector_1 = require("../financeStatement/financeStatement
|
|
|
10
10
|
const netBurnOrIncomeReducer_1 = require("../netBurnOrIncome/netBurnOrIncomeReducer");
|
|
11
11
|
const opExReducer_1 = require("../opEx/opExReducer");
|
|
12
12
|
const revenueReducer_1 = require("../revenue/revenueReducer");
|
|
13
|
+
const financeStatementCompareBalances_1 = require("./financeStatementCompareBalances");
|
|
13
14
|
const reportUIOptionsReducer_1 = require("./reportUIOptionsReducer");
|
|
14
15
|
const updateReportUIOptionIsCompareModeOnEpic = (actions$, state) => actions$.pipe((0, operators_1.filter)(reportUIOptionsReducer_1.updateReportUIOptionIsCompareModeOn.match), (0, operators_1.switchMap)((action) => {
|
|
15
16
|
const { additionalBalances } = action.payload;
|
|
17
|
+
const compareBalanceFromMode = state.value.reportUIOptionsState.compareMode === 'compare_mode_percent'
|
|
18
|
+
? 'this_period_vs_last_period_percent'
|
|
19
|
+
: 'this_period_vs_last_period';
|
|
16
20
|
const additionalBalance = action.payload.isCompareModeOn
|
|
17
|
-
?
|
|
18
|
-
'compare_mode_percent'
|
|
19
|
-
? ['this_period_vs_last_period_percent']
|
|
20
|
-
: ['this_period_vs_last_period']
|
|
21
|
+
? [compareBalanceFromMode]
|
|
21
22
|
: [];
|
|
22
23
|
const financeStatementState = (0, financeStatementSelector_1.getFinanceStatement)(state.value);
|
|
23
|
-
const
|
|
24
|
-
balance !== 'this_period_vs_last_period_percent');
|
|
25
|
-
const financeAdditionalBalances = [
|
|
26
|
-
...filteredFinanceAdditionalBalances,
|
|
27
|
-
...additionalBalance,
|
|
28
|
-
];
|
|
24
|
+
const financeAdditionalBalances = (0, financeStatementCompareBalances_1.getFinanceStatementAdditionalBalances)(additionalBalances, action.payload.isCompareModeOn, compareBalanceFromMode);
|
|
29
25
|
const actions = [
|
|
30
26
|
(0, netBurnOrIncomeReducer_1.updateNetBurnOrIncomeAdditionalBalancesSelection)({
|
|
31
27
|
isCompareModeOn: action.payload.isCompareModeOn,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.90",
|
|
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",
|