@zeniai/client-epic-state 4.8.68 → 4.8.69

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.
Files changed (32) hide show
  1. package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +1 -0
  2. package/lib/commonStateTypes/viewAndReport/viewAndReport.js +3 -3
  3. package/lib/epic.d.ts +3 -1
  4. package/lib/epic.js +3 -1
  5. package/lib/index.d.ts +11 -7
  6. package/lib/index.js +20 -12
  7. package/lib/reducer.d.ts +3 -0
  8. package/lib/reducer.js +3 -0
  9. package/lib/view/auditReportView/auditReportViewHelper.d.ts +12 -0
  10. package/lib/view/auditReportView/auditReportViewHelper.js +79 -0
  11. package/lib/view/auditReportView/auditReportViewPayload.d.ts +53 -0
  12. package/lib/view/auditReportView/auditReportViewPayload.js +2 -0
  13. package/lib/view/auditReportView/auditReportViewReducer.d.ts +27 -0
  14. package/lib/view/auditReportView/auditReportViewReducer.js +121 -0
  15. package/lib/view/auditReportView/auditReportViewSelector.d.ts +22 -0
  16. package/lib/view/auditReportView/auditReportViewSelector.js +34 -0
  17. package/lib/view/auditReportView/auditReportViewState.d.ts +71 -0
  18. package/lib/view/auditReportView/auditReportViewState.js +22 -0
  19. package/lib/view/auditReportView/epics/fetchAuditReportGroupViewEpic.d.ts +7 -0
  20. package/lib/view/auditReportView/epics/fetchAuditReportGroupViewEpic.js +54 -0
  21. package/lib/view/auditReportView/epics/fetchAuditRuleGroupViewEpic.d.ts +7 -0
  22. package/lib/view/auditReportView/epics/fetchAuditRuleGroupViewEpic.js +39 -0
  23. package/lib/view/companyView/types/cockpitTypes.d.ts +2 -0
  24. package/lib/view/companyView/types/cockpitTypes.js +9 -1
  25. package/lib/view/reviewCompanyView/reviewCompanyPayload.d.ts +25 -1
  26. package/lib/view/reviewCompanyView/reviewCompanyViewSelector.d.ts +1 -0
  27. package/lib/view/reviewCompanyView/reviewCompanyViewSelector.js +31 -8
  28. package/lib/view/reviewCompanyView/reviewCompanyViewState.d.ts +12 -4
  29. package/lib/view/reviewCompanyView/reviewCompanyViewState.js +15 -5
  30. package/lib/view/spendManagement/helpers.d.ts +1 -1
  31. package/lib/view/spendManagement/helpers.js +8 -8
  32. package/package.json +1 -1
