@zeniai/client-epic-state 5.1.30 → 5.1.31

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 (88) hide show
  1. package/README.md +1 -3
  2. package/lib/entity/customer/customerPayload.js +11 -2
  3. package/lib/entity/genericEntity/entity.d.ts +1 -1
  4. package/lib/entity/jeSchedules/jeSchedulesPayload.js +2 -3
  5. package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +1 -1
  6. package/lib/entity/jeSchedules/jeSchedulesSelector.js +4 -4
  7. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +1 -1
  8. package/lib/entity/transaction/payloadTypes/vendorTransactionPayload.js +1 -1
  9. package/lib/entity/vendor/vendorPayload.d.ts +2 -6
  10. package/lib/entity/vendor/vendorPayload.js +3 -14
  11. package/lib/entity/vendor/vendorReducer.js +0 -3
  12. package/lib/epic.d.ts +1 -2
  13. package/lib/epic.js +1 -2
  14. package/lib/esm/entity/customer/customerPayload.js +11 -2
  15. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +2 -3
  16. package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +4 -4
  17. package/lib/esm/entity/transaction/payloadTypes/vendorTransactionPayload.js +2 -2
  18. package/lib/esm/entity/vendor/vendorPayload.js +2 -12
  19. package/lib/esm/entity/vendor/vendorReducer.js +1 -4
  20. package/lib/esm/epic.js +1 -2
  21. package/lib/esm/index.js +2 -2
  22. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +3 -29
  23. package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +0 -11
  24. package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -2
  25. package/lib/esm/view/aiCfoView/epics/submitQuestionEpic.js +1 -7
  26. package/lib/esm/view/commonVendorView/transactionVendorView/epics/saveTransactionVendorEpic.js +6 -11
  27. package/lib/esm/view/commonVendorView/transactionVendorView/transactionVendorViewReducer.js +0 -2
  28. package/lib/esm/view/createTransferEntry/epics/createTransferEntryEpic.js +1 -5
  29. package/lib/esm/view/expenseAutomationView/payload/jeSchedulesPayload.js +1 -4
  30. package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +1 -1
  31. package/lib/esm/view/onboardingView/cockpitView/epic/initializeOnboardingCustomerViewUpdateDataEpic.js +16 -4
  32. package/lib/esm/view/onboardingView/cockpitView/onboardingCockpitViewPayload.js +2 -2
  33. package/lib/esm/view/scheduleView/scheduleAccruedDetailView/epics/deleteScheduleAccruedDetailEpic.js +1 -1
  34. package/lib/esm/view/scheduleView/scheduleAccruedDetailView/epics/fetchRecommendedTransactionRowIndexEpic.js +5 -11
  35. package/lib/esm/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailPayload.js +1 -4
  36. package/lib/esm/view/scheduleView/scheduleDetailView/epics/createNewSchedulesEpic.js +1 -1
  37. package/lib/esm/view/scheduleView/scheduleDetailView/epics/deleteScheduleDetailEpic.js +1 -1
  38. package/lib/esm/view/scheduleView/scheduleDetailView/epics/markAsCompleteScheduleDetailEpic.js +1 -1
  39. package/lib/esm/view/scheduleView/scheduleDetailView/epics/saveScheduleDetailsEpic.js +1 -1
  40. package/lib/esm/view/scheduleView/scheduleDetailView/scheduleDetailPayload.js +3 -12
  41. package/lib/esm/view/scheduleView/scheduleListView/scheduleListSelector.js +7 -8
  42. package/lib/esm/view/spendManagement/billPay/billDetailView/epics/fetchBillDetailEpic.js +3 -8
  43. package/lib/esm/view/transactionDetail/epics/transactionDetailEpic.js +9 -10
  44. package/lib/esm/view/transactionDetail/epics/updateTransactionDetailEpic.js +1 -5
  45. package/lib/esm/view/trendWithTransactions/fetchTrendForEntityEpic.js +1 -3
  46. package/lib/esm/view/vendorFiling1099/vendorFiling1099List/vendorFiling1099ListReducer.js +1 -4
  47. package/lib/esm/view/vendorList/vendorListReducer.js +1 -4
  48. package/lib/esm/view/vendorReviewView/vendorFirstReviewView/vendorFirstReviewViewReducer.js +1 -9
  49. package/lib/index.d.ts +4 -4
  50. package/lib/index.js +5 -9
  51. package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +0 -14
  52. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +4 -8
  53. package/lib/view/aiCfoView/aiCfoViewReducer.js +4 -30
  54. package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +1 -2
  55. package/lib/view/aiCfoView/aiCfoViewSelector.js +0 -12
  56. package/lib/view/aiCfoView/aiCfoViewState.d.ts +0 -15
  57. package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -2
  58. package/lib/view/aiCfoView/epics/submitQuestionEpic.js +1 -7
  59. package/lib/view/commonVendorView/transactionVendorView/epics/saveTransactionVendorEpic.js +6 -11
  60. package/lib/view/commonVendorView/transactionVendorView/transactionVendorViewReducer.js +0 -2
  61. package/lib/view/createTransferEntry/epics/createTransferEntryEpic.js +1 -5
  62. package/lib/view/expenseAutomationView/payload/jeSchedulesPayload.js +1 -4
  63. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +1 -1
  64. package/lib/view/onboardingView/cockpitView/epic/initializeOnboardingCustomerViewUpdateDataEpic.js +15 -3
  65. package/lib/view/onboardingView/cockpitView/onboardingCockpitViewPayload.js +2 -2
  66. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/deleteScheduleAccruedDetailEpic.js +1 -1
  67. package/lib/view/scheduleView/scheduleAccruedDetailView/epics/fetchRecommendedTransactionRowIndexEpic.js +5 -11
  68. package/lib/view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailPayload.js +1 -4
  69. package/lib/view/scheduleView/scheduleDetailView/epics/createNewSchedulesEpic.js +1 -1
  70. package/lib/view/scheduleView/scheduleDetailView/epics/deleteScheduleDetailEpic.js +1 -1
  71. package/lib/view/scheduleView/scheduleDetailView/epics/markAsCompleteScheduleDetailEpic.js +1 -1
  72. package/lib/view/scheduleView/scheduleDetailView/epics/saveScheduleDetailsEpic.js +1 -1
  73. package/lib/view/scheduleView/scheduleDetailView/scheduleDetailPayload.js +3 -12
  74. package/lib/view/scheduleView/scheduleListView/scheduleListSelector.js +7 -8
  75. package/lib/view/spendManagement/billPay/billDetailView/epics/fetchBillDetailEpic.js +3 -8
  76. package/lib/view/transactionDetail/epics/transactionDetailEpic.js +8 -9
  77. package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.js +1 -5
  78. package/lib/view/trendWithTransactions/fetchTrendForEntityEpic.js +1 -3
  79. package/lib/view/vendorFiling1099/vendorFiling1099List/vendorFiling1099ListReducer.js +1 -4
  80. package/lib/view/vendorList/vendorListReducer.js +1 -4
  81. package/lib/view/vendorReviewView/vendorFirstReviewView/vendorFirstReviewViewReducer.js +1 -9
  82. package/package.json +2 -5
  83. package/lib/commonPayloadTypes/payloadIdentifier.d.ts +0 -6
  84. package/lib/commonPayloadTypes/payloadIdentifier.js +0 -18
  85. package/lib/esm/commonPayloadTypes/payloadIdentifier.js +0 -14
  86. package/lib/esm/view/aiCfoView/epics/fetchSkillsEpic.js +0 -34
  87. package/lib/view/aiCfoView/epics/fetchSkillsEpic.d.ts +0 -8
  88. package/lib/view/aiCfoView/epics/fetchSkillsEpic.js +0 -38
