@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.
@@ -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
  };
@@ -39,6 +39,7 @@ export interface InvoicingCreditNote {
39
39
  referenceInvoiceNumber?: string;
40
40
  status?: InvoicingCreditNoteStatus;
41
41
  subscriptionID?: ID;
42
+ subscriptionNumber?: string;
42
43
  subTotal?: Amount;
43
44
  total?: Amount;
44
45
  type?: InvoicingCreditNoteType;
@@ -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
- let tempAdditionalBalances = [...additionalBalances];
92
- if (additionalBalances.includes('this_period_vs_last_period') ||
93
- additionalBalances.includes('this_period_vs_last_period_percent')) {
94
- const id = tempAdditionalBalances.findIndex((balance) => balance === 'this_period_vs_last_period' ||
95
- balance === 'this_period_vs_last_period_percent');
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 filteredFinanceAdditionalBalances = additionalBalances.filter((balance) => balance !== 'this_period_vs_last_period' &&
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
- ? state.value.reportUIOptionsState.compareMode ===
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 filteredFinanceAdditionalBalances = additionalBalances.filter((balance) => balance !== 'this_period_vs_last_period' &&
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
- let tempAdditionalBalances = [...additionalBalances];
96
- if (additionalBalances.includes('this_period_vs_last_period') ||
97
- additionalBalances.includes('this_period_vs_last_period_percent')) {
98
- const id = tempAdditionalBalances.findIndex((balance) => balance === 'this_period_vs_last_period' ||
99
- balance === 'this_period_vs_last_period_percent');
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,2 @@
1
+ import { COABalanceType } from '../../commonStateTypes/coaBalance/coaBalanceType';
2
+ export declare function getFinanceStatementAdditionalBalances(requestedBalances: COABalanceType[], isCompareModeOn: boolean, compareBalanceFromMode: COABalanceType): COABalanceType[];
@@ -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 filteredFinanceAdditionalBalances = additionalBalances.filter((balance) => balance !== 'this_period_vs_last_period' &&
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
- ? state.value.reportUIOptionsState.compareMode ===
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 filteredFinanceAdditionalBalances = additionalBalances.filter((balance) => balance !== 'this_period_vs_last_period' &&
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.89",
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",