@@ -0,0 +1,53 @@
1
+ import { StatusPayload } from '../../commonPayloadTypes/statusPayload';
2
+ import { ZeniAPIResponse } from '../../responsePayload';
3
+ export interface AuditRuleGroupBasePayload {
4
+ audit_rule_group_id: string;
5
+ }
6
+ export interface AuditRuleGroupPayload extends AuditRuleGroupBasePayload {
7
+ audit_rule_category: string;
8
+ audit_rule_group_description: string;
9
+ audit_rules: AuditRulePayload[];
10
+ sequence: number;
11
+ }
12
+ export interface AuditRuleBasePayload {
13
+ audit_rule_id: string;
14
+ }
15
+ export interface AuditRulePayload extends AuditRuleBasePayload {
16
+ audit_rule_description: string;
17
+ sequence: number;
18
+ }
19
+ export interface AuditRuleGroupsPayload {
20
+ audit_rule_groups: AuditRuleGroupPayload[];
21
+ version: string;
22
+ }
23
+ export interface AuditReportRulePayload extends AuditRuleBasePayload {
24
+ is_success: boolean;
25
+ entity_type: string;
26
+ entity_ids: string[];
27
+ message: string;
28
+ sequence: number;
29
+ }
30
+ export interface AuditRuleGroupReportPayload extends AuditRuleGroupBasePayload {
31
+ is_success: boolean;
32
+ message: string;
33
+ audit_rules?: AuditReportRulePayload[] | null;
34
+ sequence: number;
35
+ }
36
+ export interface AuditReportPayload {
37
+ audit_month_and_year: string;
38
+ audit_rules_group_report: AuditRuleGroupReportPayload[];
39
+ report_id: string;
40
+ report_title: string;
41
+ status: StatusPayload;
42
+ version: string;
43
+ }
44
+ export interface AuditReportGroupQueryPayload {
45
+ audit_rule_group_ids: string[];
46
+ action: string;
47
+ }
48
+ export interface AuditReportGroupPayload {
49
+ query: AuditReportGroupQueryPayload;
50
+ report: AuditReportPayload;
51
+ }
52
+ export declare type AuditReportGroupResponse = ZeniAPIResponse<AuditReportGroupPayload>;
53
+ export declare type AuditRuleGroupsResponse = ZeniAPIResponse<AuditRuleGroupsPayload>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,27 @@
1
+ import { ZeniAPIStatus } from '../../responsePayload';
2
+ import { AuditReportViewState } from './auditReportViewState';
3
+ import { AuditReportGroupPayload, AuditRuleGroupPayload } from './auditReportViewPayload';
4
+ export declare const initialState: AuditReportViewState;
5
+ export declare const fetchAuditRuleGroupView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride?: any], {
6
+ cacheOverride: any;
7
+ }, string, never, never>, updateAuditRuleGroupViewOnSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[auditRuleGroups: AuditRuleGroupPayload[]], {
8
+ auditRuleGroups: AuditRuleGroupPayload[];
9
+ }, string, never, never>, updateAuditRuleGroupViewOnFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[error: ZeniAPIStatus<Record<string, unknown>>], {
10
+ error: ZeniAPIStatus<Record<string, unknown>>;
11
+ }, string, never, never>, fetchAuditReportGroupView: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[companyId: string, fetchAction: "view" | "generate", reportGroupId: string], {
12
+ companyId: string;
13
+ fetchAction: "view" | "generate";
14
+ reportGroupId: string;
15
+ }, string, never, never>, updateAuditReportGroupViewOnSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[companyId: string, reportGroupId: string, auditReportGroupPayload: AuditReportGroupPayload], {
16
+ companyId: string;
17
+ reportGroupId: string;
18
+ auditReportGroupPayload: AuditReportGroupPayload;
19
+ }, string, never, never>, updateAuditReportGroupViewOnFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[companyId: string, reportGroupId: string, error: ZeniAPIStatus<Record<string, unknown>>], {
20
+ companyId: string;
21
+ reportGroupId: string;
22
+ error: ZeniAPIStatus<Record<string, unknown>>;
23
+ }, string, never, never>, clearAuditRuleGroupView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, clearAuditReportGroupViewByCompanyId: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[companyId: string], {
24
+ companyId: string;
25
+ }, string, never, never>, clearAuditReportGroupView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
26
+ declare const _default: import("@reduxjs/toolkit").Reducer<AuditReportViewState, import("@reduxjs/toolkit").AnyAction>;
27
+ export default _default;
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.clearAuditReportGroupView = exports.clearAuditReportGroupViewByCompanyId = exports.clearAuditRuleGroupView = exports.updateAuditReportGroupViewOnFailure = exports.updateAuditReportGroupViewOnSuccess = exports.fetchAuditReportGroupView = exports.updateAuditRuleGroupViewOnFailure = exports.updateAuditRuleGroupViewOnSuccess = exports.fetchAuditRuleGroupView = exports.initialState = void 0;
5
+ const toolkit_1 = require("@reduxjs/toolkit");
6
+ const auditReportViewHelper_1 = require("./auditReportViewHelper");
7
+ exports.initialState = {
8
+ auditRuleGroupView: {
9
+ auditRuleGroups: [],
10
+ fetchState: 'Not-Started',
11
+ error: undefined,
12
+ hasValidState() {
13
+ return this.fetchState == 'Completed';
14
+ },
15
+ },
16
+ auditReportViewByCompanyId: {},
17
+ };
18
+ const auditReportView = (0, toolkit_1.createSlice)({
19
+ name: 'auditReportView',
20
+ initialState: exports.initialState,
21
+ reducers: {
22
+ fetchAuditRuleGroupView: {
23
+ prepare(cacheOverride = true) {
24
+ return { payload: { cacheOverride } };
25
+ },
26
+ reducer(draft) {
27
+ if (draft.auditRuleGroupView.fetchState !== 'Completed' ||
28
+ draft.auditRuleGroupView.auditRuleGroups.length === 0) {
29
+ draft.auditRuleGroupView.fetchState = 'In-Progress';
30
+ }
31
+ draft.auditRuleGroupView.error = undefined;
32
+ },
33
+ },
34
+ updateAuditRuleGroupViewOnSuccess: {
35
+ reducer(draft, action) {
36
+ const { auditRuleGroups } = action.payload;
37
+ draft.auditRuleGroupView.fetchState = 'Completed';
38
+ draft.auditRuleGroupView.error = undefined;
39
+ draft.auditRuleGroupView.auditRuleGroups = auditRuleGroups.map((ruleGroup) => (0, auditReportViewHelper_1.toAuditRuleGroupFromPayload)(ruleGroup));
40
+ },
41
+ prepare(auditRuleGroups) {
42
+ return {
43
+ payload: { auditRuleGroups },
44
+ };
45
+ },
46
+ },
47
+ updateAuditRuleGroupViewOnFailure: {
48
+ reducer(draft, action) {
49
+ draft.auditRuleGroupView.fetchState = 'Error';
50
+ draft.auditRuleGroupView.error = action.payload.error;
51
+ },
52
+ prepare(error) {
53
+ return { payload: { error } };
54
+ },
55
+ },
56
+ fetchAuditReportGroupView: {
57
+ prepare(companyId, fetchAction, reportGroupId) {
58
+ return {
59
+ payload: { companyId, fetchAction, reportGroupId },
60
+ };
61
+ },
62
+ reducer(draft, action) {
63
+ var _a;
64
+ const { companyId, reportGroupId } = action.payload;
65
+ const draftReportById = (_a = draft.auditReportViewByCompanyId[companyId]) === null || _a === void 0 ? void 0 : _a.auditReportGroupViewByGroupId;
66
+ draft.auditReportViewByCompanyId[companyId] = {
67
+ auditReportGroupViewByGroupId: Object.assign(Object.assign({}, draftReportById), { [reportGroupId]: {
68
+ id: reportGroupId,
69
+ fetchState: 'In-Progress',
70
+ error: undefined,
71
+ hasValidState: exports.initialState.auditRuleGroupView.hasValidState,
72
+ } }),
73
+ };
74
+ },
75
+ },
76
+ updateAuditReportGroupViewOnSuccess: {
77
+ reducer(draft, action) {
78
+ const { auditReportGroupPayload, reportGroupId, companyId } = action.payload;
79
+ draft.auditReportViewByCompanyId[companyId].auditReportGroupViewByGroupId[reportGroupId].fetchState = 'Completed';
80
+ draft.auditReportViewByCompanyId[companyId].auditReportGroupViewByGroupId[reportGroupId].error = undefined;
81
+ draft.auditReportViewByCompanyId[companyId].auditReportGroupViewByGroupId[reportGroupId].auditReportGroup =
82
+ (0, auditReportViewHelper_1.toAuditReportGroupViewFromPayload)(auditReportGroupPayload);
83
+ },
84
+ prepare(companyId, reportGroupId, auditReportGroupPayload) {
85
+ return {
86
+ payload: { companyId, reportGroupId, auditReportGroupPayload },
87
+ };
88
+ },
89
+ },
90
+ updateAuditReportGroupViewOnFailure: {
91
+ reducer(draft, action) {
92
+ const { companyId, reportGroupId } = action.payload;
93
+ draft.auditReportViewByCompanyId[companyId].auditReportGroupViewByGroupId[reportGroupId].fetchState = 'Error';
94
+ draft.auditReportViewByCompanyId[companyId].auditReportGroupViewByGroupId[reportGroupId].error =
95
+ action.payload.error;
96
+ },
97
+ prepare(companyId, reportGroupId, error) {
98
+ return { payload: { companyId, reportGroupId, error } };
99
+ },
100
+ },
101
+ clearAuditReportGroupViewByCompanyId: {
102
+ reducer(draft, action) {
103
+ const { companyId } = action.payload;
104
+ delete draft.auditReportViewByCompanyId[companyId];
105
+ },
106
+ prepare(companyId) {
107
+ return {
108
+ payload: { companyId },
109
+ };
110
+ },
111
+ },
112
+ clearAuditRuleGroupView(draft) {
113
+ draft.auditRuleGroupView = Object.assign(draft.auditRuleGroupView, exports.initialState.auditRuleGroupView);
114
+ },
115
+ clearAuditReportGroupView(draft) {
116
+ Object.assign(draft, exports.initialState);
117
+ },
118
+ },
119
+ });
120
+ _a = auditReportView.actions, exports.fetchAuditRuleGroupView = _a.fetchAuditRuleGroupView, exports.updateAuditRuleGroupViewOnSuccess = _a.updateAuditRuleGroupViewOnSuccess, exports.updateAuditRuleGroupViewOnFailure = _a.updateAuditRuleGroupViewOnFailure, exports.fetchAuditReportGroupView = _a.fetchAuditReportGroupView, exports.updateAuditReportGroupViewOnSuccess = _a.updateAuditReportGroupViewOnSuccess, exports.updateAuditReportGroupViewOnFailure = _a.updateAuditReportGroupViewOnFailure, exports.clearAuditRuleGroupView = _a.clearAuditRuleGroupView, exports.clearAuditReportGroupViewByCompanyId = _a.clearAuditReportGroupViewByCompanyId, exports.clearAuditReportGroupView = _a.clearAuditReportGroupView;
121
+ exports.default = auditReportView.reducer;
@@ -0,0 +1,22 @@
1
+ import { RootState } from '../../reducer';
2
+ import { SelectorView } from '../../commonStateTypes/viewAndReport/viewAndReport';
3
+ import { ID } from '../../commonStateTypes/common';
4
+ import { AuditReport, AuditRuleGroup } from './auditReportViewState';
5
+ export interface AuditRuleGroupViewSelectorView extends SelectorView {
6
+ auditRuleGroups: AuditRuleGroup[];
7
+ }
8
+ export interface AuditReportGroupSelectorView extends SelectorView {
9
+ auditReportGroupId: ID;
10
+ auditReport?: AuditReport;
11
+ }
12
+ export interface AuditReportGroupViewSelectorView {
13
+ auditReportGroups: AuditReportGroupSelectorView[];
14
+ }
15
+ export declare const getAuditRuleGroupViewSelectorView: (state: RootState) => {
16
+ auditRuleGroups: AuditRuleGroup[];
17
+ fetchState: import("../../commonStateTypes/common").FetchState;
18
+ error: import("../..").ZeniAPIStatus<Record<string, unknown>> | undefined;
19
+ };
20
+ export declare const getAuditReportGroupViewSelectorView: (companyId: ID, state: RootState) => {
21
+ auditReportGroups: AuditReportGroupSelectorView[];
22
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAuditReportGroupViewSelectorView = exports.getAuditRuleGroupViewSelectorView = void 0;
4
+ const getAuditRuleGroupViewSelectorView = (state) => {
5
+ const { auditRuleGroupView } = state.auditReportViewState;
6
+ const auditRuleGroups = auditRuleGroupView.auditRuleGroups;
7
+ return {
8
+ auditRuleGroups,
9
+ fetchState: auditRuleGroupView.fetchState,
10
+ error: auditRuleGroupView.error,
11
+ };
12
+ };
13
+ exports.getAuditRuleGroupViewSelectorView = getAuditRuleGroupViewSelectorView;
14
+ const getAuditReportGroupViewSelectorView = (companyId, state) => {
15
+ var _a;
16
+ const { auditReportViewByCompanyId } = state.auditReportViewState;
17
+ const auditReportGroupViewByGroupId = (_a = auditReportViewByCompanyId[companyId]) === null || _a === void 0 ? void 0 : _a.auditReportGroupViewByGroupId;
18
+ const auditReportGroups = [];
19
+ if (auditReportGroupViewByGroupId != null) {
20
+ Object.values(auditReportGroupViewByGroupId).forEach((reportView) => {
21
+ var _a;
22
+ auditReportGroups.push({
23
+ auditReportGroupId: reportView.id,
24
+ auditReport: (_a = reportView.auditReportGroup) === null || _a === void 0 ? void 0 : _a.report,
25
+ fetchState: reportView.fetchState,
26
+ error: reportView.error,
27
+ });
28
+ });
29
+ }
30
+ return {
31
+ auditReportGroups,
32
+ };
33
+ };
34
+ exports.getAuditReportGroupViewSelectorView = getAuditReportGroupViewSelectorView;
@@ -0,0 +1,71 @@
1
+ import { FetchedState, ID } from '../../commonStateTypes/common';
2
+ import { Status } from '../../commonStateTypes/status';
3
+ import { View } from '../../commonStateTypes/viewAndReport/viewAndReport';
4
+ export declare const AUDIT_RULE_ENTITY_TYPES: readonly ["reports", "transactions", "dashboard"];
5
+ export declare const toAuditRuleEntityType: (v: string) => "dashboard" | "transactions" | "reports";
6
+ export declare type AuditRuleEntityType = ReturnType<typeof toAuditRuleEntityType>;
7
+ export declare const AUDIT_RULE_ENTITY_IDS: readonly ["uncategorized-expense", "uncategorized-income", "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", "zeni_accounts_promo_card", "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"];
8
+ export declare const toAuditRuleEntityIdType: (v: string) => "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" | "zeni_accounts_promo_card" | "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" | "uncategorized-expense" | "uncategorized-income";
9
+ export declare type AuditRuleEntityIdType = ReturnType<typeof toAuditRuleEntityIdType>;
10
+ export declare const AUDIT_REPORT_ACTION_TYPES: readonly ["generate", "view"];
11
+ export declare const toAuditReportActionType: (v: string) => "view" | "generate";
12
+ export declare type AuditReportActionType = ReturnType<typeof toAuditReportActionType>;
13
+ export interface AuditRuleGroupBase {
14
+ auditRuleGroupId: ID;
15
+ }
16
+ export interface AuditRuleBase {
17
+ auditRuleId: string;
18
+ }
19
+ export interface AuditRuleGroup extends AuditRuleGroupBase {
20
+ auditRuleCategory: string;
21
+ auditRuleGroupDescription: string;
22
+ auditRules: AuditRule[];
23
+ sequence: number;
24
+ }
25
+ export interface AuditRule extends AuditRuleBase {
26
+ auditRuleDescription: string;
27
+ sequence: number;
28
+ }
29
+ export interface AuditReportRule extends AuditRuleBase {
30
+ isSuccess: boolean;
31
+ entityType: AuditRuleEntityType;
32
+ entityIds: AuditRuleEntityIdType[];
33
+ message: string;
34
+ sequence: number;
35
+ }
36
+ export interface AuditRuleGroupReport extends AuditRuleGroupBase {
37
+ isSuccess: boolean;
38
+ message: string;
39
+ auditRules: AuditReportRule[];
40
+ sequence: number;
41
+ }
42
+ export interface AuditReport {
43
+ auditRulesGroupReport: AuditRuleGroupReport[];
44
+ reportId: ID;
45
+ reportTitle: string;
46
+ status: Status;
47
+ version: string;
48
+ auditMonthAndYear: string;
49
+ }
50
+ export interface AuditReportGroupQuery {
51
+ auditRuleGroupIds: ID[];
52
+ action: AuditReportActionType;
53
+ }
54
+ export interface AuditReportGroup {
55
+ query: AuditReportGroupQuery;
56
+ report: AuditReport;
57
+ }
58
+ export interface AuditReportGroupView extends FetchedState {
59
+ id: ID;
60
+ auditReportGroup?: AuditReportGroup;
61
+ }
62
+ export interface AuditRuleGroupViewState extends FetchedState, View {
63
+ auditRuleGroups: AuditRuleGroup[];
64
+ }
65
+ export interface AuditReportGroupViewState {
66
+ auditReportGroupViewByGroupId: Record<ID, AuditReportGroupView>;
67
+ }
68
+ export interface AuditReportViewState {
69
+ auditRuleGroupView: AuditRuleGroupViewState;
70
+ auditReportViewByCompanyId: Record<ID, AuditReportGroupViewState>;
71
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toAuditReportActionType = exports.AUDIT_REPORT_ACTION_TYPES = exports.toAuditRuleEntityIdType = exports.AUDIT_RULE_ENTITY_IDS = exports.toAuditRuleEntityType = exports.AUDIT_RULE_ENTITY_TYPES = void 0;
4
+ const stringToUnion_1 = require("../../commonStateTypes/stringToUnion");
5
+ const viewAndReport_1 = require("../../commonStateTypes/viewAndReport/viewAndReport");
6
+ exports.AUDIT_RULE_ENTITY_TYPES = [
7
+ 'reports',
8
+ 'transactions',
9
+ 'dashboard',
10
+ ];
11
+ const toAuditRuleEntityType = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.AUDIT_RULE_ENTITY_TYPES);
12
+ exports.toAuditRuleEntityType = toAuditRuleEntityType;
13
+ exports.AUDIT_RULE_ENTITY_IDS = [
14
+ 'uncategorized-expense',
15
+ 'uncategorized-income',
16
+ ...viewAndReport_1.ALL_REPORT_IDS,
17
+ ];
18
+ const toAuditRuleEntityIdType = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.AUDIT_RULE_ENTITY_IDS);
19
+ exports.toAuditRuleEntityIdType = toAuditRuleEntityIdType;
20
+ exports.AUDIT_REPORT_ACTION_TYPES = ['generate', 'view'];
21
+ const toAuditReportActionType = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.AUDIT_REPORT_ACTION_TYPES);
22
+ exports.toAuditReportActionType = toAuditReportActionType;
@@ -0,0 +1,7 @@
1
+ import { Observable } from 'rxjs';
2
+ import { ActionsObservable, StateObservable } from 'redux-observable';
3
+ import { ZeniAPI } from '../../../zeniAPI';
4
+ import { RootState } from '../../../reducer';
5
+ import { fetchAuditReportGroupView, updateAuditReportGroupViewOnSuccess, updateAuditReportGroupViewOnFailure } from '../auditReportViewReducer';
6
+ export declare type ActionType = ReturnType<typeof fetchAuditReportGroupView> | ReturnType<typeof updateAuditReportGroupViewOnSuccess> | ReturnType<typeof updateAuditReportGroupViewOnFailure>;
7
+ export declare const fetchAuditReportGroupViewEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchAuditReportGroupViewEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../responsePayload");
7
+ const auditReportViewReducer_1 = require("../auditReportViewReducer");
8
+ const fetchAuditReportGroupViewEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(auditReportViewReducer_1.fetchAuditReportGroupView.match), (0, operators_1.mergeMap)((action) => {
9
+ const { companyId, fetchAction, reportGroupId } = action.payload;
10
+ const state = state$.value;
11
+ const company = state.companyState.companiesById[companyId];
12
+ const tenantId = company.companyInfo.tenantId;
13
+ if (tenantId != null) {
14
+ const query = toQueryPayload(fetchAction, reportGroupId);
15
+ const { userId, sessionId } = zeniAPI;
16
+ const headers = {
17
+ 'zeni-user-id': userId,
18
+ 'zeni-tenant-id': tenantId,
19
+ 'zeni-session-id': sessionId,
20
+ };
21
+ return zeniAPI
22
+ .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/reports/audit?query=${encodeURIComponent(JSON.stringify(query))}`, headers)
23
+ .pipe((0, operators_1.mergeMap)((response) => {
24
+ if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
25
+ const actions = [
26
+ (0, auditReportViewReducer_1.updateAuditReportGroupViewOnSuccess)(companyId, reportGroupId, response.data),
27
+ ];
28
+ return (0, rxjs_1.from)(actions);
29
+ }
30
+ else {
31
+ const actions = [
32
+ (0, auditReportViewReducer_1.updateAuditReportGroupViewOnFailure)(companyId, reportGroupId, response.status),
33
+ ];
34
+ return (0, rxjs_1.from)(actions);
35
+ }
36
+ }), (0, operators_1.catchError)((error) => {
37
+ const actions = [
38
+ (0, auditReportViewReducer_1.updateAuditReportGroupViewOnFailure)(companyId, reportGroupId, (0, responsePayload_1.createZeniAPIStatus)('Unexpected error', 'Audit Report Group view errored out' +
39
+ JSON.stringify(error))),
40
+ ];
41
+ return (0, rxjs_1.from)(actions);
42
+ }));
43
+ }
44
+ else {
45
+ return (0, rxjs_1.from)([]);
46
+ }
47
+ }));
48
+ exports.fetchAuditReportGroupViewEpic = fetchAuditReportGroupViewEpic;
49
+ const toQueryPayload = (action, groupId) => {
50
+ return {
51
+ action,
52
+ audit_rule_group_ids: [groupId],
53
+ };
54
+ };
@@ -0,0 +1,7 @@
1
+ import { Observable } from 'rxjs';
2
+ import { ActionsObservable, StateObservable } from 'redux-observable';
3
+ import { ZeniAPI } from '../../../zeniAPI';
4
+ import { RootState } from '../../../reducer';
5
+ import { fetchAuditRuleGroupView, updateAuditRuleGroupViewOnFailure, updateAuditRuleGroupViewOnSuccess } from '../auditReportViewReducer';
6
+ export declare type ActionType = ReturnType<typeof fetchAuditRuleGroupView> | ReturnType<typeof updateAuditRuleGroupViewOnSuccess> | ReturnType<typeof updateAuditRuleGroupViewOnFailure>;
7
+ export declare const fetchAuditRuleGroupViewEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchAuditRuleGroupViewEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../responsePayload");
7
+ const auditReportViewReducer_1 = require("../auditReportViewReducer");
8
+ const fetchAuditRuleGroupViewEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(auditReportViewReducer_1.fetchAuditRuleGroupView.match), (0, operators_1.switchMap)((action) => {
9
+ const { cacheOverride } = action.payload;
10
+ const state = state$.value;
11
+ const { fetchState } = state.auditReportViewState.auditRuleGroupView;
12
+ if (cacheOverride === true || fetchState !== 'In-Progress') {
13
+ return zeniAPI
14
+ .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/audit-rule-groups`)
15
+ .pipe((0, operators_1.mergeMap)((response) => {
16
+ if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
17
+ const actions = [
18
+ (0, auditReportViewReducer_1.updateAuditRuleGroupViewOnSuccess)(response.data.audit_rule_groups),
19
+ ];
20
+ return (0, rxjs_1.from)(actions);
21
+ }
22
+ else {
23
+ const actions = [
24
+ (0, auditReportViewReducer_1.updateAuditRuleGroupViewOnFailure)(response.status),
25
+ ];
26
+ return (0, rxjs_1.from)(actions);
27
+ }
28
+ }), (0, operators_1.catchError)((error) => {
29
+ const actions = [
30
+ (0, auditReportViewReducer_1.updateAuditRuleGroupViewOnFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected error', 'Audit rule group view errored out' + JSON.stringify(error))),
31
+ ];
32
+ return (0, rxjs_1.from)(actions);
33
+ }));
34
+ }
35
+ else {
36
+ return (0, rxjs_1.from)([]);
37
+ }
38
+ }));
39
+ exports.fetchAuditRuleGroupViewEpic = fetchAuditRuleGroupViewEpic;
@@ -41,3 +41,5 @@ export interface DownloadCockpitTabOptions {
41
41
  tabs: CockpitDownloadTabsID[];
42
42
  filterByTabs: Record<CockpitDownloadTabsID, FilterCombinationsByTabs>;
43
43
  }
