@zeniai/client-epic-state 5.0.44-betaML1 → 5.0.44-betaRD1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +2 -2
  2. package/lib/commonStateTypes/viewAndReport/viewAndReport.js +1 -0
  3. package/lib/entity/account/accountState.d.ts +1 -1
  4. package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
  5. package/lib/entity/class/classReducer.d.ts +4 -4
  6. package/lib/entity/class/classState.d.ts +1 -1
  7. package/lib/entity/forecast/forecastState.d.ts +1 -1
  8. package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
  9. package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
  10. package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
  11. package/lib/entity/sectionProjectView/sectionProjectView.d.ts +1 -1
  12. package/lib/entity/sectionProjectView/sectionProjectViewReducer.d.ts +2 -2
  13. package/lib/entity/transaction/stateTypes/transactionType.d.ts +0 -1
  14. package/lib/entity/transaction/stateTypes/transactionType.js +1 -3
  15. package/lib/epic.d.ts +3 -1
  16. package/lib/epic.js +3 -1
  17. package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +1 -0
  18. package/lib/esm/entity/transaction/stateTypes/transactionType.js +0 -1
  19. package/lib/esm/epic.js +3 -1
  20. package/lib/esm/index.js +6 -5
  21. package/lib/esm/view/transactionList/fetchTransactionListByProjectEpic.js +45 -0
  22. package/lib/esm/view/transactionList/parallelFetchProjectTransactionListEpic.js +32 -0
  23. package/lib/esm/view/transactionList/transactionListByProjectSelector.js +58 -0
  24. package/lib/esm/view/transactionList/transactionListReducer.js +83 -2
  25. package/lib/esm/view/transactionList/transactionListState.js +10 -0
  26. package/lib/index.d.ts +6 -5
  27. package/lib/index.js +30 -25
  28. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  29. package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
  30. package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
  31. package/lib/view/cardBalance/cardBalanceSelector.d.ts +1 -1
  32. package/lib/view/cashBalance/cashBalanceSelector.d.ts +1 -1
  33. package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
  34. package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
  35. package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
  36. package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
  37. package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
  38. package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
  39. package/lib/view/reportsResync/reportsResyncReducer.d.ts +2 -2
  40. package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
  41. package/lib/view/topEx/topExSelector.d.ts +1 -1
  42. package/lib/view/transactionList/fetchTransactionListByProjectEpic.d.ts +8 -0
  43. package/lib/view/transactionList/fetchTransactionListByProjectEpic.js +52 -0
  44. package/lib/view/transactionList/parallelFetchProjectTransactionListEpic.d.ts +6 -0
  45. package/lib/view/transactionList/parallelFetchProjectTransactionListEpic.js +36 -0
  46. package/lib/view/transactionList/transactionListByProjectSelector.d.ts +22 -0
  47. package/lib/view/transactionList/transactionListByProjectSelector.js +66 -0
  48. package/lib/view/transactionList/transactionListPayload.d.ts +15 -0
  49. package/lib/view/transactionList/transactionListReducer.d.ts +25 -2
  50. package/lib/view/transactionList/transactionListReducer.js +83 -2
  51. package/lib/view/transactionList/transactionListState.d.ts +15 -0
  52. package/lib/view/transactionList/transactionListState.js +13 -1
  53. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.updateLatestTransactionId = exports.clearTransactionList = exports.updateTransactionListUIStateByCategoryType = exports.updateTransactionsListByCategoryTypeFailure = exports.updateTransactionListByCategoryType = exports.fetchTransactionsListByCategoryType = exports.parallelFetchTransactionListByCategoryType = exports.updateTransactionListByClassFailure = exports.updateTransactionListByClassUIState = exports.updateTransactionListByClass = exports.fetchClassTransactionList = exports.parallelFetchClassTransactionList = exports.updateTransactionListByAccountUIState = exports.updateTransactionListByEntityFailure = exports.updateTransactionListByEntity = exports.fetchEntityTransactionList = exports.parallelFetchEntityTransactionList = exports.updateTransactionListByAccountFailure = exports.updateTransactionListByAccount = exports.fetchAccountTransactionList = exports.parallelFetchAccountTransactionList = exports.initialState = void 0;
