@zeniai/client-epic-state 5.1.22 → 5.1.23-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.
package/README.md CHANGED
@@ -89,7 +89,8 @@ Testing types with `tsc` and Vitest is an experimental feature. Breaking changes
89
89
  - `pnpm check-version` — Checks the current version using a custom script.
90
90
  - `pnpm check-dependencies` — Checks dependencies using a custom script.
91
91
  - `pnpm clean-resolutions` — Cleans up resolutions using a custom script.
92
- - `pnpm create-release-branch` — Runs the release branch creation script.
92
+ - `pnpm create-or-update-release-branch` — Runs the release branch creation/update script.
93
+ - `pnpm bump-versions-master` — Bumps versions and publishes all client repos on master end-to-end (per-repo PR + auto-merge + publish; v2 bumps only, no deploy).
93
94
  - `pnpm bump-update-web-app-cockpit-beta` — Runs the cockpit beta update script.
94
95
  - `pnpm send-release-notes` — Sends release notes using a custom script.
95
96
  - `pnpm update-slack-group-topic` — Updates the Slack group topic using a custom script.
@@ -59,9 +59,7 @@ export const fetchFluxAnalysisViewEpic = (actions$, state$, zeniAPI) => actions$
59
59
  selectedPeriod: monthAndYear,
60
60
  fetchReimbursement,
61
61
  keepExistingListItems,
62
- // The backend returns last_refresh_success_time on the top-level
63
- // status object (alongside code/message), not inside data.status.
64
- status: response.status,
62
+ status: response.data?.status,
65
63
  }));
66
64
  }
67
65
  return from(updateActions);
@@ -1,4 +1,5 @@
1
1
  import { getRecommendationAmountRange, } from '../../../commonStateTypes/recommendationBase';
2
+ import { isCustomerTransaction, } from '../../../entity/transaction/stateTypes/customerTransaction';
2
3
  import { toJEAndDepositTransactionTypeStrict, toVendorTransactionTypeStrict, } from '../../../entity/transaction/stateTypes/transactionType';
3
4
  import { isVendorTransaction, } from '../../../entity/transaction/stateTypes/vendorTransaction';
4
5
  import { convertCOTRecommendationsToRegular } from '../../../entity/transaction/transactionHelper';
