@zeniai/client-epic-state 5.1.35-betaRR1 → 5.1.36

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.
@@ -3,8 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.sortJournalEntryLines = exports.filterJournalEntryLinesExcludingLinked = exports.validateJournalEntrySplit = exports.journalEntrySplitReconciliation = exports.journalEntryTotalsByPostingSide = exports.sumJournalEntryAmounts = exports.journalEntryDefaultSortConfig = exports.toJournalEntrySortKey = exports.JOURNAL_ENTRY_SORT_KEYS = void 0;
7
- const big_js_1 = __importDefault(require("big.js"));
6
+ exports.sortJournalEntryLines = exports.filterJournalEntryLinesExcludingLinked = exports.journalEntryTotalsByPostingSide = exports.sumJournalEntryAmounts = exports.journalEntryDefaultSortConfig = exports.toJournalEntrySortKey = exports.JOURNAL_ENTRY_SORT_KEYS = void 0;
8
7
  const orderBy_1 = __importDefault(require("lodash/orderBy"));
9
8
  const stringToUnion_1 = require("../../commonStateTypes/stringToUnion");
10
9
  const transactionLine_1 = require("../../entity/transaction/stateTypes/transactionLine");
@@ -111,65 +110,6 @@ const journalEntryTotalsByPostingSide = (lines) => {
111
110
  };
112
111
  exports.journalEntryTotalsByPostingSide = journalEntryTotalsByPostingSide;
113
112
  // ---------------------------------------------------------------------------
114
- // Split reconciliation & validation (Phase 2 — JE split)
115
- // ---------------------------------------------------------------------------
116
- // Half-cent tolerance for the balance equality checks, matching the expense
117
- // reconciliation row's epsilon. Sums use big.js so repeated decimal addition
118
- // doesn't drift before the comparison.
119
- const JOURNAL_ENTRY_BALANCE_EPSILON = 0.005;
120
- /**
121
- * Sums debit and credit sides (big.js-exact) and reports whether the split is
122
- * balanced: total debits equal total credits AND equal the original
123
- * transaction total. The original total of a valid JE equals its total debits,
124
- * so it is passed in by the caller (`transaction.amount.amount`).
125
- */
126
- const journalEntrySplitReconciliation = (lines, originalTotal) => {
127
- let debit = new big_js_1.default(0);
128
- let credit = new big_js_1.default(0);
129
- for (const line of lines) {
130
- const amount = new big_js_1.default(line.amount?.amount ?? 0);
131
- if (line.postingType === 'debit') {
132
- debit = debit.plus(amount);
133
- }
134
- else if (line.postingType === 'credit') {
135
- credit = credit.plus(amount);
136
- }
137
- }
138
- const balancedToEachOther = debit
139
- .minus(credit)
140
- .abs()
141
- .lt(JOURNAL_ENTRY_BALANCE_EPSILON);
142
- const balancedToOriginal = debit
143
- .minus(originalTotal)
144
- .abs()
145
- .lt(JOURNAL_ENTRY_BALANCE_EPSILON);
146
- return {
147
- debitTotal: debit.toNumber(),
148
- creditTotal: credit.toNumber(),
149
- isBalanced: balancedToEachOther && balancedToOriginal,
150
- };
151
- };
152
- exports.journalEntrySplitReconciliation = journalEntrySplitReconciliation;
153
- /**
154
- * Save-time validation for a JE split (Figma `4165:33028` / `4165:45379`):
155
- * 1. every line needs a non-zero debit or credit, and
156
- * 2. total debits == total credits == original total.
157
- * Returns the first failing rule's `errorKey` (maps to a strings entry). Does
158
- * NOT require category/class to be chosen — balance is the only gate.
159
- */
160
- const validateJournalEntrySplit = (lines, originalTotal) => {
161
- const everyLineHasSide = lines.every((line) => (line.postingType === 'debit' || line.postingType === 'credit') &&
162
- Math.abs(line.amount?.amount ?? 0) > JOURNAL_ENTRY_BALANCE_EPSILON);
163
- if (!everyLineHasSide) {
164
- return { ok: false, errorKey: 'lineNeedsDebitOrCredit' };
165
- }
166
- if (!(0, exports.journalEntrySplitReconciliation)(lines, originalTotal).isBalanced) {
167
- return { ok: false, errorKey: 'totalsMustEqual' };
168
- }
169
- return { ok: true };
170
- };
171
- exports.validateJournalEntrySplit = validateJournalEntrySplit;
172
- // ---------------------------------------------------------------------------
173
113
  // Filter