4
+ exports.updateLatestTransactionId = exports.clearTransactionList = exports.updateTransactionListUIStateByCategoryType = exports.updateTransactionsListByCategoryTypeFailure = exports.updateTransactionListByCategoryType = exports.fetchTransactionsListByCategoryType = exports.parallelFetchTransactionListByCategoryType = exports.updateTransactionListByProjectFailure = exports.updateTransactionListByProjectUIState = exports.updateTransactionListByProject = exports.fetchProjectTransactionList = exports.parallelFetchProjectTransactionList = exports.updateTransactionListByClassFailure = exports.updateTransactionListByClassUIState = exports.updateTransactionListByClass = exports.fetchClassTransactionList = exports.parallelFetchClassTransactionList = exports.updateTransactionListByAccountUIState = exports.updateTransactionListByEntityFailure = exports.updateTransactionListByEntity = exports.fetchEntityTransactionList = exports.parallelFetchEntityTransactionList = exports.updateTransactionListByAccountFailure = exports.updateTransactionListByAccount = exports.fetchAccountTransactionList = exports.parallelFetchAccountTransactionList = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const timePeriod_1 = require("../../commonStateTypes/timePeriod");
7
7
  const accountPayload_1 = require("../../entity/account/accountPayload");
@@ -41,6 +41,10 @@ exports.initialState = {
41
41
  transactionListByClassKey: {},
42
42
  transactionListUIStateByClassKey: {},
43
43
  },
44
+ byProject: {
45
+ transactionListByProjectKey: {},
46
+ transactionListUIStateByProjectKey: {},
47
+ },
44
48
  };