@@ -30,6 +31,10 @@ export const toTransactionUpdatesFromTransactionDetailLocalData = (transactionDe
30
31
  const isTransactionMisCategorized = isTransactionMiscategorized(transaction, isExpenseAutomationEnabled);
31
32
  updates.memo = transactionDetailLocalData.memo;
32
33
  updates.documentId = transactionDetailLocalData.documentId;
34
+ // For invoice and credit_memo, project is at the transaction level.
35
+ if (isCustomerTransaction(transaction)) {
36
+ updates.project = transactionDetailLocalData.project;
37
+ }
33
38
  const selectedEntity = transactionDetailLocalData.selectedEntity;
34
39
  const updatedEntityId = transactionDetailLocalData.updatePreviousTransactionsWithUpdatedVendor ===
35
40
  true
@@ -52,7 +57,10 @@ export const toTransactionUpdatesFromTransactionDetailLocalData = (transactionDe
52
57
  lineDescription: lineItem.lineDescription,
53
58
  class: lineItem.class,
54
59
  account: lineItem.account,
55
- project: lineItem.project,
60
+ // Project is at the transaction level for invoice/credit_memo; omit from lines.
61
+ ...(!isCustomerTransaction(transaction)
62
+ ? { project: lineItem.project }
63
+ : {}),
56
64
  recommendation: convertCOTRecommendationsToRegular(lineItem.recommendationsWithCOT),
57
65
  };
58
66
  if (line.type === 'journal_entry_transaction_line' ||
@@ -226,6 +226,14 @@ const toTransactionUpdatePayload = (updates, detail, cotTransactionTracking, ven
226
226
  let basePayload;
227
227
  if (isCustomerTransaction(transaction)) {
228
228
  basePayload = toCustomerTransactionPayload(transaction);
229
+ // For invoice/credit_memo, project is at the transaction level; inject it here.
230
+ if (updates.project != null) {
231
+ basePayload = {
232
+ ...basePayload,
233
+ accounting_project_id: updates.project.projectId,
234
+ accounting_project_name: updates.project.projectName,
235
+ };
236
+ }
229
237
  }
230
238
  else if (isVendorTransaction(transaction)) {
231
239
  if (tranSelectedEntity != null && tranSelectedEntity.type === 'customer') {
@@ -12,6 +12,13 @@ export const toTransactionDetailLocalData = (transaction, defaultVendorId, uncat
12
12
  const vendorId = defaultVendorId ?? transaction.vendor?.id;
13
13
  transactionLocal.memo = transaction.memo;
14
14
  transactionLocal.documentId = transaction.documentId;
15
+ // For invoice and credit_memo, project is at the transaction level (not on lines).
16
+ if (isCustomerTransaction(transaction) && transaction.projectId != null) {
17
+ transactionLocal.project = {
18
+ projectId: transaction.projectId,
19
+ projectName: transaction.projectName ?? '',
20
+ };
21
+ }
15
22
  transactionLocal.vendorUpdates =
16
23
  isVendorTransaction(transaction) && vendorId != null
17
24
  ? {
@@ -423,6 +430,7 @@ export const toUpdateLineItemsOriginalCategoryClass = (transaction, transactionD
423
430
  ...initialSupportedTransactionDetail.transactionDetailLocalData,
424
431
  memo: transactionDetailLocalData.memo,
425
432
  documentId: transactionDetailLocalData.documentId,
433
+ project: transactionDetailLocalData.project,
426
434
  lineItemById: newLineItems,
427
435
  vendorDetails: transactionDetailLocalData.vendorDetails,
428
436
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
@@ -527,6 +535,7 @@ export const toSetAllLineItemsToCategoryClass = (transaction, transactionDetailL
527
535
  ...initialSupportedTransactionDetail.transactionDetailLocalData,
528
536
  memo: transactionDetailLocalData.memo,
529
537
  documentId: transactionDetailLocalData.documentId,
538
+ project: transactionDetailLocalData.project,
530
539
  lineItemById: newLineItems,
531
540
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
532
541
  vendorDetails: transactionDetailLocalData.vendorDetails,
@@ -572,6 +581,7 @@ export const toSetAllLineItemsLocalDataIsUpdateAllChecked = (transaction, transa
572
581
  ...initialSupportedTransactionDetail.transactionDetailLocalData,
573
582
  memo: transactionDetailLocalData.memo,
574
583
  documentId: transactionDetailLocalData.documentId,
584
+ project: transactionDetailLocalData.project,
575
585
  lineItemById: newLineItems,
576
586
  vendorDetails: transactionDetailLocalData.vendorDetails,
577
587
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
@@ -729,6 +739,7 @@ export const setEntityRecommendationForLineIdInLocalData = (transaction, transac
729
739
  ...initialSupportedTransactionDetail.transactionDetailLocalData,
730
740
  memo: transactionDetailLocalData.memo,
731
741
  documentId: transactionDetailLocalData.documentId,
742
+ project: transactionDetailLocalData.project,
732
743
  lineItemById: newLineItems,
733
744
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
734
745
  vendorDetails: transactionDetailLocalData.vendorDetails,
@@ -782,6 +793,7 @@ export const removeEntityRecommendationForLineIdInLocalData = (transaction, tran
782
793
  ...initialSupportedTransactionDetail.transactionDetailLocalData,
783
794
  memo: transactionDetailLocalData.memo,
784
795
  documentId: transactionDetailLocalData.documentId,
796
+ project: transactionDetailLocalData.project,
785
797
  lineItemById: newLineItems,
786
798
  vendorDetails: transactionDetailLocalData.vendorDetails,
787
799
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
@@ -1002,6 +1014,7 @@ export const toUpdateLineItemsToOriginalVendor = (transaction, transactionDetail
1002
1014
  ...initialSupportedTransactionDetail.transactionDetailLocalData,
1003
1015
  memo: transactionDetailLocalData.memo,
1004
1016
  documentId: transactionDetailLocalData.documentId,
1017
+ project: transactionDetailLocalData.project,
1005
1018
  lineItemById: newLineItems,
1006
1019
  isVendorUpdateAllChecked: false,
1007
1020
  latestUpdatedLineWithEntity: transactionDetailLocalData.latestUpdatedLineWithEntity,
@@ -62,9 +62,7 @@ const fetchFluxAnalysisViewEpic = (actions$, state$, zeniAPI) => actions$.pipe((
62
62
  selectedPeriod: monthAndYear,
63
63
  fetchReimbursement,
64
64
  keepExistingListItems,
65
- // The backend returns last_refresh_success_time on the top-level
66
- // status object (alongside code/message), not inside data.status.
67
- status: response.status,
65
+ status: response.data?.status,
68
66
  }));
69
67
  }
70
68
  return (0, rxjs_1.from)(updateActions);
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isTransactionUncategorized = exports.isTransactionMiscategorized = exports.toRecommendedClassBase = exports.toRecommendedAccountBase = exports.toTransactionUpdatesFromTransactionDetailLocalData = void 0;
4
4
  const recommendationBase_1 = require("../../../commonStateTypes/recommendationBase");
5
+ const customerTransaction_1 = require("../../../entity/transaction/stateTypes/customerTransaction");
5
6
  const transactionType_1 = require("../../../entity/transaction/stateTypes/transactionType");
6
7
  const vendorTransaction_1 = require("../../../entity/transaction/stateTypes/vendorTransaction");
7
8
  const transactionHelper_1 = require("../../../entity/transaction/transactionHelper");
@@ -33,6 +34,10 @@ const toTransactionUpdatesFromTransactionDetailLocalData = (transactionDetailLoc
33
34
  const isTransactionMisCategorized = (0, exports.isTransactionMiscategorized)(transaction, isExpenseAutomationEnabled);
34
35
  updates.memo = transactionDetailLocalData.memo;
35
36
  updates.documentId = transactionDetailLocalData.documentId;
37
+ // For invoice and credit_memo, project is at the transaction level.
38
+ if ((0, customerTransaction_1.isCustomerTransaction)(transaction)) {
39
+ updates.project = transactionDetailLocalData.project;
40
+ }
36
41
  const selectedEntity = transactionDetailLocalData.selectedEntity;
37
42
  const updatedEntityId = transactionDetailLocalData.updatePreviousTransactionsWithUpdatedVendor ===
38
43
  true
@@ -55,7 +60,10 @@ const toTransactionUpdatesFromTransactionDetailLocalData = (transactionDetailLoc
55
60
  lineDescription: lineItem.lineDescription,
56
61
  class: lineItem.class,
57
62
  account: lineItem.account,
58
- project: lineItem.project,
63
+ // Project is at the transaction level for invoice/credit_memo; omit from lines.
64
+ ...(!(0, customerTransaction_1.isCustomerTransaction)(transaction)
65
+ ? { project: lineItem.project }
66
+ : {}),
59
67
  recommendation: (0, transactionHelper_1.convertCOTRecommendationsToRegular)(lineItem.recommendationsWithCOT),
60
68
  };
61
69
  if (line.type === 'journal_entry_transaction_line' ||
@@ -233,6 +233,14 @@ const toTransactionUpdatePayload = (updates, detail, cotTransactionTracking, ven
233
233
  let basePayload;
234
234
  if ((0, customerTransaction_1.isCustomerTransaction)(transaction)) {
235
235
  basePayload = (0, customerTransactionPayload_1.toCustomerTransactionPayload)(transaction);
236
+ // For invoice/credit_memo, project is at the transaction level; inject it here.
237
+ if (updates.project != null) {
238
+ basePayload = {
239
+ ...basePayload,
240
+ accounting_project_id: updates.project.projectId,
241
+ accounting_project_name: updates.project.projectName,
242
+ };
243
+ }
236
244
  }
237
245
  else if ((0, vendorTransaction_1.isVendorTransaction)(transaction)) {
238
246
  if (tranSelectedEntity != null && tranSelectedEntity.type === 'customer') {
@@ -15,6 +15,13 @@ const toTransactionDetailLocalData = (transaction, defaultVendorId, uncategorize
15
15
  const vendorId = defaultVendorId ?? transaction.vendor?.id;
16
16
  transactionLocal.memo = transaction.memo;
17
17
  transactionLocal.documentId = transaction.documentId;
18
+ // For invoice and credit_memo, project is at the transaction level (not on lines).
19
+ if ((0, customerTransaction_1.isCustomerTransaction)(transaction) && transaction.projectId != null) {
20
+ transactionLocal.project = {
21
+ projectId: transaction.projectId,
22
+ projectName: transaction.projectName ?? '',
23
+ };
24
+ }
18
25
  transactionLocal.vendorUpdates =
19
26
  (0, vendorTransaction_1.isVendorTransaction)(transaction) && vendorId != null
20
27
  ? {
@@ -429,6 +436,7 @@ const toUpdateLineItemsOriginalCategoryClass = (transaction, transactionDetailLo
429
436
  ...transactionDetailState_1.initialSupportedTransactionDetail.transactionDetailLocalData,
430
437
  memo: transactionDetailLocalData.memo,
431
438
  documentId: transactionDetailLocalData.documentId,
439
+ project: transactionDetailLocalData.project,
432
440
  lineItemById: newLineItems,
433
441
  vendorDetails: transactionDetailLocalData.vendorDetails,
434
442
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
@@ -534,6 +542,7 @@ const toSetAllLineItemsToCategoryClass = (transaction, transactionDetailLocalDat
534
542
  ...transactionDetailState_1.initialSupportedTransactionDetail.transactionDetailLocalData,
535
543
  memo: transactionDetailLocalData.memo,
536
544
  documentId: transactionDetailLocalData.documentId,
545
+ project: transactionDetailLocalData.project,
537
546
  lineItemById: newLineItems,
538
547
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
539
548
  vendorDetails: transactionDetailLocalData.vendorDetails,
@@ -580,6 +589,7 @@ const toSetAllLineItemsLocalDataIsUpdateAllChecked = (transaction, transactionDe
580
589
  ...transactionDetailState_1.initialSupportedTransactionDetail.transactionDetailLocalData,
581
590
  memo: transactionDetailLocalData.memo,
582
591
  documentId: transactionDetailLocalData.documentId,
592
+ project: transactionDetailLocalData.project,
583
593
  lineItemById: newLineItems,
584
594
  vendorDetails: transactionDetailLocalData.vendorDetails,
585
595
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
@@ -738,6 +748,7 @@ const setEntityRecommendationForLineIdInLocalData = (transaction, transactionDet
738
748
  ...transactionDetailState_1.initialSupportedTransactionDetail.transactionDetailLocalData,
739
749
  memo: transactionDetailLocalData.memo,
740
750
  documentId: transactionDetailLocalData.documentId,
751
+ project: transactionDetailLocalData.project,
741
752
  lineItemById: newLineItems,
742
753
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
743
754
  vendorDetails: transactionDetailLocalData.vendorDetails,
@@ -792,6 +803,7 @@ const removeEntityRecommendationForLineIdInLocalData = (transaction, transaction
792
803
  ...transactionDetailState_1.initialSupportedTransactionDetail.transactionDetailLocalData,
793
804
  memo: transactionDetailLocalData.memo,
794
805
  documentId: transactionDetailLocalData.documentId,
806
+ project: transactionDetailLocalData.project,
795
807
  lineItemById: newLineItems,
796
808
  vendorDetails: transactionDetailLocalData.vendorDetails,
797
809
  vendorUpdates: transactionDetailLocalData.vendorUpdates,
@@ -1015,6 +1027,7 @@ const toUpdateLineItemsToOriginalVendor = (transaction, transactionDetailLocalDa
1015
1027
  ...transactionDetailState_1.initialSupportedTransactionDetail.transactionDetailLocalData,
1016
1028
  memo: transactionDetailLocalData.memo,
1017
1029
  documentId: transactionDetailLocalData.documentId,
1030
+ project: transactionDetailLocalData.project,
1018
1031
  lineItemById: newLineItems,
1019
1032
  isVendorUpdateAllChecked: false,
1020
1033
  latestUpdatedLineWithEntity: transactionDetailLocalData.latestUpdatedLineWithEntity,
@@ -62,6 +62,7 @@ export interface TransactionUpdates {
62
62
  customerId?: ID;
63
63
  documentId?: string;
64
64
  memo?: string;
65
+ project?: ProjectBase;
65
66
  vendorId?: ID;
66
67
  }
67
68
  export interface EntityRelatedRecommendationUpdates {
@@ -54,6 +54,7 @@ export interface TransactionDetailLocalData {
54
54
  latestSelectedEntityOnLineItem?: Entity;
55
55
  latestUpdatedLineWithEntity?: ID;
56
56
  memo?: string;
57
+ project?: ProjectBase;
57
58
  selectedEntity?: Entity;
58
59
  updatePreviousTransactionsWithUpdatedVendor?: boolean;
59
60
  vendorDetails?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.1.22",
3
+ "version": "5.1.23-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",
@@ -79,6 +79,7 @@
79
79
  "ts-prune": "^0.10.3",
80
80
  "ts-unused-exports": "^11.0.1",
81
81
  "typescript": "^5.7.3",
82
+ "vite": "^7.3.5",
82
83
  "vitest": "^4.1.8"
83
84
  },
84
85
  "dependencies": {
@@ -129,7 +130,8 @@
129
130
  "postversion": "git push && git push --tags",
130
131
  "check-dependencies": "node ./scripts/check_dependencies.js",
131
132
  "clean-overrides": "node ./scripts/clean_overrides.js",
132
- "create-release-branch": "chmod +x ./scripts/create_release_branch.sh && ./scripts/create_release_branch.sh",
133
+ "create-or-update-release-branch": "chmod +x ./scripts/create_or_update_release_branch.sh && ./scripts/create_or_update_release_branch.sh",
134
+ "bump-versions-master": "chmod +x ./scripts/bump_versions_master.sh && ./scripts/bump_versions_master.sh",
133
135
  "bump-update-web-app-cockpit-beta": "chmod +x ./scripts/bump_and_update_web_app_ui_beta.sh && ./scripts/bump_and_update_web_app_ui_beta.sh",
134
136
  "send-release-notes": "chmod +x ./scripts/send_release_notes.sh && ./scripts/send_release_notes.sh",
135
137
  "update-slack-group-topic": "chmod +x ./scripts/update-slack-group-topic.sh && ./scripts/update-slack-group-topic.sh",