@hartl-services/medusa-base 2.10.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +44 -40
- package/.medusa/server/src/admin/index.mjs +44 -40
- package/.medusa/server/src/api/admin/tax-compliance/customer-addresses/[address_id]/tax-identification/route.js +15 -0
- package/.medusa/server/src/api/check-customer-address-tax-identification.js +93 -0
- package/.medusa/server/src/api/customer-address-identification-response.js +14 -0
- package/.medusa/server/src/api/middlewares.js +55 -1
- package/.medusa/server/src/api/store/carts/[id]/tax-identification/route.js +179 -0
- package/.medusa/server/src/api/store/customers/me/addresses/[address_id]/tax-identification/route.js +12 -0
- package/.medusa/server/src/api/store/customers/me/tax-identifications/route.js +14 -0
- package/.medusa/server/src/api/store/tax-identification-policy/route.js +21 -0
- package/.medusa/server/src/api/tax-identification-message.js +9 -0
- package/.medusa/server/src/api/to-response-amount.js +19 -0
- package/.medusa/server/src/email/application/deliver-ephemeral-auth-mail.js +2 -4
- package/.medusa/server/src/email/application/handle-password-reset-event.js +75 -27
- package/.medusa/server/src/email/rendering/default-templates.js +2 -1
- package/.medusa/server/src/email/rendering/render-email.js +2 -1
- package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +5 -1
- package/.medusa/server/src/email/templates/blocks/dynamic-blocks.js +5 -2
- package/.medusa/server/src/email/templates/defaults/documents.js +8 -1
- package/.medusa/server/src/email/templates/defaults/subjects.js +3 -1
- package/.medusa/server/src/email/templates/defaults/texts.js +4 -2
- package/.medusa/server/src/email/templates/render.js +2 -1
- package/.medusa/server/src/email/templates/sample-data.js +5 -1
- package/.medusa/server/src/email/types/email-kinds.js +3 -1
- package/.medusa/server/src/email/types/template-data.js +8 -1
- package/.medusa/server/src/jobs/tax-compliance-state-sync.js +26 -0
- package/.medusa/server/src/modules/email/migrations/Migration20261013120000.js +20 -0
- package/.medusa/server/src/modules/tax-compliance/domain/validation-policy.js +48 -0
- package/.medusa/server/src/modules/tax-compliance/index.js +15 -0
- package/.medusa/server/src/modules/tax-compliance/migrations/Migration20260814120459.js +18 -0
- package/.medusa/server/src/modules/tax-compliance/migrations/Migration20260814121724.js +14 -0
- package/.medusa/server/src/modules/tax-compliance/migrations/Migration20260814153410.js +14 -0
- package/.medusa/server/src/modules/tax-compliance/migrations/Migration20260929091620.js +27 -0
- package/.medusa/server/src/modules/tax-compliance/migrations/Migration20261011090147.js +16 -0
- package/.medusa/server/src/modules/tax-compliance/models/tax-compliance-state.js +29 -0
- package/.medusa/server/src/modules/tax-compliance/models/tax-compliance-validation.js +74 -0
- package/.medusa/server/src/modules/tax-compliance/runtime-settings.js +43 -0
- package/.medusa/server/src/modules/tax-compliance/service.js +693 -0
- package/.medusa/server/src/providers/tax-compliance/index.js +11 -0
- package/.medusa/server/src/providers/tax-compliance/service.js +179 -0
- package/.medusa/server/src/public/constants.js +4 -2
- package/.medusa/server/src/public/index.js +6 -2
- package/.medusa/server/src/public/tax-compliance.js +22 -0
- package/.medusa/server/src/shared/lib/index.js +2 -1
- package/.medusa/server/src/shared/lib/optional-registration.js +34 -0
- package/.medusa/server/src/shop-config/build-food-shop-config.js +12 -9
- package/.medusa/server/src/subscribers/tax-compliance-plugin-features-updated.js +25 -0
- package/.medusa/server/src/tax-compliance/complete-cart-hooks.js +26 -0
- package/.medusa/server/src/tax-compliance/integrations/finanzonline/client.js +222 -0
- package/.medusa/server/src/tax-compliance/integrations/finanzonline/validator.js +50 -0
- package/.medusa/server/src/tax-compliance/integrations/registry.js +26 -0
- package/.medusa/server/src/tax-compliance/integrations/validator.js +19 -0
- package/.medusa/server/src/tax-compliance/lib/order-tax-context.js +100 -0
- package/.medusa/server/src/tax-compliance/lib/tax-compliance-state.js +59 -0
- package/.medusa/server/src/tax-compliance/lib/tax-runtime-settings.js +79 -0
- package/.medusa/server/src/tax-compliance/plugin-features.js +73 -0
- package/.medusa/server/src/tax-compliance/resolve-services.js +7 -0
- package/.medusa/server/src/tax-compliance/types/tax-compliance.js +6 -0
- package/.medusa/server/src/workflows/documents/issue-invoice-after-shipment.js +25 -30
- package/.medusa/server/src/workflows/documents/issue-packing-list.js +3 -14
- package/.medusa/server/src/workflows/hooks/cart-tax-context.js +78 -0
- package/.medusa/server/src/workflows/hooks/order-tax-context.js +7 -0
- package/.medusa/server/src/workflows/hooks/shipping-tax-apportionment.js +145 -0
- package/.medusa/server/src/workflows/tax-compliance/apportion-order-shipping-tax.js +72 -0
- package/.medusa/server/src/workflows/tax-compliance/domain/requires-frozen-tax-evidence.js +27 -0
- package/.medusa/server/src/workflows/tax-compliance/freeze-order-evidence.js +125 -0
- package/.medusa/server/src/workflows/tax-compliance/submit-customer-address-tax-identification.js +18 -0
- package/.medusa/server/src/workflows/tax-compliance/submit-tax-identification.js +18 -0
- package/README.md +369 -27
- package/dist/email/types/email-kinds.d.ts +3 -2
- package/dist/email/types/email-kinds.js +2 -0
- package/dist/email/types/shop-configuration.d.ts +8 -0
- package/dist/email/types/template-data.d.ts +6 -1
- package/dist/email/types/template-data.js +7 -0
- package/dist/public/constants.d.ts +2 -0
- package/dist/public/constants.js +3 -1
- package/dist/public/index.d.ts +2 -1
- package/dist/public/index.js +5 -1
- package/dist/public/tax-compliance.d.ts +30 -0
- package/dist/public/tax-compliance.js +21 -0
- package/dist/shared/lib/index.d.ts +1 -0
- package/dist/shared/lib/index.js +1 -0
- package/dist/shared/lib/optional-registration.d.ts +18 -0
- package/dist/shared/lib/optional-registration.js +33 -0
- package/dist/shop-config/build-food-shop-config.d.ts +2 -2
- package/dist/shop-config/build-food-shop-config.js +11 -8
- package/package.json +5 -4
|
@@ -3533,6 +3533,7 @@ const KINDS = [
|
|
|
3533
3533
|
"order.return_received",
|
|
3534
3534
|
"order.refunded",
|
|
3535
3535
|
"auth.password_reset",
|
|
3536
|
+
"auth.admin_password_reset",
|
|
3536
3537
|
"auth.verification",
|
|
3537
3538
|
"auth.login_code",
|
|
3538
3539
|
"affiliate.consignment_report_due",
|
|
@@ -3549,6 +3550,7 @@ const KIND_LABELS = {
|
|
|
3549
3550
|
"order.return_received": "Retoureneingang",
|
|
3550
3551
|
"order.refunded": "Rückerstattung",
|
|
3551
3552
|
"auth.password_reset": "Passwort zurücksetzen",
|
|
3553
|
+
"auth.admin_password_reset": "Admin-Passwort zurücksetzen",
|
|
3552
3554
|
"auth.verification": "Konto bestätigen",
|
|
3553
3555
|
"auth.login_code": "Anmeldecode",
|
|
3554
3556
|
"affiliate.consignment_report_due": "Affiliate-Meldung",
|
|
@@ -3657,6 +3659,7 @@ const EMAIL_TEMPLATE_GROUPS = {
|
|
|
3657
3659
|
};
|
|
3658
3660
|
const ACCOUNT_KINDS = [
|
|
3659
3661
|
"auth.password_reset",
|
|
3662
|
+
"auth.admin_password_reset",
|
|
3660
3663
|
"auth.verification",
|
|
3661
3664
|
"auth.login_code",
|
|
3662
3665
|
"user.invite"
|
|
@@ -3786,7 +3789,7 @@ const ATTEMPT_STATUS_BADGES = {
|
|
|
3786
3789
|
failed: { label: ATTEMPT_STATUS_LABELS.failed, color: "red" },
|
|
3787
3790
|
unknown: { label: ATTEMPT_STATUS_LABELS.unknown, color: "red" }
|
|
3788
3791
|
};
|
|
3789
|
-
const canResend = (message) => message.kind !== "auth.password_reset" && message.kind !== "auth.verification" && message.kind !== "auth.login_code" && (message.status === "sent" || message.status === "unknown" || message.status === "failed");
|
|
3792
|
+
const canResend = (message) => message.kind !== "auth.password_reset" && message.kind !== "auth.admin_password_reset" && message.kind !== "auth.verification" && message.kind !== "auth.login_code" && (message.status === "sent" || message.status === "unknown" || message.status === "failed");
|
|
3790
3793
|
const formatResource = (message) => message.resource_id ? `${message.resource_type} · ${message.resource_id}` : message.resource_type;
|
|
3791
3794
|
const emailLogDetailFields = (message) => [
|
|
3792
3795
|
{ label: "Art", value: KIND_LABELS[message.kind], mono: false },
|
|
@@ -4411,33 +4414,6 @@ const handle$7 = {
|
|
|
4411
4414
|
breadcrumb: () => texts.breadcrumbs.emailAttachments
|
|
4412
4415
|
};
|
|
4413
4416
|
const EmailAttachmentsRoute = () => /* @__PURE__ */ jsxRuntime.jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsxRuntime.jsx(EmailAttachmentsPage, {}) });
|
|
4414
|
-
const EmailDeliveryPage = () => {
|
|
4415
|
-
const query = usePluginFeature("email");
|
|
4416
|
-
const plugin2 = query.data?.plugin;
|
|
4417
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-3", children: [
|
|
4418
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4419
|
-
AdminPageHeader,
|
|
4420
|
-
{
|
|
4421
|
-
badges: plugin2 && /* @__PURE__ */ jsxRuntime.jsx(ui.StatusBadge, { color: plugin2.configured ? "green" : "orange", children: plugin2.configured ? texts.chips.configured : texts.chips.notConfigured }),
|
|
4422
|
-
description: "SMTP oder Microsoft 365.",
|
|
4423
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.PaperPlane, {}),
|
|
4424
|
-
title: texts.breadcrumbs.emailDelivery
|
|
4425
|
-
}
|
|
4426
|
-
),
|
|
4427
|
-
plugin2 ? /* @__PURE__ */ jsxRuntime.jsx(PluginSettingsForm, { plugin: plugin2 }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Container, { className: "p-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4428
|
-
QueryState,
|
|
4429
|
-
{
|
|
4430
|
-
error: query.error,
|
|
4431
|
-
errorText: texts.states.error,
|
|
4432
|
-
isLoading: query.isPending,
|
|
4433
|
-
loadingText: texts.states.loading
|
|
4434
|
-
}
|
|
4435
|
-
) })
|
|
4436
|
-
] });
|
|
4437
|
-
};
|
|
4438
|
-
const handle$6 = {
|
|
4439
|
-
breadcrumb: () => texts.breadcrumbs.emailDelivery
|
|
4440
|
-
};
|
|
4441
4417
|
const LOG_PAGE_SIZE = 20;
|
|
4442
4418
|
const LOG_MAX_OFFSET = 1e4;
|
|
4443
4419
|
const LOG_MAX_RESOURCE_ID_LENGTH = 255;
|
|
@@ -4665,11 +4641,11 @@ const EmailLogPage = () => {
|
|
|
4665
4641
|
] })
|
|
4666
4642
|
] });
|
|
4667
4643
|
};
|
|
4668
|
-
const handle$
|
|
4644
|
+
const handle$6 = {
|
|
4669
4645
|
breadcrumb: () => "Protokoll"
|
|
4670
4646
|
};
|
|
4671
4647
|
const EmailLogRoute = () => /* @__PURE__ */ jsxRuntime.jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsxRuntime.jsx(EmailLogPage, {}) });
|
|
4672
|
-
const handle$
|
|
4648
|
+
const handle$5 = {
|
|
4673
4649
|
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.order.label
|
|
4674
4650
|
};
|
|
4675
4651
|
const EmailOrderMailsRoute = () => /* @__PURE__ */ jsxRuntime.jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsxRuntime.jsx(EmailTemplateGroupPage, { group: "order" }) });
|
|
@@ -4677,7 +4653,7 @@ const PluginDetailPage = () => {
|
|
|
4677
4653
|
const { plugin_key: pluginKey = "" } = reactRouterDom.useParams();
|
|
4678
4654
|
return /* @__PURE__ */ jsxRuntime.jsx(PluginPageShell, { pluginKey, variant: "header", children: /* @__PURE__ */ jsxRuntime.jsx(PluginFeatureSections, { pluginKey }) });
|
|
4679
4655
|
};
|
|
4680
|
-
const handle$
|
|
4656
|
+
const handle$4 = {
|
|
4681
4657
|
breadcrumb: (match) => /* @__PURE__ */ jsxRuntime.jsx(PluginLabelCrumb, { pluginKey: match.params.plugin_key ?? "" })
|
|
4682
4658
|
};
|
|
4683
4659
|
const STATUS_BADGES = {
|
|
@@ -5045,13 +5021,40 @@ const EmailAttachmentCrumb = ({
|
|
|
5045
5021
|
}).data?.attachments.find((attachment) => attachment.id === attachmentId)?.name;
|
|
5046
5022
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: name ?? "Anhang" });
|
|
5047
5023
|
};
|
|
5048
|
-
const handle$
|
|
5024
|
+
const handle$3 = {
|
|
5049
5025
|
breadcrumb: (match) => /* @__PURE__ */ jsxRuntime.jsx(EmailAttachmentCrumb, { attachmentId: match.params.id ?? "" })
|
|
5050
5026
|
};
|
|
5051
5027
|
const EmailAttachmentRoute = () => {
|
|
5052
5028
|
const { id } = reactRouterDom.useParams();
|
|
5053
5029
|
return /* @__PURE__ */ jsxRuntime.jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsxRuntime.jsx(EmailAttachmentDetailPage, { attachmentId: id ?? "" }) });
|
|
5054
5030
|
};
|
|
5031
|
+
const EmailDeliveryPage = () => {
|
|
5032
|
+
const query = usePluginFeature("email");
|
|
5033
|
+
const plugin2 = query.data?.plugin;
|
|
5034
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-3", children: [
|
|
5035
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5036
|
+
AdminPageHeader,
|
|
5037
|
+
{
|
|
5038
|
+
badges: plugin2 && /* @__PURE__ */ jsxRuntime.jsx(ui.StatusBadge, { color: plugin2.configured ? "green" : "orange", children: plugin2.configured ? texts.chips.configured : texts.chips.notConfigured }),
|
|
5039
|
+
description: "SMTP oder Microsoft 365.",
|
|
5040
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.PaperPlane, {}),
|
|
5041
|
+
title: texts.breadcrumbs.emailDelivery
|
|
5042
|
+
}
|
|
5043
|
+
),
|
|
5044
|
+
plugin2 ? /* @__PURE__ */ jsxRuntime.jsx(PluginSettingsForm, { plugin: plugin2 }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Container, { className: "p-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5045
|
+
QueryState,
|
|
5046
|
+
{
|
|
5047
|
+
error: query.error,
|
|
5048
|
+
errorText: texts.states.error,
|
|
5049
|
+
isLoading: query.isPending,
|
|
5050
|
+
loadingText: texts.states.loading
|
|
5051
|
+
}
|
|
5052
|
+
) })
|
|
5053
|
+
] });
|
|
5054
|
+
};
|
|
5055
|
+
const handle$2 = {
|
|
5056
|
+
breadcrumb: () => texts.breadcrumbs.emailDelivery
|
|
5057
|
+
};
|
|
5055
5058
|
const isNotFound = (error) => typeof error === "object" && error !== null && error.status === 404;
|
|
5056
5059
|
const useResend = (message) => {
|
|
5057
5060
|
const queryClient = reactQuery.useQueryClient();
|
|
@@ -5293,6 +5296,7 @@ const DATA_SOURCE_LABELS = {
|
|
|
5293
5296
|
"order.return_received": "der Bestellung",
|
|
5294
5297
|
"order.refunded": "der Bestellung",
|
|
5295
5298
|
"auth.password_reset": "des Kontos",
|
|
5299
|
+
"auth.admin_password_reset": "des Kontos",
|
|
5296
5300
|
"auth.verification": "des Kontos",
|
|
5297
5301
|
"auth.login_code": "des Anmeldecodes",
|
|
5298
5302
|
"user.invite": "des Kontos",
|
|
@@ -6759,29 +6763,29 @@ const routeModule = {
|
|
|
6759
6763
|
path: "/settings/hartl-services/email/attachments",
|
|
6760
6764
|
handle: handle$7
|
|
6761
6765
|
},
|
|
6762
|
-
{
|
|
6763
|
-
Component: EmailDeliveryPage,
|
|
6764
|
-
path: "/settings/hartl-services/email/delivery",
|
|
6765
|
-
handle: handle$6
|
|
6766
|
-
},
|
|
6767
6766
|
{
|
|
6768
6767
|
Component: EmailLogRoute,
|
|
6769
6768
|
path: "/settings/hartl-services/email/log",
|
|
6770
|
-
handle: handle$
|
|
6769
|
+
handle: handle$6
|
|
6771
6770
|
},
|
|
6772
6771
|
{
|
|
6773
6772
|
Component: EmailOrderMailsRoute,
|
|
6774
6773
|
path: "/settings/hartl-services/email/order",
|
|
6775
|
-
handle: handle$
|
|
6774
|
+
handle: handle$5
|
|
6776
6775
|
},
|
|
6777
6776
|
{
|
|
6778
6777
|
Component: PluginDetailPage,
|
|
6779
6778
|
path: "/settings/hartl-services/plugin/:plugin_key",
|
|
6780
|
-
handle: handle$
|
|
6779
|
+
handle: handle$4
|
|
6781
6780
|
},
|
|
6782
6781
|
{
|
|
6783
6782
|
Component: EmailAttachmentRoute,
|
|
6784
6783
|
path: "/settings/hartl-services/email/attachments/:id",
|
|
6784
|
+
handle: handle$3
|
|
6785
|
+
},
|
|
6786
|
+
{
|
|
6787
|
+
Component: EmailDeliveryPage,
|
|
6788
|
+
path: "/settings/hartl-services/email/delivery",
|
|
6785
6789
|
handle: handle$2
|
|
6786
6790
|
},
|
|
6787
6791
|
{
|
|
@@ -3527,6 +3527,7 @@ const KINDS = [
|
|
|
3527
3527
|
"order.return_received",
|
|
3528
3528
|
"order.refunded",
|
|
3529
3529
|
"auth.password_reset",
|
|
3530
|
+
"auth.admin_password_reset",
|
|
3530
3531
|
"auth.verification",
|
|
3531
3532
|
"auth.login_code",
|
|
3532
3533
|
"affiliate.consignment_report_due",
|
|
@@ -3543,6 +3544,7 @@ const KIND_LABELS = {
|
|
|
3543
3544
|
"order.return_received": "Retoureneingang",
|
|
3544
3545
|
"order.refunded": "Rückerstattung",
|
|
3545
3546
|
"auth.password_reset": "Passwort zurücksetzen",
|
|
3547
|
+
"auth.admin_password_reset": "Admin-Passwort zurücksetzen",
|
|
3546
3548
|
"auth.verification": "Konto bestätigen",
|
|
3547
3549
|
"auth.login_code": "Anmeldecode",
|
|
3548
3550
|
"affiliate.consignment_report_due": "Affiliate-Meldung",
|
|
@@ -3651,6 +3653,7 @@ const EMAIL_TEMPLATE_GROUPS = {
|
|
|
3651
3653
|
};
|
|
3652
3654
|
const ACCOUNT_KINDS = [
|
|
3653
3655
|
"auth.password_reset",
|
|
3656
|
+
"auth.admin_password_reset",
|
|
3654
3657
|
"auth.verification",
|
|
3655
3658
|
"auth.login_code",
|
|
3656
3659
|
"user.invite"
|
|
@@ -3780,7 +3783,7 @@ const ATTEMPT_STATUS_BADGES = {
|
|
|
3780
3783
|
failed: { label: ATTEMPT_STATUS_LABELS.failed, color: "red" },
|
|
3781
3784
|
unknown: { label: ATTEMPT_STATUS_LABELS.unknown, color: "red" }
|
|
3782
3785
|
};
|
|
3783
|
-
const canResend = (message) => message.kind !== "auth.password_reset" && message.kind !== "auth.verification" && message.kind !== "auth.login_code" && (message.status === "sent" || message.status === "unknown" || message.status === "failed");
|
|
3786
|
+
const canResend = (message) => message.kind !== "auth.password_reset" && message.kind !== "auth.admin_password_reset" && message.kind !== "auth.verification" && message.kind !== "auth.login_code" && (message.status === "sent" || message.status === "unknown" || message.status === "failed");
|
|
3784
3787
|
const formatResource = (message) => message.resource_id ? `${message.resource_type} · ${message.resource_id}` : message.resource_type;
|
|
3785
3788
|
const emailLogDetailFields = (message) => [
|
|
3786
3789
|
{ label: "Art", value: KIND_LABELS[message.kind], mono: false },
|
|
@@ -4405,33 +4408,6 @@ const handle$7 = {
|
|
|
4405
4408
|
breadcrumb: () => texts.breadcrumbs.emailAttachments
|
|
4406
4409
|
};
|
|
4407
4410
|
const EmailAttachmentsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailAttachmentsPage, {}) });
|
|
4408
|
-
const EmailDeliveryPage = () => {
|
|
4409
|
-
const query = usePluginFeature("email");
|
|
4410
|
-
const plugin2 = query.data?.plugin;
|
|
4411
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-3", children: [
|
|
4412
|
-
/* @__PURE__ */ jsx(
|
|
4413
|
-
AdminPageHeader,
|
|
4414
|
-
{
|
|
4415
|
-
badges: plugin2 && /* @__PURE__ */ jsx(StatusBadge, { color: plugin2.configured ? "green" : "orange", children: plugin2.configured ? texts.chips.configured : texts.chips.notConfigured }),
|
|
4416
|
-
description: "SMTP oder Microsoft 365.",
|
|
4417
|
-
icon: /* @__PURE__ */ jsx(PaperPlane, {}),
|
|
4418
|
-
title: texts.breadcrumbs.emailDelivery
|
|
4419
|
-
}
|
|
4420
|
-
),
|
|
4421
|
-
plugin2 ? /* @__PURE__ */ jsx(PluginSettingsForm, { plugin: plugin2 }) : /* @__PURE__ */ jsx(Container, { className: "p-0", children: /* @__PURE__ */ jsx(
|
|
4422
|
-
QueryState,
|
|
4423
|
-
{
|
|
4424
|
-
error: query.error,
|
|
4425
|
-
errorText: texts.states.error,
|
|
4426
|
-
isLoading: query.isPending,
|
|
4427
|
-
loadingText: texts.states.loading
|
|
4428
|
-
}
|
|
4429
|
-
) })
|
|
4430
|
-
] });
|
|
4431
|
-
};
|
|
4432
|
-
const handle$6 = {
|
|
4433
|
-
breadcrumb: () => texts.breadcrumbs.emailDelivery
|
|
4434
|
-
};
|
|
4435
4411
|
const LOG_PAGE_SIZE = 20;
|
|
4436
4412
|
const LOG_MAX_OFFSET = 1e4;
|
|
4437
4413
|
const LOG_MAX_RESOURCE_ID_LENGTH = 255;
|
|
@@ -4659,11 +4635,11 @@ const EmailLogPage = () => {
|
|
|
4659
4635
|
] })
|
|
4660
4636
|
] });
|
|
4661
4637
|
};
|
|
4662
|
-
const handle$
|
|
4638
|
+
const handle$6 = {
|
|
4663
4639
|
breadcrumb: () => "Protokoll"
|
|
4664
4640
|
};
|
|
4665
4641
|
const EmailLogRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailLogPage, {}) });
|
|
4666
|
-
const handle$
|
|
4642
|
+
const handle$5 = {
|
|
4667
4643
|
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.order.label
|
|
4668
4644
|
};
|
|
4669
4645
|
const EmailOrderMailsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailTemplateGroupPage, { group: "order" }) });
|
|
@@ -4671,7 +4647,7 @@ const PluginDetailPage = () => {
|
|
|
4671
4647
|
const { plugin_key: pluginKey = "" } = useParams();
|
|
4672
4648
|
return /* @__PURE__ */ jsx(PluginPageShell, { pluginKey, variant: "header", children: /* @__PURE__ */ jsx(PluginFeatureSections, { pluginKey }) });
|
|
4673
4649
|
};
|
|
4674
|
-
const handle$
|
|
4650
|
+
const handle$4 = {
|
|
4675
4651
|
breadcrumb: (match) => /* @__PURE__ */ jsx(PluginLabelCrumb, { pluginKey: match.params.plugin_key ?? "" })
|
|
4676
4652
|
};
|
|
4677
4653
|
const STATUS_BADGES = {
|
|
@@ -5039,13 +5015,40 @@ const EmailAttachmentCrumb = ({
|
|
|
5039
5015
|
}).data?.attachments.find((attachment) => attachment.id === attachmentId)?.name;
|
|
5040
5016
|
return /* @__PURE__ */ jsx(Fragment, { children: name ?? "Anhang" });
|
|
5041
5017
|
};
|
|
5042
|
-
const handle$
|
|
5018
|
+
const handle$3 = {
|
|
5043
5019
|
breadcrumb: (match) => /* @__PURE__ */ jsx(EmailAttachmentCrumb, { attachmentId: match.params.id ?? "" })
|
|
5044
5020
|
};
|
|
5045
5021
|
const EmailAttachmentRoute = () => {
|
|
5046
5022
|
const { id } = useParams();
|
|
5047
5023
|
return /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailAttachmentDetailPage, { attachmentId: id ?? "" }) });
|
|
5048
5024
|
};
|
|
5025
|
+
const EmailDeliveryPage = () => {
|
|
5026
|
+
const query = usePluginFeature("email");
|
|
5027
|
+
const plugin2 = query.data?.plugin;
|
|
5028
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-3", children: [
|
|
5029
|
+
/* @__PURE__ */ jsx(
|
|
5030
|
+
AdminPageHeader,
|
|
5031
|
+
{
|
|
5032
|
+
badges: plugin2 && /* @__PURE__ */ jsx(StatusBadge, { color: plugin2.configured ? "green" : "orange", children: plugin2.configured ? texts.chips.configured : texts.chips.notConfigured }),
|
|
5033
|
+
description: "SMTP oder Microsoft 365.",
|
|
5034
|
+
icon: /* @__PURE__ */ jsx(PaperPlane, {}),
|
|
5035
|
+
title: texts.breadcrumbs.emailDelivery
|
|
5036
|
+
}
|
|
5037
|
+
),
|
|
5038
|
+
plugin2 ? /* @__PURE__ */ jsx(PluginSettingsForm, { plugin: plugin2 }) : /* @__PURE__ */ jsx(Container, { className: "p-0", children: /* @__PURE__ */ jsx(
|
|
5039
|
+
QueryState,
|
|
5040
|
+
{
|
|
5041
|
+
error: query.error,
|
|
5042
|
+
errorText: texts.states.error,
|
|
5043
|
+
isLoading: query.isPending,
|
|
5044
|
+
loadingText: texts.states.loading
|
|
5045
|
+
}
|
|
5046
|
+
) })
|
|
5047
|
+
] });
|
|
5048
|
+
};
|
|
5049
|
+
const handle$2 = {
|
|
5050
|
+
breadcrumb: () => texts.breadcrumbs.emailDelivery
|
|
5051
|
+
};
|
|
5049
5052
|
const isNotFound = (error) => typeof error === "object" && error !== null && error.status === 404;
|
|
5050
5053
|
const useResend = (message) => {
|
|
5051
5054
|
const queryClient = useQueryClient();
|
|
@@ -5287,6 +5290,7 @@ const DATA_SOURCE_LABELS = {
|
|
|
5287
5290
|
"order.return_received": "der Bestellung",
|
|
5288
5291
|
"order.refunded": "der Bestellung",
|
|
5289
5292
|
"auth.password_reset": "des Kontos",
|
|
5293
|
+
"auth.admin_password_reset": "des Kontos",
|
|
5290
5294
|
"auth.verification": "des Kontos",
|
|
5291
5295
|
"auth.login_code": "des Anmeldecodes",
|
|
5292
5296
|
"user.invite": "des Kontos",
|
|
@@ -6753,29 +6757,29 @@ const routeModule = {
|
|
|
6753
6757
|
path: "/settings/hartl-services/email/attachments",
|
|
6754
6758
|
handle: handle$7
|
|
6755
6759
|
},
|
|
6756
|
-
{
|
|
6757
|
-
Component: EmailDeliveryPage,
|
|
6758
|
-
path: "/settings/hartl-services/email/delivery",
|
|
6759
|
-
handle: handle$6
|
|
6760
|
-
},
|
|
6761
6760
|
{
|
|
6762
6761
|
Component: EmailLogRoute,
|
|
6763
6762
|
path: "/settings/hartl-services/email/log",
|
|
6764
|
-
handle: handle$
|
|
6763
|
+
handle: handle$6
|
|
6765
6764
|
},
|
|
6766
6765
|
{
|
|
6767
6766
|
Component: EmailOrderMailsRoute,
|
|
6768
6767
|
path: "/settings/hartl-services/email/order",
|
|
6769
|
-
handle: handle$
|
|
6768
|
+
handle: handle$5
|
|
6770
6769
|
},
|
|
6771
6770
|
{
|
|
6772
6771
|
Component: PluginDetailPage,
|
|
6773
6772
|
path: "/settings/hartl-services/plugin/:plugin_key",
|
|
6774
|
-
handle: handle$
|
|
6773
|
+
handle: handle$4
|
|
6775
6774
|
},
|
|
6776
6775
|
{
|
|
6777
6776
|
Component: EmailAttachmentRoute,
|
|
6778
6777
|
path: "/settings/hartl-services/email/attachments/:id",
|
|
6778
|
+
handle: handle$3
|
|
6779
|
+
},
|
|
6780
|
+
{
|
|
6781
|
+
Component: EmailDeliveryPage,
|
|
6782
|
+
path: "/settings/hartl-services/email/delivery",
|
|
6779
6783
|
handle: handle$2
|
|
6780
6784
|
},
|
|
6781
6785
|
{
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const check_customer_address_tax_identification_1 = require("../../../../../check-customer-address-tax-identification");
|
|
5
|
+
/**
|
|
6
|
+
* Checks the UID of any customer's saved address again, e.g. when the check
|
|
7
|
+
* was unavailable while the customer applied as a partner.
|
|
8
|
+
*/
|
|
9
|
+
const POST = async (req, res) => {
|
|
10
|
+
res
|
|
11
|
+
.status(200)
|
|
12
|
+
.json(await (0, check_customer_address_tax_identification_1.checkCustomerAddressTaxIdentification)(req.scope, req.params.address_id));
|
|
13
|
+
};
|
|
14
|
+
exports.POST = POST;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3RheC1jb21wbGlhbmNlL2N1c3RvbWVyLWFkZHJlc3Nlcy9bYWRkcmVzc19pZF0vdGF4LWlkZW50aWZpY2F0aW9uL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLHdIQUFnSDtBQUVoSDs7O0dBR0c7QUFDSSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQStCLEVBQy9CLEdBQW1FLEVBQ3BELEVBQUU7SUFDakIsR0FBRztTQUNBLE1BQU0sQ0FBQyxHQUFHLENBQUM7U0FDWCxJQUFJLENBQ0gsTUFBTSxJQUFBLGlGQUFxQyxFQUN6QyxHQUFHLENBQUMsS0FBSyxFQUNULEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUN0QixDQUNGLENBQUE7QUFDTCxDQUFDLENBQUE7QUFaWSxRQUFBLElBQUksUUFZaEIifQ==
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkCustomerAddressTaxIdentification = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const tax_compliance_1 = require("@hartl-services/medusa-food-supplements-contracts/paths/tax-compliance");
|
|
6
|
+
const tax_compliance_2 = require("@hartl-services/medusa-food-supplements-contracts/schemas/tax-compliance");
|
|
7
|
+
const tax_runtime_settings_1 = require("../tax-compliance/lib/tax-runtime-settings");
|
|
8
|
+
const submit_customer_address_tax_identification_1 = require("../workflows/tax-compliance/submit-customer-address-tax-identification");
|
|
9
|
+
const customer_address_identification_response_1 = require("./customer-address-identification-response");
|
|
10
|
+
const tax_identification_message_1 = require("./tax-identification-message");
|
|
11
|
+
const invalid = (message) => new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, message);
|
|
12
|
+
/**
|
|
13
|
+
* Checks the UID of a saved customer address. Company, UID (address
|
|
14
|
+
* metadata) and address come from the stored address, not from the request,
|
|
15
|
+
* so the evidence always describes the address as it is. With `customerId`
|
|
16
|
+
* only that customer's address is found (Store route); without it any
|
|
17
|
+
* customer's (Admin route), and the evidence belongs to the address's
|
|
18
|
+
* customer.
|
|
19
|
+
*/
|
|
20
|
+
const checkCustomerAddressTaxIdentification = async (scope, addressId, customerId) => {
|
|
21
|
+
const query = scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
22
|
+
const { data } = await query.graph({
|
|
23
|
+
entity: "customer_address",
|
|
24
|
+
fields: [
|
|
25
|
+
"id",
|
|
26
|
+
"customer_id",
|
|
27
|
+
"company",
|
|
28
|
+
"address_1",
|
|
29
|
+
"address_2",
|
|
30
|
+
"city",
|
|
31
|
+
"country_code",
|
|
32
|
+
"postal_code",
|
|
33
|
+
"metadata",
|
|
34
|
+
],
|
|
35
|
+
filters: customerId
|
|
36
|
+
? { id: addressId, customer_id: customerId }
|
|
37
|
+
: { id: addressId },
|
|
38
|
+
});
|
|
39
|
+
const address = data[0];
|
|
40
|
+
if (!address) {
|
|
41
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Address with id '${addressId}' not found.`);
|
|
42
|
+
}
|
|
43
|
+
const company = tax_compliance_2.SubmitTaxIdentificationSchema.shape.company_name.unwrap().safeParse(address.company ?? "");
|
|
44
|
+
if (!company.success) {
|
|
45
|
+
throw invalid("The address has no company.");
|
|
46
|
+
}
|
|
47
|
+
const vatNumber = tax_compliance_2.SubmitTaxIdentificationSchema.shape.vat_number.unwrap().safeParse(address.metadata?.[tax_compliance_1.TAX_IDENTIFICATION_METADATA_KEY] ?? "");
|
|
48
|
+
if (!vatNumber.success) {
|
|
49
|
+
throw invalid("The address has no valid VAT number.");
|
|
50
|
+
}
|
|
51
|
+
if (!address.address_1?.trim() ||
|
|
52
|
+
!address.city?.trim() ||
|
|
53
|
+
!address.country_code?.trim() ||
|
|
54
|
+
!address.postal_code?.trim()) {
|
|
55
|
+
throw invalid("The address is incomplete.");
|
|
56
|
+
}
|
|
57
|
+
const merchant = await (0, tax_runtime_settings_1.resolveMerchantProfile)(scope, {
|
|
58
|
+
failSafe: true,
|
|
59
|
+
subject: "address tax identification",
|
|
60
|
+
});
|
|
61
|
+
if (!merchant) {
|
|
62
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Tax compliance merchant configuration is unavailable.");
|
|
63
|
+
}
|
|
64
|
+
const { result: evidence } = await (0, submit_customer_address_tax_identification_1.submitCustomerAddressTaxIdentificationWorkflow)(scope).run({
|
|
65
|
+
input: {
|
|
66
|
+
customer_address_id: address.id,
|
|
67
|
+
customer_id: address.customer_id,
|
|
68
|
+
company_name: company.data,
|
|
69
|
+
customer_vat_number: vatNumber.data,
|
|
70
|
+
billing_address: {
|
|
71
|
+
address1: address.address_1,
|
|
72
|
+
address2: address.address_2,
|
|
73
|
+
city: address.city,
|
|
74
|
+
countryCode: address.country_code,
|
|
75
|
+
postalCode: address.postal_code,
|
|
76
|
+
},
|
|
77
|
+
merchant_country_code: merchant.countryCode,
|
|
78
|
+
merchant_vat_number: merchant.vatNumber,
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
identification: (0, customer_address_identification_response_1.toCustomerAddressTaxIdentificationWire)({
|
|
83
|
+
customer_address_id: address.id,
|
|
84
|
+
status: evidence.status,
|
|
85
|
+
customer_vat_number: evidence.customer_vat_number,
|
|
86
|
+
company_name: evidence.company_name,
|
|
87
|
+
validated_at: evidence.validated_at,
|
|
88
|
+
}),
|
|
89
|
+
message: (0, tax_identification_message_1.taxIdentificationMessageFor)(evidence.status),
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
exports.checkCustomerAddressTaxIdentification = checkCustomerAddressTaxIdentification;
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stY3VzdG9tZXItYWRkcmVzcy10YXgtaWRlbnRpZmljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2NoZWNrLWN1c3RvbWVyLWFkZHJlc3MtdGF4LWlkZW50aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUdrQztBQUVsQywyR0FBd0g7QUFDeEgsNkdBQXdIO0FBR3hILHFGQUFtRjtBQUNuRix1SUFBdUk7QUFDdkkseUdBQW1HO0FBQ25HLDZFQUEwRTtBQWMxRSxNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQWUsRUFBZSxFQUFFLENBQy9DLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFFMUQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0scUNBQXFDLEdBQUcsS0FBSyxFQUN4RCxLQUFzQixFQUN0QixTQUFpQixFQUNqQixVQUFtQixFQUNzQyxFQUFFO0lBQzNELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNqQyxNQUFNLEVBQUUsa0JBQWtCO1FBQzFCLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixhQUFhO1lBQ2IsU0FBUztZQUNULFdBQVc7WUFDWCxXQUFXO1lBQ1gsTUFBTTtZQUNOLGNBQWM7WUFDZCxhQUFhO1lBQ2IsVUFBVTtTQUNYO1FBQ0QsT0FBTyxFQUFFLFVBQVU7WUFDakIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO1lBQzVDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUU7S0FDdEIsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxD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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toCustomerAddressTaxIdentificationWire = void 0;
|
|
4
|
+
/** Only the public result: no provider facts, evidence IDs or merchant data. */
|
|
5
|
+
const toCustomerAddressTaxIdentificationWire = (source) => ({
|
|
6
|
+
customer_address_id: source.customer_address_id,
|
|
7
|
+
status: source.status,
|
|
8
|
+
verified: source.status === "eligible" || source.status === "ineligible",
|
|
9
|
+
vat_number: source.customer_vat_number,
|
|
10
|
+
company_name: source.company_name,
|
|
11
|
+
validated_at: new Date(source.validated_at).toISOString(),
|
|
12
|
+
});
|
|
13
|
+
exports.toCustomerAddressTaxIdentificationWire = toCustomerAddressTaxIdentificationWire;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItYWRkcmVzcy1pZGVudGlmaWNhdGlvbi1yZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvY3VzdG9tZXItYWRkcmVzcy1pZGVudGlmaWNhdGlvbi1yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFZQSxnRkFBZ0Y7QUFDekUsTUFBTSxzQ0FBc0MsR0FBRyxDQUNwRCxNQUE0QixFQUNVLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7SUFDL0MsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO0lBQ3JCLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFlBQVk7SUFDeEUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7SUFDdEMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO0lBQ2pDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFO0NBQzFELENBQUMsQ0FBQTtBQVRXLFFBQUEsc0NBQXNDLDBDQVNqRCJ9
|
|
@@ -7,9 +7,12 @@ const email_1 = require("@hartl-services/medusa-food-supplements-contracts/schem
|
|
|
7
7
|
const customer_auth_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/customer-auth");
|
|
8
8
|
const customer_verification_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/customer-verification");
|
|
9
9
|
const files_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/files");
|
|
10
|
+
const tax_compliance_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/tax-compliance");
|
|
11
|
+
const tax_compliance_2 = require("@hartl-services/medusa-food-supplements-contracts/paths/tax-compliance");
|
|
10
12
|
const plugin_features_2 = require("../customer-auth/plugin-features");
|
|
11
13
|
const plugin_features_3 = require("../documents/plugin-features");
|
|
12
14
|
const plugin_features_4 = require("../email/plugin-features");
|
|
15
|
+
const plugin_features_5 = require("../tax-compliance/plugin-features");
|
|
13
16
|
const customer_verification_request_throttle_1 = require("./customer-verification-request-throttle");
|
|
14
17
|
const answer_code_provider_route_not_found_1 = require("./answer-code-provider-route-not-found");
|
|
15
18
|
const answer_actor_type_casing_not_found_1 = require("./answer-actor-type-casing-not-found");
|
|
@@ -24,6 +27,11 @@ const public_1 = require("../public");
|
|
|
24
27
|
*/
|
|
25
28
|
const documentsGate = (0, public_1.pluginFeatureGate)(plugin_features_3.documentsPluginFeatures);
|
|
26
29
|
const customerAuthGate = (0, public_1.pluginFeatureGate)(plugin_features_2.customerAuthPluginFeatures);
|
|
30
|
+
// Steuer-Compliance: exact gates with the route's methods, so they touch no
|
|
31
|
+
// other cart or customer route. Tax hooks and complete-cart hooks never read
|
|
32
|
+
// a toggle; they read the stored mirror (tax-compliance/lib/tax-compliance-state.ts).
|
|
33
|
+
const requireB2b = (0, public_1.requirePluginFeature)(plugin_features_5.taxCompliancePluginFeatures, tax_compliance_2.TAX_COMPLIANCE_FEATURES.b2b);
|
|
34
|
+
const requireVatValidation = (0, public_1.requirePluginFeature)(plugin_features_5.taxCompliancePluginFeatures, tax_compliance_2.TAX_COMPLIANCE_FEATURES.vatValidation);
|
|
27
35
|
// Authentication: Medusa authenticates every /admin route (actor "user";
|
|
28
36
|
// bearer, session or secret API key) before plugin middlewares run
|
|
29
37
|
// (framework 2.19.0 http/router.js), so no second `authenticate` here.
|
|
@@ -383,6 +391,52 @@ exports.default = (0, http_1.defineMiddlewares)({
|
|
|
383
391
|
}),
|
|
384
392
|
],
|
|
385
393
|
},
|
|
394
|
+
// --- Steuer-Compliance ----------------------------------------------
|
|
395
|
+
// The gate runs before the body validation below.
|
|
396
|
+
{
|
|
397
|
+
matcher: "/store/carts/:id/tax-identification",
|
|
398
|
+
methods: ["POST"],
|
|
399
|
+
middlewares: [requireB2b],
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
matcher: "/store/carts/:id/tax-identification",
|
|
403
|
+
methods: ["POST"],
|
|
404
|
+
middlewares: [(0, http_1.validateAndTransformBody)(tax_compliance_1.SubmitTaxIdentificationSchema)],
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
matcher: "/store/tax-identification-policy",
|
|
408
|
+
methods: ["GET"],
|
|
409
|
+
middlewares: [(0, public_1.requirePluginFeature)(plugin_features_5.taxCompliancePluginFeatures)],
|
|
410
|
+
},
|
|
411
|
+
// Saved customer addresses: UID-check gate first (404 while off, also for
|
|
412
|
+
// guests), then the customer login. Company, UID and address come from
|
|
413
|
+
// the stored address, so there is no body to validate.
|
|
414
|
+
{
|
|
415
|
+
matcher: "/store/customers/me/addresses/:address_id/tax-identification",
|
|
416
|
+
methods: ["POST"],
|
|
417
|
+
middlewares: [
|
|
418
|
+
requireVatValidation,
|
|
419
|
+
(0, http_1.authenticate)("customer", ["session", "bearer"]),
|
|
420
|
+
],
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
matcher: "/store/customers/me/tax-identifications",
|
|
424
|
+
methods: ["GET"],
|
|
425
|
+
middlewares: [
|
|
426
|
+
requireVatValidation,
|
|
427
|
+
(0, http_1.authenticate)("customer", ["session", "bearer"]),
|
|
428
|
+
],
|
|
429
|
+
},
|
|
430
|
+
// Admin re-check of any customer's saved address: gate first, then the
|
|
431
|
+
// admin login.
|
|
432
|
+
{
|
|
433
|
+
matcher: "/admin/tax-compliance/customer-addresses/:address_id/tax-identification",
|
|
434
|
+
methods: ["POST"],
|
|
435
|
+
middlewares: [
|
|
436
|
+
requireVatValidation,
|
|
437
|
+
(0, http_1.authenticate)("user", ["session", "bearer"]),
|
|
438
|
+
],
|
|
439
|
+
},
|
|
386
440
|
],
|
|
387
441
|
});
|
|
388
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBS2lDO0FBQ2pDLCtHQUtrRjtBQUNsRixtR0FHNEU7QUFDNUUsMkZBWXdFO0FBQ3hFLDJHQUdnRjtBQUNoRiwySEFBa0k7QUFDbEksMkZBQXVIO0FBRXZILHNFQUE2RTtBQUM3RSxrRUFBc0U7QUFDdEUsOERBQThEO0FBQzlELHFHQUE4RjtBQUM5RixpR0FBd0Y7QUFDeEYsNkZBQW9GO0FBQ3BGLDJGQUFzRjtBQUN0RixpRkFHdUM7QUFDdkMsdURBQXlEO0FBQ3pELDJGQUFtRjtBQUNuRixzQ0FBbUU7QUFFbkU7OztHQUdHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsSUFBQSwwQkFBaUIsRUFBQyx5Q0FBdUIsQ0FBQyxDQUFBO0FBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSwwQkFBaUIsRUFBQyw0Q0FBMEIsQ0FBQyxDQUFBO0FBRXRFLHlFQUF5RTtBQUN6RSxtRUFBbUU7QUFDbkUsdUVBQXVFO0FBQ3ZFLDJFQUEyRTtBQUMzRSwwRUFBMEU7QUFDMUUsdUNBQXVDO0FBQ3ZDLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLDRDQUEwQixDQUFDLENBQUM7U0FDcEU7UUFDRDtZQUNFLE9BQU8sRUFBRSw2Q0FBNkM7WUFDdEQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLElBQUEsK0JBQXdCLEVBQUMsNENBQTBCLENBQUMsQ0FBQztTQUNwRTtRQUNEO1lBQ0UsT0FBTyxFQUFFLHdEQUF3RDtZQUNqRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENB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
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBS2lDO0FBQ2pDLCtHQUtrRjtBQUNsRixtR0FHNEU7QUFDNUUsMkZBWXdFO0FBQ3hFLDJHQUdnRjtBQUNoRiwySEFBa0k7QUFDbEksMkZBQXVIO0FBQ3ZILDZHQUF3SDtBQUN4SCwyR0FBZ0g7QUFFaEgsc0VBQTZFO0FBQzdFLGtFQUFzRTtBQUN0RSw4REFBOEQ7QUFDOUQsdUVBQStFO0FBQy9FLHFHQUE4RjtBQUM5RixpR0FBd0Y7QUFDeEYsNkZBQW9GO0FBQ3BGLDJGQUFzRjtBQUN0RixpRkFHdUM7QUFDdkMsdURBQXlEO0FBQ3pELDJGQUFtRjtBQUNuRixzQ0FBbUU7QUFFbkU7OztHQUdHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsSUFBQSwwQkFBaUIsRUFBQyx5Q0FBdUIsQ0FBQyxDQUFBO0FBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSwwQkFBaUIsRUFBQyw0Q0FBMEIsQ0FBQyxDQUFBO0FBQ3RFLDRFQUE0RTtBQUM1RSw2RUFBNkU7QUFDN0Usc0ZBQXNGO0FBQ3RGLE1BQU0sVUFBVSxHQUFHLElBQUEsNkJBQW9CLEVBQ3JDLDZDQUEyQixFQUMzQix3Q0FBdUIsQ0FBQyxHQUFHLENBQzVCLENBQUE7QUFDRCxNQUFNLG9CQUFvQixHQUFHLElBQUEsNkJBQW9CLEVBQy9DLDZDQUEyQixFQUMzQix3Q0FBdUIsQ0FBQyxhQUFhLENBQ3RDLENBQUE7QUFFRCx5RUFBeUU7QUFDekUsbUVBQW1FO0FBQ25FLHVFQUF1RTtBQUN2RSwyRUFBMkU7QUFDM0UsMEVBQTBFO0FBQzFFLHVDQUF1QztBQUN2QyxrQkFBZSxJQUFBLHdCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOO1lBQ0UsT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENB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
|