45
49
  const transactionList = (0, toolkit_1.createSlice)({
46
50
  name: 'transactionList',
@@ -250,6 +254,64 @@ const transactionList = (0, toolkit_1.createSlice)({
250
254
  return { payload: { accountId, accountType, classId, period, error } };
251
255
  },
252
256
  },
257
+ // Transaction list by project related reducers
258
+ //
259
+ // Mirrors the by-class set; the only behavioural difference is that the
260
+ // server query param is `zeni_project_id` (post-Ayon's accounting #3984
261
+ // rename) and there's no equivalent of `include_sub_class_transactions`
262
+ // — projects don't have a sub-project hierarchy in this layout yet.
263
+ parallelFetchProjectTransactionList: {
264
+ reducer() {
265
+ // Do nothing..
266
+ },
267
+ prepare(accountId, accountType, projectId, period, cacheOverride = false) {
268
+ return {
269
+ payload: { accountId, accountType, projectId, period, cacheOverride },
270
+ };
271
+ },
272
+ },
273
+ fetchProjectTransactionList: {
274
+ reducer(draft, action) {
275
+ const key = (0, transactionListState_1.getProjectAcTranKey)(action.payload.accountId, action.payload.accountType, action.payload.projectId, action.payload.period);
276
+ if (action.payload.cacheOverride === true ||
277
+ draft.byProject.transactionListByProjectKey[key] == null ||
278
+ (draft.byProject.transactionListByProjectKey[key]?.hasValidState() ===
279
+ false &&
280
+ draft.byProject.transactionListByProjectKey[key]?.fetchState !=
281
+ 'In-Progress')) {
282
+ draft.byProject.transactionListByProjectKey[key] = {
283
+ ...transactionListState_1.initialProjectTransactionState,
284
+ fetchState: 'In-Progress',
285
+ error: undefined,
286
+ };
287
+ }
288
+ },
289
+ prepare(accountId, accountType, projectId, period, cacheOverride = false) {
290
+ return {
291
+ payload: { accountId, accountType, projectId, period, cacheOverride },
292
+ };
293
+ },
294
+ },
295
+ updateTransactionListByProject(draft, action) {
296
+ doUpdateTransactionListByProject(draft.byProject.transactionListByProjectKey, action.payload);
297
+ },
298
+ updateTransactionListByProjectUIState(draft, action) {
299
+ const key = (0, transactionListState_1.getProjectAcKey)(action.payload.accountId, action.payload.accountType, action.payload.projectId);
300
+ draft.byProject.transactionListUIStateByProjectKey[key] = Object.assign({}, draft.byProject.transactionListUIStateByProjectKey[key], action.payload.uiState);
301
+ },
302
+ updateTransactionListByProjectFailure: {
303
+ reducer(draft, action) {
304
+ const key = (0, transactionListState_1.getProjectAcTranKey)(action.payload.accountId, action.payload.accountType, action.payload.projectId, action.payload.period);
305
+ draft.byProject.transactionListByProjectKey[key] = {
306
+ ...transactionListState_1.initialProjectTransactionState,
307
+ fetchState: 'Error',
308
+ error: action.payload.error,
309
+ };
310
+ },
311
+ prepare(accountId, accountType, projectId, period, error) {
312
+ return { payload: { accountId, accountType, projectId, period, error } };
313
+ },
314
+ },
253
315
  parallelFetchTransactionListByCategoryType: {
254
316
  reducer() {
255
317
  // Do nothing..
@@ -344,7 +406,7 @@ const transactionList = (0, toolkit_1.createSlice)({
344
406
  },
345
407
  },
346
408
  });
347
- _a = transactionList.actions, exports.parallelFetchAccountTransactionList = _a.parallelFetchAccountTransactionList, exports.fetchAccountTransactionList = _a.fetchAccountTransactionList, exports.updateTransactionListByAccount = _a.updateTransactionListByAccount, exports.updateTransactionListByAccountFailure = _a.updateTransactionListByAccountFailure, exports.parallelFetchEntityTransactionList = _a.parallelFetchEntityTransactionList, exports.fetchEntityTransactionList = _a.fetchEntityTransactionList, exports.updateTransactionListByEntity = _a.updateTransactionListByEntity, exports.updateTransactionListByEntityFailure = _a.updateTransactionListByEntityFailure, exports.updateTransactionListByAccountUIState = _a.updateTransactionListByAccountUIState, exports.parallelFetchClassTransactionList = _a.parallelFetchClassTransactionList, exports.fetchClassTransactionList = _a.fetchClassTransactionList, exports.updateTransactionListByClass = _a.updateTransactionListByClass, exports.updateTransactionListByClassUIState = _a.updateTransactionListByClassUIState, exports.updateTransactionListByClassFailure = _a.updateTransactionListByClassFailure, exports.parallelFetchTransactionListByCategoryType = _a.parallelFetchTransactionListByCategoryType, exports.fetchTransactionsListByCategoryType = _a.fetchTransactionsListByCategoryType, exports.updateTransactionListByCategoryType = _a.updateTransactionListByCategoryType, exports.updateTransactionsListByCategoryTypeFailure = _a.updateTransactionsListByCategoryTypeFailure, exports.updateTransactionListUIStateByCategoryType = _a.updateTransactionListUIStateByCategoryType, exports.clearTransactionList = _a.clearTransactionList, exports.updateLatestTransactionId = _a.updateLatestTransactionId;
409
+ _a = transactionList.actions, exports.parallelFetchAccountTransactionList = _a.parallelFetchAccountTransactionList, exports.fetchAccountTransactionList = _a.fetchAccountTransactionList, exports.updateTransactionListByAccount = _a.updateTransactionListByAccount, exports.updateTransactionListByAccountFailure = _a.updateTransactionListByAccountFailure, exports.parallelFetchEntityTransactionList = _a.parallelFetchEntityTransactionList, exports.fetchEntityTransactionList = _a.fetchEntityTransactionList, exports.updateTransactionListByEntity = _a.updateTransactionListByEntity, exports.updateTransactionListByEntityFailure = _a.updateTransactionListByEntityFailure, exports.updateTransactionListByAccountUIState = _a.updateTransactionListByAccountUIState, exports.parallelFetchClassTransactionList = _a.parallelFetchClassTransactionList, exports.fetchClassTransactionList = _a.fetchClassTransactionList, exports.updateTransactionListByClass = _a.updateTransactionListByClass, exports.updateTransactionListByClassUIState = _a.updateTransactionListByClassUIState, exports.updateTransactionListByClassFailure = _a.updateTransactionListByClassFailure, exports.parallelFetchProjectTransactionList = _a.parallelFetchProjectTransactionList, exports.fetchProjectTransactionList = _a.fetchProjectTransactionList, exports.updateTransactionListByProject = _a.updateTransactionListByProject, exports.updateTransactionListByProjectUIState = _a.updateTransactionListByProjectUIState, exports.updateTransactionListByProjectFailure = _a.updateTransactionListByProjectFailure, exports.parallelFetchTransactionListByCategoryType = _a.parallelFetchTransactionListByCategoryType, exports.fetchTransactionsListByCategoryType = _a.fetchTransactionsListByCategoryType, exports.updateTransactionListByCategoryType = _a.updateTransactionListByCategoryType, exports.updateTransactionsListByCategoryTypeFailure = _a.updateTransactionsListByCategoryTypeFailure, exports.updateTransactionListUIStateByCategoryType = _a.updateTransactionListUIStateByCategoryType, exports.clearTransactionList = _a.clearTransactionList, exports.updateLatestTransactionId = _a.updateLatestTransactionId;
348
410
  exports.default = transactionList.reducer;
349
411
  /**
350
412
  * Helper functions
@@ -394,3 +456,22 @@ function doUpdateTransactionListByClass(draft, payload) {
394
456
  transactionIDs,
395
457
  };
396
458
  }
459
+ function doUpdateTransactionListByProject(draft, payload) {
460
+ const transactionIDs = payload.account.transactions.map((transactionPaylod) => transactionPaylod.transaction_id);
461
+ const account = (0, accountPayload_1.mapAccountBasePayloadToAccountBase)(payload.account);
462
+ const projectId = payload.query.zeni_project_id;
463
+ const start = (0, timePeriod_1.toAbsoluteDay)(payload.query.start_date);
464
+ const end = (0, timePeriod_1.toAbsoluteDay)(payload.query.end_date);
465
+ const key = (0, transactionListState_1.getProjectAcTranKey)(account.accountId, account.accountType, projectId, {
466
+ start,
467
+ end,
468
+ });
469
+ draft[key] = {
470
+ ...transactionListState_1.initialProjectTransactionState,
471
+ fetchState: 'Completed',
472
+ error: undefined,
473
+ account: account,
474
+ projectId: projectId,
475
+ transactionIDs,
476
+ };
477
+ }
@@ -45,6 +45,20 @@ export interface TransactionListByClassState {
45
45
  transactionListUIStateByClassKey: Record<ClassAcKey, TransactionListUIState>;
46
46
  }
47
47
  export declare const initialClassTransactionState: ClassAccountTransactions;
48
+ export declare const getProjectAcTranKey: (accountId: ID, accountType: AccountType, projectId: ID, period: TimePeriod) => string;
49
+ export type ProjectAcTranKey = ReturnType<typeof getProjectAcTranKey>;
50
+ export declare const getProjectAcKey: (accountId: ID, accountType: AccountType, projectId: ID) => string;
51
+ type ProjectAcKey = ReturnType<typeof getProjectAcKey>;
52
+ export interface ProjectAccountTransactions extends FetchedState {
53
+ transactionIDs: ID[];
54
+ account?: AccountBase;
55
+ projectId?: ID;
56
+ }
57
+ export interface TransactionListByProjectState {
58
+ transactionListByProjectKey: Record<ProjectAcTranKey, ProjectAccountTransactions>;
59
+ transactionListUIStateByProjectKey: Record<ProjectAcKey, TransactionListUIState>;
60
+ }
61
+ export declare const initialProjectTransactionState: ProjectAccountTransactions;
48
62
  export type TransactionCategoryType = 'missingReceipts' | 'miscategorizedExpense' | 'miscategorizedIncome' | 'uncategorizedIncome' | 'uncategorizedExpense';
49
63
  export declare const getCategoryTypeTranKey: (categoryType: TransactionCategoryType, period: TimePeriod) => string;
50
64
  type CategoryTypeTranKey = ReturnType<typeof getCategoryTypeTranKey>;
@@ -59,6 +73,7 @@ export interface TransactionListState {
59
73
  byAccount: TransactionListByAccountState;
60
74
  byClass: TransactionListByClassState;
61
75
  byEntity: TransactionListByEntityState;
76
+ byProject: TransactionListByProjectState;
62
77
  byType: Record<TransactionCategoryType, TransactionListByCategoryState>;
63
78
  latestTransactionId?: TransactionID;
64
79
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initialTransactionsStateByCategoryType = exports.getCategoryTypeTranKey = exports.initialClassTransactionState = exports.getClassAcKey = exports.getClassAcTranKey = exports.initialEntityTransactionState = exports.getEntityTranKey = exports.accountTransactionsInitialState = exports.getAcKey = exports.getAcTranKey = void 0;
3
+ exports.initialTransactionsStateByCategoryType = exports.getCategoryTypeTranKey = exports.initialProjectTransactionState = exports.getProjectAcKey = exports.getProjectAcTranKey = exports.initialClassTransactionState = exports.getClassAcKey = exports.getClassAcTranKey = exports.initialEntityTransactionState = exports.getEntityTranKey = exports.accountTransactionsInitialState = exports.getAcKey = exports.getAcTranKey = void 0;
4
4
  const getAcTranKey = (accountId, accountType, period) => `${accountId}-${accountType}-${period.start.day}_${period.start.month}_${period.start.year}_${period.end.day}_${period.end.month}_${period.end.year}`;
5
5
  exports.getAcTranKey = getAcTranKey;
6
6
  const getAcKey = (accountId, accountType) => `${accountId}-${accountType}`;
@@ -38,6 +38,18 @@ exports.initialClassTransactionState = {
38
38
  return this.fetchState == 'Completed';
39
39
  },
40
40
  };
41
+ const getProjectAcTranKey = (accountId, accountType, projectId, period) => `${accountId}-${accountType}-${projectId}-${period.start.day}_${period.start.month}_${period.start.year}_${period.end.day}_${period.end.month}_${period.end.year}`;
42
+ exports.getProjectAcTranKey = getProjectAcTranKey;
43
+ const getProjectAcKey = (accountId, accountType, projectId) => `${accountId}-${accountType}-${projectId}`;
44
+ exports.getProjectAcKey = getProjectAcKey;
45
+ exports.initialProjectTransactionState = {
46
+ transactionIDs: [],
47
+ fetchState: 'Not-Started',
48
+ error: undefined,
49
+ hasValidState() {
50
+ return this.fetchState == 'Completed';
51
+ },
52
+ };
41
53
  const getCategoryTypeTranKey = (categoryType, period) => `${categoryType}_${period.start.day}_${period.start.month}_${period.start.year}_${period.end.day}_${period.end.month}_${period.end.year}`;
42
54
  exports.getCategoryTypeTranKey = getCategoryTypeTranKey;
43
55
  exports.initialTransactionsStateByCategoryType = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.0.44-betaML1",
3
+ "version": "5.0.44-betaRD1",
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",