44
+ export declare const ALL_ONBOARDING_STEP_KEYS: readonly ["bankAccountLinked", "qboLinked", "identityVerified", "businessVerified"];
45
+ export declare const toOnboardingStepKeyType: (v: string) => "identityVerified" | "businessVerified" | "bankAccountLinked" | "qboLinked";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toManagementStatusCodeType = exports.MANAGEMENT_STATUS_CODES = exports.toHealthSortKeyType = exports.toOnboardingSortKeyType = exports.toManagementSortKeyType = exports.toPortfolioSortKeyType = exports.ALL_HEALTH_SORT_KEYS = exports.ALL_ONBOARDING_SORT_KEYS = exports.ALL_MANAGEMENT_SORT_KEYS = exports.ALL_PORTFOLIO_SORT_KEYS = void 0;
3
+ exports.toOnboardingStepKeyType = exports.ALL_ONBOARDING_STEP_KEYS = exports.toManagementStatusCodeType = exports.MANAGEMENT_STATUS_CODES = exports.toHealthSortKeyType = exports.toOnboardingSortKeyType = exports.toManagementSortKeyType = exports.toPortfolioSortKeyType = exports.ALL_HEALTH_SORT_KEYS = exports.ALL_ONBOARDING_SORT_KEYS = exports.ALL_MANAGEMENT_SORT_KEYS = exports.ALL_PORTFOLIO_SORT_KEYS = void 0;
4
4
  const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