174
114
  // ---------------------------------------------------------------------------
175
115
  /**
@@ -8,7 +8,7 @@ import { SupportedTransaction, SupportedTransactionPayload } from '../../entity/
8
8
  import { ZeniAPIStatus } from '../../responsePayload';
9
9
  import { UncategorizedAccounts } from '../accountList/accountListSelector';
10
10
  import { TransactionDetailState, TransactionSaveUpdates } from './transactionDetailState';
11
- import { TransactionDetailLineItemData, TransactionDetailLocalData, TransactionVendorUpdates } from './transactionDetailTypes';
11
+ import { TransactionDetailLocalData, TransactionVendorUpdates } from './transactionDetailTypes';
12
12
  export declare const initialState: TransactionDetailState;
13
13
  export declare const downloadAccountingProviderAttachment: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[attachmentId: string], {
14
14
  attachmentId: string;
@@ -166,15 +166,6 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
166
166
  transactionId: TransactionID;
167
167
  transaction: SupportedTransaction;
168
168
  isEnabled: boolean;
169
- }, "transactionDetail/setIsVendorUpdateAllChecked", never, never>, addSplitLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, newLine: TransactionDetailLineItemData], {
170
- transactionId: TransactionID;
171
- newLine: TransactionDetailLineItemData;
172
- }, "transactionDetail/addSplitLine", never, never>, deleteSplitLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, lineId: string], {
173
- transactionId: TransactionID;
174
- lineId: string;
175
- }, "transactionDetail/deleteSplitLine", never, never>, toggleSplitEditMode: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, editMode: boolean], {
176
- transactionId: TransactionID;
177
- editMode: boolean;
178
- }, "transactionDetail/toggleSplitEditMode", never, never>;
169
+ }, "transactionDetail/setIsVendorUpdateAllChecked", never, never>;
179
170
  declare const _default: import("redux").Reducer<TransactionDetailState>;
180
171
  export default _default;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  var _a;
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.toggleSplitEditMode = exports.deleteSplitLine = exports.addSplitLine = exports.setIsVendorUpdateAllChecked = exports.updateVendorBulkRecommendationsFetchStatus = exports.updateLatestSelectedEntity = exports.resetAllLineItemsToVendor = exports.updateVendorToAllLineItems = exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = exports.resetSelectedCustomer = exports.resetVendor = exports.updateSelectedCustomer = exports.updateSelectedVendor = exports.removeEntityRecommendationForLineIdForTransactionDetail = exports.markCategoryClassRecommendationsFailureForTransactionDetail = exports.markCategoryClassRecommendationsCompletedForTransactionDetail = exports.markCategoryClassRecommendationsInProgressForTransactionDetail = exports.setEntityRecommendationForLineIdsForTransactionDetail = exports.setAllLineItemsLocalDataIsUpdateAllChecked = exports.setAllLineItemsToCategoryClassInLocalData = exports.resetLineItemsCategoryClassInLocalData = exports.clearTransactionDetailLocalData = exports.saveTransactionDetailLocalData = exports.initializeTransactionDetailLocalData = exports.saveTransactionDetail = exports.updateTransactionStateIfUpdateActionNotAllowed = exports.updateStatusConsolidatedSaveTransactionDetail = exports.updateStatusForTransactionNotMiscategorizedUpdate = exports.deleteTransactionAttachmentSuccess = exports.deleteTransactionAttachmentFailure = exports.deleteTransactionAttachment = exports.markTransactionAsNotMiscategorized = exports.clearTransactionDetailSaveStatus = exports.updateTransactionDetailSaveStatus = exports.updateTransactionDetail = exports.uploadMissingAttachmentSuccess = exports.clearTransactionDetail = exports.removeTransactionDetail = exports.updateTransactionDetailFetchState = exports.fetchTransactionDetail = exports.downloadAccountingProviderAttachmentFailure = exports.downloadAccountingProviderAttachmentSuccess = exports.downloadAccountingProviderAttachment = exports.initialState = void 0;
7
+ exports.setIsVendorUpdateAllChecked = exports.updateVendorBulkRecommendationsFetchStatus = exports.updateLatestSelectedEntity = exports.resetAllLineItemsToVendor = exports.updateVendorToAllLineItems = exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = exports.resetSelectedCustomer = exports.resetVendor = exports.updateSelectedCustomer = exports.updateSelectedVendor = exports.removeEntityRecommendationForLineIdForTransactionDetail = exports.markCategoryClassRecommendationsFailureForTransactionDetail = exports.markCategoryClassRecommendationsCompletedForTransactionDetail = exports.markCategoryClassRecommendationsInProgressForTransactionDetail = exports.setEntityRecommendationForLineIdsForTransactionDetail = exports.setAllLineItemsLocalDataIsUpdateAllChecked = exports.setAllLineItemsToCategoryClassInLocalData = exports.resetLineItemsCategoryClassInLocalData = exports.clearTransactionDetailLocalData = exports.saveTransactionDetailLocalData = exports.initializeTransactionDetailLocalData = exports.saveTransactionDetail = exports.updateTransactionStateIfUpdateActionNotAllowed = exports.updateStatusConsolidatedSaveTransactionDetail = exports.updateStatusForTransactionNotMiscategorizedUpdate = exports.deleteTransactionAttachmentSuccess = exports.deleteTransactionAttachmentFailure = exports.deleteTransactionAttachment = exports.markTransactionAsNotMiscategorized = exports.clearTransactionDetailSaveStatus = exports.updateTransactionDetailSaveStatus = exports.updateTransactionDetail = exports.uploadMissingAttachmentSuccess = exports.clearTransactionDetail = exports.removeTransactionDetail = exports.updateTransactionDetailFetchState = exports.fetchTransactionDetail = exports.downloadAccountingProviderAttachmentFailure = exports.downloadAccountingProviderAttachmentSuccess = exports.downloadAccountingProviderAttachment = exports.initialState = void 0;
8
8
  const toolkit_1 = require("@reduxjs/toolkit");
9
9
  const get_1 = __importDefault(require("lodash/get"));
10
10
  const entity_1 = require("../../entity/genericEntity/entity");
@@ -670,71 +670,6 @@ const transactionDetail = (0, toolkit_1.createSlice)({
670
670
  };
671
671
  },
672
672
  },
673
- // Split transaction — Phase 1 (expense)
674
- addSplitLine: {
675
- reducer(draft, action) {
676
- const key = (0, transactionDetailState_1.getTransactionDetailKey)(action.payload.transactionId);
677
- const detail = (0, get_1.default)(draft.transactionDetailById, key, undefined);
678
- if (detail != null) {
679
- draft.transactionDetailById[key] = {
680
- ...detail,
681
- transactionDetailLocalData: {
682
- ...detail.transactionDetailLocalData,
683
- lineItemById: {
684
- ...detail.transactionDetailLocalData.lineItemById,
685
- [action.payload.newLine.id]: action.payload.newLine,
686
- },
687
- },
688
- };
689
- }
690
- },
691
- prepare(transactionId, newLine) {
692
- return { payload: { transactionId, newLine } };
693
- },
694
- },
695
- deleteSplitLine: {
696
- reducer(draft, action) {
697
- const key = (0, transactionDetailState_1.getTransactionDetailKey)(action.payload.transactionId);
698
- const detail = (0, get_1.default)(draft.transactionDetailById, key, undefined);
699
- if (detail == null) {
700
- return;
701
- }
702
- const { lineItemById, deletedLineIds = [] } = detail.transactionDetailLocalData;
703
- const updated = { ...lineItemById };
704
- delete updated[action.payload.lineId];
705
- draft.transactionDetailById[key] = {
706
- ...detail,
707
- transactionDetailLocalData: {
708
- ...detail.transactionDetailLocalData,
709
- lineItemById: updated,
710
- deletedLineIds: [...deletedLineIds, action.payload.lineId],
711
- },
712
- };
713
- },
714
- prepare(transactionId, lineId) {
715
- return { payload: { transactionId, lineId } };
716
- },
717
- },
718
- toggleSplitEditMode: {
719
- reducer(draft, action) {
720
- const key = (0, transactionDetailState_1.getTransactionDetailKey)(action.payload.transactionId);
721
- const detail = (0, get_1.default)(draft.transactionDetailById, key, undefined);
722
- if (detail != null) {
723
- draft.transactionDetailById[key] = {
724
- ...detail,
725
- transactionDetailLocalData: {
726
- ...detail.transactionDetailLocalData,
727
- editMode: action.payload.editMode,
728
- // Clear delete tracking when exiting edit mode without saving.
729
- ...(!action.payload.editMode && { deletedLineIds: [] }),
730
- },
731
- };
732
- }
733
- },
734
- prepare(transactionId, editMode) {
735
- return { payload: { transactionId, editMode } };
736
- },
737
- },
738
673
  clearRecommendedVendorsList(draft) {
739
674
  Object.assign(draft, exports.initialState);
740
675
  },
@@ -843,7 +778,7 @@ const transactionDetail = (0, toolkit_1.createSlice)({
843
778
  },
844
779
  },
845
780
  });
846
- _a = transactionDetail.actions, exports.downloadAccountingProviderAttachment = _a.downloadAccountingProviderAttachment, exports.downloadAccountingProviderAttachmentSuccess = _a.downloadAccountingProviderAttachmentSuccess, exports.downloadAccountingProviderAttachmentFailure = _a.downloadAccountingProviderAttachmentFailure, exports.fetchTransactionDetail = _a.fetchTransactionDetail, exports.updateTransactionDetailFetchState = _a.updateTransactionDetailFetchState, exports.removeTransactionDetail = _a.removeTransactionDetail, exports.clearTransactionDetail = _a.clearTransactionDetail, exports.uploadMissingAttachmentSuccess = _a.uploadMissingAttachmentSuccess, exports.updateTransactionDetail = _a.updateTransactionDetail, exports.updateTransactionDetailSaveStatus = _a.updateTransactionDetailSaveStatus, exports.clearTransactionDetailSaveStatus = _a.clearTransactionDetailSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.deleteTransactionAttachment = _a.deleteTransactionAttachment, exports.deleteTransactionAttachmentFailure = _a.deleteTransactionAttachmentFailure, exports.deleteTransactionAttachmentSuccess = _a.deleteTransactionAttachmentSuccess, exports.updateStatusForTransactionNotMiscategorizedUpdate = _a.updateStatusForTransactionNotMiscategorizedUpdate, exports.updateStatusConsolidatedSaveTransactionDetail = _a.updateStatusConsolidatedSaveTransactionDetail, exports.updateTransactionStateIfUpdateActionNotAllowed = _a.updateTransactionStateIfUpdateActionNotAllowed, exports.saveTransactionDetail = _a.saveTransactionDetail, exports.initializeTransactionDetailLocalData = _a.initializeTransactionDetailLocalData, exports.saveTransactionDetailLocalData = _a.saveTransactionDetailLocalData, exports.clearTransactionDetailLocalData = _a.clearTransactionDetailLocalData, exports.resetLineItemsCategoryClassInLocalData = _a.resetLineItemsCategoryClassInLocalData, exports.setAllLineItemsToCategoryClassInLocalData = _a.setAllLineItemsToCategoryClassInLocalData, exports.setAllLineItemsLocalDataIsUpdateAllChecked = _a.setAllLineItemsLocalDataIsUpdateAllChecked, exports.setEntityRecommendationForLineIdsForTransactionDetail = _a.setEntityRecommendationForLineIdsForTransactionDetail, exports.markCategoryClassRecommendationsInProgressForTransactionDetail = _a.markCategoryClassRecommendationsInProgressForTransactionDetail, exports.markCategoryClassRecommendationsCompletedForTransactionDetail = _a.markCategoryClassRecommendationsCompletedForTransactionDetail, exports.markCategoryClassRecommendationsFailureForTransactionDetail = _a.markCategoryClassRecommendationsFailureForTransactionDetail, exports.removeEntityRecommendationForLineIdForTransactionDetail = _a.removeEntityRecommendationForLineIdForTransactionDetail, exports.updateSelectedVendor = _a.updateSelectedVendor, exports.updateSelectedCustomer = _a.updateSelectedCustomer, exports.resetVendor = _a.resetVendor, exports.resetSelectedCustomer = _a.resetSelectedCustomer, exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = _a.updateLocalDataWithTransactionsUpdateWithVendorCheckbox, exports.updateVendorToAllLineItems = _a.updateVendorToAllLineItems, exports.resetAllLineItemsToVendor = _a.resetAllLineItemsToVendor, exports.updateLatestSelectedEntity = _a.updateLatestSelectedEntity, exports.updateVendorBulkRecommendationsFetchStatus = _a.updateVendorBulkRecommendationsFetchStatus, exports.setIsVendorUpdateAllChecked = _a.setIsVendorUpdateAllChecked, exports.addSplitLine = _a.addSplitLine, exports.deleteSplitLine = _a.deleteSplitLine, exports.toggleSplitEditMode = _a.toggleSplitEditMode;
781
+ _a = transactionDetail.actions, exports.downloadAccountingProviderAttachment = _a.downloadAccountingProviderAttachment, exports.downloadAccountingProviderAttachmentSuccess = _a.downloadAccountingProviderAttachmentSuccess, exports.downloadAccountingProviderAttachmentFailure = _a.downloadAccountingProviderAttachmentFailure, exports.fetchTransactionDetail = _a.fetchTransactionDetail, exports.updateTransactionDetailFetchState = _a.updateTransactionDetailFetchState, exports.removeTransactionDetail = _a.removeTransactionDetail, exports.clearTransactionDetail = _a.clearTransactionDetail, exports.uploadMissingAttachmentSuccess = _a.uploadMissingAttachmentSuccess, exports.updateTransactionDetail = _a.updateTransactionDetail, exports.updateTransactionDetailSaveStatus = _a.updateTransactionDetailSaveStatus, exports.clearTransactionDetailSaveStatus = _a.clearTransactionDetailSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.deleteTransactionAttachment = _a.deleteTransactionAttachment, exports.deleteTransactionAttachmentFailure = _a.deleteTransactionAttachmentFailure, exports.deleteTransactionAttachmentSuccess = _a.deleteTransactionAttachmentSuccess, exports.updateStatusForTransactionNotMiscategorizedUpdate = _a.updateStatusForTransactionNotMiscategorizedUpdate, exports.updateStatusConsolidatedSaveTransactionDetail = _a.updateStatusConsolidatedSaveTransactionDetail, exports.updateTransactionStateIfUpdateActionNotAllowed = _a.updateTransactionStateIfUpdateActionNotAllowed, exports.saveTransactionDetail = _a.saveTransactionDetail, exports.initializeTransactionDetailLocalData = _a.initializeTransactionDetailLocalData, exports.saveTransactionDetailLocalData = _a.saveTransactionDetailLocalData, exports.clearTransactionDetailLocalData = _a.clearTransactionDetailLocalData, exports.resetLineItemsCategoryClassInLocalData = _a.resetLineItemsCategoryClassInLocalData, exports.setAllLineItemsToCategoryClassInLocalData = _a.setAllLineItemsToCategoryClassInLocalData, exports.setAllLineItemsLocalDataIsUpdateAllChecked = _a.setAllLineItemsLocalDataIsUpdateAllChecked, exports.setEntityRecommendationForLineIdsForTransactionDetail = _a.setEntityRecommendationForLineIdsForTransactionDetail, exports.markCategoryClassRecommendationsInProgressForTransactionDetail = _a.markCategoryClassRecommendationsInProgressForTransactionDetail, exports.markCategoryClassRecommendationsCompletedForTransactionDetail = _a.markCategoryClassRecommendationsCompletedForTransactionDetail, exports.markCategoryClassRecommendationsFailureForTransactionDetail = _a.markCategoryClassRecommendationsFailureForTransactionDetail, exports.removeEntityRecommendationForLineIdForTransactionDetail = _a.removeEntityRecommendationForLineIdForTransactionDetail, exports.updateSelectedVendor = _a.updateSelectedVendor, exports.updateSelectedCustomer = _a.updateSelectedCustomer, exports.resetVendor = _a.resetVendor, exports.resetSelectedCustomer = _a.resetSelectedCustomer, exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = _a.updateLocalDataWithTransactionsUpdateWithVendorCheckbox, exports.updateVendorToAllLineItems = _a.updateVendorToAllLineItems, exports.resetAllLineItemsToVendor = _a.resetAllLineItemsToVendor, exports.updateLatestSelectedEntity = _a.updateLatestSelectedEntity, exports.updateVendorBulkRecommendationsFetchStatus = _a.updateVendorBulkRecommendationsFetchStatus, exports.setIsVendorUpdateAllChecked = _a.setIsVendorUpdateAllChecked;
847
782
  exports.default = transactionDetail.reducer;
848
783
  function getUpdatedEntityLocalData(detail, updates, entity, resetRecommendations, type) {
849
784
  const key = type === 'customer' ? 'customerUpdates' : 'vendorUpdates';
@@ -1,5 +1,4 @@
1
1
  import { FetchState, FetchStateAndError, FetchedState, ID } from '../../commonStateTypes/common';
2
- import { Amount } from '../../commonStateTypes/amount';
3
2
  import { Recommendation } from '../../commonStateTypes/recommendationBase';
4
3
  import { AccountBase } from '../../entity/account/accountState';
5
4
  import { ClassBase } from '../../entity/class/classState';
@@ -7,10 +6,9 @@ import { CustomerBase } from '../../entity/customer/customerState';
7
6
  import { EntityType } from '../../entity/genericEntity/entity';
8
7
  import { ProjectBase } from '../../entity/project/projectState';
9
8
  import { Transaction, TransactionID } from '../../entity/transaction/stateTypes/transaction';
10
- import { TransactionCategory } from '../../entity/transaction/stateTypes/transactionType';
11
9
  import { VendorBase } from '../../entity/vendor/vendorState';
12
10
  import { EntityRecommendationKey } from '../recommendation/recommendationState';
13
- import { TransactionDetailLineItemData, TransactionDetailLocalData } from './transactionDetailTypes';
11
+ import { TransactionDetailLocalData } from './transactionDetailTypes';
14
12
  export declare const getTransactionDetailKey: (transactionId: TransactionID) => `${string}_bill` | `${string}_expense` | `${string}_check` | `${string}_refund` | `${string}_invoice` | `${string}_payment` | `${string}_credit_memo` | `${string}_sales_receipt` | `${string}_delayed_credit` | `${string}_delayed_charge` | `${string}_bill_payment` | `${string}_bill_payment_check` | `${string}_bill_payment_credit_card` | `${string}_vendor_credit` | `${string}_credit_card_credit` | `${string}_transfer` | `${string}_credit_card_payment` | `${string}_deposit` | `${string}_journal_entry`;
15
13
  export type TransactionDetailKey = ReturnType<typeof getTransactionDetailKey>;
16
14
  export declare const getZeniTransactionDetailKey: (transactionId: TransactionID) => `${string}_bill` | `${string}_expense` | `${string}_check` | `${string}_refund` | `${string}_invoice` | `${string}_payment` | `${string}_credit_memo` | `${string}_sales_receipt` | `${string}_delayed_credit` | `${string}_delayed_charge` | `${string}_bill_payment` | `${string}_bill_payment_check` | `${string}_bill_payment_credit_card` | `${string}_vendor_credit` | `${string}_credit_card_credit` | `${string}_transfer` | `${string}_credit_card_payment` | `${string}_deposit` | `${string}_journal_entry`;
@@ -52,12 +50,9 @@ export interface TransactionDetailState {
52
50
  }
53
51
  export interface TransactionLineUpdates {
54
52
  account?: AccountBase;
55
- amount?: Amount;
56
53
  class?: ClassBase;
57
54
  customer?: CustomerBase;
58
55
  lineDescription?: string;
59
- postingType?: TransactionCategory;
60
- postingTypeName?: string;
61
56
  project?: ProjectBase;
62
57
  recommendation?: Recommendation[];
63
58
  vendor?: VendorBase;
@@ -83,7 +78,5 @@ export interface TransactionSaveUpdates {
83
78
  entityRelatedUpdates: Record<EntityRecommendationKey, EntityRelatedRecommendationUpdates>;
84
79
  markAsMiscatUpdates: boolean;
85
80
  updates: TransactionUpdates;
86
- addedLines?: TransactionDetailLineItemData[];
87
- deletedLineIds?: ID[];
88
81
  }
89
82
  export {};
@@ -50,9 +50,7 @@ export interface TransactionDetailLocalData {
50
50
  qboId: ID;
51
51
  };
52
52
  customerUpdates?: TransactionVendorUpdates;
53
- deletedLineIds?: ID[];
54
53
  documentId?: string;
55
- editMode?: boolean;
56
54
  latestSelectedEntityOnLineItem?: Entity;
57
55
  latestUpdatedLineWithEntity?: ID;
58
56
  memo?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.1.35-betaRR1",
3
+ "version": "5.1.36",
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",
@@ -72,6 +72,7 @@
72
72
  "eslint-plugin-prettier": "^5.2.3",
73
73
  "eslint-plugin-unused-imports": "^4.1.4",
74
74
  "globals": "^16.0.0",
75
+ "madge": "^8.0.0",
75
76
  "prettier": "^3.5.3",
76
77
  "prettier-plugin-import-sort": "^0.0.7",
77
78
  "rimraf": "^6.0.1",
@@ -107,9 +108,9 @@
107
108
  "scripts": {
108
109
  "clean": "rimraf lib",
109
110
  "test:typecheck": "echo 'Typechecking test files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.typecheck.json",
110
- "test:typecheck-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=2 ./scripts/tsc-modified-files.sh master tsconfig.typecheck.json",
111
+ "test:typecheck-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=30 ./scripts/tsc-modified-files.sh master tsconfig.typecheck.json",
111
112
  "test:typecheck-mocks": "echo 'Typechecking mock files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.mocks.json",
112
- "test:typecheck-mocks-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=2 ./scripts/tsc-modified-files.sh master tsconfig.mocks.json",
113
+ "test:typecheck-mocks-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=30 ./scripts/tsc-modified-files.sh master tsconfig.mocks.json",
113
114
  "test": "pnpm lint-modified-files && pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
114
115
  "test:full": "pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
115
116
  "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --fix",
@@ -117,14 +118,14 @@
117
118
  "lint:fix-modified-files": "chmod +x ./scripts/lint-modified-files.sh && LINT_FIX=true ./scripts/lint-modified-files.sh",
118
119
  "tsc-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && ./scripts/tsc-modified-files.sh",
119
120
  "typecheck": "tsc --noEmit",
120
- "find-dead-code": "ts-prune | grep -v '(used in module)'",
121
+ "find-dead-code": "bash ./scripts/run-find-dead-code.sh",
121
122
  "find-unused-exports": "ts-unused-exports ./tsconfig.json",
122
- "circular-dependency": "npx madge --circular --extensions ts ./src",
123
+ "circular-dependency": "madge --circular --extensions ts ./src",
123
124
  "build": "concurrently --kill-others-on-fail --handle-input \"echo 'TypeScript build in progress...' && time tsc && echo 'ESM build...' && tsc -p tsconfig.esm.json\" \"echo 'Running tests and typecheck (incl. lint-modified-files)...' && pnpm test\" && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
124
125
  "only-build": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc && tsc -p tsconfig.esm.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
125
126
  "only-build-dev": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc -p tsconfig.dev.json && tsc -p tsconfig.esm.dev.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
126
127
  "format": "prettier --write --ignore-unknown \"src/**/*\" && pnpm lint",
127
- "format-watch": "(git diff --name-only --diff-filter=ACM && git ls-files --others --exclude-standard) | grep -E '\\.(ts|tsx)$' | xargs prettier --write",
128
+ "format-watch": "bash ./scripts/run-format-watch.sh",
128
129
  "check-version": "node ./scripts/check_version.js",
129
130
  "version": "git add -A src",
130
131
  "postversion": "git push && git push --tags",