@zeniai/client-epic-state 5.0.87-betaJK2 → 5.0.87-betaVR1
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/entity/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +0 -1
- package/lib/entity/task/taskPayload.d.ts +0 -1
- package/lib/entity/task/taskPayload.js +0 -1
- package/lib/entity/task/taskReducer.d.ts +1 -5
- package/lib/entity/task/taskReducer.js +2 -8
- package/lib/entity/task/taskState.d.ts +0 -1
- package/lib/entity/transaction/stateTypes/transactionLine.d.ts +2 -1
- package/lib/entity/transaction/stateTypes/transactionLine.js +2 -1
- package/lib/epic.d.ts +1 -3
- package/lib/epic.js +1 -3
- package/lib/esm/entity/snackbar/snackbarTypes.js +0 -1
- package/lib/esm/entity/task/taskPayload.js +0 -1
- package/lib/esm/entity/task/taskReducer.js +1 -7
- package/lib/esm/entity/transaction/stateTypes/transactionLine.js +1 -0
- package/lib/esm/epic.js +1 -3
- package/lib/esm/index.js +5 -3
- package/lib/esm/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.js +0 -13
- package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +2 -51
- package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +8 -19
- package/lib/esm/view/transactionDetail/journalEntryLinesViewModel.js +149 -0
- package/lib/index.d.ts +7 -4
- package/lib/index.js +25 -19
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.d.ts +1 -2
- package/lib/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.js +0 -13
- package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +0 -13
- package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +2 -14
- package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +3 -52
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +1 -2
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +6 -17
- package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +102 -0
- package/lib/view/transactionDetail/journalEntryLinesViewModel.js +160 -0
- package/package.json +1 -1
- package/lib/esm/view/taskManager/taskDetailView/epics/createSubTaskEpic.js +0 -80
- package/lib/esm/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.js +0 -36
- package/lib/view/taskManager/taskDetailView/epics/createSubTaskEpic.d.ts +0 -9
- package/lib/view/taskManager/taskDetailView/epics/createSubTaskEpic.js +0 -84
- package/lib/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.d.ts +0 -8
- package/lib/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.js +0 -40
package/lib/esm/index.js
CHANGED
|
@@ -174,7 +174,6 @@ import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fet
|
|
|
174
174
|
import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationView/selectors/fluxAnalysisViewSelector';
|
|
175
175
|
import { getExpenseAutomationReconciliationView, isAccountReconReport, } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
|
|
176
176
|
import { getExpenseAutomationTransactionView, getLastTransferEntryReplacement, } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
|
|
177
|
-
import { TRANSACTION_FILTER_CATEGORIES, applyTransactionFilters, } from './view/expenseAutomationView/transactionFilterHelpers';
|
|
178
177
|
import { DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab, } from './view/expenseAutomationView/types/completedSubTab';
|
|
179
178
|
import { toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey, } from './view/expenseAutomationView/types/jeSchedulesViewState';
|
|
180
179
|
import { BATCH_FILE_STATUSES, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toMatchSource, toMissingReceiptsTab, } from './view/expenseAutomationView/types/missingReceiptsViewState';
|
|
@@ -339,6 +338,7 @@ import { getRemiBusinessVerificationDetails, getRemiSetupViewDetails, } from './
|
|
|
339
338
|
import { approveOrRejectRemisBulkAction, autoReviewPendingApprovalRemis, cancelOrDeleteRemisBulkAction, clearAllRemisFromBulkActionList, clearRemiBulkActionView, incrementRemiBulkActionProcessedCount, removeRemiFromBulkActionList, reviewDraftRemisBulkAction, submitDraftRemisBulkAction, updateRemisBulkActionList, } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewReducer';
|
|
340
339
|
import { getRemisBulkOperationProgress, getRemisBulkReviewView, } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewSelector';
|
|
341
340
|
import { hideCreatedByFilter, } from './view/spendManagement/spendManagementFilterHelpers';
|
|
341
|
+
import { TRANSACTION_FILTER_CATEGORIES, applyTransactionFilters, } from './view/expenseAutomationView/transactionFilterHelpers';
|
|
342
342
|
import { acceptTreasuryTerms, clearTreasurySetupView, fetchPortfolioAllocation, fetchTreasuryFunds, fetchTreasurySetupView, updateFundAllocationLocalData, updatePortfolioAllocation, updateTreasuryVideoViewed, } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer';
|
|
343
343
|
import { getTreasuryBusinessVerificationDetails, getTreasurySetupViewDetails, } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewSelector';
|
|
344
344
|
import { getTreasuryFundsMaximumYield, } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewState';
|
|
@@ -368,7 +368,7 @@ import { getAllTags } from './view/tagView/tagViewSelector';
|
|
|
368
368
|
import { deleteCannedResponse, fetchCannedResponses, saveCannedResponse, } from './view/taskManager/cannedResponsesView/cannedResponsesReducer';
|
|
369
369
|
import { getCannedResponsesView } from './view/taskManager/cannedResponsesView/cannedResponsesSelector';
|
|
370
370
|
import { initialTaskDetail, initialTaskDetailLocalData, } from './view/taskManager/taskDetailView/taskDetail';
|
|
371
|
-
import { archiveTask,
|
|
371
|
+
import { archiveTask, deleteTask, discardTaskUpdatesInLocalStore, fetchTaskDetailPage, saveTaskDetail, saveTaskUpdatesToLocalStore, snoozeTask, unsnoozeTask, } from './view/taskManager/taskDetailView/taskDetailReducer';
|
|
372
372
|
import { allTaskPriority, allTaskStatus, getTaskDetail, } from './view/taskManager/taskDetailView/taskDetailSelector';
|
|
373
373
|
import { createTaskFromTaskGroupTemplate } from './view/taskManager/taskGroupTemplateView/taskGroupTemplateViewReducer';
|
|
374
374
|
import { createNewTaskGroup, deleteTaskGroup, fetchAllTaskGroups, updateTaskGroupName, } from './view/taskManager/taskGroupView/taskGroupViewReducer';
|
|
@@ -385,6 +385,7 @@ import { getAllTopExpenses, getTop6Expenses, getTopExpenses, } from './view/topE
|
|
|
385
385
|
import { TOP_EX_TIME_PERIODS, } from './view/topEx/topExState';
|
|
386
386
|
import { getAccountingProviderAttachment, } from './view/transactionDetail/getAccountingProviderAttachmentSelector';
|
|
387
387
|
import { getChangedLineItemCountFromLocalData, isAccountUncategorized, } from './view/transactionDetail/transactionDetailLocalDataHelper';
|
|
388
|
+
import { JOURNAL_ENTRY_SORT_KEYS, filterJournalEntryLinesExcludingLinked, journalEntryDefaultSortConfig, journalEntryTotalsByPostingSide, sortJournalEntryLines, sumJournalEntryAmounts, toJournalEntrySortKey, } from './view/transactionDetail/journalEntryLinesViewModel';
|
|
388
389
|
import { clearTransactionDetailSaveStatus, deleteTransactionAttachment, downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentFailure, downloadAccountingProviderAttachmentSuccess, fetchTransactionDetail, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, resetAllLineItemsToVendor, resetLineItemsCategoryClassInLocalData, resetSelectedCustomer, resetVendor, saveTransactionDetail, saveTransactionDetailLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setAllLineItemsToCategoryClassInLocalData, setIsVendorUpdateAllChecked, updateLatestSelectedEntity, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateSelectedCustomer, updateSelectedVendor, updateTransactionDetail, updateVendorBulkRecommendationsFetchStatus, updateVendorToAllLineItems, uploadMissingAttachmentSuccess, } from './view/transactionDetail/transactionDetailReducer';
|
|
389
390
|
import { getInitialUpdatablePeriodsForTransactionRecommendations, getTransactionDetail, getTransactionDetailForTransaction, } from './view/transactionDetail/transactionDetailSelector';
|
|
390
391
|
import { getThirdPartyIdFromTransactionId, } from './view/transactionDetail/transactionDetailState';
|
|
@@ -583,6 +584,7 @@ export { getNextNthWorkingDay, getPreviousNthWorkingDay, isHolidayToday, filterD
|
|
|
583
584
|
export { fetchCompanyOnboardingView, fetchQBOConnectionPool, updateQBOConnectionPoolExternalConnection, fetchOnboardingCompletedCompanies, saveOnboardingCustomerCompletedStatus, toProductType, toProductTypeStrict, getOnboardingCockpitView, getNewOnboardingCustomerView, getOnboardingEmailGroup, initializeOnboardingCustomerViewUpdateData, clearOnboardingCustomerViewUpdateData, saveOnboardingCustomerViewUpdateData, updateOnboardingCustomerListUIState, updateCustomerCreationStatus, updateStatusAfterOnboardingCompleted, saveOnboardingCustomerViewUpdates, saveOnboardingCustomerNotes, saveOnboardingCustomerDataInLocalStore, updateOnboardingCustomerDataInLocalStore, resetNewOnboardedCustomerId, sendOnboardingCustomerViewInvite, retryBankAccountConnectionForOnboarding, };
|
|
584
585
|
export { getTransactionsListByCategoryType, getTransactionListUIStateByCategoryType, };
|
|
585
586
|
export { getChangedLineItemCountFromLocalData, isAccountUncategorized };
|
|
587
|
+
export { JOURNAL_ENTRY_SORT_KEYS, filterJournalEntryLinesExcludingLinked, journalEntryDefaultSortConfig, journalEntryTotalsByPostingSide, sortJournalEntryLines, sumJournalEntryAmounts, toJournalEntrySortKey, };
|
|
586
588
|
export { openSnackbar, closeSnackbar, getSnackbar, };
|
|
587
589
|
export { getSpendManagementEffectiveListPeriod, getSelectedCompanyOfficer, showBillPayPromoPage, showReimbursementPromoPage, getActualPaymentDate, isVerifiedStatusCode, isVerifiedPaymentAccountProviderStatusCode, isBulkProcessing, getBillListUniqueType, getRemiListUniqueType, getBulkOperationSuffix, toAccountsPromoConfig, toSameDayAchDisablementConfig, isPaymentMethodOutsideZeni, isAwaitingMarkAsPaid, checkIfLowBalance, };
|
|
588
590
|
export { canSendMonthEndEmailReport, shouldEnableCalendarPickerForLastReportSent, };
|
|
@@ -619,7 +621,7 @@ export { fetchGlobalMerchantRecommendation, createGlobalMerchant, updateCreateGl
|
|
|
619
621
|
export { approveVendorGlobalReview, rejectVendorGlobalReview, fetchVendorGlobalReviewView, updateSelectedGlobalMerchant, updateVendorGlobalReviewViewUIState, getVendorGlobalReviewView, getTenantMerchantByMerchantId, toVendorGlobalReviewColumnSortKeyType, updateVendorGlobalReviewViewLocalData, };
|
|
620
622
|
export { fetchArAging, updateArAgingUIState, fetchArAgingDetail, updateArAgingDetailUIState, getArAgingReport, getArAgingDetailForCustomer, updateArAgingNodeCollapseState, };
|
|
621
623
|
export { toRecurringBillFrequency, toRecurringBillFrequencyStrict, };
|
|
622
|
-
export { getTaskGroupById, getAllTasks, fetchTaskListPage, getTaskDetail, fetchTaskDetailPage, saveTaskUpdatesToLocalStore, saveTaskDetail,
|
|
624
|
+
export { getTaskGroupById, getAllTasks, fetchTaskListPage, getTaskDetail, fetchTaskDetailPage, saveTaskUpdatesToLocalStore, saveTaskDetail, archiveTask, fetchCannedResponses, saveCannedResponse, deleteCannedResponse, getCannedResponsesView, updateTaskListSearchText, updateTaskListUIState, allTaskStatus, allTaskPriority, updateTaskFilters, TASK_LIST_FILTER_CATEGORIES, TASK_LIST_GROUP_BY_CATEGORIES, deleteTask, discardTaskUpdatesInLocalStore, bulkUpdateTaskList, createNewTaskGroup, initiateTaskListLocalData, deleteTaskGroup, updateTaskListLocalData, dragNDropTasks, updateTaskGroupName, toTaskListGroupByKeyType, toTaskListGroupByKeyTypeStrict, getTaskUpdates, fetchAllTaskGroups, initialTaskDetail, getDueDateValueFromDueDateGroupId, toPriorityCodeType, toTaskStatusCodeType, toDueDateGroupKeyType, updateTaskFromListView, updateTaskListTab, removeTaskFromList, snoozeTask, unsnoozeTask, convertHHMMStrToMinutes, initialTaskDetailLocalData, ALL_TASK_LIST_TABS, };
|
|
623
625
|
export { getAllTags, fetchTagList, createTag, deleteTag, };
|
|
624
626
|
export { getAllCardsAndBankPaymentMethods, createCardSetupIntent, confirmCardSetupIntent, addCardPaymentSource, fetchPaymentSources, resetCardPaymentErrorStatuses, clearCardPaymentView, };
|
|
625
627
|
export { getAuditReportGroupViewSelectorView, getAuditRuleGroupViewSelectorView, getUserFromAllUsers, fetchAuditRuleGroupView, fetchAuditReportGroupView, saveReasonForAuditRule, clearAuditReportGroupViewByCompanyId, };
|
|
@@ -4,16 +4,13 @@ import { catchError, filter, mergeMap } from 'rxjs/operators';
|
|
|
4
4
|
import { openSnackbar } from '../../../../entity/snackbar/snackbarReducer';
|
|
5
5
|
import { updateTags } from '../../../../entity/tag/tagReducer';
|
|
6
6
|
import { updateTasks } from '../../../../entity/task/taskReducer';
|
|
7
|
-
import { getTaskById } from '../../../../entity/task/taskSelector';
|
|
8
7
|
import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
|
|
9
8
|
import { fetchFileList } from '../../../fileView/fileViewReducer';
|
|
10
|
-
import { updateTaskListOnNewTaskCreationSuccess } from '../../taskListView/taskListReducer';
|
|
11
9
|
import { fetchTaskDetail, initializeTaskToLocalStore, removeTaskDetail, updateEditTaskFetchStatus, } from '../taskDetailReducer';
|
|
12
10
|
export const fetchTaskDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(fetchTaskDetail.match), mergeMap((action) => {
|
|
13
11
|
const { taskId, cacheOverride } = action.payload;
|
|
14
12
|
const taskActions = [];
|
|
15
13
|
const state = state$.value;
|
|
16
|
-
const isTaskListFetched = state.taskListState.fetchState === 'Completed';
|
|
17
14
|
const taskDetail = recordGet(state.taskDetailState.editTaskStateById, taskId, undefined);
|
|
18
15
|
if (cacheOverride === true) {
|
|
19
16
|
taskActions.push(removeTaskDetail(taskId));
|
|
@@ -35,16 +32,6 @@ export const fetchTaskDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe(
|
|
|
35
32
|
updateTags(response.data.tasks.map((task) => task.tags).flat()),
|
|
36
33
|
initializeTaskToLocalStore(taskId),
|
|
37
34
|
];
|
|
38
|
-
if (isTaskListFetched === true) {
|
|
39
|
-
const taskGroupId = response.data.tasks[0].task_group_ids?.[0];
|
|
40
|
-
if (taskGroupId != null) {
|
|
41
|
-
fetchActions.push(updateTaskListOnNewTaskCreationSuccess({
|
|
42
|
-
taskGroupId,
|
|
43
|
-
task: response.data.tasks[0],
|
|
44
|
-
currentTaskState: getTaskById(state.taskState, taskId),
|
|
45
|
-
}));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
35
|
const fileIds = response.data.tasks[0].file_ids;
|
|
49
36
|
if (fileIds.length > 0) {
|
|
50
37
|
fetchActions.push(fetchFileList(fileIds));
|
|
@@ -6,11 +6,6 @@ import { initialTaskDetail, } from './taskDetail';
|
|
|
6
6
|
export const initialState = {
|
|
7
7
|
newTaskState: initialTaskDetail,
|
|
8
8
|
editTaskStateById: {},
|
|
9
|
-
subTaskCreateStatus: {
|
|
10
|
-
fetchState: 'Not-Started',
|
|
11
|
-
error: undefined,
|
|
12
|
-
},
|
|
13
|
-
subTaskListFetchStatusByParentId: {},
|
|
14
9
|
taskHistoryById: {},
|
|
15
10
|
};
|
|
16
11
|
const taskDetailView = createSlice({
|
|
@@ -55,7 +50,7 @@ const taskDetailView = createSlice({
|
|
|
55
50
|
updateEditTaskFetchStatus(draft, action) {
|
|
56
51
|
const { taskId, fetchState, error } = action.payload;
|
|
57
52
|
draft.editTaskStateById[taskId] = {
|
|
58
|
-
...
|
|
53
|
+
...draft.editTaskStateById[taskId],
|
|
59
54
|
fetchTaskStatus: {
|
|
60
55
|
fetchState,
|
|
61
56
|
error: fetchState === 'Error' ? error : undefined,
|
|
@@ -323,54 +318,10 @@ const taskDetailView = createSlice({
|
|
|
323
318
|
error,
|
|
324
319
|
};
|
|
325
320
|
},
|
|
326
|
-
createSubTask: {
|
|
327
|
-
reducer(draft) {
|
|
328
|
-
draft.subTaskCreateStatus = {
|
|
329
|
-
fetchState: 'In-Progress',
|
|
330
|
-
error: undefined,
|
|
331
|
-
};
|
|
332
|
-
},
|
|
333
|
-
prepare(payload) {
|
|
334
|
-
return { payload };
|
|
335
|
-
},
|
|
336
|
-
},
|
|
337
|
-
createSubTaskSuccessOrFailure(draft, action) {
|
|
338
|
-
const { fetchState, error } = action.payload;
|
|
339
|
-
draft.subTaskCreateStatus = {
|
|
340
|
-
fetchState,
|
|
341
|
-
error,
|
|
342
|
-
};
|
|
343
|
-
},
|
|
344
|
-
fetchSubTasks: {
|
|
345
|
-
reducer(draft, action) {
|
|
346
|
-
const { parentTaskId } = action.payload;
|
|
347
|
-
draft.subTaskListFetchStatusByParentId[parentTaskId] = {
|
|
348
|
-
fetchState: 'In-Progress',
|
|
349
|
-
error: undefined,
|
|
350
|
-
};
|
|
351
|
-
},
|
|
352
|
-
prepare(parentTaskId) {
|
|
353
|
-
return { payload: { parentTaskId } };
|
|
354
|
-
},
|
|
355
|
-
},
|
|
356
|
-
updateSubTasks(draft, action) {
|
|
357
|
-
const { parentTaskId } = action.payload;
|
|
358
|
-
draft.subTaskListFetchStatusByParentId[parentTaskId] = {
|
|
359
|
-
fetchState: 'Completed',
|
|
360
|
-
error: undefined,
|
|
361
|
-
};
|
|
362
|
-
},
|
|
363
|
-
updateSubTasksFetchStatus(draft, action) {
|
|
364
|
-
const { parentTaskId, fetchState, error } = action.payload;
|
|
365
|
-
draft.subTaskListFetchStatusByParentId[parentTaskId] = {
|
|
366
|
-
fetchState,
|
|
367
|
-
error,
|
|
368
|
-
};
|
|
369
|
-
},
|
|
370
321
|
clearTaskDetail(draft) {
|
|
371
322
|
Object.assign(draft, initialState);
|
|
372
323
|
},
|
|
373
324
|
},
|
|
374
325
|
});
|
|
375
|
-
export const { fetchTaskDetailPage, fetchTaskDetail, initializeTaskToLocalStore, updateEditTaskFetchStatus, saveTaskUpdatesToLocalStore, discardTaskUpdatesInLocalStore, saveTaskDetail, archiveTask, archiveTaskSuccessOrFailure, saveTaskSuccessOrFailure,
|
|
326
|
+
export const { fetchTaskDetailPage, fetchTaskDetail, initializeTaskToLocalStore, updateEditTaskFetchStatus, saveTaskUpdatesToLocalStore, discardTaskUpdatesInLocalStore, saveTaskDetail, archiveTask, archiveTaskSuccessOrFailure, saveTaskSuccessOrFailure, deleteTask, removeTaskDetail, deleteTaskSuccessOrFailure, snoozeTask, snoozeTaskSuccessOrFailure, unsnoozeTask, fetchTaskHistory, updateTaskHistory, updateTaskHistoryFetchStatus, clearTaskDetail, updateCreatedTagToLocalStore, updateDeletedTagToLocalStore, } = taskDetailView.actions;
|
|
376
327
|
export default taskDetailView.reducer;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import isEqual from 'lodash/isEqual';
|
|
2
|
-
import {
|
|
2
|
+
import { reduceFetchState } from '../../../commonStateTypes/reduceFetchState';
|
|
3
3
|
import { getClassesByIds } from '../../../entity/class/classSelector';
|
|
4
4
|
import { getFilesByFileIds } from '../../../entity/file/fileSelector';
|
|
5
|
-
import { getTaskById
|
|
5
|
+
import { getTaskById } from '../../../entity/task/taskSelector';
|
|
6
6
|
import { getUserAndUserRole, } from '../../companyView/types/userAndRole';
|
|
7
7
|
import { getFileDeleteStatusById, getFileUpdateNameStatusById, } from '../../fileView/fileViewSelector';
|
|
8
8
|
import { getUserList, } from '../../userListView/userListViewSelector';
|
|
@@ -27,13 +27,8 @@ export const getTaskDetail = (state, taskId) => {
|
|
|
27
27
|
let recurringSourceTaskId = undefined;
|
|
28
28
|
let snoozedUntil = undefined;
|
|
29
29
|
let taskGroupId = undefined;
|
|
30
|
-
let subtasks = [];
|
|
31
30
|
if (taskId != null && sourceTaskDetail != null) {
|
|
32
31
|
const taskEntity = getTaskById(taskState, taskId);
|
|
33
|
-
subtasks =
|
|
34
|
-
taskEntity != null
|
|
35
|
-
? getTasksByIds(taskState, taskEntity.subTasksIds)
|
|
36
|
-
: [];
|
|
37
32
|
const fileIdsInEntity = taskEntity?.fileIds ?? [];
|
|
38
33
|
if (taskEntity != null) {
|
|
39
34
|
createdByUser = getUserAndUserRole(userState, userRoleState, addressState, taskEntity.createdBy);
|
|
@@ -44,27 +39,25 @@ export const getTaskDetail = (state, taskId) => {
|
|
|
44
39
|
taskGroupId = taskEntity.taskGroupIds[0];
|
|
45
40
|
}
|
|
46
41
|
if (fileIdsInEntity.length > 0) {
|
|
47
|
-
fetchStatus =
|
|
42
|
+
fetchStatus = reduceFetchState([
|
|
48
43
|
fileViewState.fetchFilesStatus,
|
|
49
44
|
sourceTaskDetail.fetchTaskStatus,
|
|
50
45
|
userList,
|
|
51
46
|
classListState,
|
|
52
|
-
taskDetailState.subTaskListFetchStatusByParentId[taskId],
|
|
53
47
|
]);
|
|
54
48
|
}
|
|
55
49
|
else {
|
|
56
|
-
fetchStatus =
|
|
50
|
+
fetchStatus = reduceFetchState([
|
|
57
51
|
sourceTaskDetail.fetchTaskStatus,
|
|
58
52
|
userList,
|
|
59
53
|
classListState,
|
|
60
|
-
taskDetailState.subTaskListFetchStatusByParentId[taskId],
|
|
61
54
|
]);
|
|
62
55
|
}
|
|
63
56
|
showTaskDetailFormFooter = showFormFooter(sourceTaskDetail.taskDetailLocalData, taskEntity);
|
|
64
57
|
taskHistory = taskDetailState.taskHistoryById[taskId]?.historicEvents ?? [];
|
|
65
58
|
}
|
|
66
59
|
else if (taskId == null) {
|
|
67
|
-
fetchStatus =
|
|
60
|
+
fetchStatus = reduceFetchState([userList, classListState]);
|
|
68
61
|
}
|
|
69
62
|
const { classIds } = classListState;
|
|
70
63
|
const allAccountingClasses = getClassesByIds(classState, {
|
|
@@ -97,7 +90,6 @@ export const getTaskDetail = (state, taskId) => {
|
|
|
97
90
|
showTaskDetailFormFooter,
|
|
98
91
|
snoozedUntil,
|
|
99
92
|
taskGroupId,
|
|
100
|
-
subtasks,
|
|
101
93
|
};
|
|
102
94
|
};
|
|
103
95
|
export const allTaskStatus = [
|
|
@@ -145,16 +137,13 @@ export const allTaskPriority = [
|
|
|
145
137
|
},
|
|
146
138
|
];
|
|
147
139
|
const showFormFooter = (taskDetailLocalData, taskDetailInStore) => {
|
|
148
|
-
if (
|
|
149
|
-
return false;
|
|
150
|
-
}
|
|
151
|
-
if (taskDetailLocalData.name !== taskDetailInStore.name ||
|
|
140
|
+
if (taskDetailLocalData.name !== taskDetailInStore?.name ||
|
|
152
141
|
taskDetailLocalData.description !== taskDetailInStore.description ||
|
|
153
142
|
taskDetailLocalData.priority !== taskDetailInStore.priority.code ||
|
|
154
143
|
taskDetailLocalData.status !== taskDetailInStore.status.code ||
|
|
155
144
|
!isEqual(taskDetailInStore.tagIds, taskDetailLocalData.tagIds) ||
|
|
156
|
-
!isEqual(taskDetailLocalData.assignee, taskDetailInStore
|
|
157
|
-
!isEqual(taskDetailLocalData.groupAssignees, taskDetailInStore
|
|
145
|
+
!isEqual(taskDetailLocalData.assignee, taskDetailInStore?.assignees ?? []) ||
|
|
146
|
+
!isEqual(taskDetailLocalData.groupAssignees, taskDetailInStore?.groupAssignees ?? []) ||
|
|
158
147
|
!isEqual(taskDetailLocalData.fileIds, taskDetailInStore.fileIds ?? []) ||
|
|
159
148
|
!isEqual(taskDetailLocalData.dueDate, taskDetailInStore.dueDate) ||
|
|
160
149
|
!isEqual(taskDetailLocalData.type, taskDetailInStore.type) ||
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import orderBy from 'lodash/orderBy';
|
|
2
|
+
import { stringToUnion } from '../../commonStateTypes/stringToUnion';
|
|
3
|
+
import { LINE_TYPE_LINKED, } from '../../entity/transaction/stateTypes/transactionLine';
|
|
4
|
+
/**
|
|
5
|
+
* View-model helpers for the new Journal Entry table view (see
|
|
6
|
+
* web-components `journalEntryTable`). Keeps presentation-agnostic
|
|
7
|
+
* logic — totals, sort, line-filter — colocated in epic-state so it
|
|
8
|
+
* is testable and reusable.
|
|
9
|
+
*/
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Sort keys
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
export const JOURNAL_ENTRY_SORT_KEYS = [
|
|
14
|
+
'description',
|
|
15
|
+
'name',
|
|
16
|
+
'category',
|
|
17
|
+
'class',
|
|
18
|
+
'debit',
|
|
19
|
+
'credit',
|
|
20
|
+
];
|
|
21
|
+
export const toJournalEntrySortKey = (v) => stringToUnion(v, JOURNAL_ENTRY_SORT_KEYS);
|
|
22
|
+
export const journalEntryDefaultSortConfig = {
|
|
23
|
+
sortKey: 'description',
|
|
24
|
+
sortOrder: 'ascending',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Sums the `amount.amount` field of every line and returns an `Amount`
|
|
28
|
+
* whose currencyCode/currencySymbol are taken from the first line.
|
|
29
|
+
* Returns `undefined` for an empty list, and also when the first line
|
|
30
|
+
* has no currency to carry — a stray bare number with no symbol is
|
|
31
|
+
* worse to render than nothing, so the caller is forced to handle the
|
|
32
|
+
* absence.
|
|
33
|
+
*
|
|
34
|
+
* **Precondition:** all input lines must share a currency. Journal
|
|
35
|
+
* entry lines on the same transaction always do, which is the only
|
|
36
|
+
* caller today. Mixed-currency input is summed numerically (no FX
|
|
37
|
+
* conversion) and tagged with the first line's currency, which will
|
|
38
|
+
* silently produce a wrong total — if this helper is ever reused for
|
|
39
|
+
* a cross-currency aggregate (e.g. a multi-transaction report), the
|
|
40
|
+
* caller must pre-group by currency before calling.
|
|
41
|
+
*
|
|
42
|
+
* Mirrors legacy `calculateTotal` in
|
|
43
|
+
* `web-components/src/components/transactionDetail/items/TransactionLinesJournalEntry.tsx`
|
|
44
|
+
* but without the `Object.assign` ceremony and with stable currency carry-over.
|
|
45
|
+
*/
|
|
46
|
+
export const sumJournalEntryAmounts = (lines) => {
|
|
47
|
+
if (lines.length === 0) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const first = lines[0].amount;
|
|
51
|
+
if (first?.currencyCode == null || first?.currencySymbol == null) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
let total = 0;
|
|
55
|
+
for (const line of lines) {
|
|
56
|
+
total += line.amount?.amount ?? 0;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
amount: total,
|
|
60
|
+
currencyCode: first.currencyCode,
|
|
61
|
+
currencySymbol: first.currencySymbol,
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Splits `lines` by `postingType` into a single debit total and a
|
|
66
|
+
* single credit total — the shape the new flat-table totals row
|
|
67
|
+
* (`JournalEntryTotalsRow` in `web-components`, Figma frame
|
|
68
|
+
* `5177:12750`) needs.
|
|
69
|
+
*
|
|
70
|
+
* The legacy `TransactionLinesJournalEntry` grouped lines into six
|
|
71
|
+
* `JournalEntryItemType` buckets (`debit` / `uncategorizedDebit` /
|
|
72
|
+
* `miscategorizedDebit` plus the credit triplet) for *visual banner
|
|
73
|
+
* headers* in the line list; its bottom totals row was already two
|
|
74
|
+
* combined numbers. The new flat table folds those banners away by
|
|
75
|
+
* design, so we don't surface a per-status breakdown here. If the
|
|
76
|
+
* design ever asks for sub-totals per status, that's a richer shape
|
|
77
|
+
* (`{debit: {total, uncategorized, miscategorized}, credit: {…}}`)
|
|
78
|
+
* and a follow-up — not a v1 of this helper.
|
|
79
|
+
*
|
|
80
|
+
* As a side effect, the legacy `calculateCombinedTotalAmount`
|
|
81
|
+
* `??`/`+` precedence bug (`totalAmount?.amount ?? 0 + (uncat ?? 0) +
|
|
82
|
+
* (miscat ?? 0)` parses as `totalAmount?.amount ?? (0 + uncat +
|
|
83
|
+
* miscat)`, silently dropping the uncat/miscat pieces whenever
|
|
84
|
+
* `totalAmount` was non-nullish) is gone by construction here: there
|
|
85
|
+
* is no separate combine step, just one pass over the lines.
|
|
86
|
+
*/
|
|
87
|
+
export const journalEntryTotalsByPostingSide = (lines) => {
|
|
88
|
+
const debitLines = [];
|
|
89
|
+
const creditLines = [];
|
|
90
|
+
for (const line of lines) {
|
|
91
|
+
if (line.postingType === 'debit') {
|
|
92
|
+
debitLines.push(line);
|
|
93
|
+
}
|
|
94
|
+
else if (line.postingType === 'credit') {
|
|
95
|
+
creditLines.push(line);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
debitTotal: sumJournalEntryAmounts(debitLines),
|
|
100
|
+
creditTotal: sumJournalEntryAmounts(creditLines),
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
// Filter
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
/**
|
|
107
|
+
* Drops `linked_transaction_line` entries — equivalent to legacy
|
|
108
|
+
* `filterOutLinkedTransactionLine` in `transactionDetail.helpers.ts`.
|
|
109
|
+
*
|
|
110
|
+
* The literal lives in `LINE_TYPE_LINKED` next to `LineType` so the
|
|
111
|
+
* filter discriminant stays bound to the union at the type level.
|
|
112
|
+
* Other sites still inlining the literal (see `transactionDetailLocalDataHelper`,
|
|
113
|
+
* `transactionDetailState`, `transactionCategorizationLocalDataHelper`,
|
|
114
|
+
* `transactionLinePayload`, and the mocks) are a known follow-up.
|
|
115
|
+
*/
|
|
116
|
+
export const filterJournalEntryLinesExcludingLinked = (lines) => lines?.filter((line) => line.type !== LINE_TYPE_LINKED) ?? [];
|
|
117
|
+
const sortOrderToLodash = (sortOrder) => sortOrder === 'descending' ? 'desc' : 'asc';
|
|
118
|
+
/**
|
|
119
|
+
* Stable, accessor-driven sort over arbitrary line shapes. Lines that
|
|
120
|
+
* resolve to the same key value preserve their original relative order
|
|
121
|
+
* thanks to lodash's stable `orderBy`.
|
|
122
|
+
*
|
|
123
|
+
* Strings are lower-cased before comparison so the order is predictable
|
|
124
|
+
* across mixed-case data. Numbers (debit/credit) compare directly.
|
|
125
|
+
*/
|
|
126
|
+
export const sortJournalEntryLines = (lines, config, accessors) => {
|
|
127
|
+
const accessor = (line) => {
|
|
128
|
+
switch (config.sortKey) {
|
|
129
|
+
case 'description':
|
|
130
|
+
return accessors.description(line).toLowerCase();
|
|
131
|
+
case 'name':
|
|
132
|
+
return accessors.name(line).toLowerCase();
|
|
133
|
+
case 'category':
|
|
134
|
+
return accessors.category(line).toLowerCase();
|
|
135
|
+
case 'class':
|
|
136
|
+
return accessors.class(line).toLowerCase();
|
|
137
|
+
case 'debit':
|
|
138
|
+
return accessors.debit(line);
|
|
139
|
+
case 'credit':
|
|
140
|
+
return accessors.credit(line);
|
|
141
|
+
default:
|
|
142
|
+
// stringToUnion narrows permissively (returns `s as StringUnion` for
|
|
143
|
+
// non-member input, see commonStateTypes/stringToUnion.ts), so this
|
|
144
|
+
// branch is reachable at runtime — keep it as a description fallback.
|
|
145
|
+
return accessors.description(line).toLowerCase();
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
return orderBy([...lines], [accessor], [sortOrderToLodash(config.sortOrder)]);
|
|
149
|
+
};
|
package/lib/index.d.ts
CHANGED
|
@@ -288,7 +288,6 @@ import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationVi
|
|
|
288
288
|
import { JEScheduledTransactionWithFailedEntries } from './view/expenseAutomationView/selectors/jeSchedulesViewSelector';
|
|
289
289
|
import { getExpenseAutomationReconciliationView, isAccountReconReport } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
|
|
290
290
|
import { getExpenseAutomationTransactionView, getLastTransferEntryReplacement } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
|
|
291
|
-
import { TRANSACTION_FILTER_CATEGORIES, TransactionFilterAmountMatchingOperator, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilterCategoryField, TransactionFilterEntityType, TransactionFilters, applyTransactionFilters } from './view/expenseAutomationView/transactionFilterHelpers';
|
|
292
291
|
import { CompletedSubTab, DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab } from './view/expenseAutomationView/types/completedSubTab';
|
|
293
292
|
import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSortKey, FluxAnalysisViewUIState, FluxBalancesByMonth } from './view/expenseAutomationView/types/fluxAnalysisViewState';
|
|
294
293
|
import { AccountSettingsLocalData, JEScheduleMainTab as ExpenseAutomationJEScheduleMainTab, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEScheduleLocalData, toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey } from './view/expenseAutomationView/types/jeSchedulesViewState';
|
|
@@ -510,6 +509,7 @@ import { MileageDenomination, MileageDetailsLocalData, RemiSetupViewLocalData, R
|
|
|
510
509
|
import { approveOrRejectRemisBulkAction, autoReviewPendingApprovalRemis, cancelOrDeleteRemisBulkAction, clearAllRemisFromBulkActionList, clearRemiBulkActionView, incrementRemiBulkActionProcessedCount, removeRemiFromBulkActionList, reviewDraftRemisBulkAction, submitDraftRemisBulkAction, updateRemisBulkActionList } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewReducer';
|
|
511
510
|
import { RemisBulkReviewView, getRemisBulkOperationProgress, getRemisBulkReviewView } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewSelector';
|
|
512
511
|
import { BillPayFilterCategoryDropdownOption, CategoryCombinationOperator, FilterCategoryType, MatchingOperatorDropdownOption, ReimbursementFilterCategoryDropdownOption, SpendManagementFilterCategoryDropdownOption, SpendManagementFilterEntityType, SpendManagementFiltersType, TaskFilterCategoryDropdownOption, hideCreatedByFilter } from './view/spendManagement/spendManagementFilterHelpers';
|
|
512
|
+
import { TRANSACTION_FILTER_CATEGORIES, TransactionFilterAmountMatchingOperator, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilterCategoryField, TransactionFilterEntityType, TransactionFilters, applyTransactionFilters } from './view/expenseAutomationView/transactionFilterHelpers';
|
|
513
513
|
import { acceptTreasuryTerms, clearTreasurySetupView, fetchPortfolioAllocation, fetchTreasuryFunds, fetchTreasurySetupView, updateFundAllocationLocalData, updatePortfolioAllocation, updateTreasuryVideoViewed } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer';
|
|
514
514
|
import { TreasuryBusinessVerificationDetails, TreasurySetupView, getTreasuryBusinessVerificationDetails, getTreasurySetupViewDetails } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewSelector';
|
|
515
515
|
import { FundAllocationOption, FundComposition, FundData, getTreasuryFundsMaximumYield } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewState';
|
|
@@ -551,8 +551,8 @@ import { TagViewState } from './view/tagView/tagViewState';
|
|
|
551
551
|
import { CannedResponse, CannedResponsesViewState } from './view/taskManager/cannedResponsesView/cannedResponses';
|
|
552
552
|
import { deleteCannedResponse, fetchCannedResponses, saveCannedResponse } from './view/taskManager/cannedResponsesView/cannedResponsesReducer';
|
|
553
553
|
import { getCannedResponsesView } from './view/taskManager/cannedResponsesView/cannedResponsesSelector';
|
|
554
|
-
import {
|
|
555
|
-
import { archiveTask,
|
|
554
|
+
import { EditTaskLocalData, initialTaskDetail, initialTaskDetailLocalData } from './view/taskManager/taskDetailView/taskDetail';
|
|
555
|
+
import { archiveTask, deleteTask, discardTaskUpdatesInLocalStore, fetchTaskDetailPage, saveTaskDetail, saveTaskUpdatesToLocalStore, snoozeTask, unsnoozeTask } from './view/taskManager/taskDetailView/taskDetailReducer';
|
|
556
556
|
import { TaskDetailSelectorView, allTaskPriority, allTaskStatus, getTaskDetail } from './view/taskManager/taskDetailView/taskDetailSelector';
|
|
557
557
|
import { createTaskFromTaskGroupTemplate } from './view/taskManager/taskGroupTemplateView/taskGroupTemplateViewReducer';
|
|
558
558
|
import { createNewTaskGroup, deleteTaskGroup, fetchAllTaskGroups, updateTaskGroupName } from './view/taskManager/taskGroupView/taskGroupViewReducer';
|
|
@@ -571,6 +571,7 @@ import { TopExAccount, TopExReport, TopExTimePeriodWithMetaData, TopExpenses } f
|
|
|
571
571
|
import { TOP_EX_TIME_PERIODS, TopExTimePeriod, TopExpense } from './view/topEx/topExState';
|
|
572
572
|
import { AccountingProviderAttachmentSelector, getAccountingProviderAttachment } from './view/transactionDetail/getAccountingProviderAttachmentSelector';
|
|
573
573
|
import { getChangedLineItemCountFromLocalData, isAccountUncategorized } from './view/transactionDetail/transactionDetailLocalDataHelper';
|
|
574
|
+
import { JOURNAL_ENTRY_SORT_KEYS, JournalEntryRowSortConfig, JournalEntrySortAccessors, JournalEntrySortKey, filterJournalEntryLinesExcludingLinked, journalEntryDefaultSortConfig, journalEntryTotalsByPostingSide, sortJournalEntryLines, sumJournalEntryAmounts, toJournalEntrySortKey } from './view/transactionDetail/journalEntryLinesViewModel';
|
|
574
575
|
import { clearTransactionDetailSaveStatus, deleteTransactionAttachment, downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentFailure, downloadAccountingProviderAttachmentSuccess, fetchTransactionDetail, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, resetAllLineItemsToVendor, resetLineItemsCategoryClassInLocalData, resetSelectedCustomer, resetVendor, saveTransactionDetail, saveTransactionDetailLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setAllLineItemsToCategoryClassInLocalData, setIsVendorUpdateAllChecked, updateLatestSelectedEntity, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateSelectedCustomer, updateSelectedVendor, updateTransactionDetail, updateVendorBulkRecommendationsFetchStatus, updateVendorToAllLineItems, uploadMissingAttachmentSuccess } from './view/transactionDetail/transactionDetailReducer';
|
|
575
576
|
import { TransactionDetailReport, VendorDetailsView, getInitialUpdatablePeriodsForTransactionRecommendations, getTransactionDetail, getTransactionDetailForTransaction } from './view/transactionDetail/transactionDetailSelector';
|
|
576
577
|
import { TransactionUpdates, getThirdPartyIdFromTransactionId } from './view/transactionDetail/transactionDetailState';
|
|
@@ -830,6 +831,8 @@ export { fetchCompanyOnboardingView, fetchQBOConnectionPool, updateQBOConnection
|
|
|
830
831
|
export { TransactionListByCategoryType, getTransactionsListByCategoryType, getTransactionListUIStateByCategoryType, TransactionCategoryType, };
|
|
831
832
|
export { TransactionDetailLocalData, TransactionDetailLineItemData, TransactionVendorUpdates, };
|
|
832
833
|
export { getChangedLineItemCountFromLocalData, isAccountUncategorized };
|
|
834
|
+
export { JOURNAL_ENTRY_SORT_KEYS, filterJournalEntryLinesExcludingLinked, journalEntryDefaultSortConfig, journalEntryTotalsByPostingSide, sortJournalEntryLines, sumJournalEntryAmounts, toJournalEntrySortKey, };
|
|
835
|
+
export type { JournalEntryRowSortConfig, JournalEntrySortAccessors, JournalEntrySortKey, };
|
|
833
836
|
export { openSnackbar, closeSnackbar, getSnackbar, SnackbarMessageType, SnackbarMessageSections, SnackbarMessageSectionTexts, SnackbarMessageConfig, };
|
|
834
837
|
export { getSpendManagementEffectiveListPeriod, getSelectedCompanyOfficer, showBillPayPromoPage, showReimbursementPromoPage, getActualPaymentDate, isVerifiedStatusCode, isVerifiedPaymentAccountProviderStatusCode, isBulkProcessing, getBillListUniqueType, getRemiListUniqueType, BulkOperationType, BulkOperationFinishedType, getBulkOperationSuffix, ZeniAccountsPromoConfig, toAccountsPromoConfig, SameDayAchDisablementConfig, toSameDayAchDisablementConfig, isPaymentMethodOutsideZeni, isAwaitingMarkAsPaid, checkIfLowBalance, };
|
|
835
838
|
export { FilterCategoryValueType, canSendMonthEndEmailReport, shouldEnableCalendarPickerForLastReportSent, };
|
|
@@ -878,7 +881,7 @@ export { fetchGlobalMerchantRecommendation, createGlobalMerchant, updateCreateGl
|
|
|
878
881
|
export { approveVendorGlobalReview, rejectVendorGlobalReview, fetchVendorGlobalReviewView, updateSelectedGlobalMerchant, updateVendorGlobalReviewViewUIState, getVendorGlobalReviewView, getTenantMerchantByMerchantId, toVendorGlobalReviewColumnSortKeyType, VendorGlobalReview, VendorGlobalReviewViewUIState, VendorGlobalReviewViewColumnSortKey, VendorGlobalReviewViewSelectorView, VendorGlobalReviewViewState, VendorGlobalReviewViewLocalData, updateVendorGlobalReviewViewLocalData, GlobalReviewPageCurrentSelectionByColumn, GlobalRecommendationFetchSource, };
|
|
879
882
|
export { fetchArAging, updateArAgingUIState, fetchArAgingDetail, updateArAgingDetailUIState, ArAgingReport, ArAgingDetail, NestedAgingBalancesByCustomer, getArAgingReport, getArAgingDetailForCustomer, updateArAgingNodeCollapseState, };
|
|
880
883
|
export { toRecurringBillFrequency, toRecurringBillFrequencyStrict, RecurringBillFrequency, RecurringBillDetail, RecurringBillConfig, RecurringBillStatus, RecurringBillPaymentStatus, };
|
|
881
|
-
export { Task, TaskListSelectorView, TaskWithUserDetails, TaskListViewSortKey, TaskListUIState, TaskDetailSelectorView, EditTaskLocalData, TaskStatusCodeType, PriorityCodeType, getTaskGroupById, TaskStatus, TaskPriority, TaskCodeType, getAllTasks, fetchTaskListPage, getTaskDetail, fetchTaskDetailPage, saveTaskUpdatesToLocalStore, saveTaskDetail,
|
|
884
|
+
export { Task, TaskListSelectorView, TaskWithUserDetails, TaskListViewSortKey, TaskListUIState, TaskDetailSelectorView, EditTaskLocalData, TaskStatusCodeType, PriorityCodeType, getTaskGroupById, TaskStatus, TaskPriority, TaskCodeType, getAllTasks, fetchTaskListPage, getTaskDetail, fetchTaskDetailPage, saveTaskUpdatesToLocalStore, saveTaskDetail, archiveTask, CannedResponse, CannedResponsesViewState, fetchCannedResponses, saveCannedResponse, deleteCannedResponse, getCannedResponsesView, updateTaskListSearchText, updateTaskListUIState, allTaskStatus, allTaskPriority, TaskListFilters, updateTaskFilters, TASK_LIST_FILTER_CATEGORIES, TASK_LIST_GROUP_BY_CATEGORIES, TaskListFilterCategoryField, deleteTask, discardTaskUpdatesInLocalStore, TaskFilterCategory, TaskType, TaskGroupWithTasksList, TaskListLocalData, bulkUpdateTaskList, createNewTaskGroup, initiateTaskListLocalData, deleteTaskGroup, updateTaskListLocalData, dragNDropTasks, updateTaskGroupName, TaskGroupState, TaskGroupKey, toTaskListGroupByKeyType, toTaskListGroupByKeyTypeStrict, getTaskUpdates, fetchAllTaskGroups, initialTaskDetail, getDueDateValueFromDueDateGroupId, toPriorityCodeType, toTaskStatusCodeType, DueDateGroupKey, toDueDateGroupKeyType, updateTaskFromListView, updateTaskListTab, removeTaskFromList, snoozeTask, unsnoozeTask, convertHHMMStrToMinutes, initialTaskDetailLocalData, TaskListTab, ALL_TASK_LIST_TABS, };
|
|
882
885
|
export { Tag, TagState, TagViewState, getAllTags, TagViewSelectorView, fetchTagList, createTag, deleteTag, };
|
|
883
886
|
export { CardPayment, CardPaymentViewState, SetupIntentData, CardPaymentSelectorView, getAllCardsAndBankPaymentMethods, createCardSetupIntent, confirmCardSetupIntent, addCardPaymentSource, fetchPaymentSources, resetCardPaymentErrorStatuses, clearCardPaymentView, AddCardPaymentSourceType, };
|
|
884
887
|
export { getAuditReportGroupViewSelectorView, getAuditRuleGroupViewSelectorView, getUserFromAllUsers, AuditReportGroupSelectorView, AuditReportGroupViewSelectorView, AuditRuleGroupViewSelectorView, fetchAuditRuleGroupView, fetchAuditReportGroupView, saveReasonForAuditRule, AuditRuleGroup, AuditRuleGroupReport, AuditReportRule, AuditRuleEntityType, AuditRuleEntityIdType, AuditRuleBypassReason, clearAuditReportGroupViewByCompanyId, };
|