@zeniai/web-components 4.4.1-beta0ND → 4.4.1-beta1MM
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/dist/{SessionTimeoutPopup-DEw_zv_G.js → SessionTimeoutPopup-CWABavDc.js} +1448 -1318
- package/dist/SessionTimeoutPopup-CWABavDc.js.map +4 -0
- package/dist/{SessionTimeoutPopup-BC3xgHC7.cjs → SessionTimeoutPopup-CiTsHrop.cjs} +943 -804
- package/dist/SessionTimeoutPopup-CiTsHrop.cjs.map +4 -0
- package/dist/appLocale.d.ts +68 -2
- package/dist/cockpit.cjs.js +151 -151
- package/dist/cockpit.cjs.js.map +1 -1
- package/dist/cockpit.esm.js +2096 -2096
- package/dist/cockpit.esm.js.map +1 -1
- package/dist/components/common/Footer.d.ts +1 -0
- package/dist/components/expenseAutomation/ExpenseAutomationPage.d.ts +1 -7
- package/dist/components/expenseAutomation/components/navbarHeaderData.d.ts +3 -4
- package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingKpiStrip.d.ts +2 -3
- package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingList.d.ts +6 -3
- package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingListRow.d.ts +5 -2
- package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingMatchDetailPage.d.ts +18 -4
- package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingPage.d.ts +2 -3
- package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingStatusFilterBar.d.ts +9 -0
- package/dist/components/expenseAutomation/sections/actualMatching/actualMatchingHelpers.d.ts +12 -23
- package/dist/components/expenseAutomation/sections/actualMatching/actualMatchingListConfig.d.ts +1 -1
- package/dist/components/expenseAutomation/sections/actualMatching/actualMatchingMatchDetailHelpers.d.ts +6 -1
- package/dist/components/expenseAutomation/sections/actualMatching/actualMatchingTypes.d.ts +15 -22
- package/dist/components/expenseAutomation/sections/actualMatching/matchNewPreviewHelpers.d.ts +9 -0
- package/dist/components/expenseAutomation/sections/actualMatching/matchNewPreviewJeColumns.d.ts +9 -0
- package/dist/components/expenseAutomation/sections/jeSchedules/JESchedulePage.d.ts +1 -1
- package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualFeedbackDialog.d.ts +3 -2
- package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleNewEntryButton.d.ts +7 -1
- package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleGroupList.d.ts +2 -2
- package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleListItems.d.ts +14 -36
- package/dist/context/featureProvider/DynamicConfigNameConstants.d.ts +1 -3
- package/dist/{index-BEgjuI-O.cjs → index-2nrsgghO.cjs} +2 -2
- package/dist/{index-BEgjuI-O.cjs.map → index-2nrsgghO.cjs.map} +1 -1
- package/dist/{index-CMHWaaKm.js → index-DhfpoX-6.js} +2 -2
- package/dist/{index-CMHWaaKm.js.map → index-DhfpoX-6.js.map} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.esm.js +1 -1
- package/dist/strings/strings.d.ts +68 -2
- package/package.json +64 -1
- package/dist/SessionTimeoutPopup-BC3xgHC7.cjs.map +0 -4
- package/dist/SessionTimeoutPopup-DEw_zv_G.js.map +0 -4
- package/dist/context/featureProvider/isActualMatchingEnabledInAgentJeConfig.d.ts +0 -18
- package/dist/context/featureProvider/isActualMatchingEnabledInAgentJeConfig.test.d.ts +0 -1
- package/dist/context/featureProvider/useActualMatchingEnabled.d.ts +0 -6
|
@@ -59,14 +59,8 @@ export interface ExpenseAutomationPageProps extends MonthEndReportPageProps, Act
|
|
|
59
59
|
initialMissingReceiptsTab?: MissingReceiptsTab;
|
|
60
60
|
/** The base transaction that draft names, resolved by the host. */
|
|
61
61
|
initialSelectedBaseTransaction?: ScheduleTransaction;
|
|
62
|
-
/** Cron-2's live gate for this company, per Statsig. Off hides one-time accrual creation. */
|
|
62
|
+
/** Cron-2's live gate for this company, per Statsig. Off hides one-time accrual creation and Actual Matching. */
|
|
63
63
|
isAccrualEnabled?: boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Actual Matching JE subtab + match-detail bounce. Independent of
|
|
66
|
-
* `isAccrualEnabled` so one-time accrual create can stay live while AM
|
|
67
|
-
* stays hidden. Host reads `agent_je_config` (`ACTUAL_MATCHING_ENABLED`).
|
|
68
|
-
*/
|
|
69
|
-
isActualMatchingEnabled?: boolean;
|
|
70
64
|
isAiCfoAccessEnabled?: boolean;
|
|
71
65
|
/**
|
|
72
66
|
* Statsig `is_create_transfer_entry_from_expense_enabled`. When false the TC list
|
|
@@ -42,9 +42,8 @@ missingReceiptsOptions?: {
|
|
|
42
42
|
navTitle?: string;
|
|
43
43
|
}, receiptsEmail?: string,
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* hides the tab — code stays; this is the master-release UI gate.
|
|
45
|
+
* Cron-2 live gate (`is_accrual_enabled`). Off hides the Actual Matching JE
|
|
46
|
+
* subtab — there are no one-time accruals to match.
|
|
48
47
|
*/
|
|
49
|
-
|
|
48
|
+
isAccrualEnabled?: boolean) => ExpenseAutomationNavbarHeaderData;
|
|
50
49
|
export {};
|
package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingKpiStrip.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { Amount
|
|
1
|
+
import { Amount } from '@zeniai/client-epic-state';
|
|
2
2
|
import { ActualMatchingKpiSummary } from './actualMatchingTypes';
|
|
3
3
|
export interface ActualMatchingKpiStripProps {
|
|
4
4
|
displayCurrency: Amount;
|
|
5
5
|
kpiSummary: ActualMatchingKpiSummary;
|
|
6
|
-
selectedPeriod: MonthYearPeriod;
|
|
7
6
|
}
|
|
8
|
-
declare function ActualMatchingKpiStrip({ displayCurrency, kpiSummary,
|
|
7
|
+
declare function ActualMatchingKpiStrip({ displayCurrency, kpiSummary, }: Readonly<ActualMatchingKpiStripProps>): import("react/jsx-runtime").JSX.Element;
|
|
9
8
|
export default ActualMatchingKpiStrip;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { SortOrder } from '@zeniai/client-epic-state';
|
|
1
|
+
import { FetchStateAndError, SortOrder } from '@zeniai/client-epic-state';
|
|
2
2
|
import { ActualMatchingRow, ActualMatchingSortKey, ActualMatchingViewUIState } from './actualMatchingTypes';
|
|
3
3
|
export interface ActualMatchingListProps {
|
|
4
4
|
pendingReview: ActualMatchingRow[];
|
|
5
5
|
reversed: ActualMatchingRow[];
|
|
6
|
+
ignoreStatusByMatchId?: Record<string, FetchStateAndError>;
|
|
6
7
|
sortKey?: ActualMatchingSortKey;
|
|
7
8
|
sortOrder?: SortOrder;
|
|
9
|
+
undoStatusByMatchId?: Record<string, FetchStateAndError>;
|
|
8
10
|
onOpenMatch: (matchId: string) => void;
|
|
9
|
-
|
|
11
|
+
onIgnoreMatchSuggestion?: (matchId: string) => void;
|
|
12
|
+
onUndoReversal?: (matchId: string, accrualIds: string[]) => void;
|
|
10
13
|
onUpdateActualMatchingUIState?: (uiState: Partial<ActualMatchingViewUIState>) => void;
|
|
11
14
|
}
|
|
12
|
-
declare function ActualMatchingList({ pendingReview, reversed, onOpenMatch,
|
|
15
|
+
declare function ActualMatchingList({ ignoreStatusByMatchId, pendingReview, reversed, onIgnoreMatchSuggestion, onOpenMatch, onUndoReversal, onUpdateActualMatchingUIState, sortKey, sortOrder, undoStatusByMatchId, }: Readonly<ActualMatchingListProps>): import("react/jsx-runtime").JSX.Element;
|
|
13
16
|
export default ActualMatchingList;
|
package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingListRow.d.ts
CHANGED
|
@@ -4,8 +4,11 @@ export interface ActualMatchingListRowProps {
|
|
|
4
4
|
columns: ActualMatchingColumnKey[];
|
|
5
5
|
gridTemplateColumns: string;
|
|
6
6
|
row: ActualMatchingRow;
|
|
7
|
+
isIgnoring?: boolean;
|
|
8
|
+
isUndoing?: boolean;
|
|
7
9
|
onOpenMatch: (matchId: string) => void;
|
|
8
|
-
|
|
10
|
+
onIgnoreMatchSuggestion?: (matchId: string) => void;
|
|
11
|
+
onUndoReversal?: (matchId: string, accrualIds: string[]) => void;
|
|
9
12
|
}
|
|
10
|
-
declare function ActualMatchingListRow({ columns, gridTemplateColumns, row, onOpenMatch,
|
|
13
|
+
declare function ActualMatchingListRow({ columns, gridTemplateColumns, isIgnoring, isUndoing, row, onIgnoreMatchSuggestion, onOpenMatch, onUndoReversal, }: Readonly<ActualMatchingListRowProps>): import("react/jsx-runtime").JSX.Element;
|
|
11
14
|
export default ActualMatchingListRow;
|
package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingMatchDetailPage.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { FetchState, MatchAndReverseResult, UndoReversalResult } from '@zeniai/client-epic-state';
|
|
2
|
-
import { ActualMatchingMatch } from './actualMatchingTypes';
|
|
1
|
+
import { FetchState, MatchAndReverseAccrualsParams, MatchAndReverseResult, UndoReversalResult } from '@zeniai/client-epic-state';
|
|
2
|
+
import { ActualMatchingIgnoreReasonType, ActualMatchingMatch } from './actualMatchingTypes';
|
|
3
3
|
export interface ActualMatchingMatchDetailPageProps {
|
|
4
4
|
detailFetchState: FetchState;
|
|
5
5
|
refreshStatus: FetchState;
|
|
6
|
+
isApproveInFlight?: boolean;
|
|
7
|
+
isIgnoreInFlight?: boolean;
|
|
6
8
|
isRenderedInPanel?: boolean;
|
|
7
9
|
isUndoInFlight?: boolean;
|
|
8
10
|
lastMatchResults?: MatchAndReverseResult[];
|
|
@@ -10,12 +12,24 @@ export interface ActualMatchingMatchDetailPageProps {
|
|
|
10
12
|
match?: ActualMatchingMatch;
|
|
11
13
|
onNavigateBack: () => void;
|
|
12
14
|
onRefresh: () => void;
|
|
13
|
-
|
|
15
|
+
onApproveAndReverse?: (params: MatchAndReverseAccrualsParams) => void;
|
|
16
|
+
onIgnoreMatchSuggestion?: (reason: ActualMatchingIgnoreReasonType, note?: string) => void;
|
|
14
17
|
onOpenBill?: (txn: {
|
|
15
18
|
id: string;
|
|
16
19
|
type: string;
|
|
17
20
|
}) => void;
|
|
18
21
|
onUndoReversal?: (accrualIds: string[]) => void;
|
|
19
22
|
}
|
|
20
|
-
declare function
|
|
23
|
+
export declare function ActualMatchingOpenBillActionButton({ match, transaction, onOpenBill, }: Readonly<{
|
|
24
|
+
match?: ActualMatchingMatch;
|
|
25
|
+
transaction?: {
|
|
26
|
+
id: string;
|
|
27
|
+
type: string;
|
|
28
|
+
};
|
|
29
|
+
onOpenBill?: (txn: {
|
|
30
|
+
id: string;
|
|
31
|
+
type: string;
|
|
32
|
+
}) => void;
|
|
33
|
+
}>): import("react/jsx-runtime").JSX.Element | null;
|
|
34
|
+
declare function ActualMatchingMatchDetailPage({ detailFetchState, isRenderedInPanel, isApproveInFlight, isIgnoreInFlight, isUndoInFlight, match, onNavigateBack, onRefresh, onOpenBill, onApproveAndReverse, onIgnoreMatchSuggestion, onUndoReversal, lastMatchResults, lastUndoResults, refreshStatus, }: Readonly<ActualMatchingMatchDetailPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
21
35
|
export default ActualMatchingMatchDetailPage;
|
|
@@ -14,9 +14,8 @@ export interface ActualMatchingPageProps extends ActualMatchingActionProps {
|
|
|
14
14
|
isMatchPanelOpen?: boolean;
|
|
15
15
|
matchPanelContent?: ReactNode;
|
|
16
16
|
}
|
|
17
|
-
export declare function ActualMatchingPageKpis({ actualMatching,
|
|
17
|
+
export declare function ActualMatchingPageKpis({ actualMatching, }: Readonly<{
|
|
18
18
|
actualMatching: ExpenseAutomationActualMatchingViewSelector;
|
|
19
|
-
selectedPeriod: MonthYearPeriod;
|
|
20
19
|
}>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
declare function ActualMatchingPage({ actualMatching, isMatchPanelOpen, matchPanelContent, onClearMatchNewModal, onCloseMatchNewModal, onMatchAndReverse,
|
|
20
|
+
declare function ActualMatchingPage({ actualMatching, isMatchPanelOpen, matchPanelContent, onClearMatchNewModal, onCloseMatchNewModal, onIgnoreMatchSuggestion, onMatchAndReverse, onOpenBill, onOpenMatch, onSearchMatchAccruals, onSearchMatchTransactions, onUndoReversal, onUpdateActualMatchingUIState, }: Readonly<ActualMatchingPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
22
21
|
export default ActualMatchingPage;
|
package/dist/components/expenseAutomation/sections/actualMatching/ActualMatchingStatusFilterBar.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ActualMatchingStatusFilter } from './actualMatchingTypes';
|
|
2
|
+
export interface ActualMatchingStatusFilterBarProps {
|
|
3
|
+
pendingReviewCount: number;
|
|
4
|
+
reversedCount: number;
|
|
5
|
+
selectedFilter: ActualMatchingStatusFilter;
|
|
6
|
+
onFilterChange: (filter: ActualMatchingStatusFilter) => void;
|
|
7
|
+
}
|
|
8
|
+
declare function ActualMatchingStatusFilterBar({ pendingReviewCount, reversedCount, selectedFilter, onFilterChange, }: Readonly<ActualMatchingStatusFilterBarProps>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default ActualMatchingStatusFilterBar;
|
package/dist/components/expenseAutomation/sections/actualMatching/actualMatchingHelpers.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Amount, ExpenseAutomationViewSelector,
|
|
1
|
+
import { Amount, ExpenseAutomationViewSelector, SortOrder } from '@zeniai/client-epic-state';
|
|
2
2
|
import { StyledCapsuleThemeType } from '../../../common/StyledCapsule';
|
|
3
3
|
import { ActualMatchingColumnKey } from './actualMatchingListConfig';
|
|
4
|
-
import { ActualMatchingGroupedAccrual, ActualMatchingKpiSummary, ActualMatchingMatch, ActualMatchingRow, ActualMatchingSortKey, ActualMatchingTransactionSearchResult, ExpenseAutomationActualMatchingViewSelector } from './actualMatchingTypes';
|
|
4
|
+
import { ActualMatchingGroupedAccrual, ActualMatchingKpiSummary, ActualMatchingMatch, ActualMatchingRow, ActualMatchingSortKey, ActualMatchingStatusFilter, ActualMatchingTransactionSearchResult, ActualMatchingViewUIState, ExpenseAutomationActualMatchingViewSelector, MatchAndReverseAccrualsParams } from './actualMatchingTypes';
|
|
5
5
|
export declare const EMPTY_ACTUAL_MATCHING_KPI_SUMMARY: ActualMatchingKpiSummary;
|
|
6
6
|
export declare const EMPTY_ACTUAL_MATCHING_VIEW: ExpenseAutomationActualMatchingViewSelector;
|
|
7
7
|
export declare function getActualMatchingFromSelector(selector: ExpenseAutomationViewSelector): ExpenseAutomationActualMatchingViewSelector;
|
|
@@ -36,11 +36,8 @@ export declare function isSameMatchVendor(transaction: {
|
|
|
36
36
|
}): boolean;
|
|
37
37
|
export declare function getAccruedDisplayAmount(row: ActualMatchingRow): Amount;
|
|
38
38
|
export declare function getActualDisplayAmount(row: ActualMatchingRow): Amount | undefined;
|
|
39
|
-
export declare function sumRowDisplayAmount(rows: ActualMatchingRow[]): Amount;
|
|
40
39
|
export declare function getActualMatchingDisplayCurrency(rows: ActualMatchingRow[]): Amount;
|
|
41
40
|
export declare function formatKpiAmount(amount: number, currency: Amount): string;
|
|
42
|
-
export declare function formatActualMatchingKpiMonth(period: MonthYearPeriod): string;
|
|
43
|
-
export declare function formatGroupAmountSubtitle(template: string, amount: Amount): string;
|
|
44
41
|
export declare function isAiCreatedAccrual(row: ActualMatchingRow): boolean;
|
|
45
42
|
export declare function isHumanReversedRow(row: ActualMatchingRow): boolean;
|
|
46
43
|
export declare function isAiReversedBy(row: ActualMatchingRow): boolean;
|
|
@@ -49,28 +46,20 @@ export declare function getColumnKeyForActualMatchingSortKey(sortKey: ActualMatc
|
|
|
49
46
|
export declare function getActualMatchingColumnSortValue(row: ActualMatchingRow, columnKey: ActualMatchingColumnKey): string | number | null;
|
|
50
47
|
export declare function sortActualMatchingRowsByColumn(rows: ActualMatchingRow[], columnKey: ActualMatchingColumnKey, sortOrder: SortOrder): ActualMatchingRow[];
|
|
51
48
|
export declare function getUndoReversalAccrualIds(row: Pick<ActualMatchingRow, "accrualId" | "groupedMembers">): string[];
|
|
52
|
-
export declare function
|
|
49
|
+
export declare function getActualMatchingStatusFilter(uiState: ActualMatchingViewUIState): ActualMatchingStatusFilter;
|
|
50
|
+
export declare function getMatchedBillTransaction(match: Pick<ActualMatchingMatch, "members" | "transactionType"> & {
|
|
51
|
+
leftovers?: ActualMatchingMatch["leftovers"];
|
|
52
|
+
transactionIntegrationId?: string;
|
|
53
|
+
}): {
|
|
53
54
|
id: string;
|
|
54
55
|
type: string;
|
|
55
56
|
} | null;
|
|
56
57
|
export declare function getUndoReversalAccrualIdsFromMatch(match: Pick<ActualMatchingMatch, "members">): string[];
|
|
58
|
+
/**
|
|
59
|
+
* Confirm the AI suggestion in place: same match-and-reverse body Match New
|
|
60
|
+
* posts, taken from the pending-review stamp instead of a picker.
|
|
61
|
+
*/
|
|
62
|
+
export declare function getApproveAndReverseParams(match: Pick<ActualMatchingMatch, "members" | "transactionIntegrationId" | "transactionType">): MatchAndReverseAccrualsParams | null;
|
|
57
63
|
export declare function getLeftoverWarningTooltip(row: ActualMatchingRow): string;
|
|
58
64
|
export declare function pruneSelectionToVisibleResults(currentKeys: string[], visibleKeys: ReadonlySet<string>, searchFetchState: string): string[];
|
|
59
65
|
export declare function nextSelectedTransactionLines(currentKeys: string[], clickedKey: string, results: ActualMatchingTransactionSearchResult[]): string[];
|
|
60
|
-
export declare function pickPrefillTransactionLines(results: ActualMatchingTransactionSearchResult[], prefill?: {
|
|
61
|
-
actualAmount?: number;
|
|
62
|
-
consumedLineIds?: string[];
|
|
63
|
-
matchedLineId?: string;
|
|
64
|
-
matchedTransactionId?: string;
|
|
65
|
-
}): string[];
|
|
66
|
-
export declare function pickPrefillTransactionLine(results: ActualMatchingTransactionSearchResult[], prefill?: {
|
|
67
|
-
actualAmount?: number;
|
|
68
|
-
matchedLineId?: string;
|
|
69
|
-
matchedTransactionId?: string;
|
|
70
|
-
}): string | null;
|
|
71
|
-
export declare function shouldPromptSelectMatchLine({ isTxnSearchComplete, lineCount, openedFromMatchId, selectedLineKey, }: {
|
|
72
|
-
isTxnSearchComplete: boolean;
|
|
73
|
-
lineCount: number;
|
|
74
|
-
selectedLineKey: string | null;
|
|
75
|
-
openedFromMatchId?: string;
|
|
76
|
-
}): boolean;
|
package/dist/components/expenseAutomation/sections/actualMatching/actualMatchingListConfig.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ActualMatchingSortKey } from './actualMatchingTypes';
|
|
2
|
-
export type ActualMatchingColumnKey = "received" | "vendor" | "type" | "reversedBy" | "service" | "reverses" | "matchTier" | "accrued" | "actual" | "variance";
|
|
2
|
+
export type ActualMatchingColumnKey = "received" | "vendor" | "type" | "reversedBy" | "service" | "reverses" | "matchTier" | "accrued" | "actual" | "variance" | "action";
|
|
3
3
|
export interface ActualMatchingHeaderItem {
|
|
4
4
|
key: ActualMatchingColumnKey;
|
|
5
5
|
sortable: boolean;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { FetchState, JEOneTimeAccrual } from '@zeniai/client-epic-state';
|
|
2
2
|
import { ActualMatchingMatch, ActualMatchingRowKind } from './actualMatchingTypes';
|
|
3
|
+
export type ActualMatchingMatchMethod = "exact" | "fuzzy" | "manual" | "ai";
|
|
3
4
|
export declare function getMatchServiceMonthsLabel(members: readonly JEOneTimeAccrual[]): string;
|
|
4
|
-
export declare function
|
|
5
|
+
export declare function getMatchMethodKey(match: ActualMatchingMatch): ActualMatchingMatchMethod;
|
|
6
|
+
export declare function getMatchSourceLabel(match: ActualMatchingMatch): string;
|
|
7
|
+
export declare function getMatchMethodLabel(match: ActualMatchingMatch): string;
|
|
8
|
+
export declare function getWhyThisMatchedCopy(match: ActualMatchingMatch): string;
|
|
9
|
+
export declare function getMatchJeSectionTitle(kind: ActualMatchingRowKind): string;
|
|
5
10
|
export declare function getMatchStatusLabel(kind: ActualMatchingRowKind, labels: {
|
|
6
11
|
statusAutoReversed: string;
|
|
7
12
|
statusManuallyReversed: string;
|
|
@@ -1,36 +1,29 @@
|
|
|
1
|
-
import { ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingRow, ActualMatchingRowKind, ExpenseAutomationActualMatchingSortKey as ActualMatchingSortKey, ActualMatchingTransactionSearchResult, ExpenseAutomationActualMatchingViewUIState as ActualMatchingViewUIState,
|
|
2
|
-
export type { ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingRow, ActualMatchingRowKind, ActualMatchingSortKey, ActualMatchingTransactionSearchResult, ActualMatchingViewUIState, ExpenseAutomationActualMatchingViewSelector, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, UndoReversalAccrualsParams, UndoReversalResult, UndoReversalResultStatus, };
|
|
1
|
+
import { ActualMatchingIgnoreReasonType, ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingMatchView, ActualMatchingRow, ActualMatchingRowKind, ExpenseAutomationActualMatchingSortKey as ActualMatchingSortKey, ExpenseAutomationActualMatchingStatusFilter as ActualMatchingStatusFilter, ActualMatchingTransactionSearchResult, ExpenseAutomationActualMatchingViewUIState as ActualMatchingViewUIState, ExpenseAutomationActualMatchingViewSelector, FetchStateAndError, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, UndoReversalAccrualsParams, UndoReversalResult, UndoReversalResultStatus, ALL_ACTUAL_MATCHING_IGNORE_REASONS, parseActualMatchingMatchId, toActualMatchingIgnoreReasonType } from '@zeniai/client-epic-state';
|
|
2
|
+
export type { ActualMatchingIgnoreReasonType, ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingRow, ActualMatchingRowKind, ActualMatchingSortKey, ActualMatchingStatusFilter, ActualMatchingTransactionSearchResult, ActualMatchingViewUIState, ExpenseAutomationActualMatchingViewSelector, FetchStateAndError, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, UndoReversalAccrualsParams, UndoReversalResult, UndoReversalResultStatus, };
|
|
3
|
+
export type ActualMatchingMatch = ActualMatchingMatchView;
|
|
4
|
+
export type ActualMatchingGroupedAccrual = NonNullable<ActualMatchingRow["groupedMembers"]>[number];
|
|
5
|
+
export { ALL_ACTUAL_MATCHING_IGNORE_REASONS, parseActualMatchingMatchId, toActualMatchingIgnoreReasonType, };
|
|
3
6
|
/**
|
|
4
|
-
* WC-only Actual Matching types (page tab,
|
|
5
|
-
* CES
|
|
6
|
-
*
|
|
7
|
+
* WC-only Actual Matching types (page tab, form, handlers).
|
|
8
|
+
* CES-owned row / KPI / modal / ignore types are re-exported from
|
|
9
|
+
* `@zeniai/client-epic-state`.
|
|
7
10
|
*/
|
|
8
11
|
export declare const ACTUAL_MATCHING_PAGE_TAB: "actual_matching";
|
|
9
12
|
export type ActualMatchingPageTab = typeof ACTUAL_MATCHING_PAGE_TAB;
|
|
10
|
-
export type ActualMatchingGroupedAccrual = NonNullable<ActualMatchingRow["groupedMembers"]>[number];
|
|
11
|
-
export interface ActualMatchingMatch {
|
|
12
|
-
accruedAmount: Amount;
|
|
13
|
-
actualAmount: Amount;
|
|
14
|
-
kind: ActualMatchingRowKind;
|
|
15
|
-
matchId: string;
|
|
16
|
-
members: JEOneTimeAccrual[];
|
|
17
|
-
transactionIntegrationId: ID;
|
|
18
|
-
transactionType: string;
|
|
19
|
-
leftovers?: JEOneTimeAccrual[];
|
|
20
|
-
matchShape?: string;
|
|
21
|
-
matchTier?: string;
|
|
22
|
-
transactionDate?: string;
|
|
23
|
-
vendorId?: ID;
|
|
24
|
-
vendorName?: string;
|
|
25
|
-
}
|
|
26
13
|
export interface ActualMatchingActionProps {
|
|
27
14
|
onClearMatchNewModal: () => void;
|
|
28
15
|
onCloseMatchNewModal: () => void;
|
|
16
|
+
onIgnoreMatchSuggestion: (matchId: string, reason: ActualMatchingIgnoreReasonType, note?: string) => void;
|
|
29
17
|
onMatchAndReverse: (params: MatchAndReverseAccrualsParams) => void;
|
|
30
18
|
onOpenMatch: (matchId: string) => void;
|
|
31
|
-
onOpenMatchNewModal: (
|
|
19
|
+
onOpenMatchNewModal: () => void;
|
|
32
20
|
onSearchMatchAccruals: (query: string, pageToken?: string) => void;
|
|
33
21
|
onSearchMatchTransactions: (query: string, pageToken?: string) => void;
|
|
22
|
+
onOpenBill?: (txn: {
|
|
23
|
+
id: string;
|
|
24
|
+
type: string;
|
|
25
|
+
}) => void;
|
|
26
|
+
onUndoReversal?: (matchId: string, accrualIds: string[]) => void;
|
|
34
27
|
onUpdateActualMatchingUIState?: (uiState: Partial<ActualMatchingViewUIState>) => void;
|
|
35
28
|
}
|
|
36
29
|
export declare const MATCH_NEW_FORM = "expenseAutomationMatchNew";
|
package/dist/components/expenseAutomation/sections/actualMatching/matchNewPreviewHelpers.d.ts
CHANGED
|
@@ -4,9 +4,18 @@ export declare function formatServiceMonthLabel(serviceMonth: string): string;
|
|
|
4
4
|
export declare function formatAccrualJeDate(serviceMonth: string, lastDayLabel: string): string;
|
|
5
5
|
export declare function formatJeShortDate(dateValue: string): string;
|
|
6
6
|
export declare function formatReversalJeDate(reversalPostingDate?: ZeniDate): string;
|
|
7
|
+
/** Intended or posted QBO TxnDate of the reversal JE — not the matched bill date. */
|
|
8
|
+
export declare function reversalJeDateFromAccrual(accrual: Pick<JEOneTimeAccrual, "actualReversalPostDate" | "expectedReversalDate" | "reversalPostingDate">): ZeniDate | undefined;
|
|
7
9
|
export declare function sumAccruedAmount(accruals: readonly JEOneTimeAccrual[]): number;
|
|
8
10
|
export declare function variancePercent(transactionAmount: number, accruedAmount: number): number | null;
|
|
9
11
|
export declare function uniqueServiceMonthLabel(accruals: readonly JEOneTimeAccrual[]): string | null;
|
|
12
|
+
export declare function transactionListMeta(transaction: Pick<ActualMatchingTransactionSearchResult, "transactionDate" | "transactionMemo">, dateLabel: string): {
|
|
13
|
+
dateLabel: string;
|
|
14
|
+
memo: string;
|
|
15
|
+
monthLabel: string;
|
|
16
|
+
};
|
|
10
17
|
export declare function transactionMatchLabel(transaction: ActualMatchingTransactionSearchResult, accruals: readonly JEOneTimeAccrual[]): string;
|
|
11
18
|
export declare function creditAccountName(accrual: JEOneTimeAccrual, fallback: string): string;
|
|
12
19
|
export declare function debitAccountName(accrual: JEOneTimeAccrual, fallback: string): string;
|
|
20
|
+
/** Preview-only DocNumber: cron reversal shape without the random NN suffix. */
|
|
21
|
+
export declare function reversalJeGroupTitle(accrual: Pick<JEOneTimeAccrual, "vendorName" | "serviceMonth">): string;
|
package/dist/components/expenseAutomation/sections/actualMatching/matchNewPreviewJeColumns.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type MatchNewPreviewJeColumnKey = "date" | "account" | "debit" | "credit";
|
|
2
|
+
export interface MatchNewPreviewJeHeaderItem {
|
|
3
|
+
key: MatchNewPreviewJeColumnKey;
|
|
4
|
+
value: string;
|
|
5
|
+
width: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function isMatchNewPreviewJeNumericColumn(key: MatchNewPreviewJeColumnKey): boolean;
|
|
8
|
+
export declare function getMatchNewPreviewJeColumns(): MatchNewPreviewJeHeaderItem[];
|
|
9
|
+
export declare function buildMatchNewPreviewJeGridTemplate(columns: MatchNewPreviewJeHeaderItem[]): string;
|
|
@@ -59,5 +59,5 @@ export interface JESchedulePageProps extends Omit<JESchedulesSectionProps, "jeSc
|
|
|
59
59
|
setResetJeAccountSettingsForm: (resetFn: () => void) => void;
|
|
60
60
|
onNewScheduleFormChange?: (scheduleType: string, formValues: NewScheduleSaveFormValues) => void;
|
|
61
61
|
}
|
|
62
|
-
declare function JESchedulePage({ accountListNestedAccountHierarchy, baseTransactionSearchFetchState, baseTransactionSearchResults, classListNestedAccountHierarchy, expenseAutomationViewSelector, currentFooterFormId, isAccountingClassesEnabled, isCreatingNewSchedule, newScheduleSaveStatus, allDepreciationAccountListNestedAccountHierarchy, closeMonth, initialScheduleDetailsMode, initialScheduleType, newAccrualAccountsView, onCreateAccruedSchedule, onCreateOneTimeAccrual, setResetJeAccountSettingsForm, vendorSearchAutoCompleteData, onJESchedulesFormDataChange, onPostJESchedule, handleJeScheduleClick, onOneTimeAccrualClick, onOneTimeAccrualFeedback, onJeAccountSettingsChange, onSaveJeAccountSettingsClick, onSaveSchedule, onScheduleTypeChange, onSearchBaseTransaction, onViewTransaction, newScheduleLocalData, initialSelectedBaseTransaction, isAccrualEnabled, onNewScheduleFormChange, ignoreRecommendedJeSchedule, vendorSearchAutoCompleteActions, isMatchPanelOpen, isSchedulePanelOpen, matchPanelContent, schedulePanelContent, schedulePendingDiscardConfirmation, setCurrentFooterFormId, setIsCreatingNewSchedule, setIsJeAccountSettingsOpened, onRevertJeSchedule, onToggleCreatedGroupCollapsed, onTogglePendingGroupCollapsed, onUpdateJEScheduleTypeFilter, onUpdateJESchedulesUIState, onClearMatchNewModal, onCloseMatchNewModal, onMatchAndReverse, onOpenMatch, onOpenMatchNewModal, onSearchMatchAccruals, onSearchMatchTransactions, onUpdateActualMatchingUIState, }: Readonly<JESchedulePageProps>): import("react/jsx-runtime").JSX.Element;
|
|
62
|
+
declare function JESchedulePage({ accountListNestedAccountHierarchy, baseTransactionSearchFetchState, baseTransactionSearchResults, classListNestedAccountHierarchy, expenseAutomationViewSelector, currentFooterFormId, isAccountingClassesEnabled, isCreatingNewSchedule, newScheduleSaveStatus, allDepreciationAccountListNestedAccountHierarchy, closeMonth, initialScheduleDetailsMode, initialScheduleType, newAccrualAccountsView, onCreateAccruedSchedule, onCreateOneTimeAccrual, setResetJeAccountSettingsForm, vendorSearchAutoCompleteData, onJESchedulesFormDataChange, onPostJESchedule, handleJeScheduleClick, onOneTimeAccrualClick, onOneTimeAccrualFeedback, onJeAccountSettingsChange, onSaveJeAccountSettingsClick, onSaveSchedule, onScheduleTypeChange, onSearchBaseTransaction, onViewTransaction, newScheduleLocalData, initialSelectedBaseTransaction, isAccrualEnabled, onNewScheduleFormChange, ignoreRecommendedJeSchedule, vendorSearchAutoCompleteActions, isMatchPanelOpen, isSchedulePanelOpen, matchPanelContent, schedulePanelContent, schedulePendingDiscardConfirmation, setCurrentFooterFormId, setIsCreatingNewSchedule, setIsJeAccountSettingsOpened, onRevertJeSchedule, onToggleCreatedGroupCollapsed, onTogglePendingGroupCollapsed, onUpdateJEScheduleTypeFilter, onUpdateJESchedulesUIState, onClearMatchNewModal, onCloseMatchNewModal, onIgnoreMatchSuggestion, onMatchAndReverse, onOpenBill, onOpenMatch, onOpenMatchNewModal, onSearchMatchAccruals, onSearchMatchTransactions, onUndoReversal, onUpdateActualMatchingUIState, }: Readonly<JESchedulePageProps>): import("react/jsx-runtime").JSX.Element;
|
|
63
63
|
export default JESchedulePage;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { JEScheduleIgnoreReasonType, JEScheduleRevertReasonType, OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType } from '@zeniai/client-epic-state';
|
|
2
|
-
|
|
3
|
-
export type
|
|
2
|
+
import { ActualMatchingIgnoreReasonType } from '../../actualMatching/actualMatchingTypes';
|
|
3
|
+
export type JEAccrualFeedbackMode = "skip" | "revert" | "ignoreSchedule" | "revertSchedule" | "ignoreMatchSuggestion";
|
|
4
|
+
export type JEAccrualFeedbackReason = JEScheduleIgnoreReasonType | JEScheduleRevertReasonType | OneTimeAccrualIgnoreReasonType | OneTimeAccrualRevertReasonType | ActualMatchingIgnoreReasonType;
|
|
4
5
|
export interface JEAccrualFeedbackDialogProps {
|
|
5
6
|
/** Already formatted — interpolated into the subtitle. */
|
|
6
7
|
amount: string;
|
package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleNewEntryButton.d.ts
CHANGED
|
@@ -13,7 +13,13 @@ export interface JEScheduleNewEntryButtonProps {
|
|
|
13
13
|
* been typed, and the form now opens in a drawer that leaves this button reachable behind it.
|
|
14
14
|
*/
|
|
15
15
|
isDisabled?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Actual Matching only: label the primary button Match new, prepend that option in the menu, and
|
|
18
|
+
* make the primary click open that workspace instead of a one-time accrual.
|
|
19
|
+
*/
|
|
20
|
+
showMatchNew?: boolean;
|
|
16
21
|
onSelect: (selection: JEScheduleNewEntrySelection) => void;
|
|
22
|
+
onMatchNew?: () => void;
|
|
17
23
|
}
|
|
18
|
-
declare function JEScheduleNewEntryButton({ onSelect, isAccrualEnabled, isDisabled, }: Readonly<JEScheduleNewEntryButtonProps>): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
declare function JEScheduleNewEntryButton({ onSelect, isAccrualEnabled, isDisabled, onMatchNew, showMatchNew, }: Readonly<JEScheduleNewEntryButtonProps>): import("react/jsx-runtime").JSX.Element;
|
|
19
25
|
export default JEScheduleNewEntryButton;
|
package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleGroupList.d.ts
CHANGED
|
@@ -40,8 +40,8 @@ export interface JEScheduleGroupListItemData {
|
|
|
40
40
|
export interface JEScheduleGroupListProps {
|
|
41
41
|
activeHeaderItems: JEScheduleHeaderItemData[];
|
|
42
42
|
/**
|
|
43
|
-
* Rendered in order
|
|
44
|
-
* every render, which would rebuild
|
|
43
|
+
* Rendered in order, one table per non-empty group. Callers must memoize this: an array literal
|
|
44
|
+
* changes identity on every render, which would rebuild every group's items and re-render every row.
|
|
45
45
|
*/
|
|
46
46
|
groups: readonly JEScheduleListGroup[];
|
|
47
47
|
listItemData: JEScheduleGroupListItemData;
|
package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleListItems.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { JEScheduleRow } from '@zeniai/client-epic-state';
|
|
2
2
|
import { JEScheduleGroupKey } from './jeScheduleConfig';
|
|
3
3
|
/**
|
|
4
|
-
* One group of schedules, optionally
|
|
4
|
+
* One group of schedules, rendered as its own table, optionally under a collapsible title bar.
|
|
5
5
|
*
|
|
6
6
|
* `groupRow` is absent for a list that is just a table — the Existing tab — which is what used to be
|
|
7
7
|
* expressed by a `hideGroupHeader` flag alongside a title and an `onToggle` nobody called.
|
|
@@ -17,46 +17,24 @@ export interface JEScheduleListGroup {
|
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* is recorded here, from the group the row arrived in, and must never be re-derived from the row: a
|
|
25
|
-
* resolve row lives in the pending group but does not satisfy `isPendingReviewRow`, so deriving it
|
|
26
|
-
* would quietly turn every resolve row read-only and strip its pickers and Post button.
|
|
20
|
+
* `isPendingReview` is recorded here, from the group the row arrived in, and must never be
|
|
21
|
+
* re-derived from the row: a resolve row lives in the pending group but does not satisfy
|
|
22
|
+
* `isPendingReviewRow`, so deriving it would quietly turn every resolve row read-only and strip its
|
|
23
|
+
* pickers and Post button.
|
|
27
24
|
*/
|
|
28
|
-
export
|
|
29
|
-
count: number;
|
|
30
|
-
groupKey: JEScheduleGroupKey;
|
|
31
|
-
isCollapsed: boolean;
|
|
32
|
-
kind: "group";
|
|
33
|
-
title: string;
|
|
34
|
-
onToggle: () => void;
|
|
35
|
-
} | {
|
|
25
|
+
export interface JEScheduleListItem {
|
|
36
26
|
groupKey: JEScheduleGroupKey;
|
|
37
27
|
isPendingReview: boolean;
|
|
38
|
-
kind: "row";
|
|
39
28
|
row: JEScheduleRow;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
|
|
43
|
-
*
|
|
44
|
-
* An empty group contributes nothing at all, not even its group row — the two-table version achieved
|
|
45
|
-
* that with `length > 0` guards at the call site.
|
|
46
|
-
*
|
|
47
|
-
* A collapsed group keeps its group row and drops its schedule rows, which is what makes the chevron
|
|
48
|
-
* work without unmounting the table.
|
|
49
|
-
*/
|
|
50
|
-
export declare function buildJEScheduleListItems(groups: readonly JEScheduleListGroup[]): JEScheduleListItem[];
|
|
29
|
+
}
|
|
30
|
+
/** A collapsed group yields no rows; its title bar is rendered outside the list. */
|
|
31
|
+
export declare function buildJEScheduleListItems(group: JEScheduleListGroup): JEScheduleListItem[];
|
|
51
32
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* The group prefix: the same schedule can appear as a resolve row in one group and an ongoing row
|
|
55
|
-
* in another while sharing a `jeScheduleTransactionKey`. Separate tables made that harmless; one
|
|
56
|
-
* list would give react-window two items with the same key.
|
|
57
|
-
*
|
|
58
|
-
* The row-instance key: a schedule that failed to post in two months is two resolve rows *inside
|
|
59
|
-
* one group*, which the group prefix cannot separate. `getJEScheduleRowInstanceKey` appends the
|
|
33
|
+
* The row-instance key matters: a schedule that failed to post in two months is two resolve rows
|
|
34
|
+
* inside one group sharing a `jeScheduleTransactionKey`. `getJEScheduleRowInstanceKey` appends the
|
|
60
35
|
* journal entry id for exactly those rows.
|
|
36
|
+
*
|
|
37
|
+
* The group prefix is no longer needed for uniqueness — each group is its own list — but it keeps
|
|
38
|
+
* keys stable and readable across the groups.
|
|
61
39
|
*/
|
|
62
40
|
export declare function getJEScheduleListItemKey(item: JEScheduleListItem): string;
|
|
@@ -27,8 +27,7 @@ export declare enum DynamicConfigNamesWebApp {
|
|
|
27
27
|
approvalRuleV3Config = "approval_rule_v3_config",
|
|
28
28
|
transactionCategorizationConfig = "transaction_categorization_config",
|
|
29
29
|
zeniCardsVisibilityConfig = "zeni_cards_visibility_config",
|
|
30
|
-
updateTransactionTypeConfig = "update_transaction_type_config"
|
|
31
|
-
agentJeConfig = "agent_je_config"
|
|
30
|
+
updateTransactionTypeConfig = "update_transaction_type_config"
|
|
32
31
|
}
|
|
33
32
|
/** Shared configs used by both web-app-ui and cockpit-ui */
|
|
34
33
|
export declare enum DynamicConfigNamesShared {
|
|
@@ -55,7 +54,6 @@ export declare const DynamicConfigNames: {
|
|
|
55
54
|
transactionCategorizationConfig: DynamicConfigNamesWebApp.transactionCategorizationConfig;
|
|
56
55
|
zeniCardsVisibilityConfig: DynamicConfigNamesWebApp.zeniCardsVisibilityConfig;
|
|
57
56
|
updateTransactionTypeConfig: DynamicConfigNamesWebApp.updateTransactionTypeConfig;
|
|
58
|
-
agentJeConfig: DynamicConfigNamesWebApp.agentJeConfig;
|
|
59
57
|
cardsTabCockpitUser: DynamicConfigNamesCockpit.cardsTabCockpitUser;
|
|
60
58
|
monthEndInsightsEnablement: DynamicConfigNamesCockpit.monthEndInsightsEnablement;
|
|
61
59
|
expenseAutomationEnablement: DynamicConfigNamesCockpit.expenseAutomationEnablement;
|