5
5
  exports.ALL_PORTFOLIO_SORT_KEYS = [
6
6
  'companyName',
@@ -69,3 +69,11 @@ exports.MANAGEMENT_STATUS_CODES = [
69
69
  ];
70
70
  const toManagementStatusCodeType = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.MANAGEMENT_STATUS_CODES);
71
71
  exports.toManagementStatusCodeType = toManagementStatusCodeType;
72
+ exports.ALL_ONBOARDING_STEP_KEYS = [
73
+ 'bankAccountLinked',
74
+ 'qboLinked',
75
+ 'identityVerified',
76
+ 'businessVerified',
77
+ ];
78
+ const toOnboardingStepKeyType = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.ALL_ONBOARDING_STEP_KEYS);
79
+ exports.toOnboardingStepKeyType = toOnboardingStepKeyType;
@@ -1,6 +1,12 @@
1
1
  import { ID } from '../../commonStateTypes/common';
2
2
  import { OnboardingInfoPayload } from '../../entity/company/companyPayload';
3
3
  import { ZeniAPIResponse } from '../../responsePayload';
4
+ export interface AuditSummaryPayload {
5
+ fixes_required: number;
6
+ total_checks: number;
7
+ audit_score_percentage: number;
8
+ audit_report_last_generated_date?: string | null;
9
+ }
4
10
  export interface ReviewCompanyPayload {
5
11
  company_id: ID;
6
12
  name: string;
@@ -12,11 +18,29 @@ export interface ReviewCompanyPayload {
12
18
  is_uncategorized_income_transactions_present: boolean;
13
19
  is_miscategorized_expenses_transactions_present: boolean;
14
20
  is_miscategorized_income_transactions_present: boolean;
15
- onboarding_info?: OnboardingInfoPayload;
16
21
  is_vendor_review_required: boolean;
22
+ onboarding_info?: OnboardingInfoPayload;
23
+ audit_summary: AuditSummaryPayload;
24
+ }
25
+ export interface AuditRuleGroupPayload {
26
+ audit_rule_category: string;
27
+ audit_rule_group_description: string;
28
+ audit_rule_group_id: string;
29
+ audit_rules: AuditRulePayload[];
30
+ sequence: number;
31
+ }
32
+ export interface AuditRulePayload {
33
+ audit_rule_description: string;
34
+ audit_rule_id: string;
35
+ sequence: number;
36
+ }
37
+ export interface AuditRuleGroupsPayload {
38
+ audit_rule_groups: AuditRuleGroupPayload[];
39
+ version: string;
17
40
  }
18
41
  export interface ReviewCompanyViewPayload {
19
42
  companies: ReviewCompanyPayload[];
20
43
  }
21
44
  export declare type ReviewCompanyListResponse = ZeniAPIResponse<ReviewCompanyViewPayload>;
45
+ export declare type AuditRuleGroupsResponse = ZeniAPIResponse<AuditRuleGroupsPayload>;
22
46
  export declare type RetryBankAccountConnectionResponse = ZeniAPIResponse<ReviewCompanyViewPayload>;
@@ -12,3 +12,4 @@ export interface ReviewCompanySelectorView extends SelectorView {
12
12
  }
13
13
  export declare const getReviewCompanySelectorView: (state: RootState) => ReviewCompanySelectorView;
14
14
  export declare const getReviewCompanyListCount: (state: RootState) => number;
15
+ export declare const getAuditWarningsCount: (companyView: ReviewCompanyView) => number;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getReviewCompanyListCount = exports.getReviewCompanySelectorView = void 0;
6
+ exports.getAuditWarningsCount = exports.getReviewCompanyListCount = exports.getReviewCompanySelectorView = void 0;
7
7
  const toolkit_1 = require("@reduxjs/toolkit");
8
8
  const orderBy_1 = __importDefault(require("lodash/orderBy"));
9
9
  const values_1 = __importDefault(require("lodash/values"));
@@ -27,7 +27,8 @@ exports.getReviewCompanySelectorView = (0, toolkit_1.createSelector)((state) =>
27
27
  .filter((value) => value != null);
28
28
  const orderedZeniUsers = (0, orderBy_1.default)(zeniUsers, (user) => (0, userSelector_1.getUserName)(user), 'asc');
29
29
  const sortedCompanies = (0, orderBy_1.default)(companies, (company) => {
30
- var _a, _b, _c, _d;
30
+ var _a;
31
+ const warningCount = (0, exports.getAuditWarningsCount)(company);
31
32
  switch (sortKey) {
32
33
  case 'notes':
33
34
  return (_a = company.note) === null || _a === void 0 ? void 0 : _a.toLowerCase();
@@ -37,12 +38,10 @@ exports.getReviewCompanySelectorView = (0, toolkit_1.createSelector)((state) =>
37
38
  case 'miscategorized':
38
39
  return ((company.miscategorizedTransactions.income ? 1 : 0) +
39
40
  (company.miscategorizedTransactions.expense ? 1 : 0));
40
- case 'bankAccountLinked':
41
- case 'qboLinked':
42
- return ((_c = (_b = company.onboardingInfo) === null || _b === void 0 ? void 0 : _b[sortKey]) === null || _c === void 0 ? void 0 : _c.completed) === true;
43
- case 'businessVerified':
44
- case 'identityVerified':
45
- return (_d = company.onboardingInfo) === null || _d === void 0 ? void 0 : _d[sortKey].status.toLowerCase();
41
+ case 'warnings':
42
+ return warningCount;
43
+ case 'auditScore':
44
+ return company.auditSummary.fixesRequired;
46
45
  case 'reviewVendor':
47
46
  return company.isVendorReviewReqiured;
48
47
  case 'companyName':
@@ -62,3 +61,27 @@ exports.getReviewCompanyListCount = (0, toolkit_1.createSelector)((state) => sta
62
61
  const companies = (0, values_1.default)(rootState.reviewCompanyViewState.reviewCompanyById);
63
62
  return companies.length;
64
63
  });
64
+ const getAuditWarningsCount = (companyView) => {
65
+ var _a, _b, _c, _d;
66
+ let warningsCount = 0;
67
+ const bankConnectionStepInfo = (_a = companyView.onboardingInfo) === null || _a === void 0 ? void 0 : _a['bankAccountLinked'];
68
+ if ((bankConnectionStepInfo === null || bankConnectionStepInfo === void 0 ? void 0 : bankConnectionStepInfo.error) === true ||
69
+ (bankConnectionStepInfo === null || bankConnectionStepInfo === void 0 ? void 0 : bankConnectionStepInfo.completed) === false) {
70
+ warningsCount++;
71
+ }
72
+ const qboLinkedStepInfo = (_b = companyView.onboardingInfo) === null || _b === void 0 ? void 0 : _b['qboLinked'];
73
+ if ((qboLinkedStepInfo === null || qboLinkedStepInfo === void 0 ? void 0 : qboLinkedStepInfo.error) === true ||
74
+ (qboLinkedStepInfo === null || qboLinkedStepInfo === void 0 ? void 0 : qboLinkedStepInfo.completed) === false) {
75
+ warningsCount++;
76
+ }
77
+ const identityVerificationStepInfo = (_c = companyView.onboardingInfo) === null || _c === void 0 ? void 0 : _c['identityVerified'];
78
+ if ((identityVerificationStepInfo === null || identityVerificationStepInfo === void 0 ? void 0 : identityVerificationStepInfo.status) !== 'Complete') {
79
+ warningsCount++;
80
+ }
81
+ const businessVerificationStepInfo = (_d = companyView.onboardingInfo) === null || _d === void 0 ? void 0 : _d['businessVerified'];
82
+ if ((businessVerificationStepInfo === null || businessVerificationStepInfo === void 0 ? void 0 : businessVerificationStepInfo.status) !== 'Complete') {
83
+ warningsCount++;
84
+ }
85
+ return warningsCount;
86
+ };
87
+ exports.getAuditWarningsCount = getAuditWarningsCount;