@zeniai/client-epic-state 4.12.23 → 4.12.24

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 (115) hide show
  1. package/lib/commonStateTypes/selectorTypes/selectorTypes.d.ts +3 -1
  2. package/lib/entity/account/accountSelector.d.ts +1 -0
  3. package/lib/entity/account/accountSelector.js +13 -1
  4. package/lib/entity/class/classPayload.d.ts +1 -0
  5. package/lib/entity/class/classPayload.js +13 -29
  6. package/lib/entity/class/classState.d.ts +1 -0
  7. package/lib/entity/jeSchedules/jeScheduleHelper.d.ts +2 -0
  8. package/lib/entity/jeSchedules/jeScheduleHelper.js +7 -0
  9. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +22 -5
  10. package/lib/entity/jeSchedules/jeSchedulesPayload.js +104 -29
  11. package/lib/entity/jeSchedules/jeSchedulesReducer.d.ts +14 -4
  12. package/lib/entity/jeSchedules/jeSchedulesReducer.js +86 -6
  13. package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +15 -3
  14. package/lib/entity/jeSchedules/jeSchedulesSelector.js +68 -5
  15. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +14 -2
  16. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +4 -2
  17. package/lib/entity/jeSchedules/jeSchedulesTypes.js +1 -0
  18. package/lib/entity/jeSchedules/updateAccruedJESchedulesEpic.d.ts +9 -0
  19. package/lib/entity/jeSchedules/updateAccruedJESchedulesEpic.js +41 -0
  20. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  21. package/lib/entity/snackbar/snackbarTypes.js +2 -0
  22. package/lib/entity/tenant/clearAllEpic.d.ts +4 -3
  23. package/lib/entity/tenant/clearAllEpic.js +3 -0
  24. package/lib/entity/toastNotification/epic/pushToastNotificationEpic.d.ts +1 -1
  25. package/lib/entity/transaction/payloadTypes/otherTransactionPayload.d.ts +0 -2
  26. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.d.ts +1 -1
  27. package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +3 -0
  28. package/lib/entity/transaction/payloadTypes/transactionPayload.js +7 -3
  29. package/lib/entity/transaction/payloadTypes/vendorTransactionPayload.d.ts +1 -1
  30. package/lib/entity/transaction/stateTypes/transaction.d.ts +3 -0
  31. package/lib/epic.d.ts +12 -1
  32. package/lib/epic.js +12 -1
  33. package/lib/index.d.ts +11 -5
  34. package/lib/index.js +27 -5
  35. package/lib/reducer.d.ts +3 -0
  36. package/lib/reducer.js +3 -0
  37. package/lib/view/cardPayment/epic/addCardPaymentSourceEpic.d.ts +1 -1
  38. package/lib/view/cardPayment/epic/confirmCardSetupIntentEpic.d.ts +1 -1
  39. package/lib/view/cardPayment/epic/createCardSetupIntentEpic.d.ts +1 -1
  40. package/lib/view/cardPayment/epic/fetchPaymentSourcesEpic.d.ts +1 -1
  41. package/lib/view/commonVendorView/vendorView/epics/fetchVendorEpic.js +0 -1
  42. package/lib/view/people/changeZeniPersonRolesEpic.d.ts +1 -1
  43. package/lib/view/people/deletePersonEpic.d.ts +1 -1
  44. package/lib/view/people/invitePeopleEpic.d.ts +1 -1
  45. package/lib/view/people/inviteZeniPeopleEpic.d.ts +1 -1
  46. package/lib/view/people/resendInviteEpic.d.ts +1 -1
  47. package/lib/view/scheduleView/scheduleAccruedDetailView/LinkBillExpenseView/linkBillExpense.d.ts +3 -0
  48. package/lib/view/scheduleView/scheduleAccruedDetailView/LinkBillExpenseView/linkBillExpense.js +12 -0
  49. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/cancelScheduleAccruedJournalEntryEpic.d.ts +8 -0
  50. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/cancelScheduleAccruedJournalEntryEpic.js +81 -0
  51. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/createNewSchedulesAccruedEpic.d.ts +6 -0
  52. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/createNewSchedulesAccruedEpic.js +35 -0
  53. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/deleteScheduleAccruedDetailEpic.d.ts +8 -0
  54. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/deleteScheduleAccruedDetailEpic.js +79 -0
  55. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/fetchRecommendedTransactionRowIndexEpic.d.ts +7 -0
  56. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/fetchRecommendedTransactionRowIndexEpic.js +73 -0
  57. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/fetchScheduleAccruedDetailsEpic.d.ts +8 -0
  58. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/fetchScheduleAccruedDetailsEpic.js +53 -0
  59. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/fetchScheduleAccruedDetailsPageEpic.d.ts +8 -0
  60. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/fetchScheduleAccruedDetailsPageEpic.js +28 -0
  61. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/initializeScheduleAccruedDetailLocalDataEpic.d.ts +6 -0
  62. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/initializeScheduleAccruedDetailLocalDataEpic.js +37 -0
  63. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/saveScheduleAccruedDetailsEpic.d.ts +12 -0
  64. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/saveScheduleAccruedDetailsEpic.js +126 -0
  65. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/updateAmountsInScheduleAccruedDetailEpic.d.ts +6 -0
  66. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/updateAmountsInScheduleAccruedDetailEpic.js +30 -0
  67. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailLocalDataHelper.d.ts +16 -0
  68. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailLocalDataHelper.js +121 -0
  69. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailPayload.d.ts +60 -0
  70. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailPayload.js +288 -0
  71. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailReducer.d.ts +83 -0
  72. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailReducer.js +363 -0
  73. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailSelector.d.ts +36 -0
  74. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailSelector.js +127 -0
  75. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailState.d.ts +45 -0
  76. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailState.js +2 -0
  77. package/lib/view/scheduleView/scheduleDetailView/epics/createNewSchedulesEpic.js +1 -1
  78. package/lib/view/scheduleView/scheduleDetailView/epics/deleteScheduleDetailEpic.js +1 -1
  79. package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.js +3 -1
  80. package/lib/view/scheduleView/scheduleDetailView/epics/initializeScheduleDetailLocalDataEpic.js +1 -1
  81. package/lib/view/scheduleView/scheduleDetailView/epics/markAsCompleteScheduleDetailEpic.js +1 -1
  82. package/lib/view/scheduleView/scheduleDetailView/epics/saveScheduleDetailsEpic.d.ts +2 -2
  83. package/lib/view/scheduleView/scheduleDetailView/epics/saveScheduleDetailsEpic.js +1 -1
  84. package/lib/view/scheduleView/scheduleDetailView/epics/updateAmountsInScheduleDetailEpic.js +1 -1
  85. package/lib/view/scheduleView/scheduleDetailView/scheduleDetailLocalDataHelper.js +2 -0
  86. package/lib/view/scheduleView/scheduleDetailView/scheduleDetailPayload.d.ts +11 -5
  87. package/lib/view/scheduleView/scheduleDetailView/scheduleDetailPayload.js +66 -2
  88. package/lib/view/scheduleView/scheduleDetailView/scheduleDetailReducer.d.ts +2 -5
  89. package/lib/view/scheduleView/scheduleDetailView/scheduleDetailReducer.js +2 -17
  90. package/lib/view/scheduleView/scheduleDetailView/scheduleDetailSelector.js +7 -3
  91. package/lib/view/scheduleView/scheduleDetailView/scheduleDetailState.d.ts +3 -2
  92. package/lib/view/scheduleView/scheduleListView/epics/fetchAccruedScheduleListEpic.d.ts +8 -0
  93. package/lib/view/scheduleView/scheduleListView/epics/fetchAccruedScheduleListEpic.js +52 -0
  94. package/lib/view/scheduleView/scheduleListView/epics/fetchDownloadSchedulesEpic.js +7 -1
  95. package/lib/view/scheduleView/scheduleListView/epics/fetchScheduleListEpic.js +7 -1
  96. package/lib/view/scheduleView/scheduleListView/scheduleListHelper.d.ts +33 -2
  97. package/lib/view/scheduleView/scheduleListView/scheduleListHelper.js +117 -1
  98. package/lib/view/scheduleView/scheduleListView/scheduleListPayload.d.ts +6 -1
  99. package/lib/view/scheduleView/scheduleListView/scheduleListReducer.d.ts +32 -4
  100. package/lib/view/scheduleView/scheduleListView/scheduleListReducer.js +207 -69
  101. package/lib/view/scheduleView/scheduleListView/scheduleListSelector.d.ts +23 -1
  102. package/lib/view/scheduleView/scheduleListView/scheduleListSelector.js +176 -5
  103. package/lib/view/scheduleView/scheduleListView/scheduleListState.d.ts +15 -3
  104. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  105. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.js +2 -0
  106. package/lib/view/settingsView/epic/saveNotificationSettingsEpic.d.ts +1 -1
  107. package/lib/view/tagView/epics/createTagEpic.d.ts +1 -1
  108. package/lib/view/tagView/epics/deleteTagEpic.d.ts +1 -1
  109. package/lib/view/vendorList/vendorListSelector.d.ts +1 -1
  110. package/lib/view/vendorList/vendorListSelector.js +1 -0
  111. package/lib/view/vendorTabView/fetchVendorTabViewEpic.d.ts +2 -2
  112. package/lib/view/vendorTabView/fetchVendorTabViewEpic.js +11 -1
  113. package/lib/view/vendorTabView/vendorTabViewReducer.d.ts +2 -0
  114. package/lib/view/vendorTabView/vendorTabViewReducer.js +2 -1
  115. package/package.json +1 -1
