@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.
- package/lib/esm/index.js +4 -4
- package/lib/esm/view/transactionDetail/epics/saveTransactionHelper.js +0 -19
- package/lib/esm/view/transactionDetail/epics/updateTransactionDetailEpic.js +2 -69
- package/lib/esm/view/transactionDetail/journalEntryLinesViewModel.js +0 -58
- package/lib/esm/view/transactionDetail/transactionDetailReducer.js +1 -66
- package/lib/index.d.ts +4 -4
- package/lib/index.js +29 -33
- package/lib/view/transactionDetail/epics/saveTransactionHelper.js +0 -19
- package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.d.ts +1 -5
- package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.js +3 -71
- package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +0 -27
- package/lib/view/transactionDetail/journalEntryLinesViewModel.js +1 -61
- package/lib/view/transactionDetail/transactionDetailReducer.d.ts +2 -11
- package/lib/view/transactionDetail/transactionDetailReducer.js +2 -67
- package/lib/view/transactionDetail/transactionDetailState.d.ts +1 -8
- package/lib/view/transactionDetail/transactionDetailTypes.d.ts +0 -2
- package/package.json +7 -6
|
@@ -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.
|
|
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 {
|
|
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
|
|
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.
|
|
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
|
|
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 {
|
|
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.
|
|
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=
|
|
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=
|
|
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": "
|
|
121
|
+
"find-dead-code": "bash ./scripts/run-find-dead-code.sh",
|
|
121
122
|
"find-unused-exports": "ts-unused-exports ./tsconfig.json",
|
|
122
|
-
"circular-dependency": "
|
|
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": "
|
|
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",
|