@@ -69,7 +69,7 @@ function waitForChannelSubscription(pusherInstance, channelName, timeoutMs = 500
69
69
  }));
70
70
  }
71
71
  const createSessionAndSubmitEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(aiCfoViewReducer_1.createSessionAndSubmit.match), (0, operators_1.switchMap)((action) => {
72
- const { agentId, userId, questionAnswerId, questionId, createdAt, question, files, pageContext, macroId, } = action.payload;
72
+ const { agentId, userId, questionAnswerId, questionId, createdAt, question, files, pageContext, } = action.payload;
73
73
  const payload = {
74
74
  agent_id: agentId,
75
75
  ...(pageContext != null && { page_context: pageContext }),
@@ -116,7 +116,7 @@ const createSessionAndSubmitEpic = (actions$, _state$, zeniAPI) => actions$.pipe
116
116
  // This allows fetchChatHistory to run after the question is submitted
117
117
  (0, rxjs_1.of)((0, aiCfoViewReducer_1.createSessionAndSubmitSuccess)(),
118
118
  // Submit the question after handlers are bound
119
- (0, aiCfoViewReducer_1.submitQuestion)(sessionId, questionAnswerId, userId, questionId, createdAt, question, files, macroId),
119
+ (0, aiCfoViewReducer_1.submitQuestion)(sessionId, questionAnswerId, userId, questionId, createdAt, question, files),
120
120
  // Add question payload optimistically after submitQuestion (matches original order)
121
121
  // This is idempotent - won't create duplicates if called multiple times
122
122
  // submitQuestionEpic will find the question already exists and only update the response
@@ -7,7 +7,7 @@ const aiCfoReducer_1 = require("../../../entity/aiCfo/aiCfoReducer");
7
7
  const responsePayload_1 = require("../../../responsePayload");
8
8
  const aiCfoViewReducer_1 = require("../aiCfoViewReducer");
9
9
  const submitQuestionEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(aiCfoViewReducer_1.submitQuestion.match), (0, operators_1.mergeMap)((action) => {
10
- const { questionAnswerId, userId, sessionId, questionId, createdAt, question, files, macroId, } = action.payload;
10
+ const { questionAnswerId, userId, sessionId, questionId, createdAt, question, files, } = action.payload;
11
11
  const { aiCfoViewState } = state$.value;
12
12
  const { uiState } = aiCfoViewState;
13
13
  const agentId = uiState.agentId;
@@ -20,21 +20,15 @@ const submitQuestionEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, oper
20
20
  const formData = new FormData();
21
21
  formData.append('chat_session_id', sessionId);
22
22
  formData.append('message', question);
23
- if (macroId != null) {
24
- formData.append('macro_id', macroId);
25
- }
26
23
  for (const file of files) {
27
24
  formData.append('files', file, file.name);
28
25
  }
29
26
  apiCall = zeniAPI.postFormData(endpoint, formData);
30
27
  }
31
28
  else {
32
- // `message` is the display token (e.g. "/flux"); `macro_id` tells the chat
33
- // service to expand the skill's instructions as the actual agent prompt.
34
29
  apiCall = zeniAPI.postAndGetJSON(endpoint, {
35
30
  chat_session_id: sessionId,
36
31
  message: question,
37
- ...(macroId != null && { macro_id: macroId }),
38
32
  });
39
33
  }
40
34
  return apiCall.pipe((0, operators_1.mergeMap)((response) => {
@@ -7,7 +7,6 @@ const snackbarReducer_1 = require("../../../../entity/snackbar/snackbarReducer")
7
7
  const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
8
8
  const transactionSelector_1 = require("../../../../entity/transaction/transactionSelector");
9
9
  const vendorReducer_1 = require("../../../../entity/vendor/vendorReducer");
10
- const vendorPayload_1 = require("../../../../entity/vendor/vendorPayload");
11
10
  const responsePayload_1 = require("../../../../responsePayload");
12
11
  const zeniUrl_1 = require("../../../../zeniUrl");
13
12
  const accountListSelector_1 = require("../../../accountList/accountListSelector");
@@ -39,13 +38,11 @@ const saveTransactionVendorEpic = (actions$, state$, zeniAPI) => actions$.pipe((
39
38
  const actions = [
40
39
  (0, vendorReducer_1.updateVendors)(response.data.vendors ?? []),
41
40
  ];
42
- const savedVendor = response.data.vendors[0];
43
- const resolvedVendorId = (0, vendorPayload_1.getVendorPayloadIdentifier)(savedVendor) ?? undefined;
44
41
  actions.push((0, transactionVendorViewReducer_1.updateTransactionVendorLocalData)({
45
- vendorId: resolvedVendorId,
42
+ vendorId: response.data.vendors[0].vendor_id,
46
43
  localData: {
47
- vendorName: savedVendor.vendor_name,
48
- vendorId: resolvedVendorId,
44
+ vendorName: response.data.vendors[0].vendor_name,
45
+ vendorId: response.data.vendors[0].vendor_id,
49
46
  },
50
47
  }));
51
48
  if (effectiveVendorId == null &&
@@ -73,8 +70,7 @@ const saveTransactionVendorEpic = (actions$, state$, zeniAPI) => actions$.pipe((
73
70
  name: response.data.vendors[0].vendor_name,
74
71
  id: response.data.vendors[0].qbo_id,
75
72
  type: 'vendor',
76
- // Zeni platform id (vendor_id field), not the resolved id used for local-data keys.
77
- zeniId: savedVendor.vendor_id ?? undefined,
73
+ zeniId: response.data.vendors[0].vendor_id,
78
74
  qboId: response.data.vendors[0].qbo_id,
79
75
  logo: (0, zeniUrl_1.toZeniUrlWithoutBaseURL)(response.data.vendors[0].logo?.url ?? ''),
80
76
  },
@@ -87,15 +83,14 @@ const saveTransactionVendorEpic = (actions$, state$, zeniAPI) => actions$.pipe((
87
83
  transactionId: action.payload.transactionId,
88
84
  vendorUpdates: {
89
85
  name: response.data.vendors[0].vendor_name,
90
- id: savedVendor.vendor_id ?? undefined,
86
+ id: response.data.vendors[0].vendor_id,
91
87
  qboId: response.data.vendors[0].qbo_id,
92
88
  },
93
89
  entity: {
94
90
  name: response.data.vendors[0].vendor_name,
95
91
  id: response.data.vendors[0].qbo_id,
96
92
  type: 'vendor',
97
- // Zeni platform id (vendor_id field), not the resolved id used for local-data keys.
98
- zeniId: savedVendor.vendor_id ?? undefined,
93
+ zeniId: response.data.vendors[0].vendor_id,
99
94
  qboId: response.data.vendors[0].qbo_id,
100
95
  logo: (0, zeniUrl_1.toZeniUrlWithoutBaseURL)(response.data.vendors[0].logo?.url ?? ''),
101
96
  },
@@ -94,8 +94,6 @@ const transactionVendorView = (0, toolkit_1.createSlice)({
94
94
  };
95
95
  }
96
96
  else {
97
- // Legacy empty-string key from pre-resolution vendor id writes.
98
- delete draft.editVendorStateById[''];
99
97
  if (draft.editVendorStateById[vendorId] != null) {
100
98
  draft.editVendorStateById[vendorId].vendorDetailLocalData = {
101
99
  ...exports.initialVendorDetailLocalData,
@@ -6,7 +6,6 @@ const operators_1 = require("rxjs/operators");
6
6
  const snackbarReducer_1 = require("../../../entity/snackbar/snackbarReducer");
7
7
  const transactionIDPayload_1 = require("../../../entity/transaction/payloadTypes/transactionIDPayload");
8
8
  const transactionReducer_1 = require("../../../entity/transaction/transactionReducer");
9
- const vendorPayload_1 = require("../../../entity/vendor/vendorPayload");
10
9
  const responsePayload_1 = require("../../../responsePayload");
11
10
  const transactionsViewReducer_1 = require("../../expenseAutomationView/reducers/transactionsViewReducer");
12
11
  const transactionDetailReducer_1 = require("../../transactionDetail/transactionDetailReducer");
@@ -89,14 +88,11 @@ function handleSuccessWithoutTransactionBody(transactionId) {
89
88
  function handleSuccessWithTransactionBody(transactionPayload, vendorPayload, previousTransactionId, sourceTransactionId) {
90
89
  const newTransactionId = (0, transactionIDPayload_1.toTransactionID)(transactionPayload);
91
90
  const replaced = !transactionIdsAreEqual(previousTransactionId, newTransactionId);
92
- const firstVendor = vendorPayload?.[0];
93
91
  const immediate = [
94
92
  (0, transactionReducer_1.updateTransaction)((0, transactionDetailState_1.getTransactionDetailKey)(newTransactionId), transactionPayload),
95
93
  (0, transactionDetailReducer_1.initializeTransactionDetailLocalData)({
96
94
  transactionId: newTransactionId,
97
- vendorId: firstVendor != null
98
- ? (0, vendorPayload_1.getVendorPayloadIdentifier)(firstVendor) ?? undefined
99
- : undefined,
95
+ vendorId: vendorPayload?.[0]?.vendor_id,
100
96
  }),
101
97
  ...buildSuccessSideEffects(sourceTransactionId),
102
98
  ];
@@ -6,10 +6,7 @@ const scheduleDetailPayload_1 = require("../../scheduleView/scheduleDetailView/s
6
6
  const prepareIgnoreSchedulePayload = (scheduleType, jeScheduleTransaction, state) => {
7
7
  const { vendorState } = state;
8
8
  const { vendor, currencyCode, currencySymbol, baseTransaction, status, balanceAsOfToday, period, startDate, endDate, jeCredit, jeDebit, } = jeScheduleTransaction;
9
- const vendorID = vendor?.id;
10
- if (vendorID == null) {
11
- throw new Error('Vendor is required to build JE schedule payload');
12
- }
9
+ const vendorID = vendor.id;
13
10
  const vendorDetails = vendorState.vendorByID[vendorID];
14
11
  const jeSchedulePayload = {
15
12
  status: status,
@@ -21,7 +21,7 @@ const jeAccountSettingsViewSelector_1 = require("./jeAccountSettingsViewSelector
21
21
  function getJEScheduleSortAccessor(sortKey) {
22
22
  switch (sortKey) {
23
23
  case 'vendor':
24
- return (s) => s.vendor?.name?.toLowerCase();
24
+ return (s) => s.vendor.name?.toLowerCase();
25
25
  case 'category':
26
26
  return (s) => s.jeDebit.account?.accountName?.toLowerCase();
27
27
  case 'class':
@@ -116,20 +116,32 @@ const getSelectedProducts = (isDebitCardFlagEnabled, tenant) => {
116
116
  const isBookkeepingEnabled = (0, tenantSelector_1.isTenantBookkeepingEnabled)(tenant);
117
117
  const isOtherProductsEnabled = (0, tenantSelector_1.isOtherProductsEnabledForTenant)(tenant);
118
118
  const isCardsEnabled = (0, tenantSelector_1.isTenantCardsOnly)(tenant);
119
+ const isTreasuryEnabled = (0, tenantSelector_1.isTenantTreasuryEnabled)(tenant);
119
120
  if (isCardsEnabled && isBankingOnly) {
120
- return [];
121
+ const selectedProducts = ['zeni_cards', 'zeni_checking'];
122
+ if (isTreasuryEnabled) {
123
+ selectedProducts.push('zeni_treasury');
124
+ }
125
+ return selectedProducts;
121
126
  }
122
127
  else if (isBankingOnly) {
123
- return [];
128
+ const selectedProducts = ['zeni_checking'];
129
+ if (isTreasuryEnabled) {
130
+ selectedProducts.push('zeni_treasury');
131
+ }
132
+ return selectedProducts;
124
133
  }
125
134
  else if (isCardsEnabled) {
126
- return [];
135
+ return ['zeni_cards'];
127
136
  }
128
137
  else if (isBookkeepingEnabled) {
129
138
  return [
130
139
  'bookkeeping',
131
140
  'zeni_bill_pay',
141
+ 'zeni_checking',
132
142
  'zeni_reimbursements',
143
+ 'zeni_treasury',
144
+ 'zeni_cards',
133
145
  ];
134
146
  }
135
147
  else if (isOtherProductsEnabled) {
@@ -51,9 +51,9 @@ const toOnboardingCustomerPayload = (onboardingCustomer, sendInvite, company, te
51
51
  const isTreasury = selectedProducts.includes('zeni_treasury');
52
52
  if (isBookkeeping) {
53
53
  onboardingCustomerPayload.is_book_keeping_enabled = true;
54
- onboardingCustomerPayload.is_banking_enabled = isChecking;
54
+ onboardingCustomerPayload.is_banking_enabled = true;
55
55
  onboardingCustomerPayload.is_spend_management_enabled = true;
56
- onboardingCustomerPayload.is_card_enabled = isCards;
56
+ onboardingCustomerPayload.is_card_enabled = true;
57
57
  onboardingCustomerPayload.is_treasury_enabled = isTreasury;
58
58
  }
59
59
  else if (isChecking && isCards) {
@@ -23,7 +23,7 @@ const deleteScheduleAccruedDetailEpic = (actions$, state$, zeniAPI) => actions$.
23
23
  return (0, rxjs_1.from)(actions);
24
24
  }
25
25
  const scheduleDetailId = jeScheduleState.jeScheduleId;
26
- const vendorName = jeScheduleState.vendor?.name ?? '';
26
+ const vendorName = jeScheduleState.vendor.name;
27
27
  const scheduleDetailsUpdated = state.scheduleAccruedDetailState.editScheduleStateByDetailId[scheduleDetailId];
28
28
  const payload = {
29
29
  ...(0, scheduleAccruedDetailPayload_1.prepareScheduleAccruedDetailPayload)(state, scheduleDetailsUpdated, selectedJEScheduleKey, true),
@@ -6,13 +6,14 @@ const operators_1 = require("rxjs/operators");
6
6
  const formatZeniDateFY_1 = require("../../../../commonStateTypes/fiscalYearHelpers/formatZeniDateFY");
7
7
  const jeSchedulesSelector_1 = require("../../../../entity/jeSchedules/jeSchedulesSelector");
8
8
  const transactionReducer_1 = require("../../../../entity/transaction/transactionReducer");
9
+ const vendorSelector_1 = require("../../../../entity/vendor/vendorSelector");
9
10
  const responsePayload_1 = require("../../../../responsePayload");
10
11
  const zeniDayJS_1 = require("../../../../zeniDayJS");
11
12
  const scheduleAccruedDetailReducer_1 = require("../scheduleAccruedDetailReducer");
12
13
  const fetchRecommendedTransactionRowIndexEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(scheduleAccruedDetailReducer_1.fetchRecommendedTransactionRowIndex.match), (0, operators_1.mergeMap)((action) => {
13
14
  const state = state$.value;
14
15
  const { selectedJELinkRowIndex } = action.payload;
15
- const { scheduleAccruedDetailState } = state;
16
+ const { scheduleAccruedDetailState, vendorState } = state;
16
17
  const actions = [];
17
18
  const { selectedJEAccruedScheduleKey } = scheduleAccruedDetailState;
18
19
  if (selectedJEAccruedScheduleKey == null ||
@@ -29,21 +30,14 @@ const fetchRecommendedTransactionRowIndexEpic = (actions$, state$, zeniAPI) => a
29
30
  const { amount, runningBalance: accruedBalance, expectedPostDate, } = selectedJournalEntry;
30
31
  const endDate = (0, zeniDayJS_1.dateNow)().endOf('month').format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT);
31
32
  const { vendor } = jeScheduleState;
32
- if (vendor?.id == null) {
33
- return (0, rxjs_1.from)([
34
- (0, scheduleAccruedDetailReducer_1.updateFetchedTransactionIds)([], (value) => value.transaction_id),
35
- (0, scheduleAccruedDetailReducer_1.updatedFetchRecommendationBillExpenseSuccessOrFailure)({
36
- fetchState: 'Completed',
37
- error: undefined,
38
- }),
39
- ]);
40
- }
33
+ const vendorId = vendor.id;
34
+ const vendorEntity = (0, vendorSelector_1.getVendorByVendorId)(vendorState, vendorId);
41
35
  const queryParam = {
42
36
  start_date: expectedPostDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT),
43
37
  end_date: endDate,
44
38
  amount: amount?.amount ?? 0,
45
39
  accrued_balance: accruedBalance?.amount ?? 0,
46
- vendor_id: vendor.id,
40
+ vendor_id: vendorEntity?.id ?? '',
47
41
  account_name: account?.accountName ?? '',
48
42
  class_name: accountingClass?.className ?? '',
49
43
  };
@@ -210,10 +210,7 @@ const mapAccruedExpenseJEScheduleTransactionToPayload = (jeScheduleAccruedExpens
210
210
  const lastJEScheduleDate = scheduleLength > 0
211
211
  ? scheduleDetailsLocalDataAccruedExpenses.jeScheduleDetails[scheduleLength - 1].postingDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT)
212
212
  : null;
213
- const vendorID = vendor?.id;
214
- if (vendorID == null) {
215
- throw new Error('Vendor is required to build accrued schedule detail payload');
216
- }
213
+ const vendorID = vendor.id;
217
214
  const vendorDetails = vendorState.vendorByID[vendorID];
218
215
  const payload = {
219
216
  status: status,
@@ -15,7 +15,7 @@ const createNewSchedulesEpic = (actions$, state$) => actions$.pipe((0, operators
15
15
  if (selectedJEScheduleKey != null) {
16
16
  const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleTransactionKey)(selectedJEScheduleKey, state);
17
17
  const totalAmount = jeScheduleTransactionState.baseTransaction.amount;
18
- const vendorName = jeScheduleTransactionState.vendor?.name ?? '';
18
+ const vendorName = jeScheduleTransactionState.vendor.name;
19
19
  const currentLocalData = jeScheduleTransactionState.jeScheduleId != null
20
20
  ? scheduleDetailState.editScheduleStateByDetailId[scheduleType][jeScheduleTransactionState.jeScheduleId]
21
21
  : scheduleDetailState.newScheduleState[scheduleType];
@@ -19,7 +19,7 @@ const deleteScheduleDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe((0
19
19
  return (0, rxjs_1.from)(actions);
20
20
  }
21
21
  const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleTransactionKey)(selectedJEScheduleKey, state);
22
- const vendorName = jeScheduleTransactionState.vendor?.name ?? '';
22
+ const vendorName = jeScheduleTransactionState.vendor.name;
23
23
  const scheduleDetailId = jeScheduleTransactionState.jeScheduleId ?? selectedJeScheduleDetailId;
24
24
  if (scheduleDetailId == null) {
25
25
  return (0, rxjs_1.from)(actions);
@@ -15,7 +15,7 @@ const markAsCompleteScheduleDetailEpic = (actions$, state$, zeniAPI) => actions$
15
15
  const actions = [];
16
16
  const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleTransactionKey)(jeScheduleKey, state);
17
17
  const scheduleDetailId = jeScheduleTransactionState.jeScheduleId;
18
- const vendorName = jeScheduleTransactionState.vendor?.name ?? '';
18
+ const vendorName = jeScheduleTransactionState.vendor.name;
19
19
  const scheduleDetailsUpdated = scheduleDetailId != null
20
20
  ? state.scheduleDetailState.editScheduleStateByDetailId[scheduleType][scheduleDetailId]
21
21
  : state.scheduleDetailState.newScheduleState[scheduleType];
@@ -19,7 +19,7 @@ const saveScheduleDetailsEpic = (actions$, state$, zeniAPI) => actions$.pipe((0,
19
19
  return (0, rxjs_1.from)(actions);
20
20
  }
21
21
  const jeScheduleTransactionState = (0, jeSchedulesSelector_1.getJEScheduledTransactionByJEScheduleTransactionKey)(selectedJEScheduleKey, state);
22
- const vendorName = jeScheduleTransactionState.vendor?.name ?? '';
22
+ const vendorName = jeScheduleTransactionState.vendor.name;
23
23
  const scheduleDetailId = jeScheduleTransactionState.jeScheduleId ?? selectedJeScheduleDetailId;
24
24
  const scheduleDetailsUpdated = scheduleDetailId != null
25
25
  ? state.scheduleDetailState.editScheduleStateByDetailId[scheduleType][scheduleDetailId]
@@ -125,10 +125,7 @@ const mapJEScheduleTransactionToPayload = (jeScheduleTransactionState, vendorSta
125
125
  const lastJEScheduleDate = scheduleLength > 0
126
126
  ? scheduleDetailsLocalData.jeScheduleDetails[scheduleLength - 1].postingDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT)
127
127
  : null;
128
- const vendorID = vendor?.id;
129
- if (vendorID == null) {
130
- throw new Error('Vendor is required to build schedule detail payload (mapJEScheduleTransactionToPayload)');
131
- }
128
+ const vendorID = vendor.id;
132
129
  const vendorDetails = vendorState.vendorByID[vendorID];
133
130
  const updatedVendor = {
134
131
  vendor_id: selectedVendor?.id ?? '',
@@ -203,10 +200,7 @@ const mapFixedAssetJEScheduleTransactionToPayload = (jeScheduleTransactionState,
203
200
  const lastJEScheduleDate = scheduleLength > 0
204
201
  ? scheduleDetailsLocalData.jeScheduleDetails[scheduleLength - 1].postingDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT)
205
202
  : null;
206
- const vendorID = vendor?.id;
207
- if (vendorID == null) {
208
- throw new Error('Vendor is required to build schedule detail payload (mapFixedAssetJEScheduleTransactionToPayload)');
209
- }
203
+ const vendorID = vendor.id;
210
204
  const vendorDetails = vendorState.vendorByID[vendorID];
211
205
  const updatedVendor = {
212
206
  vendor_id: selectedVendor?.id ?? '',
@@ -284,10 +278,7 @@ const mapAccruedExpenseJEScheduleTransactionToPayload = (jeScheduleTransactionSt
284
278
  const lastJEScheduleDate = scheduleLength > 0
285
279
  ? scheduleDetailsLocalData.jeScheduleDetails[scheduleLength - 1].postingDate.format(formatZeniDateFY_1.DEFAULT_DATE_FORMAT)
286
280
  : null;
287
- const vendorID = vendor?.id;
288
- if (vendorID == null) {
289
- throw new Error('Vendor is required to build schedule detail payload (mapAccruedExpenseJEScheduleTransactionToPayload)');
290
- }
281
+ const vendorID = vendor.id;
291
282
  const vendorDetails = vendorState.vendorByID[vendorID];
292
283
  const payload = {
293
284
  status: updatedStatus,
@@ -18,9 +18,9 @@ const sortedJETransactionsView = (jeTransactions, sortKey, sortOrder) => {
18
18
  case 'transactionDate':
19
19
  return jeTransaction.baseTransaction.date.valueOf();
20
20
  case 'vendor':
21
- return jeTransaction.vendor?.name != null
21
+ return jeTransaction.vendor.name != null
22
22
  ? jeTransaction.vendor.name.toLowerCase()
23
- : jeTransaction.vendor?.name;
23
+ : jeTransaction.vendor.name;
24
24
  case 'scheduleCategory':
25
25
  return jeTransaction.baseTransaction.account.accountName.toLowerCase();
26
26
  case 'expenseCategory':
@@ -81,9 +81,9 @@ const sortedJEAccruedSchedules = (jeAccruedSchedules, sortKey, sortOrder) => {
81
81
  case 'createTime':
82
82
  return jeAccruedSchedule.createTime.valueOf();
83
83
  case 'vendor':
84
- return jeAccruedSchedule.vendor?.name != null
84
+ return jeAccruedSchedule.vendor.name != null
85
85
  ? jeAccruedSchedule.vendor.name.toLowerCase()
86
- : jeAccruedSchedule.vendor?.name;
86
+ : jeAccruedSchedule.vendor.name;
87
87
  case 'expenseCategory':
88
88
  return jeAccruedSchedule.jeDebit.account != null
89
89
  ? jeAccruedSchedule.jeDebit.account.accountName.toLowerCase()
@@ -208,7 +208,7 @@ const getScheduleListReport = (state, scheduleType) => {
208
208
  .trim()
209
209
  .toLowerCase();
210
210
  const sortedJETransactionView = sortedJETransactionsView(jeTransactionsView.filter((jeTransaction) => {
211
- return ((jeTransaction.vendor?.name != null &&
211
+ return ((jeTransaction.vendor.name != null &&
212
212
  jeTransaction.vendor.name
213
213
  .toLowerCase()
214
214
  .includes(loweredSearchText) === true) ||
@@ -329,9 +329,8 @@ const getAccruedScheduleListReport = (state, scheduleType) => {
329
329
  .trim()
330
330
  .toLocaleLowerCase();
331
331
  const sortedJESchedules = sortedJEAccruedSchedules(jeScheduleAccrued.filter((jeSchedule) => {
332
- return (jeSchedule.vendor?.name
333
- ?.toLowerCase()
334
- ?.includes(loweredSearchText) === true ||
332
+ return (jeSchedule.vendor.name.toLowerCase().includes(loweredSearchText) ===
333
+ true ||
335
334
  jeSchedule.memo.toLowerCase().includes(loweredSearchText) === true);
336
335
  }), sortKey, sortOrder);
337
336
  const totalBalances = (0, scheduleListHelper_1.getCalculatedAccruedScheduleTotal)(sortedJESchedules);
@@ -20,7 +20,6 @@ const entityApprovalStatusReducer_1 = require("../../../../../entity/entityAppro
20
20
  const paymentAccountReducer_1 = require("../../../../../entity/paymentAccount/paymentAccountReducer");
21
21
  const paymentInstrumentReducer_1 = require("../../../../../entity/paymentInstrument/paymentInstrumentReducer");
22
22
  const userReducer_1 = require("../../../../../entity/user/userReducer");
23
- const vendorPayload_1 = require("../../../../../entity/vendor/vendorPayload");
24
23
  const vendorReducer_1 = require("../../../../../entity/vendor/vendorReducer");
25
24
  const responsePayload_1 = require("../../../../../responsePayload");
26
25
  const commonVendorViewHelper_1 = require("../../../../commonVendorView/commonVendorViewHelper");
@@ -105,16 +104,12 @@ const fetchBillDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, ope
105
104
  }
106
105
  else {
107
106
  fetchActions.push((0, billDetailViewReducer_1.updateBillDetail)({ billId, billDetail: response.data }));
107
+ fetchActions.push((0, billDetailViewReducer_1.updateBillDetailFetchState)(transcationId, 'Completed', undefined, vendorInResponse?.vendor_id));
108
108
  const transactionInResponse = response.data?.transaction;
109
- const resolvedVendorId = vendorInResponse != null
110
- ? (0, vendorPayload_1.getVendorPayloadIdentifier)(vendorInResponse)
111
- : null;
112
- fetchActions.push((0, billDetailViewReducer_1.updateBillDetailFetchState)(transcationId, 'Completed', undefined, resolvedVendorId ?? undefined));
113
109
  if (transactionInResponse != null &&
114
110
  transactionInResponse.total_amount != null &&
115
- resolvedVendorId != null &&
116
111
  vendorInResponse != null) {
117
- fetchActions.push((0, billPayReviewReducer_1.fetchDuplicateBill)(vendorInResponse.vendor_name, resolvedVendorId, transactionInResponse.total_amount, transactionInResponse.recipient_total_amount, transactionInResponse.document_id, billId));
112
+ fetchActions.push((0, billPayReviewReducer_1.fetchDuplicateBill)(vendorInResponse.vendor_name, vendorInResponse.vendor_id, transactionInResponse.total_amount, transactionInResponse.recipient_total_amount, transactionInResponse.document_id, billId));
118
113
  }
119
114
  const billHasPaymentError = [
120
115
  'failed',
@@ -170,7 +165,7 @@ function removeCompleteTransaction(billId, transaction) {
170
165
  function getVendorPreviousBillsActions(billTransactionPayload) {
171
166
  const fetchPreviousBillsActions = [];
172
167
  const vendorId = billTransactionPayload.vendor_id;
173
- if (vendorId != null && vendorId !== '') {
168
+ if (Boolean(vendorId) === true) {
174
169
  fetchPreviousBillsActions.push((0, previousBillsReducer_1.fetchPreviousBills)(vendorId, false));
175
170
  }
176
171
  return fetchPreviousBillsActions;
@@ -62,11 +62,11 @@ const fetchTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe(
62
62
  const transcationId = (0, transactionIDPayload_1.toTransactionID)(response.data.transaction);
63
63
  const responseData = {
64
64
  ...response.data,
65
- vendors: response.data.vendors?.map((vendor) => (0, vendorPayload_1.normalizeVendorBasePayload)(vendor)) ?? [],
65
+ vendors: response.data.vendors?.map((vendor) => ({
66
+ ...vendor,
67
+ vendor_id: vendor.qbo_id ?? vendor.vendor_id,
68
+ })) ?? [],
66
69
  };
67
- const resolvedVendorId = responseData.vendors.length > 0
68
- ? (0, vendorPayload_1.getVendorPayloadIdentifier)(responseData.vendors[0])
69
- : null;
70
70
  if (responseData.vendors.length > 0) {
71
71
  updateActions.push((0, vendorReducer_1.updateVendors)(responseData.vendors, 'merge'));
72
72
  }
@@ -74,16 +74,15 @@ const fetchTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe(
74
74
  updateActions.push((0, transactionReducer_1.updateTransaction)(transactionDetailKeyForResponse, responseData.transaction));
75
75
  updateActions.push((0, transactionDetailReducer_1.initializeTransactionDetailLocalData)({
76
76
  transactionId: transcationId,
77
- vendorId: resolvedVendorId ?? undefined,
77
+ vendorId: responseData.vendors[0]?.vendor_id,
78
78
  }));
79
79
  updateActions.push((0, transactionDetailReducer_1.updateTransactionDetailFetchState)(transcationId, 'Completed'));
80
80
  // IMPORTANT: Fetch linked transactions..
81
81
  updateActions.push(...getAllFetchLinkedTransactionDetailActions(responseData.transaction, state$.value));
82
- if (resolvedVendorId != null) {
83
- const vendorPayload = responseData.vendors[0];
82
+ if (responseData.vendors.length > 0) {
84
83
  updateActions.push((0, transactionVendorViewReducer_1.updateTransactionVendorLocalData)({
85
- vendorId: resolvedVendorId,
86
- localData: (0, transactionVendorLocalDataHelper_1.getInitializedTransactionVendorLocalData)((0, vendorPayload_1.mapVendorPayloadToVendor)(vendorPayload)),
84
+ vendorId: responseData.vendors[0].vendor_id,
85
+ localData: (0, transactionVendorLocalDataHelper_1.getInitializedTransactionVendorLocalData)((0, vendorPayload_1.mapVendorPayloadToVendor)(responseData.vendors[0])),
87
86
  }));
88
87
  }
89
88
  // If vendor transaction, fetch owners list
@@ -23,7 +23,6 @@ const transactionHelper_1 = require("../../../entity/transaction/transactionHelp
23
23
  const transactionReducer_1 = require("../../../entity/transaction/transactionReducer");
24
24
  const transactionSelector_1 = require("../../../entity/transaction/transactionSelector");
25
25
  const vendorReducer_1 = require("../../../entity/vendor/vendorReducer");
26
- const vendorPayload_1 = require("../../../entity/vendor/vendorPayload");
27
26
  const vendorSelector_1 = require("../../../entity/vendor/vendorSelector");
28
27
  const responsePayload_1 = require("../../../responsePayload");
29
28
  const tenantSelector_1 = require("../../../entity/tenant/tenantSelector");
@@ -66,12 +65,9 @@ const updateTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe
66
65
  actions.push((0, vendorReducer_1.updateVendors)(response.data.vendors, 'merge'));
67
66
  }
68
67
  actions.push((0, transactionReducer_1.updateTransaction)(transactionDetailKeyForResponse, response.data.transaction));
69
- const updatedVendor = response.data.vendors?.[0];
70
68
  actions.push((0, transactionDetailReducer_1.initializeTransactionDetailLocalData)({
71
69
  transactionId: transactionIdResp,
72
- vendorId: updatedVendor != null
73
- ? (0, vendorPayload_1.getVendorPayloadIdentifier)(updatedVendor) ?? undefined
74
- : undefined,
70
+ vendorId: response.data.vendors?.[0]?.vendor_id,
75
71
  }));
76
72
  actions.push((0, transactionDetailReducer_1.updateTransactionDetailSaveStatus)(transactionIdResp, 'Completed'));
77
73
  let callMarkTransactionAsNotMiscategorized = true;
@@ -13,9 +13,7 @@ _state$) => actions$.pipe((0, operators_1.filter)(trendWithTransactionsReducer_1
13
13
  return (0, rxjs_1.of)((0, trendReducer_1.fetchIncomeTrend)(entity.id, entity.name));
14
14
  }
15
15
  if (entity.type === 'vendor') {
16
- // QBO-only vendors may lack zeniId; fall back to entity.id so spend
17
- // trend state still keys off the resolved vendor identifier.
18
- return (0, rxjs_1.of)((0, trendReducer_1.fetchExpenseTrend)(entity.id, entity.name, entity.zeniId ?? entity.id));
16
+ return (0, rxjs_1.of)((0, trendReducer_1.fetchExpenseTrend)(entity.id, entity.name, entity.zeniId));
19
17
  }
20
18
  return (0, rxjs_1.from)([]);
21
19
  }));
@@ -3,7 +3,6 @@ var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.updateVendorFiling1099DownloadData = exports.fetchVendorsFiling1099Download = exports.updateFiling1099SearchUIState = exports.updateFiling1099SortUIState = exports.updateFiling1099ScrollYOffset = exports.clearVendorsFiling1099List = exports.updateVendorFiling1099ListFailure = exports.updateVendorsFiling1099List = exports.fetchVendorsFiling1099List = exports.fetchVendorsFiling1099All = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
- const vendorPayload_1 = require("../../../entity/vendor/vendorPayload");
7
6
  const zeniDayJS_1 = require("../../../zeniDayJS");
8
7
  exports.initialState = {
9
8
  fetchState: 'Not-Started',
@@ -80,9 +79,7 @@ const vendorFiling1099List = (0, toolkit_1.createSlice)({
80
79
  },
81
80
  updateVendorsFiling1099List(draft, action) {
82
81
  const { response } = action.payload;
83
- const newVendorIds = (response.data?.report.vendors
84
- ?.map((vendor) => (0, vendorPayload_1.getVendorPayloadIdentifier)(vendor))
85
- .filter((vendorId) => vendorId != null)) ?? [];
82
+ const newVendorIds = response.data?.report.vendors?.map((vendor) => vendor.vendor_id) ?? [];
86
83
  draft.vendorIds = [...new Set([...draft.vendorIds, ...newVendorIds])];
87
84
  draft.isVendor1099Populated =
88
85
  response.data?.report.is_vendor_1099_populated ?? true;
@@ -3,7 +3,6 @@ var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.updateYTDSelectionUIState = exports.updatePageToken = exports.updateSortUiState = exports.updateScrollYOffset = exports.clearVendorsList = exports.updateVendorListFailure = exports.updateVendorsList = exports.fetchVendorsList = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
- const vendorPayload_1 = require("../../entity/vendor/vendorPayload");
7
6
  const zeniDayJS_1 = require("../../zeniDayJS");
8
7
  exports.initialState = {
9
8
  fetchState: 'Not-Started',
@@ -89,9 +88,7 @@ const vendorList = (0, toolkit_1.createSlice)({
89
88
  },
90
89
  updateVendorsList(draft, action) {
91
90
  const { response, searchString, view } = action.payload;
92
- const newVendorIds = (response.data?.vendors
93
- ?.map((vendor) => (0, vendorPayload_1.getVendorPayloadIdentifier)(vendor))
94
- .filter((vendorId) => vendorId != null)) ?? [];
91
+ const newVendorIds = response.data?.vendors?.map((vendor) => vendor.vendor_id) ?? [];
95
92
  if (searchString.length > 0) {
96
93
  if (action.payload.keepExistingListItems === false) {
97
94
  draft.searchResults = newVendorIds;
@@ -5,7 +5,6 @@ exports.updateVendorDetailsViewFailureOrSuccess = exports.saveVendorDetailsView
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const attachmentPayload_1 = require("../../../entity/transaction/payloadTypes/attachmentPayload");
7
7
  const commonTypes_1 = require("../common/state/commonTypes");
8
- const vendorPayload_1 = require("../../../entity/vendor/vendorPayload");
9
8
  exports.initialState = {
10
9
  vendorFirstReviewViewLocalDataById: {},
11
10
  fetchState: 'Not-Started',
@@ -304,14 +303,7 @@ const toVendorReviewViewUpdatedVendorLocalData = (vendorId, vendorPayload) => {
304
303
  const toVendorReviewViewLocalDataById = (vendorsPayload) => {
305
304
  const vendorById = {};
306
305
  vendorsPayload.forEach((vendor) => {
307
- const resolvedVendorId = (0, vendorPayload_1.getVendorPayloadIdentifier)(vendor);
308
- if (resolvedVendorId == null) {
309
- return;
310
- }
311
- const vendorView = mapPayloadToVendorFirstReviewView({
312
- ...vendor,
313
- vendor_id: resolvedVendorId,
314
- });
306
+ const vendorView = mapPayloadToVendorFirstReviewView(vendor);
315
307
  vendorById[vendorView.selectedVendorId] = {
316
308
  vendorFirstReviewViewLocalData: vendorView,
317
309
  saveStatus: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.1.30",
3
+ "version": "5.1.31",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -79,7 +79,6 @@
79
79
  "ts-prune": "^0.10.3",
80
80
  "ts-unused-exports": "^11.0.1",
81
81
  "typescript": "^5.7.3",
82
- "vite": "^7.3.5",
83
82
  "vitest": "^4.1.8"
84
83
  },
85
84
  "dependencies": {
@@ -130,9 +129,7 @@
130
129
  "postversion": "git push && git push --tags",
131
130
  "check-dependencies": "node ./scripts/check_dependencies.js",
132
131
  "clean-overrides": "node ./scripts/clean_overrides.js",
133
- "create-or-update-release-branch": "chmod +x ./scripts/create_or_update_release_branch.sh && ./scripts/create_or_update_release_branch.sh",
134
- "bump-versions-master": "chmod +x ./scripts/bump_versions_master.sh && ./scripts/bump_versions_master.sh",
135
- "bump-versions-beta": "chmod +x ./scripts/bump_versions_beta.sh && ./scripts/bump_versions_beta.sh",
132
+ "create-release-branch": "chmod +x ./scripts/create_release_branch.sh && ./scripts/create_release_branch.sh",
136
133
  "bump-update-web-app-cockpit-beta": "chmod +x ./scripts/bump_and_update_web_app_ui_beta.sh && ./scripts/bump_and_update_web_app_ui_beta.sh",
137
134
  "send-release-notes": "chmod +x ./scripts/send_release_notes.sh && ./scripts/send_release_notes.sh",
138
135
  "update-slack-group-topic": "chmod +x ./scripts/update-slack-group-topic.sh && ./scripts/update-slack-group-topic.sh",
@@ -1,6 +0,0 @@
1
- /**
2
- * Resolves an entity identifier from a primary id and optional fallback id.
3
- * Treats null and empty string as absent so JE/Deposit payloads can fall back
4
- * to qbo_id uniformly across customer and vendor mappers.
5
- */
6
- export declare const resolvePayloadIdentifier: (primaryId: string | null | undefined, fallbackId: string | null | undefined) => string | null;