@@ -14,7 +14,7 @@ const updateAmountsInScheduleDetailEpic = (actions$, state$) => actions$.pipe((0
14
14
  const selectedJEScheduleKey = scheduleDetailState.selectedJEScheduleKey;
15
15
  const scheduleType = action.payload.scheduleType;
16
16
  if (selectedJEScheduleKey != null) {
17
- const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleKey)(selectedJEScheduleKey, state);
17
+ const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleTransactionKey)(selectedJEScheduleKey, state);
18
18
  const jeScheduleDetailId = action.payload.jeScheduleDetailId;
19
19
  const totalAmount = jeScheduleTransactionState.baseTransaction.amount.amount;
20
20
  const jeScheduleLocalDataUpdated = jeScheduleDetailId != null
@@ -228,6 +228,8 @@ const getAccountsTypesForScheduleDetails = (scheduleType) => {
228
228
  case 'prepaid_expenses':
229
229
  case 'fixed_assets':
230
230
  return ['cogs', 'expenses', 'other_expense'];
231
+ case 'accrued_expenses':
232
+ return ['cogs', 'expenses', 'other_expense', 'other_current_liabilities'];
231
233
  default:
232
234
  return [];
233
235
  }
@@ -1,7 +1,9 @@
1
1
  import { RootState } from '../../../reducer';
2
- import { ScheduleDetailsLocalData } from './scheduleDetailState';
3
- import { JEScheduleKey, ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
2
+ import { ScheduleDetailsLocalData, ScheduleDetailsLocalDataFixedAssets } from './scheduleDetailState';
3
+ import { JEScheduleTransactionKey, ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
4
4
  import { VendorBasePayload } from '../../../entity/vendor/vendorPayload';
5
+ import { JEScheduledTransaction } from '../../../entity/jeSchedules/jeSchedulesSelector';
6
+ import { VendorState } from '../../../entity/vendor/vendorState';
5
7
  import { AccountBasePayload } from '../../../entity/account/accountPayload';
6
8
  import { ClassBasePayload } from '../../../entity/class/classPayload';
7
9
  import { TransactionIDPayload } from '../../../entity/transaction/payloadTypes/transactionIDPayload';
@@ -28,10 +30,13 @@ interface JESchedulePayload {
28
30
  is_deleted?: boolean;
29
31
  je_schedule_id?: string;
30
32
  }
31
- interface SaveJESchedulePayload {
33
+ export interface SaveJESchedulePayload {
32
34
  status: StatusCodeWithLabelPayload;
33
35
  transaction_memo: string | null;
34
36
  third_party_id: string | null;
37
+ reversal_transaction_details?: TransactionIDPayload | null;
38
+ is_bill_linked?: boolean | null;
39
+ actual_reversal_post_date?: string | null;
35
40
  expected_post_date: string | null;
36
41
  je_schedule_id: string | null;
37
42
  scheduled_journal_entry_id: string | null;
@@ -43,7 +48,7 @@ interface SaveJESchedulePayload {
43
48
  create_time: string | null;
44
49
  is_deleted?: boolean;
45
50
  }
46
- interface SaveScheduleTransactionPayload extends TransactionIDPayload, Omit<AccountBasePayload, 'qbo_id'>, Omit<ClassBasePayload, 'qbo_id'> {
51
+ interface SaveScheduleTransactionPayload extends TransactionIDPayload, Omit<AccountBasePayload, 'qbo_id'>, Omit<ClassBasePayload, 'qbo_id' | 'labels'> {
47
52
  third_party_transaction_id: string | null;
48
53
  transaction_date: string | null;
49
54
  total_amount: number | null;
@@ -54,5 +59,6 @@ interface SaveScheduleDetailPayload {
54
59
  je_schedules: JESchedulePayload[];
55
60
  scheduled_journal_entries: SaveJESchedulePayload[];
56
61
  }
57
- export declare const prepareScheduleDetailPayload: (state: RootState, scheduleDetailsLocalData: ScheduleDetailsLocalData, selectedJEScheduleKey: JEScheduleKey, jeScheduleType: ScheduleTypes, isDelete?: boolean | undefined, isMarkAsComplete?: boolean | undefined) => SaveScheduleDetailPayload;
62
+ export declare const mapAccruedExpenseJEScheduleTransactionToPayload: (jeScheduleTransactionState: JEScheduledTransaction, vendorState: VendorState, scheduleDetailsLocalData: ScheduleDetailsLocalDataFixedAssets, isDelete?: boolean | undefined, isMarkAsComplete?: boolean | undefined) => JESchedulePayload;
63
+ export declare const prepareScheduleDetailPayload: (state: RootState, scheduleDetailsLocalData: ScheduleDetailsLocalData, selectedJEScheduleKey: JEScheduleTransactionKey, jeScheduleType: ScheduleTypes, isDelete?: boolean | undefined, isMarkAsComplete?: boolean | undefined) => SaveScheduleDetailPayload;
58
64
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prepareScheduleDetailPayload = void 0;
3
+ exports.prepareScheduleDetailPayload = exports.mapAccruedExpenseJEScheduleTransactionToPayload = void 0;
4
4
  const jeSchedulesSelector_1 = require("../../../entity/jeSchedules/jeSchedulesSelector");
5
5
  const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
6
6
  const formatZeniDateFY_1 = require("../../../commonStateTypes/fiscalYearHelpers/formatZeniDateFY");
@@ -216,12 +216,76 @@ const mapFixedAssetJEScheduleTransactionToPayload = (jeScheduleTransactionState,
216
216
  return isDelete === true
217
217
  ? Object.assign(Object.assign({}, payload), { is_deleted: true }) : payload;
218
218
  };
219
+ const mapAccruedExpenseJEScheduleTransactionToPayload = (jeScheduleTransactionState, vendorState, scheduleDetailsLocalData, isDelete, isMarkAsComplete) => {
220
+ var _a, _b;
221
+ const { vendor, currencyCode, currencySymbol, baseTransaction, status, startDate, endDate, balanceAsOfToday, jeScheduleId, } = jeScheduleTransactionState;
222
+ const { selectedMonths, selectedAccount, selectedClass, selectedDayOfMonth, lastDayOfMonth, selectedAccumulatedDepreciationCategory, assetId, } = scheduleDetailsLocalData;
223
+ let updatedStatus = Object.assign({}, status);
224
+ // if the current status is marked as completed, we need to send the status as new when creating a new schedule.
225
+ if (status.code === 'marked_as_completed') {
226
+ updatedStatus = {
227
+ code: 'new',
228
+ label: 'New',
229
+ };
230
+ }
231
+ if (isMarkAsComplete === true) {
232
+ updatedStatus = {
233
+ code: 'marked_as_completed',
234
+ label: 'Marked as Completed',
235
+ };
236
+ }
237
+ const postingDate = selectedDayOfMonth !== null && selectedDayOfMonth !== void 0 ? selectedDayOfMonth : (lastDayOfMonth != null ? timePeriod_1.LAST_SCHEDULE_DAY_OF_MONTH : null);
238
+ const scheduleLength = scheduleDetailsLocalData.jeScheduleDetails.length;
239
+ const firstJEScheduleDate = scheduleLength > 0
240
+ ? scheduleDetailsLocalData.jeScheduleDetails[0].postingDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT)
241
+ : null;
242
+ const lastJEScheduleDate = scheduleLength > 0
243
+ ? scheduleDetailsLocalData.jeScheduleDetails[scheduleLength - 1].postingDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT)
244
+ : null;
245
+ const vendorID = vendor.id;
246
+ const vendorDetails = vendorState.vendorByID[vendorID];
247
+ const payload = {
248
+ status: updatedStatus,
249
+ vendor: mapVendorToVendorPayload(vendorDetails),
250
+ currency_code: currencyCode,
251
+ currency_symbol: currencySymbol,
252
+ period: selectedMonths !== null && selectedMonths !== void 0 ? selectedMonths : null,
253
+ je_schedule_type: 'fixed_assets',
254
+ posting_date: postingDate,
255
+ je_schedule_id: status.code === 'marked_as_completed' ? jeScheduleId : undefined,
256
+ balance: getBalanceAmountAsOfToday({
257
+ isMarkAsComplete,
258
+ balanceAsOfToday,
259
+ baseTransaction,
260
+ }),
261
+ start_date: (_a = startDate === null || startDate === void 0 ? void 0 : startDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT)) !== null && _a !== void 0 ? _a : firstJEScheduleDate,
262
+ end_date: (_b = endDate === null || endDate === void 0 ? void 0 : endDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT)) !== null && _b !== void 0 ? _b : lastJEScheduleDate,
263
+ je_credit_accounting_class_id: getJECreditAccountingClassId({
264
+ isMarkAsComplete,
265
+ jeScheduleTransactionState,
266
+ }),
267
+ je_credit_account_id: isMarkAsComplete === true
268
+ ? null
269
+ : selectedAccumulatedDepreciationCategory !== null && selectedAccumulatedDepreciationCategory !== void 0 ? selectedAccumulatedDepreciationCategory : null,
270
+ je_debit_account_id: selectedAccount !== null && selectedAccount !== void 0 ? selectedAccount : null,
271
+ je_debit_accounting_class_id: selectedClass !== null && selectedClass !== void 0 ? selectedClass : null,
272
+ other_attributes: assetId != null
273
+ ? {
274
+ asset_id: assetId,
275
+ }
276
+ : {},
277
+ base_transaction: mapScheduleTransactionToBaseScheduleTransactionPayload(baseTransaction),
278
+ };
279
+ return isDelete === true
280
+ ? Object.assign(Object.assign({}, payload), { is_deleted: true }) : payload;
281
+ };
282
+ exports.mapAccruedExpenseJEScheduleTransactionToPayload = mapAccruedExpenseJEScheduleTransactionToPayload;
219
283
  const prepareScheduleDetailPayload = (state, scheduleDetailsLocalData, selectedJEScheduleKey, jeScheduleType, isDelete, isMarkAsComplete) => {
220
284
  const payload = {
221
285
  je_schedules: [],
222
286
  scheduled_journal_entries: [],
223
287
  };
224
- const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleKey)(selectedJEScheduleKey, state);
288
+ const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleTransactionKey)(selectedJEScheduleKey, state);
225
289
  const { vendorState } = state;
226
290
  const jeScheduleDetailsLocalData = scheduleDetailsLocalData.jeScheduleDetails;
227
291
  payload.je_schedules =
@@ -1,5 +1,5 @@
1
1
  import { ScheduleDetailsLocalData, ScheduleDetailsLocalDataFixedAssets, ScheduleDetailViewState } from './scheduleDetailState';
2
- import { JEScheduleKey, ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
2
+ import { JEScheduleTransactionKey, ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
3
3
  import { FetchState, ID } from '../../../commonStateTypes/common';
4
4
  import { ZeniAPIStatus } from '../../../responsePayload';
5
5
  import ZeniUrl from '../../../zeniUrl';
@@ -48,11 +48,8 @@ export declare const createNewSchedules: import("@reduxjs/toolkit").ActionCreato
48
48
  scheduleType: "prepaid_expenses" | "fixed_assets" | "accrued_expenses" | "deferred_revenue";
49
49
  rowId: number;
50
50
  jeScheduleDetailId: string | undefined;
51
- }, string, never, never>, updateScheduleDetailNewStateLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[scheduleType: "prepaid_expenses" | "fixed_assets" | "accrued_expenses" | "deferred_revenue", selectedJeScheduleDetailId: string], {
52
- scheduleType: "prepaid_expenses" | "fixed_assets" | "accrued_expenses" | "deferred_revenue";
53
- selectedJeScheduleDetailId: string;
54
51
  }, string, never, never>, updateSelectedJEScheduleKey: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
55
- selectedJEScheduleKey: JEScheduleKey;
52
+ selectedJEScheduleKey: JEScheduleTransactionKey;
56
53
  }, string>, updatedSelectedJELinkRowIndex: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
57
54
  selectedJELinkRowIndex: number;
58
55
  }, string>, updatedJELinkWithRecommendedLocalData: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.clearScheduleDetailView = exports.resetMarkAsCompleteStatus = exports.markAsCompleteScheduleDetailSuccessOrFailure = exports.markAsCompleteScheduleDetail = exports.resetJELinkInLocalData = exports.updatedJELinkWithRecommendedLocalData = exports.updatedSelectedJELinkRowIndex = exports.updateSelectedJEScheduleKey = exports.updateScheduleDetailNewStateLocalData = exports.updateAmountsInScheduleDetail = exports.updatedJELinkInLocalData = exports.updateScheduleDetailsLocalData = exports.initializeScheduleDetailLocalData = exports.deleteScheduleDetailSuccessOrFailure = exports.updateDeletedScheduleDetail = exports.deleteScheduleDetail = exports.saveScheduleDetailsSuccessOrFailure = exports.saveScheduleDetails = exports.updateScheduleDetailsFailure = exports.updateScheduleDetailsSuccess = exports.fetchScheduleDetails = exports.fetchScheduleDetailsPage = exports.createNewSchedules = exports.initialState = exports.initialScheduleDetailsLocalData = void 0;
4
+ exports.clearScheduleDetailView = exports.resetMarkAsCompleteStatus = exports.markAsCompleteScheduleDetailSuccessOrFailure = exports.markAsCompleteScheduleDetail = exports.resetJELinkInLocalData = exports.updatedJELinkWithRecommendedLocalData = exports.updatedSelectedJELinkRowIndex = exports.updateSelectedJEScheduleKey = exports.updateAmountsInScheduleDetail = exports.updatedJELinkInLocalData = exports.updateScheduleDetailsLocalData = exports.initializeScheduleDetailLocalData = exports.deleteScheduleDetailSuccessOrFailure = exports.updateDeletedScheduleDetail = exports.deleteScheduleDetail = exports.saveScheduleDetailsSuccessOrFailure = exports.saveScheduleDetails = exports.updateScheduleDetailsFailure = exports.updateScheduleDetailsSuccess = exports.fetchScheduleDetails = exports.fetchScheduleDetailsPage = exports.createNewSchedules = exports.initialState = exports.initialScheduleDetailsLocalData = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const scheduleDetailLocalDataHelper_1 = require("./scheduleDetailLocalDataHelper");
7
7
  const transactionDetailState_1 = require("../../transactionDetail/transactionDetailState");
@@ -197,21 +197,6 @@ const scheduleDetailView = (0, toolkit_1.createSlice)({
197
197
  updateSelectedJEScheduleKey(draft, action) {
198
198
  draft.selectedJEScheduleKey = action.payload.selectedJEScheduleKey;
199
199
  },
200
- updateScheduleDetailNewStateLocalData: {
201
- prepare(scheduleType, selectedJeScheduleDetailId) {
202
- return {
203
- payload: { scheduleType, selectedJeScheduleDetailId },
204
- };
205
- },
206
- reducer(draft, action) {
207
- // This is a special case - when we save, we need the newSchedule state to move to the
208
- // edit state
209
- const selectedJeScheduleDetailId = action.payload.selectedJeScheduleDetailId;
210
- if (draft.editScheduleStateByDetailId[action.payload.scheduleType][selectedJeScheduleDetailId] == null) {
211
- draft.editScheduleStateByDetailId[action.payload.scheduleType][selectedJeScheduleDetailId] = Object.assign({}, draft.newScheduleState[action.payload.scheduleType]);
212
- }
213
- },
214
- },
215
200
  updatedSelectedJELinkRowIndex(draft, action) {
216
201
  draft.selectedJELinkRowIndex = action.payload.selectedJELinkRowIndex;
217
202
  },
@@ -305,7 +290,7 @@ const scheduleDetailView = (0, toolkit_1.createSlice)({
305
290
  },
306
291
  },
307
292
  });
308
- _a = scheduleDetailView.actions, exports.createNewSchedules = _a.createNewSchedules, exports.fetchScheduleDetailsPage = _a.fetchScheduleDetailsPage, exports.fetchScheduleDetails = _a.fetchScheduleDetails, exports.updateScheduleDetailsSuccess = _a.updateScheduleDetailsSuccess, exports.updateScheduleDetailsFailure = _a.updateScheduleDetailsFailure, exports.saveScheduleDetails = _a.saveScheduleDetails, exports.saveScheduleDetailsSuccessOrFailure = _a.saveScheduleDetailsSuccessOrFailure, exports.deleteScheduleDetail = _a.deleteScheduleDetail, exports.updateDeletedScheduleDetail = _a.updateDeletedScheduleDetail, exports.deleteScheduleDetailSuccessOrFailure = _a.deleteScheduleDetailSuccessOrFailure, exports.initializeScheduleDetailLocalData = _a.initializeScheduleDetailLocalData, exports.updateScheduleDetailsLocalData = _a.updateScheduleDetailsLocalData, exports.updatedJELinkInLocalData = _a.updatedJELinkInLocalData, exports.updateAmountsInScheduleDetail = _a.updateAmountsInScheduleDetail, exports.updateScheduleDetailNewStateLocalData = _a.updateScheduleDetailNewStateLocalData, exports.updateSelectedJEScheduleKey = _a.updateSelectedJEScheduleKey, exports.updatedSelectedJELinkRowIndex = _a.updatedSelectedJELinkRowIndex, exports.updatedJELinkWithRecommendedLocalData = _a.updatedJELinkWithRecommendedLocalData, exports.resetJELinkInLocalData = _a.resetJELinkInLocalData, exports.markAsCompleteScheduleDetail = _a.markAsCompleteScheduleDetail, exports.markAsCompleteScheduleDetailSuccessOrFailure = _a.markAsCompleteScheduleDetailSuccessOrFailure, exports.resetMarkAsCompleteStatus = _a.resetMarkAsCompleteStatus, exports.clearScheduleDetailView = _a.clearScheduleDetailView;
293
+ _a = scheduleDetailView.actions, exports.createNewSchedules = _a.createNewSchedules, exports.fetchScheduleDetailsPage = _a.fetchScheduleDetailsPage, exports.fetchScheduleDetails = _a.fetchScheduleDetails, exports.updateScheduleDetailsSuccess = _a.updateScheduleDetailsSuccess, exports.updateScheduleDetailsFailure = _a.updateScheduleDetailsFailure, exports.saveScheduleDetails = _a.saveScheduleDetails, exports.saveScheduleDetailsSuccessOrFailure = _a.saveScheduleDetailsSuccessOrFailure, exports.deleteScheduleDetail = _a.deleteScheduleDetail, exports.updateDeletedScheduleDetail = _a.updateDeletedScheduleDetail, exports.deleteScheduleDetailSuccessOrFailure = _a.deleteScheduleDetailSuccessOrFailure, exports.initializeScheduleDetailLocalData = _a.initializeScheduleDetailLocalData, exports.updateScheduleDetailsLocalData = _a.updateScheduleDetailsLocalData, exports.updatedJELinkInLocalData = _a.updatedJELinkInLocalData, exports.updateAmountsInScheduleDetail = _a.updateAmountsInScheduleDetail, exports.updateSelectedJEScheduleKey = _a.updateSelectedJEScheduleKey, exports.updatedSelectedJELinkRowIndex = _a.updatedSelectedJELinkRowIndex, exports.updatedJELinkWithRecommendedLocalData = _a.updatedJELinkWithRecommendedLocalData, exports.resetJELinkInLocalData = _a.resetJELinkInLocalData, exports.markAsCompleteScheduleDetail = _a.markAsCompleteScheduleDetail, exports.markAsCompleteScheduleDetailSuccessOrFailure = _a.markAsCompleteScheduleDetailSuccessOrFailure, exports.resetMarkAsCompleteStatus = _a.resetMarkAsCompleteStatus, exports.clearScheduleDetailView = _a.clearScheduleDetailView;
309
294
  exports.default = scheduleDetailView.reducer;
310
295
  const updateJELinkInScheduleDetails = (jeScheduleDetailsLocalData, rowId, jeLink) => {
311
296
  return jeScheduleDetailsLocalData.map((jeScheduleDetail, index) => {
@@ -38,7 +38,11 @@ const getScheduleDetailsView = (state, scheduleType) => {
38
38
  markAsCompleteStatus: scheduleDetailState.markAsCompleteStatus,
39
39
  };
40
40
  }
41
- const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleKey)(jeScheduleKey, state);
41
+ let jeScheduleTransactionState = undefined;
42
+ if (jeScheduleKey != null) {
43
+ jeScheduleTransactionState =
44
+ (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleTransactionKey)(jeScheduleKey, state);
45
+ }
42
46
  const scheduleDetailAccountTypes = (0, scheduleDetailLocalDataHelper_1.getAccountsTypesForScheduleDetails)(scheduleType);
43
47
  const scheduleDetailAccountIds = (0, accountSelector_1.getAccountIdsForTypes)(accountState, scheduleDetailAccountTypes);
44
48
  const allAccountList = (0, accountListSelector_1.getAccountList)(accountState, accountListState, accountTypes.accountListKey);
@@ -60,7 +64,7 @@ const getScheduleDetailsView = (state, scheduleType) => {
60
64
  const depAccountListNestedAccountHierarchy = (0, accountListSelector_1.getNestedAccountListHierarchy)(accountListState, accountTypes.accountListKey);
61
65
  const filteredDepAccountListNestedAccountHierarchy = filterNestedAccountHierarchyById(depAccountListNestedAccountHierarchy, filteredDepAccounts.map((account) => account.accountId));
62
66
  const classListNestedAccountHierarchy = (0, classListSelector_1.getNestedClassListHierarchy)(classListState);
63
- const selectedJeScheduleDetailId = jeScheduleTransactionState.jeScheduleId;
67
+ const selectedJeScheduleDetailId = jeScheduleTransactionState === null || jeScheduleTransactionState === void 0 ? void 0 : jeScheduleTransactionState.jeScheduleId;
64
68
  const scheduleDetailsLocalData = Object.assign({}, scheduleDetailReducer_1.initialScheduleDetailsLocalData);
65
69
  if (selectedJeScheduleDetailId != null) {
66
70
  if (scheduleDetailState.editScheduleStateByDetailId[scheduleType][selectedJeScheduleDetailId] != null) {
@@ -72,6 +76,7 @@ const getScheduleDetailsView = (state, scheduleType) => {
72
76
  scheduleDetailsLocalData[scheduleType] =
73
77
  scheduleDetailState.newScheduleState[scheduleType];
74
78
  }
79
+ // this reduceAllFetchState should be replaced with reduceAnyFetchState
75
80
  const fetchState = (0, reduceFetchState_1.reduceAllFetchState)([
76
81
  scheduleDetailState,
77
82
  allAccountList,
@@ -98,7 +103,6 @@ const getScheduleDetailsView = (state, scheduleType) => {
98
103
  };
99
104
  };
100
105
  exports.getScheduleDetailsView = getScheduleDetailsView;
101
- // TODO: Optimize this function as the accountlist is very huge
102
106
  const filterNestedAccountHierarchyById = (accountList, targetIds) => {
103
107
  const result = [];
104
108
  for (const account of accountList) {
@@ -2,7 +2,7 @@ import { Amount } from '../../../commonStateTypes/amount';
2
2
  import { ID, FetchStateAndError } from '../../../commonStateTypes/common';
3
3
  import { SortOrder } from '../../../commonStateTypes/selectorTypes/sortOrderTypes';
4
4
  import { ScheduleDaysOfMonth } from '../../../commonStateTypes/timePeriod';
5
- import { JEScheduleKey, ScheduleJournalEntryStatusCodeType, ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
5
+ import { JEScheduleTransactionKey, ScheduleJournalEntryStatusCodeType, ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
6
6
  import { TransactionID } from '../../../entity/transaction/stateTypes/transaction';
7
7
  import { ZeniDate } from '../../../zeniDayJS';
8
8
  import { ScheduleDetailSortKey } from './scheduleDetailTypes';
@@ -12,6 +12,7 @@ export interface JETransactionLink {
12
12
  thirdPartyTransactionId?: ID;
13
13
  transactionDetailID?: TransactionID;
14
14
  recommendedTransactionID?: TransactionID;
15
+ reversalTransactionDetails?: TransactionID;
15
16
  }
16
17
  export interface ScheduleDetailUIState {
17
18
  sortKey: ScheduleDetailSortKey;
@@ -58,6 +59,6 @@ export interface ScheduleDetailViewState extends FetchStateAndError {
58
59
  markAsCompleteStatus: FetchStateAndError;
59
60
  uiState: ScheduleDetailUIState;
60
61
  selectedDetailScheduleType?: ScheduleTypes;
61
- selectedJEScheduleKey?: JEScheduleKey;
62
+ selectedJEScheduleKey?: JEScheduleTransactionKey;
62
63
  selectedJELinkRowIndex?: number;
63
64
  }
@@ -0,0 +1,8 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { fetchAccruedScheduleList, updateAccruedScheduleListFailure, updateAccruedScheduleListSuccess } from '../scheduleListReducer';
4
+ import { RootState } from '../../../../reducer';
5
+ import { ZeniAPI } from '../../../../zeniAPI';
6
+ import { updateAccruedJESchedules, updateAccruedJESchedulesDetails } from '../../../../entity/jeSchedules/jeSchedulesReducer';
7
+ export declare type ActionType = ReturnType<typeof fetchAccruedScheduleList> | ReturnType<typeof updateAccruedJESchedules> | ReturnType<typeof updateAccruedJESchedulesDetails> | ReturnType<typeof updateAccruedScheduleListSuccess> | ReturnType<typeof updateAccruedScheduleListFailure>;
8
+ export declare const fetchAccruedScheduleListEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchAccruedScheduleListEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const scheduleListReducer_1 = require("../scheduleListReducer");
7
+ const responsePayload_1 = require("../../../../responsePayload");
8
+ const jeSchedulesReducer_1 = require("../../../../entity/jeSchedules/jeSchedulesReducer");
9
+ const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
10
+ const timeframeTick_1 = require("../../../../commonStateTypes/timeframeTick");
11
+ const scheduleListTypes_1 = require("../scheduleListTypes");
12
+ const fetchAccruedScheduleListEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(scheduleListReducer_1.fetchAccruedScheduleList.match), (0, operators_1.mergeMap)((action) => {
13
+ const { scheduleType } = action.payload;
14
+ const { scheduleListState } = state$.value;
15
+ const scheduleState = (0, scheduleListReducer_1.getState)(scheduleListState, scheduleType);
16
+ const timeframe = action.payload.timeframeAndCategory != null
17
+ ? action.payload.timeframeAndCategory.selectedTimeframe
18
+ : scheduleState.selectedTimeframe;
19
+ const categoryId = action.payload.timeframeAndCategory != null
20
+ ? action.payload.timeframeAndCategory.selectedCategoryId
21
+ : scheduleState.selectedCategoryId;
22
+ const timePeriod = (0, timeframeTick_1.toTimePeriod)(timeframe);
23
+ const key = (0, scheduleListTypes_1.getScheduleListKey)(categoryId, timeframe);
24
+ const draft = scheduleState.jeScheduleAccruedByListKey[key];
25
+ if (draft != null &&
26
+ draft.fetchState === 'Completed' &&
27
+ action.payload.cacheOverride === false) {
28
+ return (0, rxjs_1.from)([]);
29
+ }
30
+ const queryParam = {
31
+ start_date: (0, timePeriod_1.toString)(timePeriod.start),
32
+ end_date: (0, timePeriod_1.toString)(timePeriod.end),
33
+ je_schedule_type: scheduleType,
34
+ sort_by: 'transaction_date',
35
+ sort_order: 'desc',
36
+ filter: 'all',
37
+ };
38
+ return zeniAPI
39
+ .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/schedules?query=${encodeURIComponent(JSON.stringify(queryParam))}`)
40
+ .pipe((0, operators_1.mergeMap)((response) => {
41
+ if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
42
+ const updateActions = [];
43
+ updateActions.push((0, jeSchedulesReducer_1.updateAccruedJESchedules)(response.data.je_schedules), (0, jeSchedulesReducer_1.updateAccruedJESchedulesDetails)(response.data.je_schedules, response.data.scheduled_journal_entries), (0, scheduleListReducer_1.updateAccruedScheduleListSuccess)(scheduleType, timeframe, categoryId, response.data.je_schedules));
44
+ return (0, rxjs_1.from)(updateActions);
45
+ }
46
+ else {
47
+ return (0, rxjs_1.of)((0, scheduleListReducer_1.updateAccruedScheduleListFailure)(scheduleType, timeframe, categoryId, response.status));
48
+ }
49
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, scheduleListReducer_1.updateAccruedScheduleListFailure)(scheduleType, timeframe, categoryId, (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Accrued Schedule List REST API call errored out' +
50
+ JSON.stringify(error))))));
51
+ }));
52
+ exports.fetchAccruedScheduleListEpic = fetchAccruedScheduleListEpic;
@@ -13,7 +13,13 @@ const fetchDownloadSchedulesEpic = (actions$, state$, zeniAPI) => actions$.pipe(
13
13
  const { scheduleType, downloadCategories } = action.payload;
14
14
  const scheduleListState = state$.value.scheduleListState;
15
15
  // if parameters are provided, use those. else go to localdata
16
- const scheduleState = (0, scheduleListReducer_1.getState)(scheduleListState, scheduleType);
16
+ let scheduleState;
17
+ if (scheduleType !== 'accrued_expenses') {
18
+ scheduleState = (0, scheduleListReducer_1.getState)(scheduleListState, scheduleType);
19
+ }
20
+ if (scheduleState == null) {
21
+ return (0, rxjs_1.from)([]);
22
+ }
17
23
  const timeframe = action.payload.timeframeAndCategory != null
18
24
  ? action.payload.timeframeAndCategory.selectedTimeframe
19
25
  : scheduleState.selectedTimeframe;
@@ -15,7 +15,13 @@ const fetchScheduleListEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, o
15
15
  const { scheduleType } = action.payload;
16
16
  const { scheduleListState, accountListState } = state$.value;
17
17
  // if parameters are provided, use those. else go to localdata
18
- const scheduleState = (0, scheduleListReducer_1.getState)(scheduleListState, scheduleType);
18
+ let scheduleState;
19
+ if (scheduleType !== 'accrued_expenses') {
20
+ scheduleState = (0, scheduleListReducer_1.getState)(scheduleListState, scheduleType);
21
+ }
22
+ if (scheduleState == null) {
23
+ return (0, rxjs_1.from)([]);
24
+ }
19
25
  const timeframe = action.payload.timeframeAndCategory != null
20
26
  ? action.payload.timeframeAndCategory.selectedTimeframe
21
27
  : scheduleState.selectedTimeframe;
@@ -3,10 +3,10 @@ import { Amount } from '../../../commonStateTypes/amount';
3
3
  import { COABalanceGroupedByPeriod } from '../../../commonStateTypes/coaBalance/coaBalance';
4
4
  import { TimeframeTick, TimeframeTickWithMetaData } from '../../../commonStateTypes/timeframeTick';
5
5
  import { AccountBase, AccountLabel, AccountType } from '../../../entity/account/accountState';
6
- import { JEScheduledTransaction } from '../../../entity/jeSchedules/jeSchedulesSelector';
6
+ import { JEScheduledTransaction, JEAccruedSchedule } from '../../../entity/jeSchedules/jeSchedulesSelector';
7
7
  import { ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
8
8
  import { AccountListKeyType } from '../../accountList/accountListState';
9
- import { JEScheduledTransactionWithBalance } from './scheduleListSelector';
9
+ import { JEScheduledTransactionWithBalance, JEScheduleWithBalance } from './scheduleListSelector';
10
10
  export interface ScheduleTotalType {
11
11
  totalAmount: Amount;
12
12
  totalRunningBalances: Amount;
@@ -18,6 +18,7 @@ export interface ScheduleTotalType {
18
18
  * @returns
19
19
  */
20
20
  export declare const getCalculatedScheduleTotals: (jeTransactions: JEScheduledTransaction[]) => ScheduleTotalType;
21
+ export declare const getCalculatedAccruedScheduleTotal: (jeAccruedSchedule: JEAccruedSchedule[]) => ScheduleTotalType;
21
22
  export declare const getAccountListKeyForSchedules: () => AccountListKeyType;
22
23
  export declare const getAllAccountBase: () => AccountBase;
23
24
  export declare const getAllAccountNested: () => NestedAccountHierarchyForReport;
@@ -29,6 +30,14 @@ export declare const getAllAccountNested: () => NestedAccountHierarchyForReport;
29
30
  * @returns
30
31
  */
31
32
  export declare const getAllTimeframeTicks: (sortedJETransactionView: JEScheduledTransaction[], startMonth: number) => TimeframeTickWithMetaData[];
33
+ /**
34
+ * This helper function is to get all possible timeframe
35
+ * Logic --> Timeframe Range is startDate = (currentDate to 3 months back )and endDate = (currentDate to 9 months ahead)
36
+ * @param sortedJETransactionView
37
+ * @param startMonth
38
+ * @returns
39
+ */
40
+ export declare const getAllTimeframeTicksForAccrued: (sortedJEAccruedSchedules: JEAccruedSchedule[], startMonth: number) => TimeframeTickWithMetaData[];
32
41
  /**
33
42
  * This function returns an COABalanceGroupedByPeriod (months, weeks, years, quarters) with an array of COABalances
34
43
  * in which we loop over the totalBalanceTimeframeTicks which is a record of <Labels(mm yy), Balances>- {'Feb 2023' : [20, 30, 40]}
@@ -39,18 +48,40 @@ export declare const getAllTimeframeTicks: (sortedJETransactionView: JEScheduled
39
48
  * @returns
40
49
  */
41
50
  export declare const calculateTotalBalanceTimeframeTick: (allTimeframeTickBalances: JEScheduledTransactionWithBalance[], allTimeframeTicks: TimeframeTickWithMetaData[], timeframe: 'months') => COABalanceGroupedByPeriod;
51
+ /**
52
+ * This function returns an COABalanceGroupedByPeriod (months, weeks, years, quarters) with an array of COABalances
53
+ * in which we loop over the totalBalanceTimeframeTicks which is a record of <Labels(mm yy), Balances>- {'Feb 2023' : [20, 30, 40]}
54
+ * e.g - { months : { balance, startDate, endDate, type}}
55
+ * @param allTimeframeTickBalances
56
+ * @param allTimeframeTicks
57
+ * @param timeframe
58
+ * @returns
59
+ */
60
+ export declare const calculateTotalBalanceTimeframeTickForAccrued: (allTimeframeTickBalances: JEScheduleWithBalance[], allTimeframeTicks: TimeframeTickWithMetaData[], timeframe: 'months') => COABalanceGroupedByPeriod;
42
61
  /**
43
62
  * This function helps us in finding COABalanceGroupedByPeriod for months
44
63
  * @param jeSchedule
45
64
  * @returns
46
65
  */
47
66
  export declare const calculateCOABalanceGroupedByPeriod: (jeSchedule: JEScheduledTransaction) => COABalanceGroupedByPeriod;
67
+ /**
68
+ * This function helps us in finding COABalanceGroupedByPeriod for months
69
+ * @param jeSchedule
70
+ * @returns
71
+ */
72
+ export declare const calculateCOABalanceGroupedByPeriodForAccrued: (jeSchedule: JEAccruedSchedule) => COABalanceGroupedByPeriod;
48
73
  /**
49
74
  * Function to get Duration of months out total months Eg 5/12 or 9/12
50
75
  * @param jeSchedule
51
76
  * @returns
52
77
  */
53
78
  export declare const getDurationOfMonthOutTotalMonth: (jeSchedule: JEScheduledTransaction) => number;
79
+ /**
80
+ * Function to get Duration of months out total months Eg 5/12 or 9/12
81
+ * @param jeSchedule
82
+ * @returns
83
+ */
84
+ export declare const getDurationOfMonthOutTotalMonthForAccrued: (jeSchedule: JEAccruedSchedule) => number;
54
85
  declare type AccountListTypesPayload = {
55
86
  accountListKey: AccountListKeyType;
56
87
  allowedAccountList: AccountType[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDefaultSelectedTimeframeForScheduleType = exports.getAccountsTypesForScheduleEpics = exports.getAccountLabelForScheduleType = exports.getAccountsTypesForScheduleList = exports.getDurationOfMonthOutTotalMonth = exports.calculateCOABalanceGroupedByPeriod = exports.calculateTotalBalanceTimeframeTick = exports.getAllTimeframeTicks = exports.getAllAccountNested = exports.getAllAccountBase = exports.getAccountListKeyForSchedules = exports.getCalculatedScheduleTotals = void 0;
3
+ exports.getDefaultSelectedTimeframeForScheduleType = exports.getAccountsTypesForScheduleEpics = exports.getAccountLabelForScheduleType = exports.getAccountsTypesForScheduleList = exports.getDurationOfMonthOutTotalMonthForAccrued = exports.getDurationOfMonthOutTotalMonth = exports.calculateCOABalanceGroupedByPeriodForAccrued = exports.calculateCOABalanceGroupedByPeriod = exports.calculateTotalBalanceTimeframeTickForAccrued = exports.calculateTotalBalanceTimeframeTick = exports.getAllTimeframeTicksForAccrued = exports.getAllTimeframeTicks = exports.getAllAccountNested = exports.getAllAccountBase = exports.getAccountListKeyForSchedules = exports.getCalculatedAccruedScheduleTotal = exports.getCalculatedScheduleTotals = void 0;
4
4
  const amount_1 = require("../../../commonStateTypes/amount");
5
5
  const formatZeniDateFY_1 = require("../../../commonStateTypes/fiscalYearHelpers/formatZeniDateFY");
6
6
  const getFYMonths_1 = require("../../../commonStateTypes/fiscalYearHelpers/getFYMonths");
@@ -31,6 +31,26 @@ const getCalculatedScheduleTotals = (jeTransactions) => {
31
31
  };
32
32
  };
33
33
  exports.getCalculatedScheduleTotals = getCalculatedScheduleTotals;
34
+ const getCalculatedAccruedScheduleTotal = (jeAccruedSchedule) => {
35
+ if (jeAccruedSchedule.length === 0) {
36
+ return {
37
+ totalAmount: (0, amount_1.toAmount)(0, 'USD', '$'),
38
+ totalRunningBalances: (0, amount_1.toAmount)(0, 'USD', '$'),
39
+ };
40
+ }
41
+ const totalAmountSum = jeAccruedSchedule.reduce((sum, schedule) => {
42
+ return sum + schedule.recurringAmount.amount;
43
+ }, 0);
44
+ const totalRunningBalances = jeAccruedSchedule.reduce((sum, schedule) => {
45
+ return (sum +
46
+ (schedule.balanceAsOfToday != null ? schedule.balanceAsOfToday.amount : 0));
47
+ }, 0);
48
+ return {
49
+ totalAmount: Object.assign(Object.assign({}, jeAccruedSchedule[0].recurringAmount), { amount: totalAmountSum }),
50
+ totalRunningBalances: Object.assign(Object.assign({}, jeAccruedSchedule[0].recurringAmount), { amount: totalRunningBalances }),
51
+ };
52
+ };
53
+ exports.getCalculatedAccruedScheduleTotal = getCalculatedAccruedScheduleTotal;
34
54
  const getAccountListKeyForSchedules = () => {
35
55
  return 'schedulesAccountList';
36
56
  };
@@ -78,6 +98,33 @@ const getAllTimeframeTicks = (sortedJETransactionView, startMonth) => {
78
98
  return tickLabel;
79
99
  };
80
100
  exports.getAllTimeframeTicks = getAllTimeframeTicks;
101
+ /**
102
+ * This helper function is to get all possible timeframe
103
+ * Logic --> Timeframe Range is startDate = (currentDate to 3 months back )and endDate = (currentDate to 9 months ahead)
104
+ * @param sortedJETransactionView
105
+ * @param startMonth
106
+ * @returns
107
+ */
108
+ const getAllTimeframeTicksForAccrued = (sortedJEAccruedSchedules, startMonth) => {
109
+ const tickLabel = [];
110
+ if (sortedJEAccruedSchedules.length > 0) {
111
+ const jeTransaction = sortedJEAccruedSchedules[0];
112
+ const { currencySymbol } = jeTransaction;
113
+ const start = (0, zeniDayJS_1.dateNow)().startOf('month').subtract(startMonth, 'month');
114
+ let months = 0;
115
+ while (months < getFYMonths_1.NUM_OF_MONTHS_IN_YEAR) {
116
+ tickLabel.push({
117
+ startDate: start.add(months, 'month'),
118
+ endDate: start.add(months, 'month').endOf('month'),
119
+ currencySymbol: currencySymbol,
120
+ balanceType: 'default',
121
+ });
122
+ months++;
123
+ }
124
+ }
125
+ return tickLabel;
126
+ };
127
+ exports.getAllTimeframeTicksForAccrued = getAllTimeframeTicksForAccrued;
81
128
  /**
82
129
  * This is a helper function to map totalBalanceTimeframeTicks to COABalance
83
130
  * @param totalBalanceTimeframeTicks
@@ -140,6 +187,34 @@ const calculateTotalBalanceTimeframeTick = (allTimeframeTickBalances, allTimefra
140
187
  };
141
188
  };
142
189
  exports.calculateTotalBalanceTimeframeTick = calculateTotalBalanceTimeframeTick;
190
+ /**
191
+ * This function returns an COABalanceGroupedByPeriod (months, weeks, years, quarters) with an array of COABalances
192
+ * in which we loop over the totalBalanceTimeframeTicks which is a record of <Labels(mm yy), Balances>- {'Feb 2023' : [20, 30, 40]}
193
+ * e.g - { months : { balance, startDate, endDate, type}}
194
+ * @param allTimeframeTickBalances
195
+ * @param allTimeframeTicks
196
+ * @param timeframe
197
+ * @returns
198
+ */
199
+ const calculateTotalBalanceTimeframeTickForAccrued = (allTimeframeTickBalances, allTimeframeTicks, timeframe) => {
200
+ const totalBalanceTimeframeTicks = setDefaultTotalBalanceTimeframeTicks(allTimeframeTicks);
201
+ allTimeframeTickBalances.forEach((jeScheduleKey) => {
202
+ const coaBalanceByPeriodByTimeframe = jeScheduleKey.coaBalanceByPeriod[timeframe];
203
+ if (coaBalanceByPeriodByTimeframe != null) {
204
+ coaBalanceByPeriodByTimeframe.map((coaBalancePeriod) => {
205
+ if (coaBalancePeriod.label != null &&
206
+ totalBalanceTimeframeTicks[coaBalancePeriod.label] != null) {
207
+ totalBalanceTimeframeTicks[coaBalancePeriod.label].push(coaBalancePeriod);
208
+ }
209
+ });
210
+ }
211
+ });
212
+ const coaBalanceGrouped = mapTotalBalanceTimeframeTickToCOAGroupedBalance(totalBalanceTimeframeTicks);
213
+ return {
214
+ months: coaBalanceGrouped,
215
+ };
216
+ };
217
+ exports.calculateTotalBalanceTimeframeTickForAccrued = calculateTotalBalanceTimeframeTickForAccrued;
143
218
  /**
144
219
  * This is a helper function just to map COABalance for every ScheduledJournalEntry
145
220
  * @param scheduleJournal
@@ -175,6 +250,19 @@ const calculateCOABalanceGroupedByPeriod = (jeSchedule) => {
175
250
  };
176
251
  };
177
252
  exports.calculateCOABalanceGroupedByPeriod = calculateCOABalanceGroupedByPeriod;
253
+ /**
254
+ * This function helps us in finding COABalanceGroupedByPeriod for months
255
+ * @param jeSchedule
256
+ * @returns
257
+ */
258
+ const calculateCOABalanceGroupedByPeriodForAccrued = (jeSchedule) => {
259
+ const scheduleJournalEntry = jeSchedule.scheduledJournalEntry;
260
+ const { currencyCode, currencySymbol } = jeSchedule;
261
+ return {
262
+ months: scheduleJournalEntry.map((scheduleJournal) => mapScheduleJournalToCOABalance(scheduleJournal, currencyCode, currencySymbol, 'month')),
263
+ };
264
+ };
265
+ exports.calculateCOABalanceGroupedByPeriodForAccrued = calculateCOABalanceGroupedByPeriodForAccrued;
178
266
  const countStatusForDuration = (statusCode) => {
179
267
  return ['unknown', 'posted'].includes(statusCode);
180
268
  };
@@ -194,6 +282,22 @@ const getDurationOfMonthOutTotalMonth = (jeSchedule) => {
194
282
  return totalDurationCompleted;
195
283
  };
196
284
  exports.getDurationOfMonthOutTotalMonth = getDurationOfMonthOutTotalMonth;
285
+ /**
286
+ * Function to get Duration of months out total months Eg 5/12 or 9/12
287
+ * @param jeSchedule
288
+ * @returns
289
+ */
290
+ const getDurationOfMonthOutTotalMonthForAccrued = (jeSchedule) => {
291
+ let totalDurationCompleted = 0;
292
+ const scheduledEntries = jeSchedule.scheduledJournalEntry;
293
+ const allowedJEScheduleStatus = ['ongoing', 'completed'];
294
+ if (allowedJEScheduleStatus.includes(jeSchedule.status.code) === true &&
295
+ scheduledEntries.length > 0) {
296
+ totalDurationCompleted = scheduledEntries.filter((scheduledEntry) => countStatusForDuration(scheduledEntry.status.code)).length;
297
+ }
298
+ return totalDurationCompleted;
299
+ };
300
+ exports.getDurationOfMonthOutTotalMonthForAccrued = getDurationOfMonthOutTotalMonthForAccrued;
197
301
  /**
198
302
  * Function to get accountListKey and allowedAccountList for a given tab
199
303
  * @param scheduleType
@@ -211,6 +315,11 @@ const getAccountsTypesForScheduleList = (scheduleType) => {
211
315
  accountListKey: 'schedulesAccountList',
212
316
  allowedAccountList: ['fixed_assets', 'other_assets'],
213
317
  };
318
+ case 'accrued_expenses': // check for this
319
+ return {
320
+ accountListKey: 'schedulesAccountList',
321
+ allowedAccountList: ['fixed_assets', 'other_assets'],
322
+ };
214
323
  default:
215
324
  return {
216
325
  accountListKey: 'accountList',
@@ -223,6 +332,7 @@ const getAccountLabelForScheduleType = (scheduleType) => {
223
332
  switch (scheduleType) {
224
333
  case 'prepaid_expenses':
225
334
  case 'fixed_assets':
335
+ case 'accrued_expenses':
226
336
  return scheduleType;
227
337
  default:
228
338
  return undefined;
@@ -244,6 +354,7 @@ const getAccountsTypesForScheduleEpics = () => {
244
354
  'expenses',
245
355
  'other_expense',
246
356
  'other_assets',
357
+ 'other_current_liabilities',
247
358
  ],
248
359
  };
249
360
  };
@@ -257,6 +368,11 @@ const getDefaultSelectedTimeframeForScheduleType = (scheduleType) => {
257
368
  startDate: thisMonthStart.subtract(7, 'year'),
258
369
  endDate: thisMonthEnd,
259
370
  };
371
+ case 'accrued_expenses':
372
+ return {
373
+ startDate: thisMonthStart.subtract(7, 'year'),
374
+ endDate: thisMonthEnd,
375
+ };
260
376
  default:
261
377
  return {
262
378
  startDate: thisMonthStart.subtract(13, 'month'),