@zeniai/client-epic-state 4.7.99 → 4.8.1
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/commonPayloadTypes/statusPayload.d.ts +4 -0
- package/lib/commonStateTypes/fiscalYearHelpers/formatZeniDateFY.d.ts +3 -0
- package/lib/commonStateTypes/fiscalYearHelpers/formatZeniDateFY.js +4 -1
- package/lib/commonStateTypes/timePeriod.d.ts +9 -2
- package/lib/commonStateTypes/timePeriod.js +12 -1
- package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +1 -1
- package/lib/commonStateTypes/viewAndReport/viewAndReport.js +1 -0
- package/lib/entity/account/accountPayload.d.ts +1 -1
- package/lib/entity/account/accountSelector.d.ts +3 -3
- package/lib/entity/account/accountState.d.ts +4 -4
- package/lib/entity/account/accountState.js +1 -0
- package/lib/entity/account/pickAndMergeForecastAccountReport.d.ts +1 -1
- package/lib/entity/accountGroup/accountGroupSelector.d.ts +22 -22
- package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
- package/lib/entity/class/classReducer.d.ts +4 -4
- package/lib/entity/class/classState.d.ts +2 -2
- package/lib/entity/depositAccountTransaction/depositAccountTransaction.d.ts +1 -1
- package/lib/entity/forecast/forecastState.d.ts +1 -1
- package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +55 -0
- package/lib/entity/jeSchedules/jeSchedulesPayload.js +142 -0
- package/lib/entity/jeSchedules/jeSchedulesReducer.d.ts +11 -0
- package/lib/entity/jeSchedules/jeSchedulesReducer.js +91 -0
- package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +58 -0
- package/lib/entity/jeSchedules/jeSchedulesSelector.js +74 -0
- package/lib/entity/jeSchedules/jeSchedulesState.d.ts +61 -0
- package/lib/entity/jeSchedules/jeSchedulesState.js +2 -0
- package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +10 -0
- package/lib/entity/jeSchedules/jeSchedulesTypes.js +25 -0
- package/lib/entity/jeSchedules/updateJESchedulesEpic.d.ts +10 -0
- package/lib/entity/jeSchedules/updateJESchedulesEpic.js +65 -0
- package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
- package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
- package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
- package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +2 -0
- package/lib/entity/tenant/clearAllEpic.d.ts +3 -1
- package/lib/entity/tenant/clearAllEpic.js +4 -0
- package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.d.ts +12 -0
- package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.js +37 -0
- package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +3 -3
- package/lib/entity/transaction/payloadTypes/transactionPayload.js +1 -1
- package/lib/entity/transaction/stateTypes/scheduleTransaction.d.ts +11 -0
- package/lib/entity/transaction/stateTypes/scheduleTransaction.js +2 -0
- package/lib/entity/transaction/stateTypes/transaction.d.ts +10 -7
- package/lib/entity/transaction/stateTypes/transactionType.d.ts +4 -0
- package/lib/entity/transaction/stateTypes/transactionType.js +11 -3
- package/lib/entity/transaction/transactionReducer.d.ts +7 -0
- package/lib/entity/transaction/transactionReducer.js +39 -3
- package/lib/entity/transaction/transactionSelector.d.ts +6 -0
- package/lib/entity/transaction/transactionSelector.js +19 -0
- package/lib/entity/transaction/transactionState.d.ts +3 -0
- package/lib/epic.d.ts +77 -67
- package/lib/epic.js +11 -1
- package/lib/index.d.ts +23 -10
- package/lib/index.js +60 -17
- package/lib/reducer.d.ts +9 -0
- package/lib/reducer.js +9 -0
- package/lib/view/accountList/accountListReducer.js +2 -0
- package/lib/view/accountList/accountListSelector.d.ts +16 -1
- package/lib/view/accountList/accountListSelector.js +33 -4
- package/lib/view/accountList/accountListState.d.ts +1 -1
- package/lib/view/accountMappingView/accountTypeRecommendation/accountTypeRecommendationPayload.d.ts +1 -1
- package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
- package/lib/view/cardBalance/cardBalanceSelector.d.ts +2 -2
- package/lib/view/cashBalance/cashBalanceSelector.d.ts +2 -2
- package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
- package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
- package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
- package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
- package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
- package/lib/view/people/changeZeniPersonRolesEpic.d.ts +1 -1
- package/lib/view/people/deletePersonEpic.d.ts +1 -1
- package/lib/view/people/invitePeopleEpic.d.ts +1 -1
- package/lib/view/people/inviteZeniPeopleEpic.d.ts +1 -1
- package/lib/view/people/resendInviteEpic.d.ts +1 -1
- package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
- package/lib/view/reviewCompanyView/reviewCompanyViewState.d.ts +2 -2
- package/lib/view/reviewCompanyView/reviewCompanyViewState.js +1 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/createNewSchedulesEpic.d.ts +6 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/createNewSchedulesEpic.js +28 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsEpic.d.ts +8 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsEpic.js +51 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.d.ts +7 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.js +16 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/initializeScheduleDetailLocalDataEpic.d.ts +6 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/initializeScheduleDetailLocalDataEpic.js +32 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/saveScheduleDetailsEpic.d.ts +11 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/saveScheduleDetailsEpic.js +102 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/updateAmountsInScheduleDetailEpic.d.ts +6 -0
- package/lib/view/scheduleView/scheduleDetailView/epics/updateAmountsInScheduleDetailEpic.js +29 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailLocalDataHelper.d.ts +18 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailLocalDataHelper.js +185 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailPayload.d.ts +58 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailPayload.js +118 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailReducer.d.ts +50 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailReducer.js +237 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailSelector.d.ts +21 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailSelector.js +67 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailState.d.ts +47 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailState.js +5 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailTypes.d.ts +3 -0
- package/lib/view/scheduleView/scheduleDetailView/scheduleDetailTypes.js +14 -0
- package/lib/view/scheduleView/scheduleListView/epics/fetchDownloadSchedulesEpic.d.ts +8 -0
- package/lib/view/scheduleView/scheduleListView/epics/fetchDownloadSchedulesEpic.js +52 -0
- package/lib/view/scheduleView/scheduleListView/epics/fetchScheduleListEpic.d.ts +27 -0
- package/lib/view/scheduleView/scheduleListView/epics/fetchScheduleListEpic.js +75 -0
- package/lib/view/scheduleView/scheduleListView/epics/fetchSchedulesAccountEpic.d.ts +19 -0
- package/lib/view/scheduleView/scheduleListView/epics/fetchSchedulesAccountEpic.js +37 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListHelper.d.ts +70 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListHelper.js +187 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListPayload.d.ts +7 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListPayload.js +2 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListReducer.d.ts +55 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListReducer.js +228 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListSelector.d.ts +38 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListSelector.js +193 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListState.d.ts +29 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListState.js +2 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +22 -0
- package/lib/view/scheduleView/scheduleListView/scheduleListTypes.js +39 -0
- package/lib/view/spendManagement/helpers.d.ts +4 -0
- package/lib/view/spendManagement/helpers.js +26 -1
- package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
- package/lib/view/topEx/topExSelector.d.ts +1 -1
- package/lib/view/transactionDetail/epics/initializeTransactionDetailLocalDataEpic.js +2 -5
- package/lib/view/transactionDetail/epics/saveTransactionDetailEpic.js +2 -1
- package/lib/view/transactionDetail/epics/transactionDetailEpic.js +3 -2
- package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.js +2 -1
- package/lib/view/transactionDetail/transactionDetailSelector.js +3 -2
- package/lib/view/transactionDetail/transactionDetailState.d.ts +1 -1
- package/lib/view/transactionDetail/transactionDetailState.js +3 -16
- package/lib/view/transactionList/transactionListByAccountSelector.js +2 -1
- package/lib/view/transactionList/transactionListByCategoryTypeSelector.js +2 -1
- package/lib/view/transactionList/transactionListByClassSelector.js +2 -1
- package/lib/view/transactionList/transactionListByEntitySelector.js +2 -1
- package/lib/view/vendorList/vendorListSelector.d.ts +3 -0
- package/lib/view/vendorList/vendorListSelector.js +11 -1
- package/lib/view/vendorReviewView/vendorGlobalReviewView/vendorGlobalReviewViewState.d.ts +2 -2
- package/lib/zeniDayJS.d.ts +1 -0
- package/lib/zeniDayJS.js +7 -1
- package/package.json +1 -1
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getFetchStateForScheduleAccountList = exports.getScheduleListReport = void 0;
|
|
7
|
+
const get_1 = __importDefault(require("lodash/get"));
|
|
8
|
+
const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
9
|
+
const accountListSelector_1 = require("../../accountList/accountListSelector");
|
|
10
|
+
const jeSchedulesSelector_1 = require("../../../entity/jeSchedules/jeSchedulesSelector");
|
|
11
|
+
const scheduleListReducer_1 = require("./scheduleListReducer");
|
|
12
|
+
const scheduleListTypes_1 = require("./scheduleListTypes");
|
|
13
|
+
const amount_1 = require("../../../commonStateTypes/amount");
|
|
14
|
+
const scheduleListHelper_1 = require("./scheduleListHelper");
|
|
15
|
+
const sortedJETransactionsView = (jeTransactions, sortKey, sortOrder) => {
|
|
16
|
+
return (0, orderBy_1.default)(jeTransactions, (jeTransaction) => {
|
|
17
|
+
var _a;
|
|
18
|
+
switch (sortKey) {
|
|
19
|
+
case 'transactionDate':
|
|
20
|
+
return jeTransaction.baseTransaction.date.valueOf();
|
|
21
|
+
case 'vendor':
|
|
22
|
+
return jeTransaction.vendor.name.toLowerCase();
|
|
23
|
+
case 'scheduleCategory':
|
|
24
|
+
return jeTransaction.baseTransaction.account.accountName.toLowerCase();
|
|
25
|
+
case 'expenseCategory':
|
|
26
|
+
return jeTransaction.jeDebit.account != null
|
|
27
|
+
? jeTransaction.jeDebit.account.accountName.toLowerCase()
|
|
28
|
+
: null;
|
|
29
|
+
case 'class':
|
|
30
|
+
return jeTransaction.jeDebit.accountingClass != null
|
|
31
|
+
? jeTransaction.jeDebit.accountingClass.className.toLowerCase()
|
|
32
|
+
: null;
|
|
33
|
+
case 'amount':
|
|
34
|
+
return jeTransaction.baseTransaction.amount != null
|
|
35
|
+
? jeTransaction.baseTransaction.amount.amount
|
|
36
|
+
: 0;
|
|
37
|
+
case 'balanceAsOfToday':
|
|
38
|
+
return jeTransaction.balanceAsOfToday != null
|
|
39
|
+
? jeTransaction.balanceAsOfToday.amount
|
|
40
|
+
: 0;
|
|
41
|
+
case 'memo':
|
|
42
|
+
return jeTransaction.baseTransaction.memo.toLowerCase();
|
|
43
|
+
case 'startMonth':
|
|
44
|
+
return jeTransaction.startDate != null
|
|
45
|
+
? jeTransaction.startDate.valueOf()
|
|
46
|
+
: null;
|
|
47
|
+
case 'endMonth':
|
|
48
|
+
return jeTransaction.endDate != null
|
|
49
|
+
? jeTransaction.endDate.valueOf()
|
|
50
|
+
: null;
|
|
51
|
+
case 'months':
|
|
52
|
+
return (_a = jeTransaction.period) !== null && _a !== void 0 ? _a : null;
|
|
53
|
+
case 'transactionType':
|
|
54
|
+
return jeTransaction.baseTransaction.type.toLowerCase();
|
|
55
|
+
case 'status':
|
|
56
|
+
return jeTransaction.status.code.toLowerCase();
|
|
57
|
+
default:
|
|
58
|
+
return jeTransaction.updatedByUser != null
|
|
59
|
+
? jeTransaction.updatedByUser.firstName.toLowerCase()
|
|
60
|
+
: null;
|
|
61
|
+
}
|
|
62
|
+
}, sortOrder === 'ascending' ? 'asc' : 'desc');
|
|
63
|
+
};
|
|
64
|
+
const getScheduleListReport = (state) => {
|
|
65
|
+
const { scheduleListState, accountListState, accountState } = state;
|
|
66
|
+
const downloadState = scheduleListState.downloadState;
|
|
67
|
+
const key = (0, scheduleListTypes_1.getScheduleListKey)(scheduleListState.currentTab, scheduleListState.selectedCategoryId, scheduleListState.selectedTimeframe);
|
|
68
|
+
const scheduleListRecord = (0, get_1.default)(scheduleListState.byScheduleListKey, key, undefined);
|
|
69
|
+
const allScheduleAccounts = (0, accountListSelector_1.getAccountList)(accountState, accountListState, (0, scheduleListHelper_1.getAccountListKeyForSchedulesTab)(scheduleListState.currentTab));
|
|
70
|
+
let allNestedAccounts = (0, accountListSelector_1.getNestedAccountListHeirarchy)(accountListState, (0, scheduleListHelper_1.getAccountListKeyForSchedulesTab)(scheduleListState.currentTab));
|
|
71
|
+
let allAccounts = allScheduleAccounts.accounts;
|
|
72
|
+
if (scheduleListState.currentTab === 'prepaid_expenses') {
|
|
73
|
+
const filteredList = (0, accountListSelector_1.getFilteredNestedAndAccountListsForLabel)(accountState, accountListState, (0, scheduleListHelper_1.getAccountListKeyForSchedulesTab)(scheduleListState.currentTab), 'prepaid_expenses');
|
|
74
|
+
// Use this list only if there is some account in it.
|
|
75
|
+
if (filteredList.accountList.length > 0) {
|
|
76
|
+
allAccounts = filteredList.accountList;
|
|
77
|
+
allNestedAccounts = filteredList.nestedAccountList;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (scheduleListRecord == null) {
|
|
81
|
+
return {
|
|
82
|
+
reportTitle: 'Schedule List',
|
|
83
|
+
version: 1,
|
|
84
|
+
status: undefined,
|
|
85
|
+
jeScheduleOrder: 'descending_transaction_date',
|
|
86
|
+
jeScheduledTransactions: [],
|
|
87
|
+
currentTab: scheduleListState.currentTab,
|
|
88
|
+
currentSubTab: scheduleListState.currentSubTab,
|
|
89
|
+
selectedScheduledId: undefined,
|
|
90
|
+
downloadUIState: downloadState,
|
|
91
|
+
searchText: '',
|
|
92
|
+
selectedCategoryID: scheduleListState.scheduleListLocalData.selectedCategoryID,
|
|
93
|
+
selectedTimeframe: scheduleListState.scheduleListLocalData.selectedTimeframe,
|
|
94
|
+
allSubTabs: scheduleListTypes_1.ALL_SCHEDULES_SUB_TABS.map((subTab) => subTab),
|
|
95
|
+
uiState: scheduleListReducer_1.scheduleListInitialState.uiState,
|
|
96
|
+
scheduleListAccounts: [(0, scheduleListHelper_1.getAllAccountBase)(), ...allAccounts],
|
|
97
|
+
scheduleListNestedAccountHierarchy: [
|
|
98
|
+
(0, scheduleListHelper_1.getAllAccountNested)(),
|
|
99
|
+
...allNestedAccounts,
|
|
100
|
+
],
|
|
101
|
+
fetchState: 'Not-Started',
|
|
102
|
+
error: undefined,
|
|
103
|
+
scheduleListLocalData: scheduleListState.scheduleListLocalData,
|
|
104
|
+
allTimeframeTicks: [],
|
|
105
|
+
totalBalanceTimeframeTicks: {
|
|
106
|
+
months: [],
|
|
107
|
+
},
|
|
108
|
+
totalAmount: (0, amount_1.toAmount)(0, '', ''),
|
|
109
|
+
totalRunningBalances: (0, amount_1.toAmount)(0, '', ''),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const jeScheduleIds = scheduleListRecord.jeScheduleTransactionKeys;
|
|
114
|
+
const { uiState, selectedScheduleId, fetchState, error } = scheduleListRecord;
|
|
115
|
+
const { sortKey, sortOrder } = uiState;
|
|
116
|
+
const scheduleTransactionsUnsorted = jeScheduleIds
|
|
117
|
+
.map((jeScheduleId) => (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleKey)(jeScheduleId, state))
|
|
118
|
+
.filter((value) => {
|
|
119
|
+
if (value == null) {
|
|
120
|
+
console.error("Can't have null transaction at this stage!");
|
|
121
|
+
}
|
|
122
|
+
return value != null;
|
|
123
|
+
});
|
|
124
|
+
const currentTabTransactions = (0, orderBy_1.default)(scheduleTransactionsUnsorted, (value) => value.baseTransaction.date.valueOf(), 'desc');
|
|
125
|
+
let jeTransactionsView = [];
|
|
126
|
+
switch (scheduleListState.currentTab) {
|
|
127
|
+
case 'prepaid_expenses':
|
|
128
|
+
switch (scheduleListState.currentSubTab) {
|
|
129
|
+
case 'new':
|
|
130
|
+
jeTransactionsView = currentTabTransactions.filter((tran) => tran.status.code === 'new');
|
|
131
|
+
break;
|
|
132
|
+
case 'ongoing':
|
|
133
|
+
jeTransactionsView = currentTabTransactions.filter((tran) => tran.status.code === 'ongoing');
|
|
134
|
+
break;
|
|
135
|
+
case 'completed':
|
|
136
|
+
jeTransactionsView = currentTabTransactions.filter((tran) => tran.status.code === 'completed');
|
|
137
|
+
break;
|
|
138
|
+
default:
|
|
139
|
+
jeTransactionsView = currentTabTransactions;
|
|
140
|
+
}
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
const loweredSearchText = scheduleListState.searchText.trim().toLowerCase();
|
|
144
|
+
const sortedJETransactionView = sortedJETransactionsView(jeTransactionsView.filter((jeTransaction) => {
|
|
145
|
+
return (jeTransaction.vendor.name
|
|
146
|
+
.toLowerCase()
|
|
147
|
+
.includes(loweredSearchText) === true ||
|
|
148
|
+
jeTransaction.baseTransaction.memo
|
|
149
|
+
.toLowerCase()
|
|
150
|
+
.includes(loweredSearchText) === true);
|
|
151
|
+
}), sortKey, sortOrder);
|
|
152
|
+
const totalBalances = (0, scheduleListHelper_1.getCalculatedScheduleTotals)(jeTransactionsView);
|
|
153
|
+
const allTimeframeTicks = (0, scheduleListHelper_1.getAllTimeframeTicks)(sortedJETransactionView, 2);
|
|
154
|
+
const jeScheduledTransactionWithBalance = [];
|
|
155
|
+
sortedJETransactionView.forEach((jeSchedule) => {
|
|
156
|
+
jeScheduledTransactionWithBalance.push(Object.assign(Object.assign({}, jeSchedule), { coaBalanceByPeriod: (0, scheduleListHelper_1.calculateCOABalanceGroupedByPeriod)(jeSchedule) }));
|
|
157
|
+
});
|
|
158
|
+
const totalBalanceTimeframeTicks = (0, scheduleListHelper_1.calculateTotalBalanceTimeframeTick)(jeScheduledTransactionWithBalance, allTimeframeTicks, 'months');
|
|
159
|
+
return {
|
|
160
|
+
reportTitle: 'Schedule List',
|
|
161
|
+
version: 1,
|
|
162
|
+
status: undefined,
|
|
163
|
+
jeScheduleOrder: 'descending_transaction_date',
|
|
164
|
+
jeScheduledTransactions: jeScheduledTransactionWithBalance,
|
|
165
|
+
currentTab: scheduleListState.currentTab,
|
|
166
|
+
currentSubTab: scheduleListState.currentSubTab,
|
|
167
|
+
selectedScheduledId: selectedScheduleId,
|
|
168
|
+
downloadUIState: downloadState,
|
|
169
|
+
searchText: scheduleListState.searchText,
|
|
170
|
+
selectedCategoryID: scheduleListState.selectedCategoryId,
|
|
171
|
+
selectedTimeframe: scheduleListState.selectedTimeframe,
|
|
172
|
+
allSubTabs: scheduleListTypes_1.ALL_SCHEDULES_SUB_TABS.map((subTab) => subTab),
|
|
173
|
+
uiState,
|
|
174
|
+
scheduleListAccounts: [(0, scheduleListHelper_1.getAllAccountBase)(), ...allAccounts],
|
|
175
|
+
scheduleListNestedAccountHierarchy: [
|
|
176
|
+
(0, scheduleListHelper_1.getAllAccountNested)(),
|
|
177
|
+
...allNestedAccounts,
|
|
178
|
+
],
|
|
179
|
+
fetchState,
|
|
180
|
+
error,
|
|
181
|
+
scheduleListLocalData: scheduleListState.scheduleListLocalData,
|
|
182
|
+
totalAmount: totalBalances.totalAmount,
|
|
183
|
+
totalRunningBalances: totalBalances.totalRunningBalances,
|
|
184
|
+
allTimeframeTicks,
|
|
185
|
+
totalBalanceTimeframeTicks,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
exports.getScheduleListReport = getScheduleListReport;
|
|
190
|
+
const getFetchStateForScheduleAccountList = (state, scheduleTab) => {
|
|
191
|
+
return (0, accountListSelector_1.getAccountListFetchState)(state.accountListState, (0, scheduleListHelper_1.getAccountListKeyForSchedulesTab)(scheduleTab));
|
|
192
|
+
};
|
|
193
|
+
exports.getFetchStateForScheduleAccountList = getFetchStateForScheduleAccountList;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FetchedState, FetchStateAndError, ID } from '../../../commonStateTypes/common';
|
|
2
|
+
import { SortOrder } from '../../../commonStateTypes/selectorTypes/sortOrderTypes';
|
|
3
|
+
import { TimeframeTick } from '../../../commonStateTypes/timeframeTick';
|
|
4
|
+
import { JEScheduleKey, SchedulesTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
|
|
5
|
+
import { ScheduleListKey, ScheduleSubTabType, ScheduleListSortKey } from './scheduleListTypes';
|
|
6
|
+
export interface ScheduleListUIState {
|
|
7
|
+
sortKey: ScheduleListSortKey;
|
|
8
|
+
sortOrder: SortOrder;
|
|
9
|
+
scrollYOffset: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ScheduleWithListStatus extends FetchedState {
|
|
12
|
+
jeScheduleTransactionKeys: JEScheduleKey[];
|
|
13
|
+
uiState: ScheduleListUIState;
|
|
14
|
+
selectedScheduleId?: ID;
|
|
15
|
+
}
|
|
16
|
+
export interface ScheduleListLocalData {
|
|
17
|
+
selectedCategoryID: ID;
|
|
18
|
+
selectedTimeframe: TimeframeTick;
|
|
19
|
+
}
|
|
20
|
+
export interface ScheduleListViewState {
|
|
21
|
+
byScheduleListKey: Record<ScheduleListKey, ScheduleWithListStatus>;
|
|
22
|
+
downloadState: FetchStateAndError;
|
|
23
|
+
searchText: string;
|
|
24
|
+
currentTab: SchedulesTypes;
|
|
25
|
+
currentSubTab: ScheduleSubTabType;
|
|
26
|
+
selectedCategoryId: ID;
|
|
27
|
+
selectedTimeframe: TimeframeTick;
|
|
28
|
+
scheduleListLocalData: ScheduleListLocalData;
|
|
29
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ID } from '../../../commonStateTypes/common';
|
|
2
|
+
import { TimeframeTick } from '../../../commonStateTypes/timeframeTick';
|
|
3
|
+
import { SchedulesTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
|
|
4
|
+
export declare const ALL_SCHEDULE_LIST_TABS_FILE_TYPES: readonly ["excel"];
|
|
5
|
+
export declare const toScheduleListTabsFileTypeStrict: (v?: string | undefined) => "excel" | undefined;
|
|
6
|
+
export declare type ScheduleListTabsFileType = NonNullable<ReturnType<typeof toScheduleListTabsFileTypeStrict>>;
|
|
7
|
+
export declare const getScheduleListKey: (tab: SchedulesTypes, selectedCategory: ID, selectedTimeframe: TimeframeTick) => `prepaid_expenses-${string}-${string}--${string}` | `fixed_assets-${string}-${string}--${string}` | `accured_expenses-${string}-${string}--${string}` | `deferred_revenue-${string}-${string}--${string}`;
|
|
8
|
+
export declare type ScheduleListKey = ReturnType<typeof getScheduleListKey>;
|
|
9
|
+
export declare const ALL_SCHEDULES_SUB_TABS: readonly ["all", "new", "ongoing", "completed"];
|
|
10
|
+
export declare const toScheduleSubTabType: (v: string) => "all" | "new" | "completed" | "ongoing";
|
|
11
|
+
export declare type ScheduleSubTabType = ReturnType<typeof toScheduleSubTabType>;
|
|
12
|
+
export declare const ALL_SCHEDULES_PAY_SORT_KEYS: readonly ["transactionDate", "vendor", "scheduleCategory", "expenseCategory", "class", "amount", "balanceAsOfToday", "memo", "startMonth", "endMonth", "months", "transactionType", "status", "user"];
|
|
13
|
+
export declare const toScheduleSortKeyType: (v: string) => "status" | "user" | "months" | "amount" | "vendor" | "class" | "memo" | "transactionDate" | "scheduleCategory" | "expenseCategory" | "balanceAsOfToday" | "startMonth" | "endMonth" | "transactionType";
|
|
14
|
+
export declare type ScheduleListSortKey = ReturnType<typeof toScheduleSortKeyType>;
|
|
15
|
+
export interface DownloadJEScheduleTabOptions {
|
|
16
|
+
timezone: string;
|
|
17
|
+
tabsFileType: ScheduleListTabsFileType;
|
|
18
|
+
tabs: SchedulesTypes[];
|
|
19
|
+
categoryId: ID;
|
|
20
|
+
timeframe: TimeframeTick;
|
|
21
|
+
searchText?: string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toScheduleSortKeyType = exports.ALL_SCHEDULES_PAY_SORT_KEYS = exports.toScheduleSubTabType = exports.ALL_SCHEDULES_SUB_TABS = exports.getScheduleListKey = exports.toScheduleListTabsFileTypeStrict = exports.ALL_SCHEDULE_LIST_TABS_FILE_TYPES = void 0;
|
|
4
|
+
const formatZeniDateFY_1 = require("../../../commonStateTypes/fiscalYearHelpers/formatZeniDateFY");
|
|
5
|
+
const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
|
|
6
|
+
exports.ALL_SCHEDULE_LIST_TABS_FILE_TYPES = ['excel'];
|
|
7
|
+
const toScheduleListTabsFileTypeStrict = (v) => {
|
|
8
|
+
var _a;
|
|
9
|
+
return (0, stringToUnion_1.stringToUnionStrict)((_a = v === null || v === void 0 ? void 0 : v.toLocaleLowerCase()) !== null && _a !== void 0 ? _a : '', exports.ALL_SCHEDULE_LIST_TABS_FILE_TYPES);
|
|
10
|
+
};
|
|
11
|
+
exports.toScheduleListTabsFileTypeStrict = toScheduleListTabsFileTypeStrict;
|
|
12
|
+
const getScheduleListKey = (tab, selectedCategory, selectedTimeframe) => `${tab}-${selectedCategory}-${selectedTimeframe.startDate.format(formatZeniDateFY_1.DAY_MONTH_YEAR_FORMAT)}--${selectedTimeframe.endDate.format(formatZeniDateFY_1.DAY_MONTH_YEAR_FORMAT)}`;
|
|
13
|
+
exports.getScheduleListKey = getScheduleListKey;
|
|
14
|
+
exports.ALL_SCHEDULES_SUB_TABS = [
|
|
15
|
+
'all',
|
|
16
|
+
'new',
|
|
17
|
+
'ongoing',
|
|
18
|
+
'completed',
|
|
19
|
+
];
|
|
20
|
+
const toScheduleSubTabType = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.ALL_SCHEDULES_SUB_TABS);
|
|
21
|
+
exports.toScheduleSubTabType = toScheduleSubTabType;
|
|
22
|
+
exports.ALL_SCHEDULES_PAY_SORT_KEYS = [
|
|
23
|
+
'transactionDate',
|
|
24
|
+
'vendor',
|
|
25
|
+
'scheduleCategory',
|
|
26
|
+
'expenseCategory',
|
|
27
|
+
'class',
|
|
28
|
+
'amount',
|
|
29
|
+
'balanceAsOfToday',
|
|
30
|
+
'memo',
|
|
31
|
+
'startMonth',
|
|
32
|
+
'endMonth',
|
|
33
|
+
'months',
|
|
34
|
+
'transactionType',
|
|
35
|
+
'status',
|
|
36
|
+
'user',
|
|
37
|
+
];
|
|
38
|
+
const toScheduleSortKeyType = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.ALL_SCHEDULES_PAY_SORT_KEYS);
|
|
39
|
+
exports.toScheduleSortKeyType = toScheduleSortKeyType;
|
|
@@ -5,6 +5,8 @@ import { BusinessVerificationDetails, CompanyOfficersDetails } from './commonSet
|
|
|
5
5
|
import { RecurringBillConfigLocalData, RecurringBillInstance } from './billPay/editBillView/editBillViewState';
|
|
6
6
|
import { RecurringBillConfig, RecurringBillFrequency } from '../../entity/billPay/recurringBills/recurringBillsState';
|
|
7
7
|
import { AccType } from './billPay/billPayConfig/billPayConfigState';
|
|
8
|
+
import { CurrentTenant } from '../../entity/tenant/tenantSelector';
|
|
9
|
+
import { RoleMap } from '../../entity/userRole/userRoleType';
|
|
8
10
|
export declare const getLatestApprovalDate: (allActivities: BillActivity[] | RemiActivity[]) => ZeniDate | undefined;
|
|
9
11
|
export declare function getSpendManagementEffectiveListPeriod(): import("../..").TimePeriod;
|
|
10
12
|
export declare const getSelectedCompanyOfficer: (verificationDetails: BusinessVerificationDetails) => CompanyOfficersDetails | undefined;
|
|
@@ -17,3 +19,5 @@ export declare const isRecurringConfigChanged: (recurringBillNewConfig: Recurrin
|
|
|
17
19
|
export declare const getTotalPayments: (startDate: ZeniDate, endDate: ZeniDate, frequency: RecurringBillFrequency, currentInstance?: RecurringBillInstance | undefined) => number;
|
|
18
20
|
export declare const getEndDate: (startDate: ZeniDate, frequency: RecurringBillFrequency, totalPayments: number, currentInstance?: RecurringBillInstance | undefined) => ZeniDate;
|
|
19
21
|
export declare const accountTypeSubConfigCodeToAccType: (code?: "depositAccount" | "paymentAccount" | undefined) => AccType | undefined;
|
|
22
|
+
export declare function showReimbursementPromoPage(currentTenant: CurrentTenant): boolean;
|
|
23
|
+
export declare function showBillPayPromoPage(currentTenant: CurrentTenant, userRoleMap: RoleMap): boolean;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.accountTypeSubConfigCodeToAccType = exports.getEndDate = exports.getTotalPayments = exports.isRecurringConfigChanged = exports.updateRecurringBillDetails = exports.getPaymentDateFromVendorReceiveDate = exports.getSelectedCompanyOfficer = exports.getSpendManagementEffectiveListPeriod = exports.getLatestApprovalDate = void 0;
|
|
3
|
+
exports.showBillPayPromoPage = exports.showReimbursementPromoPage = exports.accountTypeSubConfigCodeToAccType = exports.getEndDate = exports.getTotalPayments = exports.isRecurringConfigChanged = exports.updateRecurringBillDetails = exports.getPaymentDateFromVendorReceiveDate = exports.getSelectedCompanyOfficer = exports.getSpendManagementEffectiveListPeriod = exports.getLatestApprovalDate = void 0;
|
|
4
4
|
const timeframeTick_1 = require("../../commonStateTypes/timeframeTick");
|
|
5
5
|
const workingDayHelper_1 = require("../../commonStateTypes/workingDayHelper");
|
|
6
6
|
const zeniDayJS_1 = require("../../zeniDayJS");
|
|
7
|
+
const userRoleType_1 = require("../../entity/userRole/userRoleType");
|
|
7
8
|
const getLatestApprovalDate = (allActivities) => {
|
|
8
9
|
let allStepsWithStatus = [];
|
|
9
10
|
let allApprovedActions = [];
|
|
@@ -187,3 +188,27 @@ const accountTypeSubConfigCodeToAccType = (code) => {
|
|
|
187
188
|
}
|
|
188
189
|
};
|
|
189
190
|
exports.accountTypeSubConfigCodeToAccType = accountTypeSubConfigCodeToAccType;
|
|
191
|
+
function showReimbursementPromoPage(currentTenant) {
|
|
192
|
+
var _a, _b, _c;
|
|
193
|
+
const isReimbursementTOSAccepted = Boolean((_a = currentTenant.company) === null || _a === void 0 ? void 0 : _a.companyReimbursementInfo.isReimbursementTOSAccepted);
|
|
194
|
+
const isEmployeeLevelAccess = Boolean(currentTenant.userRole) === true
|
|
195
|
+
? (0, userRoleType_1.hasEmployeeLevelAccess)(currentTenant)
|
|
196
|
+
: false;
|
|
197
|
+
const isEmployeeReimbursementTOSAccepted = Boolean((_b = currentTenant.userReimbursementInfo) === null || _b === void 0 ? void 0 : _b.isReimbursementTOSAccepted);
|
|
198
|
+
return ((Boolean((_c = currentTenant.company) === null || _c === void 0 ? void 0 : _c.companyReimbursementInfo) &&
|
|
199
|
+
!isReimbursementTOSAccepted) ||
|
|
200
|
+
(Boolean(currentTenant.userReimbursementInfo) &&
|
|
201
|
+
isEmployeeLevelAccess &&
|
|
202
|
+
!isEmployeeReimbursementTOSAccepted));
|
|
203
|
+
}
|
|
204
|
+
exports.showReimbursementPromoPage = showReimbursementPromoPage;
|
|
205
|
+
function showBillPayPromoPage(currentTenant, userRoleMap) {
|
|
206
|
+
var _a, _b, _c;
|
|
207
|
+
const isUserHasOnlyBillPayAccess = (0, userRoleType_1.hasOnlyBillPayAccess)(userRoleMap);
|
|
208
|
+
const isBillPayTOSAccepted = Boolean((_b = (_a = currentTenant.companyBillPayInfo) === null || _a === void 0 ? void 0 : _a.info) === null || _b === void 0 ? void 0 : _b.isBillPayTOSAccepted);
|
|
209
|
+
return (Boolean((_c = currentTenant.companyBillPayInfo) === null || _c === void 0 ? void 0 : _c.info) &&
|
|
210
|
+
(isBillPayTOSAccepted === false ||
|
|
211
|
+
(isUserHasOnlyBillPayAccess &&
|
|
212
|
+
Boolean(userRoleMap.bill_pay_admin) === false)));
|
|
213
|
+
}
|
|
214
|
+
exports.showBillPayPromoPage = showBillPayPromoPage;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RootState } from '../../reducer';
|
|
2
2
|
export declare const getTasksCardReport: (state: RootState) => {
|
|
3
|
-
reportId: "cash_balance" | "card_balance" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "charge_cards" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review";
|
|
3
|
+
reportId: "cash_balance" | "card_balance" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "charge_cards" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses";
|
|
4
4
|
reportTitle: string;
|
|
5
5
|
version: string | number | undefined;
|
|
6
6
|
status: import("../..").Status | undefined;
|
|
@@ -5,7 +5,7 @@ import { AccountState } from '../../entity/account/accountState';
|
|
|
5
5
|
import { EntityOrder } from '../../commonStateTypes/selectorTypes/selectorTypes';
|
|
6
6
|
import { TopExReport, TopExTimePeriodWithMetaData } from './topExSelectorTypes';
|
|
7
7
|
export declare const getTopExpenses: (accountState: AccountState, topExState: TopExState, numberOfExpenses?: number | undefined) => {
|
|
8
|
-
reportId: "cash_balance" | "card_balance" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "charge_cards" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review";
|
|
8
|
+
reportId: "cash_balance" | "card_balance" | "operating_expenses" | "operating_expenses_by_classes" | "revenue" | "revenue_by_classes" | "net_burn_or_income" | "net_burn_or_income_story_card" | "net_burn_or_income_by_classes" | "cash_position" | "top_expenses" | "profit_and_loss" | "profit_and_loss_by_classes" | "balance_sheet" | "cash_flow" | "dashboard" | "finance_statement" | "transaction_list_of_account" | "transaction_list_missing_receipt" | "transaction_list_of_account_by_class" | "transaction_detail" | "cash_in_cash_out" | "insights_dashboard" | "company_details" | "class_list" | "account_list" | "account_list_by_type" | "vendor" | "task_card" | "bill_pay" | "reimbursement" | "bill_pay_card" | "reimbursement_card" | "bill_pay_promo_card" | "zeni_accounts" | "charge_cards" | "reimbursement_promo_card" | "onboarding" | "operating_expenses_by_vendor" | "operating_expenses_by_vendor_summary" | "vendors_tab" | "accounts_payable_aging" | "accounts_receivable_aging" | "vendor_global_review" | "prepaid_expenses";
|
|
9
9
|
reportTitle: string;
|
|
10
10
|
version: string | number | undefined;
|
|
11
11
|
status: import("../..").Status | undefined;
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.initializeTransactionDetailLocalDataEpic = void 0;
|
|
7
4
|
const rxjs_1 = require("rxjs");
|
|
8
|
-
const get_1 = __importDefault(require("lodash/get"));
|
|
9
5
|
const operators_1 = require("rxjs/operators");
|
|
10
6
|
const transactionDetailReducer_1 = require("../transactionDetailReducer");
|
|
11
7
|
const transactionDetailState_1 = require("../transactionDetailState");
|
|
12
8
|
const transactionDetailLocalDataHelper_1 = require("../transactionDetailLocalDataHelper");
|
|
13
9
|
const accountListSelector_1 = require("../../accountList/accountListSelector");
|
|
10
|
+
const transactionSelector_1 = require("../../../entity/transaction/transactionSelector");
|
|
14
11
|
const initializeTransactionDetailLocalDataEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionDetailReducer_1.initializeTransactionDetailLocalData.match), (0, operators_1.mergeMap)((action) => {
|
|
15
12
|
const { transactionId, vendorId } = action.payload;
|
|
16
13
|
const fetchActions = [];
|
|
17
14
|
const transactionState = state$.value.transactionState;
|
|
18
15
|
const key = (0, transactionDetailState_1.getTransactionDetailKey)(transactionId);
|
|
19
|
-
const detail = (0,
|
|
16
|
+
const detail = (0, transactionSelector_1.getSupportedTransactionById)(transactionState, key);
|
|
20
17
|
if (detail != null) {
|
|
21
18
|
const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(state$.value.accountState, state$.value.accountListState, 'accountList');
|
|
22
19
|
const localData = (0, transactionDetailLocalDataHelper_1.toTransactionDetailLocalData)(detail, vendorId, uncategorizedIncomeExpense);
|
|
@@ -11,6 +11,7 @@ const transactionDetailReducer_1 = require("../transactionDetailReducer");
|
|
|
11
11
|
const transactionDetailState_1 = require("../transactionDetailState");
|
|
12
12
|
const saveTransactionHelper_1 = require("./saveTransactionHelper");
|
|
13
13
|
const accountListSelector_1 = require("../../accountList/accountListSelector");
|
|
14
|
+
const transactionSelector_1 = require("../../../entity/transaction/transactionSelector");
|
|
14
15
|
const saveTransactionDetailEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionDetailReducer_1.saveTransactionDetail.match), (0, operators_1.mergeMap)((action) => {
|
|
15
16
|
const transactionId = action.payload.transactionId;
|
|
16
17
|
const fetchActions = [];
|
|
@@ -18,7 +19,7 @@ const saveTransactionDetailEpic = (actions$, state$) => actions$.pipe((0, operat
|
|
|
18
19
|
const transactionState = state$.value.transactionState;
|
|
19
20
|
const key = (0, transactionDetailState_1.getTransactionDetailKey)(transactionId);
|
|
20
21
|
const detail = (0, get_1.default)(transactionDetailState.transactionDetailById, key, undefined);
|
|
21
|
-
const transaction = (0,
|
|
22
|
+
const transaction = (0, transactionSelector_1.getSupportedTransactionById)(transactionState, key);
|
|
22
23
|
if (detail != null && transaction != null) {
|
|
23
24
|
const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(state$.value.accountState, state$.value.accountListState, 'accountList');
|
|
24
25
|
const localData = detail.transactionDetailLocalData;
|
|
@@ -21,12 +21,13 @@ const transactionVendorLocalDataHelper_1 = require("../../commonVendorView/trans
|
|
|
21
21
|
const vendorPayload_1 = require("../../../entity/vendor/vendorPayload");
|
|
22
22
|
const transactionType_1 = require("../../../entity/transaction/stateTypes/transactionType");
|
|
23
23
|
const ownerListReducer_1 = require("../../ownerList/ownerListReducer");
|
|
24
|
+
const transactionSelector_1 = require("../../../entity/transaction/transactionSelector");
|
|
24
25
|
const fetchTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionDetailReducer_1.fetchTransactionDetail.match), (0, operators_1.mergeMap)((action) => {
|
|
25
26
|
const { transactionId, cacheOverride } = action.payload;
|
|
26
27
|
const detailKey = (0, transactionDetailState_1.getTransactionDetailKey)(transactionId);
|
|
27
28
|
const transactionActions = [];
|
|
28
29
|
if (cacheOverride === true) {
|
|
29
|
-
const transaction = (0,
|
|
30
|
+
const transaction = (0, transactionSelector_1.getSupportedTransactionById)(state$.value.transactionState, detailKey);
|
|
30
31
|
transactionActions.push(...removeCompleteTransaction(transactionId, transaction));
|
|
31
32
|
}
|
|
32
33
|
const transactionDetail = (0, get_1.default)(state$.value.transactionDetailState.transactionDetailById, detailKey, undefined);
|
|
@@ -123,7 +124,7 @@ function getAllFetchLinkedTransactionDetailActions(transactionPayload, state) {
|
|
|
123
124
|
const linkedTransactionFiltered = linkedTransaction.filter((value) => isTransactionDetailInCacheOrFetching(value, state) === false);
|
|
124
125
|
linkedTransactionFiltered.forEach((transactionDetailToFetch) => fetchLinkedTransactionActions.push((0, transactionDetailReducer_1.fetchTransactionDetail)(transactionDetailToFetch, false)));
|
|
125
126
|
if (linkedTransactionFiltered.length === 0) {
|
|
126
|
-
console.log('Phew all linked
|
|
127
|
+
console.log('Phew all linked transactions are fetched or there are no linked transactions..');
|
|
127
128
|
}
|
|
128
129
|
return fetchLinkedTransactionActions;
|
|
129
130
|
}
|
|
@@ -24,6 +24,7 @@ const recommendationPayload_1 = require("../../../commonPayloadTypes/recommendat
|
|
|
24
24
|
const vendorSelector_1 = require("../../../entity/vendor/vendorSelector");
|
|
25
25
|
const vendorReducer_1 = require("../../../entity/vendor/vendorReducer");
|
|
26
26
|
const transactionType_1 = require("../../../entity/transaction/stateTypes/transactionType");
|
|
27
|
+
const transactionSelector_1 = require("../../../entity/transaction/transactionSelector");
|
|
27
28
|
const updateTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionDetailReducer_1.updateTransactionDetail.match), (0, operators_1.mergeMap)((action) => {
|
|
28
29
|
const { transactionState, vendorState, transactionDetailState } = state$.value;
|
|
29
30
|
return zeniAPI
|
|
@@ -112,7 +113,7 @@ const updateTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe
|
|
|
112
113
|
exports.updateTransactionDetailEpic = updateTransactionDetailEpic;
|
|
113
114
|
function preparePayload(transactionState, vendorState, transactionDetailState, transactionId, saveUpdates) {
|
|
114
115
|
const transactionDetailKey = (0, transactionDetailState_1.getTransactionDetailKey)(transactionId);
|
|
115
|
-
const detail = (0,
|
|
116
|
+
const detail = (0, transactionSelector_1.getSupportedTransactionById)(transactionState, transactionDetailKey);
|
|
116
117
|
const tranDetail = (0, get_1.default)(transactionDetailState.transactionDetailById, transactionDetailKey, undefined);
|
|
117
118
|
const tranVendorUpdates = tranDetail === null || tranDetail === void 0 ? void 0 : tranDetail.transactionDetailLocalData.vendorUpdates;
|
|
118
119
|
let vendorUpdates = undefined;
|
|
@@ -12,6 +12,7 @@ const classListSelector_1 = require("../classList/classListSelector");
|
|
|
12
12
|
const accountListSelector_1 = require("../accountList/accountListSelector");
|
|
13
13
|
const zeniDayJS_1 = require("../../zeniDayJS");
|
|
14
14
|
const vendorSelector_1 = require("../../entity/vendor/vendorSelector");
|
|
15
|
+
const transactionSelector_1 = require("../../entity/transaction/transactionSelector");
|
|
15
16
|
const getTransactionDetail = (state, transactionId, fetchLinkedTransactions = true) => {
|
|
16
17
|
var _a, _b;
|
|
17
18
|
const { transactionDetailState, transactionState, vendorState, vendorListState, accountState, classState, classListState, accountListState, } = state;
|
|
@@ -21,7 +22,7 @@ const getTransactionDetail = (state, transactionId, fetchLinkedTransactions = tr
|
|
|
21
22
|
fetchState: (_a = transactionDetail === null || transactionDetail === void 0 ? void 0 : transactionDetail.fetchState) !== null && _a !== void 0 ? _a : 'Not-Started',
|
|
22
23
|
error: transactionDetail === null || transactionDetail === void 0 ? void 0 : transactionDetail.error,
|
|
23
24
|
};
|
|
24
|
-
const transaction = (0,
|
|
25
|
+
const transaction = (0, transactionSelector_1.getSupportedTransactionById)(transactionState, detailKey);
|
|
25
26
|
let linkedTransactions = [];
|
|
26
27
|
if ((transactionDetail === null || transactionDetail === void 0 ? void 0 : transactionDetail.fetchState) === 'Completed' && transaction != null) {
|
|
27
28
|
// IMPORTANT: filtering out unsupported linked transactions
|
|
@@ -42,7 +43,7 @@ const getTransactionDetail = (state, transactionId, fetchLinkedTransactions = tr
|
|
|
42
43
|
linkedTransactions = linkedTransactionDetails
|
|
43
44
|
.map((linkedTranDetail) => {
|
|
44
45
|
const key = (0, transactionDetailState_1.getTransactionDetailKey)(linkedTranDetail.transactionId); // eslint-disable-line @typescript-eslint/no-non-null-assertion
|
|
45
|
-
return transactionState
|
|
46
|
+
return (0, transactionSelector_1.getSupportedTransactionById)(transactionState, key);
|
|
46
47
|
})
|
|
47
48
|
.filter((value) => {
|
|
48
49
|
if (value == null) {
|
|
@@ -8,7 +8,7 @@ import { Transaction, TransactionID } from '../../entity/transaction/stateTypes/
|
|
|
8
8
|
import { VendorBase } from '../../entity/vendor/vendorState';
|
|
9
9
|
import { EntityRecommendationKey } from '../recommendation/recommendationState';
|
|
10
10
|
import { TransactionDetailLocalData } from './transactionDetailTypes';
|
|
11
|
-
export declare const getTransactionDetailKey: (transactionId: TransactionID) => string
|
|
11
|
+
export declare const getTransactionDetailKey: (transactionId: TransactionID) => `${string}_expense` | `${string}_invoice` | `${string}_payment` | `${string}_credit_memo` | `${string}_sales_receipt` | `${string}_delayed_credit` | `${string}_delayed_charge` | `${string}_refund` | `${string}_check` | `${string}_bill` | `${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`;
|
|
12
12
|
export declare type TransactionDetailKey = ReturnType<typeof getTransactionDetailKey>;
|
|
13
13
|
export declare function getAllLinkedTransactions(transaction: Transaction): TransactionID[];
|
|
14
14
|
export interface SupportedTransactionDetail extends FetchedState {
|
|
@@ -1,23 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.initialSupportedTransactionDetail = exports.getAllLinkedTransactions = exports.getTransactionDetailKey = void 0;
|
|
4
|
-
|
|
4
|
+
// This transaction key only extracts the third party ID and uses that
|
|
5
|
+
// for the ID
|
|
6
|
+
const getTransactionDetailKey = (transactionId) => `${transactionId.id}_${transactionId.type}`;
|
|
5
7
|
exports.getTransactionDetailKey = getTransactionDetailKey;
|
|
6
|
-
/**
|
|
7
|
-
* Returns actual QBO transaction ID.
|
|
8
|
-
* @param zeniGeneratedId zeni transaciton Id in the form of tran_<uuid>:<qbo_id>
|
|
9
|
-
* @returns retruns the actual QBO transaction Id.
|
|
10
|
-
* @note in case if the given transaction id itself is QBO id, the it just passes it back.
|
|
11
|
-
*/
|
|
12
|
-
const getActualTransactionID = (zeniGeneratedId) => {
|
|
13
|
-
const splittedIds = zeniGeneratedId.trim().split(':');
|
|
14
|
-
if (splittedIds.length === 1) {
|
|
15
|
-
return splittedIds[0];
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
return splittedIds[1];
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
8
|
function getAllLinkedTransactions(transaction) {
|
|
22
9
|
var _a, _b;
|
|
23
10
|
const result = [];
|
|
@@ -10,6 +10,7 @@ const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
|
10
10
|
const parallelFetchAccountTransactionListEpic_1 = require("./parallelFetchAccountTransactionListEpic");
|
|
11
11
|
const reduceTransactionListFetchState_1 = require("./reduceTransactionListFetchState");
|
|
12
12
|
const transactionListState_1 = require("./transactionListState");
|
|
13
|
+
const transactionSelector_1 = require("../../entity/transaction/transactionSelector");
|
|
13
14
|
const getTransactionListByAccount = (transactionState, transactionListState, accountId, accountType, timeframe, filterByTimePeriod) => {
|
|
14
15
|
const timePeriods = (0, parallelFetchAccountTransactionListEpic_1.splitPeriod)(filterByTimePeriod); // Note: Split by months.
|
|
15
16
|
const accountTransactions = timePeriods
|
|
@@ -27,7 +28,7 @@ const getTransactionListByAccount = (transactionState, transactionListState, acc
|
|
|
27
28
|
if ((0, reduceTransactionListFetchState_1.isAnyFetchCompleted)(accountTransactions)) {
|
|
28
29
|
const allTransactionIDs = (0, flatMap_1.default)(accountTransactions, (value) => value.transactionIDs);
|
|
29
30
|
const transactionsUnsorted = allTransactionIDs
|
|
30
|
-
.map((transactionId) => transactionState
|
|
31
|
+
.map((transactionId) => (0, transactionSelector_1.getSupportedTransactionById)(transactionState, transactionId))
|
|
31
32
|
.filter((value) => {
|
|
32
33
|
if (value == null) {
|
|
33
34
|
console.error("Can't have null transaction at this stage!");
|
|
@@ -10,6 +10,7 @@ const flatMap_1 = __importDefault(require("lodash/flatMap"));
|
|
|
10
10
|
const transactionListState_1 = require("./transactionListState");
|
|
11
11
|
const reduceTransactionListFetchState_1 = require("./reduceTransactionListFetchState");
|
|
12
12
|
const parallelFetchAccountTransactionListEpic_1 = require("./parallelFetchAccountTransactionListEpic");
|
|
13
|
+
const transactionSelector_1 = require("../../entity/transaction/transactionSelector");
|
|
13
14
|
const getTransactionsListByCategoryType = (transactionState, transactionListState, filterByTimePeriod, timeframe, transactionCategoryType) => {
|
|
14
15
|
const timePeriods = (0, parallelFetchAccountTransactionListEpic_1.splitPeriod)(filterByTimePeriod); // Note: Split by months.
|
|
15
16
|
const categoryTransactions = timePeriods
|
|
@@ -24,7 +25,7 @@ const getTransactionsListByCategoryType = (transactionState, transactionListStat
|
|
|
24
25
|
if ((0, reduceTransactionListFetchState_1.isAnyFetchCompleted)(categoryTransactions)) {
|
|
25
26
|
const allTransactionIDs = (0, flatMap_1.default)(categoryTransactions, (value) => value.transactionIDs);
|
|
26
27
|
const transactionsUnsorted = allTransactionIDs
|
|
27
|
-
.map((transactionId) => transactionState
|
|
28
|
+
.map((transactionId) => (0, transactionSelector_1.getSupportedTransactionById)(transactionState, transactionId))
|
|
28
29
|
.filter((value) => {
|
|
29
30
|
if (value == null) {
|
|
30
31
|
console.error("Can't have null transaction at this stage!");
|
|
@@ -10,6 +10,7 @@ const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
|
10
10
|
const parallelFetchAccountTransactionListEpic_1 = require("./parallelFetchAccountTransactionListEpic");
|
|
11
11
|
const reduceTransactionListFetchState_1 = require("./reduceTransactionListFetchState");
|
|
12
12
|
const transactionListState_1 = require("./transactionListState");
|
|
13
|
+
const transactionSelector_1 = require("../../entity/transaction/transactionSelector");
|
|
13
14
|
const getTransactionListByClass = (transactionState, transactionListState, accountId, accountType, classId, timeframe, filterByTimePeriod) => {
|
|
14
15
|
const timePeriods = (0, parallelFetchAccountTransactionListEpic_1.splitPeriod)(filterByTimePeriod); // Note: Split by months.
|
|
15
16
|
const accountTransactions = timePeriods
|
|
@@ -27,7 +28,7 @@ const getTransactionListByClass = (transactionState, transactionListState, accou
|
|
|
27
28
|
if ((0, reduceTransactionListFetchState_1.isAnyFetchCompleted)(accountTransactions)) {
|
|
28
29
|
const allTransactionIDs = (0, flatMap_1.default)(accountTransactions, (value) => value.transactionIDs);
|
|
29
30
|
const transactionsUnsorted = allTransactionIDs
|
|
30
|
-
.map((transactionId) => transactionState
|
|
31
|
+
.map((transactionId) => (0, transactionSelector_1.getSupportedTransactionById)(transactionState, transactionId))
|
|
31
32
|
.filter((value) => {
|
|
32
33
|
if (value == null) {
|
|
33
34
|
console.error("Can't have null transaction at this stage!");
|
|
@@ -11,6 +11,7 @@ const timeframeTick_1 = require("../../commonStateTypes/timeframeTick");
|
|
|
11
11
|
const parallelFetchAccountTransactionListEpic_1 = require("./parallelFetchAccountTransactionListEpic");
|
|
12
12
|
const reduceTransactionListFetchState_1 = require("./reduceTransactionListFetchState");
|
|
13
13
|
const transactionListState_1 = require("./transactionListState");
|
|
14
|
+
const transactionSelector_1 = require("../../entity/transaction/transactionSelector");
|
|
14
15
|
const getTransactionListByEntity = (transactionState, transactionListState, filterByTimePeriod, entity) => {
|
|
15
16
|
const timePeriods = (0, parallelFetchAccountTransactionListEpic_1.splitPeriod)((0, timeframeTick_1.toTimePeriod)(filterByTimePeriod)); // Note: Split by months.
|
|
16
17
|
const entityTransactions = timePeriods
|
|
@@ -25,7 +26,7 @@ const getTransactionListByEntity = (transactionState, transactionListState, filt
|
|
|
25
26
|
if ((0, reduceTransactionListFetchState_1.isAnyFetchCompleted)(entityTransactions)) {
|
|
26
27
|
const allTransactionIDs = (0, flatMap_1.default)(entityTransactions, (value) => value.transactionIDs);
|
|
27
28
|
const transactionsUnsorted = allTransactionIDs
|
|
28
|
-
.map((transactionId) => transactionState
|
|
29
|
+
.map((transactionId) => (0, transactionSelector_1.getSupportedTransactionById)(transactionState, transactionId))
|
|
29
30
|
.filter((value) => {
|
|
30
31
|
if (value == null) {
|
|
31
32
|
console.error("Can't have null transaction at this stage!");
|
|
@@ -8,6 +8,9 @@ import { Vendor } from '../../entity/vendor/vendorState';
|
|
|
8
8
|
import { RootState } from '../../reducer';
|
|
9
9
|
import { ZeniDate } from '../../zeniDayJS';
|
|
10
10
|
import { VendorListViewSortKey, VendorListViewYTDSpendSortKey, VendorViewUIState } from './vendorListState';
|
|
11
|
+
export declare const toVendorReportIDType: (v: string) => "operating_expenses_by_vendor" | "vendors_tab" | "prepaid_expenses";
|
|
12
|
+
export declare const toVendorReportIDTypeStrict: (v?: string | undefined) => "operating_expenses_by_vendor" | "vendors_tab" | "prepaid_expenses" | undefined;
|
|
13
|
+
export declare type VendorReportIDType = ReturnType<typeof toVendorReportIDType>;
|
|
11
14
|
export interface VendorListSelectorView extends SelectorView {
|
|
12
15
|
vendors: VendorListView[];
|
|
13
16
|
uiState: VendorViewUIState;
|