@tesouro/embedded-components-react 0.5.224 → 0.5.226

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 (41) hide show
  1. package/README.md +335 -413
  2. package/dist/index.d.ts +23 -2
  3. package/dist/index.js +1 -1
  4. package/dist/lib/ReceivablesWidget.d.ts +23 -2
  5. package/dist/lib/ReceivablesWidget.js +1 -1
  6. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/data-access/dist/index.js +4 -4
  7. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/data-access/dist/index10.js +45 -31
  8. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index.js +1 -1
  9. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index12.js +51 -32
  10. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index13.js +20 -1
  11. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index15.js +17 -202
  12. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index16.js +220 -31
  13. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index17.js +32 -145
  14. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index18.js +126 -44
  15. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index19.js +145 -117
  16. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index20.js +46 -58
  17. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index21.js +113 -87
  18. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index22.js +58 -116
  19. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index23.js +98 -225
  20. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index24.js +111 -27
  21. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index25.js +225 -462
  22. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index26.js +34 -41
  23. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index27.js +627 -34
  24. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index28.js +39 -77
  25. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index29.js +34 -112
  26. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index30.js +75 -310
  27. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index31.js +124 -0
  28. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index32.js +324 -0
  29. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index6.js +20 -15
  30. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index8.js +56 -53
  31. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index9.js +33 -29
  32. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/ui/dist/index25.js +184 -162
  33. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/ui/dist/index4.js +1 -3
  34. package/dist/libs/tesouro-embedded-components-react/invoicing-widget/ui/dist/index6.js +78 -69
  35. package/dist/libs/tesouro-embedded-components-react/shared/counterpart-management/feature/dist/lib/CounterpartSelector.js +7 -6
  36. package/dist/libs/tesouro-embedded-components-react/shared/counterpart-management/ui/dist/index15.js +20 -19
  37. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/index.js +39 -39
  38. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/@tanstack/react-query.gen.js +210 -199
  39. package/dist/libs/tesouro-embedded-components-react/shared/data-access/dist/lib/rest/sdk.gen.js +60 -52
  40. package/dist/libs/tesouro-embedded-components-react/shared/feature/dist/lib/analytics/build-info.js +1 -1
  41. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -4955,8 +4955,6 @@ interface ReceivableFormSheetLabels extends ReceivableBillingSectionLabels, Rece
4955
4955
  addLineItemButton: string;
4956
4956
  removeLineItemButton: string;
4957
4957
  cancelButton: string;
4958
- createButton: string;
4959
- updateButton: string;
4960
4958
  notesHeading: string;
4961
4959
  notesDescription: string;
4962
4960
  optionalSuffix: string;
@@ -5204,6 +5202,9 @@ interface ReceivableMessageLabels {
5204
5202
  recurrenceRemoveRecipient: string;
5205
5203
  recurrenceActivateButton: string;
5206
5204
  recurrenceUpdateButton: string;
5205
+ saveDraftButton: string;
5206
+ updateDraftButton: string;
5207
+ issueButton: string;
5207
5208
  recurrenceStartDateRequired: string;
5208
5209
  recurrenceDayOfMonthRequired: string;
5209
5210
  recurrenceDayOfWeekRequired: string;
@@ -5250,6 +5251,23 @@ interface ReceivableMessageLabels {
5250
5251
  issueRemindersDisabled: string;
5251
5252
  issueRemindersNoEmail: string;
5252
5253
  issueRemindersDisabledNoEmail: string;
5254
+ lineItemNameRequired: string;
5255
+ lineItemQuantityRequired: string;
5256
+ lineItemsRequired: string;
5257
+ paymentTermsRequired: string;
5258
+ bankAccountRequired: string;
5259
+ issueTaxIdRequired: string;
5260
+ issueBankAccountUnavailable: string;
5261
+ issueChecksLoading: string;
5262
+ attachmentsUploading: string;
5263
+ issueFailedAfterSave: string;
5264
+ /** `{errorMessage}` is replaced with the API's reason. */
5265
+ createFailed: string;
5266
+ /** `{errorMessage}` is replaced with the API's reason. */
5267
+ updateFailed: string;
5268
+ unknownError: string;
5269
+ /** `{message}` is the first reasons, `{count}` how many more there are. */
5270
+ apiErrorsSummary: string;
5253
5271
  /** `{taxId}` is replaced with the party's tax ID. */
5254
5272
  previewTaxId: string;
5255
5273
  previewTaxableYes: string;
@@ -5275,6 +5293,9 @@ interface ReceivableMessageLabels {
5275
5293
  previewRoutingNumber: string;
5276
5294
  /** `{value}` is replaced with the account number. */
5277
5295
  previewAccountNumber: string;
5296
+ /** `{name}` is replaced with the issuer's name. */
5297
+ previewLogoAlt: string;
5298
+ previewLogoAltNoName: string;
5278
5299
  }
5279
5300
 
5280
5301
  interface ReceivablesWidgetOwnProps {
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ import { InsightsWidget as L } from "./libs/tesouro-embedded-components-react/in
27
27
  import { UploadReceiptWidget as R } from "./libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index2.js";
28
28
  import { ExpenseManagementWidget as z } from "./libs/tesouro-embedded-components-react/expense-management-widget/feature/dist/index21.js";
29
29
  import { InvoicingWidget as B } from "./libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index3.js";
30
- import { ReceivablesWidget as V } from "./libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index30.js";
30
+ import { ReceivablesWidget as V } from "./libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index32.js";
31
31
  import { SettingsSection as H } from "./libs/tesouro-embedded-components-react/settings-widget/feature/dist/index4.js";
32
32
  import { HELP_FAQ_EN as U } from "./libs/tesouro-embedded-components-react/settings-widget/help/ui/contract/dist/index3.js";
33
33
  import { SettingsWidget as W } from "./libs/tesouro-embedded-components-react/settings-widget/feature/dist/index6.js";
@@ -1015,8 +1015,6 @@ interface ReceivableFormSheetLabels extends ReceivableBillingSectionLabels, Rece
1015
1015
  addLineItemButton: string;
1016
1016
  removeLineItemButton: string;
1017
1017
  cancelButton: string;
1018
- createButton: string;
1019
- updateButton: string;
1020
1018
  notesHeading: string;
1021
1019
  notesDescription: string;
1022
1020
  optionalSuffix: string;
@@ -1264,6 +1262,9 @@ interface ReceivableMessageLabels {
1264
1262
  recurrenceRemoveRecipient: string;
1265
1263
  recurrenceActivateButton: string;
1266
1264
  recurrenceUpdateButton: string;
1265
+ saveDraftButton: string;
1266
+ updateDraftButton: string;
1267
+ issueButton: string;
1267
1268
  recurrenceStartDateRequired: string;
1268
1269
  recurrenceDayOfMonthRequired: string;
1269
1270
  recurrenceDayOfWeekRequired: string;
@@ -1310,6 +1311,23 @@ interface ReceivableMessageLabels {
1310
1311
  issueRemindersDisabled: string;
1311
1312
  issueRemindersNoEmail: string;
1312
1313
  issueRemindersDisabledNoEmail: string;
1314
+ lineItemNameRequired: string;
1315
+ lineItemQuantityRequired: string;
1316
+ lineItemsRequired: string;
1317
+ paymentTermsRequired: string;
1318
+ bankAccountRequired: string;
1319
+ issueTaxIdRequired: string;
1320
+ issueBankAccountUnavailable: string;
1321
+ issueChecksLoading: string;
1322
+ attachmentsUploading: string;
1323
+ issueFailedAfterSave: string;
1324
+ /** `{errorMessage}` is replaced with the API's reason. */
1325
+ createFailed: string;
1326
+ /** `{errorMessage}` is replaced with the API's reason. */
1327
+ updateFailed: string;
1328
+ unknownError: string;
1329
+ /** `{message}` is the first reasons, `{count}` how many more there are. */
1330
+ apiErrorsSummary: string;
1313
1331
  /** `{taxId}` is replaced with the party's tax ID. */
1314
1332
  previewTaxId: string;
1315
1333
  previewTaxableYes: string;
@@ -1335,6 +1353,9 @@ interface ReceivableMessageLabels {
1335
1353
  previewRoutingNumber: string;
1336
1354
  /** `{value}` is replaced with the account number. */
1337
1355
  previewAccountNumber: string;
1356
+ /** `{name}` is replaced with the issuer's name. */
1357
+ previewLogoAlt: string;
1358
+ previewLogoAltNoName: string;
1338
1359
  }
1339
1360
 
1340
1361
  interface ReceivablesWidgetOwnProps {
@@ -1,3 +1,3 @@
1
- import { ReceivablesWidget as e } from "../libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index30.js";
1
+ import { ReceivablesWidget as e } from "../libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index32.js";
2
2
  import "../libs/tesouro-embedded-components-react/invoicing-widget/feature/dist/index.js";
3
3
  export { e as ReceivablesWidget };
@@ -7,7 +7,7 @@ import { useSendReceivableEmailMutation as a } from "./index5.js";
7
7
  import { useAcceptReceivableMutation as o, useCancelReceivableMutation as s, useCloneReceivableMutation as c, useCreateReceivableMutation as l, useDeclineReceivableMutation as u, useDeleteReceivableMutation as d, useIssueReceivableMutation as f, useUpdateReceivableMutation as p } from "./index7.js";
8
8
  import "./index8.js";
9
9
  import { useMarkReceivablePaidMutation as m, useMarkReceivablePartiallyPaidMutation as h, useMarkReceivableUncollectibleMutation as g } from "./index9.js";
10
- import { useReceivableHistoryQuery as _, useReceivableMailsQuery as v, useReceivablePdfLinkQuery as y, useReceivableQuery as b, useReceivablesQuery as x } from "./index10.js";
11
- import { useCreateOverdueReminderMutation as S, useCreatePaymentReminderMutation as C, useCreateRecurrenceMutation as w, useOverdueRemindersQuery as T, usePaymentRemindersQuery as E, useRecurrenceQuery as D, useUpdateRecurrenceMutation as O } from "./index11.js";
12
- import { useReceivablesAnalyticsQuery as k } from "./index12.js";
13
- export { o as useAcceptReceivableMutation, s as useCancelReceivableMutation, c as useCloneReceivableMutation, t as useCreateEntityBankAccountMutation, S as useCreateOverdueReminderMutation, C as useCreatePaymentReminderMutation, l as useCreateReceivableMutation, w as useCreateRecurrenceMutation, u as useDeclineReceivableMutation, r as useDeleteReceivableAttachmentMutation, d as useDeleteReceivableMutation, f as useIssueReceivableMutation, m as useMarkReceivablePaidMutation, h as useMarkReceivablePartiallyPaidMutation, g as useMarkReceivableUncollectibleMutation, T as useOverdueRemindersQuery, n as usePaymentAccountsQuery, E as usePaymentRemindersQuery, e as usePaymentTermsQuery, _ as useReceivableHistoryQuery, v as useReceivableMailsQuery, y as useReceivablePdfLinkQuery, b as useReceivableQuery, k as useReceivablesAnalyticsQuery, x as useReceivablesQuery, D as useRecurrenceQuery, a as useSendReceivableEmailMutation, p as useUpdateReceivableMutation, O as useUpdateRecurrenceMutation, i as useUploadReceivableAttachmentMutation };
10
+ import { useReceivableHistoryQuery as _, useReceivableMailsQuery as v, useReceivablePdfLinkQuery as y, useReceivableQuery as b, useReceivableRequiredFieldsQuery as x, useReceivablesQuery as S } from "./index10.js";
11
+ import { useCreateOverdueReminderMutation as C, useCreatePaymentReminderMutation as w, useCreateRecurrenceMutation as T, useOverdueRemindersQuery as E, usePaymentRemindersQuery as D, useRecurrenceQuery as O, useUpdateRecurrenceMutation as k } from "./index11.js";
12
+ import { useReceivablesAnalyticsQuery as A } from "./index12.js";
13
+ export { o as useAcceptReceivableMutation, s as useCancelReceivableMutation, c as useCloneReceivableMutation, t as useCreateEntityBankAccountMutation, C as useCreateOverdueReminderMutation, w as useCreatePaymentReminderMutation, l as useCreateReceivableMutation, T as useCreateRecurrenceMutation, u as useDeclineReceivableMutation, r as useDeleteReceivableAttachmentMutation, d as useDeleteReceivableMutation, f as useIssueReceivableMutation, m as useMarkReceivablePaidMutation, h as useMarkReceivablePartiallyPaidMutation, g as useMarkReceivableUncollectibleMutation, E as useOverdueRemindersQuery, n as usePaymentAccountsQuery, D as usePaymentRemindersQuery, e as usePaymentTermsQuery, _ as useReceivableHistoryQuery, v as useReceivableMailsQuery, y as useReceivablePdfLinkQuery, b as useReceivableQuery, x as useReceivableRequiredFieldsQuery, A as useReceivablesAnalyticsQuery, S as useReceivablesQuery, O as useRecurrenceQuery, a as useSendReceivableEmailMutation, p as useUpdateReceivableMutation, k as useUpdateRecurrenceMutation, i as useUploadReceivableAttachmentMutation };
@@ -2,79 +2,93 @@
2
2
  "use client";
3
3
  "use client";
4
4
  "use client";
5
- import { getReceivablesIdHistoryOptions as e, getReceivablesIdMailsOptions as t, getReceivablesIdOptions as n, getReceivablesIdPdfLinkOptions as r, getReceivablesOptions as i } from "../../../shared/data-access/dist/lib/rest/@tanstack/react-query.gen.js";
6
- import { withAuthEpoch as a } from "../../../shared/data-access/dist/lib/withAuthEpoch.js";
7
- import { useEmbedApi as o } from "../../../shared/data-access/dist/lib/EmbedApiContext.js";
8
- import { organizationHeaders as s } from "../../../shared/data-access/dist/lib/organizationHeaders.js";
5
+ import { getReceivablesIdHistoryOptions as e, getReceivablesIdMailsOptions as t, getReceivablesIdOptions as n, getReceivablesIdPdfLinkOptions as r, getReceivablesOptions as i, getReceivablesRequiredFieldsOptions as a } from "../../../shared/data-access/dist/lib/rest/@tanstack/react-query.gen.js";
6
+ import { withAuthEpoch as o } from "../../../shared/data-access/dist/lib/withAuthEpoch.js";
7
+ import { useEmbedApi as s } from "../../../shared/data-access/dist/lib/EmbedApiContext.js";
8
+ import { organizationHeaders as c } from "../../../shared/data-access/dist/lib/organizationHeaders.js";
9
9
  import "../../../shared/data-access/dist/index.js";
10
- import { useQuery as c } from "@tanstack/react-query";
10
+ import { useQuery as l } from "@tanstack/react-query";
11
11
  //#region ../../libs/tesouro-embedded-components-react/invoicing-widget/data-access/dist/index10.js
12
- function l({ enabled: e, ...t } = {}) {
13
- let { client: n, organizationId: r, widgetToken: l, authEpoch: u, organizationPending: d } = o(), f = !!(r && l) && (e === !0 || e === void 0), p = i({
12
+ function u({ enabled: e, ...t } = {}) {
13
+ let { client: n, organizationId: r, widgetToken: a, authEpoch: u, organizationPending: d } = s(), f = !!(r && a) && (e === !0 || e === void 0), p = i({
14
14
  client: n,
15
- headers: s(r),
15
+ headers: c(r),
16
16
  query: t
17
17
  });
18
- return c({
19
- ...a(p, {
18
+ return l({
19
+ ...o(p, {
20
20
  authEpoch: u,
21
21
  organizationPending: d
22
22
  }, { carryWithinOrg: !0 }),
23
23
  enabled: f
24
24
  });
25
25
  }
26
- function u(e, { enabled: t = !0 } = {}) {
27
- let { client: r, organizationId: i, widgetToken: l, authEpoch: u, organizationPending: d } = o(), f = !!(i && l && e) && t, p = n({
26
+ function d(e, { enabled: t = !0 } = {}) {
27
+ let { client: r, organizationId: i, widgetToken: a, authEpoch: u, organizationPending: d } = s(), f = !!(i && a && e) && t, p = n({
28
28
  client: r,
29
- headers: s(i),
29
+ headers: c(i),
30
30
  path: { receivable_id: e ?? "" }
31
31
  });
32
- return c({
33
- ...a(p, {
32
+ return l({
33
+ ...o(p, {
34
34
  authEpoch: u,
35
35
  organizationPending: d
36
36
  }),
37
37
  enabled: f
38
38
  });
39
39
  }
40
- function d(t, { enabled: n, ...r } = {}) {
41
- let { client: i, organizationId: l, widgetToken: u, authEpoch: d, organizationPending: f } = o(), p = !!(l && u && t) && (n === !0 || n === void 0), m = e({
40
+ function f({ enabled: e, ...t } = {}) {
41
+ let { client: n, organizationId: r, widgetToken: i, authEpoch: u, organizationPending: d } = s(), f = !!(r && i) && (e === !0 || e === void 0), p = a({
42
+ client: n,
43
+ headers: c(r),
44
+ query: t
45
+ });
46
+ return l({
47
+ ...o(p, {
48
+ authEpoch: u,
49
+ organizationPending: d
50
+ }),
51
+ enabled: f
52
+ });
53
+ }
54
+ function p(t, { enabled: n, ...r } = {}) {
55
+ let { client: i, organizationId: a, widgetToken: u, authEpoch: d, organizationPending: f } = s(), p = !!(a && u && t) && (n === !0 || n === void 0), m = e({
42
56
  client: i,
43
- headers: s(l),
57
+ headers: c(a),
44
58
  path: { receivable_id: t ?? "" },
45
59
  query: r
46
60
  });
47
- return c({
48
- ...a(m, {
61
+ return l({
62
+ ...o(m, {
49
63
  authEpoch: d,
50
64
  organizationPending: f
51
65
  }),
52
66
  enabled: p
53
67
  });
54
68
  }
55
- function f(e, { enabled: n, ...r } = {}) {
56
- let { client: i, organizationId: l, widgetToken: u, authEpoch: d, organizationPending: f } = o(), p = !!(l && u && e) && (n === !0 || n === void 0), m = t({
69
+ function m(e, { enabled: n, ...r } = {}) {
70
+ let { client: i, organizationId: a, widgetToken: u, authEpoch: d, organizationPending: f } = s(), p = !!(a && u && e) && (n === !0 || n === void 0), m = t({
57
71
  client: i,
58
- headers: s(l),
72
+ headers: c(a),
59
73
  path: { receivable_id: e ?? "" },
60
74
  query: r
61
75
  });
62
- return c({
63
- ...a(m, {
76
+ return l({
77
+ ...o(m, {
64
78
  authEpoch: d,
65
79
  organizationPending: f
66
80
  }),
67
81
  enabled: p
68
82
  });
69
83
  }
70
- function p(e, { enabled: t = !0 } = {}) {
71
- let { client: n, organizationId: i, widgetToken: l, authEpoch: u, organizationPending: d } = o(), f = !!(i && l && e) && t, p = r({
84
+ function h(e, { enabled: t = !0 } = {}) {
85
+ let { client: n, organizationId: i, widgetToken: a, authEpoch: u, organizationPending: d } = s(), f = !!(i && a && e) && t, p = r({
72
86
  client: n,
73
- headers: s(i),
87
+ headers: c(i),
74
88
  path: { receivable_id: e ?? "" }
75
89
  });
76
- return c({
77
- ...a(p, {
90
+ return l({
91
+ ...o(p, {
78
92
  authEpoch: u,
79
93
  organizationPending: d
80
94
  }),
@@ -82,4 +96,4 @@ function p(e, { enabled: t = !0 } = {}) {
82
96
  });
83
97
  }
84
98
  //#endregion
85
- export { d as useReceivableHistoryQuery, f as useReceivableMailsQuery, p as useReceivablePdfLinkQuery, u as useReceivableQuery, l as useReceivablesQuery };
99
+ export { p as useReceivableHistoryQuery, m as useReceivableMailsQuery, h as useReceivablePdfLinkQuery, d as useReceivableQuery, f as useReceivableRequiredFieldsQuery, u as useReceivablesQuery };
@@ -1,3 +1,3 @@
1
1
  import { InvoicingWidget as e } from "./index3.js";
2
- import { ReceivablesWidget as t } from "./index30.js";
2
+ import { ReceivablesWidget as t } from "./index32.js";
3
3
  export { e as InvoicingWidget, t as ReceivablesWidget };
@@ -254,27 +254,36 @@ function z(e, t) {
254
254
  ].map((e) => e.email).filter(Boolean);
255
255
  return n.length > 0 ? n.join(", ") : t.recipientsNone;
256
256
  }
257
- function B({ values: e, billingAddressId: t, messages: n }) {
258
- let r = {};
259
- e.customerId ? t || (r.customerId = n.customerAddressRequired) : r.customerId = n.customerRequired, e.currency || (r.currency = n.currencyRequired);
260
- let i = u(e.lineItems, {
257
+ function B({ values: e, billingAddressId: t, messages: n, willIssue: r = !1, hasStartedRecurrence: i = !1 }) {
258
+ let a = {};
259
+ e.customerId ? t || (a.customerId = n.customerAddressRequired) : a.customerId = n.customerRequired, e.currency || (a.currency = n.currencyRequired), r && !e.paymentTermsId && (a.paymentTermsId = n.paymentTermsRequired), r && !e.bankAccountId && (a.bankAccountId = n.bankAccountRequired);
260
+ let o = u(e.lineItems, {
261
261
  currency: e.currency,
262
- messages: n
263
- }), a = c(i, x(e, n));
264
- i && (r.lineItems = i), a && (r.lineItemsSummary = a);
265
- let o = b(e, n);
266
- return o && (r.discount = o), r;
262
+ messages: n,
263
+ requireComplete: r || i
264
+ }), s = c(o, x(e, n), (r || i) && e.lineItems.length === 0 ? n.lineItemsRequired : void 0);
265
+ o && (a.lineItems = o), s && (a.lineItemsSummary = s);
266
+ let l = b(e, n);
267
+ return l && (a.discount = l), a;
267
268
  }
268
269
  function V(e) {
269
270
  return Object.keys(e).length > 0;
270
271
  }
271
- function H({ bankAccountId: e, bankAccountType: t }) {
272
+ function H(e, t) {
273
+ return !V(B({
274
+ values: G(e),
275
+ billingAddressId: e.type === "invoice" ? e.counterpart_billing_address?.id ?? void 0 : void 0,
276
+ messages: t,
277
+ willIssue: !0
278
+ }));
279
+ }
280
+ function U({ bankAccountId: e, bankAccountType: t }) {
272
281
  return {
273
282
  bank_account_id: e || void 0,
274
283
  bank_account_type: e && t || void 0
275
284
  };
276
285
  }
277
- function U({ values: e, billingAddressId: t, unitNamesById: n }) {
286
+ function W({ values: e, billingAddressId: t, unitNamesById: n }) {
278
287
  let i = e.lineItems.filter((e) => !r(e)).map((t) => a({
279
288
  lineItem: t,
280
289
  currency: e.currency,
@@ -288,7 +297,7 @@ function U({ values: e, billingAddressId: t, unitNamesById: n }) {
288
297
  memo: e.openingNote,
289
298
  footer: e.closingNote,
290
299
  discount: v(e) ?? void 0,
291
- ...H(e)
300
+ ...U(e)
292
301
  };
293
302
  return e.type === "quote" ? {
294
303
  ...o,
@@ -303,7 +312,7 @@ function U({ values: e, billingAddressId: t, unitNamesById: n }) {
303
312
  type: "invoice"
304
313
  };
305
314
  }
306
- function W(e, t) {
315
+ function G(e, t) {
307
316
  let r = e.type === "quote" ? "quote" : "invoice", i = l(e.line_items), a = e.type === "invoice" ? e : void 0, o = e.line_items.map((n) => s({
308
317
  lineItem: n,
309
318
  currency: e.currency,
@@ -314,8 +323,8 @@ function W(e, t) {
314
323
  type: r,
315
324
  customerId: e.counterpart_id,
316
325
  currency: e.currency,
317
- issueDate: J(e.issue_date),
318
- dueDate: e.type === "quote" ? J(e.expiry_date) : "",
326
+ issueDate: X(e.issue_date),
327
+ dueDate: e.type === "quote" ? X(e.expiry_date) : "",
319
328
  openingNote: e.memo ?? "",
320
329
  closingNote: e.footer ?? "",
321
330
  ...e.type === "invoice" ? g(e.payment_terms) : {},
@@ -324,16 +333,16 @@ function W(e, t) {
324
333
  ...y(e.discount, e.currency),
325
334
  lineItems: o.length > 0 ? o : [n(e.currency)],
326
335
  bankAccountId: e.bank_account_id ?? "",
327
- bankAccountType: G(e.bank_account_type),
336
+ bankAccountType: K(e.bank_account_type),
328
337
  paymentReminderId: a?.payment_reminder_id ?? "",
329
338
  overdueReminderId: a?.overdue_reminder_id ?? "",
330
339
  attachments: f(e)
331
340
  };
332
341
  }
333
- function G(e) {
342
+ function K(e) {
334
343
  return e === "BANK_DETAILS" || e === "INTERNAL" || e === "EXTERNAL" ? e : "";
335
344
  }
336
- function K({ values: e, billingAddressId: t, lineItemChanges: n }) {
345
+ function q({ values: e, billingAddressId: t, lineItemChanges: n }) {
337
346
  let r = {
338
347
  counterpart_billing_address_id: t,
339
348
  counterpart_id: e.customerId,
@@ -342,7 +351,7 @@ function K({ values: e, billingAddressId: t, lineItemChanges: n }) {
342
351
  memo: e.openingNote,
343
352
  footer: e.closingNote,
344
353
  discount: v(e),
345
- ...H(e)
354
+ ...U(e)
346
355
  };
347
356
  return e.type === "quote" ? { quote: {
348
357
  ...r,
@@ -358,7 +367,7 @@ function K({ values: e, billingAddressId: t, lineItemChanges: n }) {
358
367
  attachments: d(e.attachments) ?? null
359
368
  } };
360
369
  }
361
- function q({ values: e, originalLineItems: t, originalCurrency: n, unitNamesById: a, units: c }) {
370
+ function J({ values: e, originalLineItems: t, originalCurrency: n, unitNamesById: a, units: c }) {
362
371
  let u = l(t), d = i(e.taxRate, u), f = (e, t, n) => o({
363
372
  lineItem: e,
364
373
  currency: t,
@@ -384,20 +393,29 @@ function q({ values: e, originalLineItems: t, originalCurrency: n, unitNamesById
384
393
  ...v.length ? { remove: v } : {}
385
394
  };
386
395
  }
387
- function J(e) {
396
+ function Y({ values: e, originalLineItems: t, changes: n }) {
397
+ let i = e.lineItems.filter((e) => !r(e)).map((e) => e.id);
398
+ if (!t) return { created: i };
399
+ let a = new Set(t.map((e) => e.id));
400
+ return {
401
+ added: i.filter((e) => !a.has(e)),
402
+ replaced: n?.replace?.map((e) => e.id) ?? []
403
+ };
404
+ }
405
+ function X(e) {
388
406
  return e?.slice(0, 10) ?? "";
389
407
  }
390
- function Y(e, t) {
408
+ function Z(e, t) {
391
409
  let n = {};
392
410
  return e.to.trim() || (n.to = t.sendToRequired), e.subject.trim() || (n.subject = t.sendSubjectRequired), e.body.trim() || (n.body = t.sendBodyRequired), n;
393
411
  }
394
- function X(e) {
412
+ function Q(e) {
395
413
  return Object.keys(e).length > 0;
396
414
  }
397
- function Z(e) {
415
+ function $(e) {
398
416
  return e.split(",").map((e) => e.trim()).filter(Boolean);
399
417
  }
400
- function Q(e, t, n) {
418
+ function ee(e, t, n) {
401
419
  let r = {};
402
420
  if (e.mode === "partial") {
403
421
  let i = j(e.amountPaid, n);
@@ -405,10 +423,10 @@ function Q(e, t, n) {
405
423
  }
406
424
  return r;
407
425
  }
408
- function $(e) {
426
+ function te(e) {
409
427
  return Object.keys(e).length > 0;
410
428
  }
411
- function ee(e, t) {
429
+ function ne(e, t) {
412
430
  return {
413
431
  ...S,
414
432
  to: e?.counterpart_contact?.email ?? "",
@@ -416,14 +434,14 @@ function ee(e, t) {
416
434
  body: t.sendBodyDefault
417
435
  };
418
436
  }
419
- function te() {
437
+ function re() {
420
438
  return {
421
439
  ...C,
422
440
  paidAt: (/* @__PURE__ */ new Date()).toISOString().slice(0, 10)
423
441
  };
424
442
  }
425
- function ne() {
426
- return [
443
+ function ie(e = "all") {
444
+ let t = [
427
445
  "draft",
428
446
  "issued",
429
447
  "failed",
@@ -436,10 +454,11 @@ function ne() {
436
454
  "overdue",
437
455
  "uncollectible",
438
456
  "canceled"
439
- ].map((e) => ({
457
+ ];
458
+ return e !== "all" && !t.includes(e) && t.push(e), t.map((e) => ({
440
459
  value: e,
441
460
  label: e.split("_").map((e) => `${e.slice(0, 1).toUpperCase()}${e.slice(1)}`).join(" ")
442
461
  }));
443
462
  }
444
463
  //#endregion
445
- export { C as EMPTY_RECEIVABLE_PAYMENT_VALUES, S as EMPTY_RECEIVABLE_SEND_VALUES, F as buildReceivableActions, L as buildReceivableDetailsView, I as buildReceivableRows, D as coerceEnabledTabs, w as createEmptyReceivableFormValues, n as createLineItem, te as defaultPaymentValues, ee as defaultSendValues, k as formatDate, A as formatMoney, j as fromMajorUnits, M as getDocumentTitle, N as getDocumentTypeLabel, P as getStatusTone, $ as hasPaymentErrors, V as hasReceivableFormErrors, X as hasSendErrors, U as receivableFormValuesToCreatePayload, q as receivableFormValuesToLineItemChanges, K as receivableFormValuesToUpdatePayload, W as receivableToFormValues, O as resolveInitialTab, Z as splitEmailList, ne as statusFilterOptions, E as tabForType, T as typeForTab, Q as validatePaymentValues, B as validateReceivableForm, Y as validateSendValues };
464
+ export { C as EMPTY_RECEIVABLE_PAYMENT_VALUES, S as EMPTY_RECEIVABLE_SEND_VALUES, F as buildReceivableActions, L as buildReceivableDetailsView, I as buildReceivableRows, D as coerceEnabledTabs, w as createEmptyReceivableFormValues, n as createLineItem, re as defaultPaymentValues, ne as defaultSendValues, k as formatDate, A as formatMoney, j as fromMajorUnits, M as getDocumentTitle, N as getDocumentTypeLabel, P as getStatusTone, te as hasPaymentErrors, V as hasReceivableFormErrors, Q as hasSendErrors, H as isReceivableReadyToIssue, W as receivableFormValuesToCreatePayload, J as receivableFormValuesToLineItemChanges, q as receivableFormValuesToUpdatePayload, G as receivableToFormValues, O as resolveInitialTab, $ as splitEmailList, ie as statusFilterOptions, Y as submittedLineItemRows, E as tabForType, T as typeForTab, ee as validatePaymentValues, B as validateReceivableForm, Z as validateSendValues };
@@ -128,6 +128,9 @@ var e = {
128
128
  recurrenceRemoveRecipient: "Remove {recipient}",
129
129
  recurrenceActivateButton: "Activate recurring billing schedule",
130
130
  recurrenceUpdateButton: "Update recurring billing schedule",
131
+ saveDraftButton: "Save as draft",
132
+ updateDraftButton: "Update draft",
133
+ issueButton: "Issue invoice",
131
134
  recurrenceStartDateRequired: "Start date is required",
132
135
  recurrenceDayOfMonthRequired: "Day of month is required",
133
136
  recurrenceDayOfWeekRequired: "Day of week is required",
@@ -163,6 +166,20 @@ var e = {
163
166
  issueRemindersDisabled: "Payment reminders are disabled for this customer. Please enable them in the customer details or turn them off.",
164
167
  issueRemindersNoEmail: "No email address is added for the selected customer. Please add it to the customer details or turn off the reminders.",
165
168
  issueRemindersDisabledNoEmail: "Reminders are disabled for this customer, and no email address has been added for it. Please update the details or turn off reminders.",
169
+ lineItemNameRequired: "Name is a required field",
170
+ lineItemQuantityRequired: "Quantity is a required field",
171
+ lineItemsRequired: "Please, add at least 1 item to proceed with this invoice",
172
+ paymentTermsRequired: "Payment terms is a required field",
173
+ bankAccountRequired: "Choose how to get paid.",
174
+ issueTaxIdRequired: "Set your organization's Tax ID to issue invoice",
175
+ issueBankAccountUnavailable: "Contact your company admin to set up a bank account before creating an invoice.",
176
+ issueChecksLoading: "Please wait for invoice checks to finish.",
177
+ attachmentsUploading: "Please wait for attachments to finish uploading.",
178
+ issueFailedAfterSave: "The invoice was saved but could not be issued.",
179
+ createFailed: "Failed to create invoice: {errorMessage}",
180
+ updateFailed: "Failed to update receivable: {errorMessage}",
181
+ unknownError: "Unknown",
182
+ apiErrorsSummary: "{message} (+{count} more)",
166
183
  previewTaxId: "Tax: {taxId}",
167
184
  previewTaxableYes: "Yes",
168
185
  previewTaxableNo: "No",
@@ -179,7 +196,9 @@ var e = {
179
196
  previewEarlyPaymentDiscount: "{rate}% discount",
180
197
  previewAccountHolderName: "Account holder name: {value}",
181
198
  previewRoutingNumber: "Routing number: {value}",
182
- previewAccountNumber: "Account number: {value}"
199
+ previewAccountNumber: "Account number: {value}",
200
+ previewLogoAlt: "{name} logo",
201
+ previewLogoAltNoName: "Logo"
183
202
  };
184
203
  //#endregion
185
204
  export { e as RECEIVABLE_MESSAGE_LABELS_EN };