@hartl-services/medusa-base 0.4.0 → 1.1.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 +1657 -111
- package/.medusa/server/src/admin/index.mjs +1647 -101
- package/.medusa/server/src/api/admin/email/messages/[id]/resends/route.js +24 -0
- package/.medusa/server/src/api/admin/email/messages/[id]/route.js +12 -0
- package/.medusa/server/src/api/admin/email/messages/route.js +12 -0
- package/.medusa/server/src/api/admin/email/terms-versions/[id]/download/route.js +16 -0
- package/.medusa/server/src/api/admin/email/terms-versions/route.js +47 -0
- package/.medusa/server/src/api/admin/orders/[id]/documents/[document_id]/download/route.js +21 -0
- package/.medusa/server/src/api/admin/orders/[id]/documents/[document_id]/regenerate/route.js +38 -0
- package/.medusa/server/src/api/admin/orders/[id]/documents/regenerate/route.js +32 -0
- package/.medusa/server/src/api/admin/orders/[id]/documents/route.js +36 -0
- package/.medusa/server/src/api/admin/orders/[id]/packing-lists/[fulfillment_id]/download/route.js +24 -0
- package/.medusa/server/src/api/admin/orders/[id]/packing-lists/[fulfillment_id]/retry/route.js +44 -0
- package/.medusa/server/src/api/admin/orders/[id]/packing-lists/route.js +82 -0
- package/.medusa/server/src/api/document-download-response.js +16 -0
- package/.medusa/server/src/api/document-response.js +23 -0
- package/.medusa/server/src/api/files/[asset]/route.js +24 -0
- package/.medusa/server/src/api/files/file-response.js +43 -0
- package/.medusa/server/src/api/files/gateway-options.js +31 -0
- package/.medusa/server/src/api/files/private/[token]/route.js +29 -0
- package/.medusa/server/src/api/files/upload/[token]/route.js +66 -0
- package/.medusa/server/src/api/middlewares.js +168 -1
- package/.medusa/server/src/api/packing-list-response.js +22 -0
- package/.medusa/server/src/api/route.js +27 -0
- package/.medusa/server/src/api/store/documents/[id]/download/route.js +21 -0
- package/.medusa/server/src/api/store/documents/[id]/route.js +15 -0
- package/.medusa/server/src/api/store/documents/route.js +11 -0
- package/.medusa/server/src/api/terms-download-response.js +12 -0
- package/.medusa/server/src/documents/config/index.js +18 -0
- package/.medusa/server/src/documents/paths/documents.js +6 -0
- package/.medusa/server/src/documents/paths/index.js +18 -0
- package/.medusa/server/src/documents/plugin-features.js +38 -0
- package/.medusa/server/src/documents/schemas/documents.js +18 -0
- package/.medusa/server/src/documents/schemas/index.js +18 -0
- package/.medusa/server/src/documents/scripts/verify-documents-file-storage.js +55 -0
- package/.medusa/server/src/documents/templates/financial-document.js +160 -0
- package/.medusa/server/src/documents/templates/format.js +73 -0
- package/.medusa/server/src/documents/templates/html-factory.js +42 -0
- package/.medusa/server/src/documents/templates/html-utils.js +23 -0
- package/.medusa/server/src/documents/templates/layout.js +142 -0
- package/.medusa/server/src/documents/templates/packing-list.js +52 -0
- package/.medusa/server/src/documents/types/admin-api.js +3 -0
- package/.medusa/server/src/documents/types/document-summary.js +3 -0
- package/.medusa/server/src/documents/types/documents.js +3 -0
- package/.medusa/server/src/documents/types/html-factory.js +6 -0
- package/.medusa/server/src/documents/types/index.js +22 -0
- package/.medusa/server/src/documents/types/store-api.js +3 -0
- package/.medusa/server/src/documents/utils/document-merchant.js +22 -0
- package/.medusa/server/src/documents/utils/document-render-settings.js +59 -0
- package/.medusa/server/src/documents/utils/html-to-pdf.js +61 -0
- package/.medusa/server/src/documents/utils/private-file-storage.js +64 -0
- package/.medusa/server/src/documents/utils/resolve-services.js +7 -0
- package/.medusa/server/src/email/application/handle-invite-event.js +318 -0
- package/.medusa/server/src/email/application/handle-password-reset-event.js +366 -0
- package/.medusa/server/src/email/config/index.js +84 -0
- package/.medusa/server/src/email/config/notification-module.js +20 -0
- package/.medusa/server/src/email/domain/business-keys.js +50 -0
- package/.medusa/server/src/email/domain/documents-fact-fingerprint.js +7 -0
- package/.medusa/server/src/email/domain/event-schemas.js +36 -0
- package/.medusa/server/src/email/domain/failure-classification.js +53 -0
- package/.medusa/server/src/email/domain/order-summary.js +103 -0
- package/.medusa/server/src/email/domain/refund-summary.js +43 -0
- package/.medusa/server/src/email/domain/return-summary.js +118 -0
- package/.medusa/server/src/email/domain/shipment-summary.js +74 -0
- package/.medusa/server/src/email/plugin-features.js +39 -0
- package/.medusa/server/src/email/rendering/default-templates.js +719 -0
- package/.medusa/server/src/email/rendering/load-email-shop-details.js +36 -0
- package/.medusa/server/src/email/rendering/render-email.js +50 -0
- package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +67 -0
- package/.medusa/server/src/email/types/email-kinds.js +18 -0
- package/.medusa/server/src/email/types/index.js +21 -0
- package/.medusa/server/src/email/types/shop-configuration.js +3 -0
- package/.medusa/server/src/email/types/smtp-configuration.js +3 -0
- package/.medusa/server/src/email/types/template-data.js +232 -0
- package/.medusa/server/src/files/config/index.js +256 -0
- package/.medusa/server/src/files/gateway/index.js +115 -0
- package/.medusa/server/src/files/types/index.js +6 -0
- package/.medusa/server/src/files/types/public.js +6 -0
- package/.medusa/server/src/jobs/document-fact-publication-reconciliation.js +18 -0
- package/.medusa/server/src/jobs/document-resolution-reconciliation.js +20 -0
- package/.medusa/server/src/jobs/packing-list-reconciliation.js +49 -0
- package/.medusa/server/src/jobs/reconcile-email-attempts.js +63 -0
- package/.medusa/server/src/jobs/reconcile-pending-email-messages.js +41 -0
- package/.medusa/server/src/jobs/retry-email-messages.js +27 -0
- package/.medusa/server/src/migration-scripts/dismiss-orphaned-cart-promotion-links.js +26 -0
- package/.medusa/server/src/modules/documents/domain/cancellation-snapshot.js +97 -0
- package/.medusa/server/src/modules/documents/domain/document-number.js +36 -0
- package/.medusa/server/src/modules/documents/domain/document-resolution.js +24 -0
- package/.medusa/server/src/modules/documents/domain/issuance-rules.js +37 -0
- package/.medusa/server/src/modules/documents/domain/merchant.js +86 -0
- package/.medusa/server/src/modules/documents/domain/options.js +40 -0
- package/.medusa/server/src/modules/documents/domain/packing-list.js +90 -0
- package/.medusa/server/src/modules/documents/domain/snapshot-normalization.js +17 -0
- package/.medusa/server/src/modules/documents/domain/tax-breakdown.js +66 -0
- package/.medusa/server/src/modules/documents/index.js +15 -0
- package/.medusa/server/src/modules/documents/loaders/assert-private-file-storage.js +20 -0
- package/.medusa/server/src/modules/documents/migrations/Migration20260827061749.js +75 -0
- package/.medusa/server/src/modules/documents/migrations/Migration20260830111207.js +28 -0
- package/.medusa/server/src/modules/documents/models/document-artifact.js +25 -0
- package/.medusa/server/src/modules/documents/models/document-number-sequence.js +29 -0
- package/.medusa/server/src/modules/documents/models/document.js +82 -0
- package/.medusa/server/src/modules/documents/models/order-cancellation-resolution.js +51 -0
- package/.medusa/server/src/modules/documents/models/packing-list-revision.js +36 -0
- package/.medusa/server/src/modules/documents/models/packing-list.js +27 -0
- package/.medusa/server/src/modules/documents/models/refund-document-resolution.js +66 -0
- package/.medusa/server/src/modules/documents/models/shipment-invoice-assignment.js +51 -0
- package/.medusa/server/src/modules/documents/models/shipment-invoice-coordinator.js +44 -0
- package/.medusa/server/src/modules/documents/service.js +1701 -0
- package/.medusa/server/src/modules/email/domain/attachment.js +25 -0
- package/.medusa/server/src/modules/email/domain/message-state.js +69 -0
- package/.medusa/server/src/modules/email/index.js +13 -0
- package/.medusa/server/src/modules/email/migrations/Migration20260826173422.js +32 -0
- package/.medusa/server/src/modules/email/migrations/Migration20260827172945.js +16 -0
- package/.medusa/server/src/modules/email/migrations/Migration20260827194804.js +22 -0
- package/.medusa/server/src/modules/email/migrations/Migration20260906195205.js +16 -0
- package/.medusa/server/src/modules/email/models/email-attempt.js +56 -0
- package/.medusa/server/src/modules/email/models/email-message.js +71 -0
- package/.medusa/server/src/modules/email/models/email-terms-version.js +37 -0
- package/.medusa/server/src/modules/email/service.js +1285 -0
- package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +4 -3
- package/.medusa/server/src/providers/s3-cache/cache/atomic-write.js +25 -0
- package/.medusa/server/src/providers/s3-cache/cache/cache-manager.js +115 -0
- package/.medusa/server/src/providers/s3-cache/cache/keyed-lock.js +28 -0
- package/.medusa/server/src/providers/s3-cache/index.js +8 -0
- package/.medusa/server/src/providers/s3-cache/object-key.js +53 -0
- package/.medusa/server/src/providers/s3-cache/s3-cache-file.js +229 -0
- package/.medusa/server/src/providers/s3-cache/s3-object-store.js +86 -0
- package/.medusa/server/src/providers/smtp/index.js +8 -0
- package/.medusa/server/src/providers/smtp/service.js +236 -0
- package/.medusa/server/src/providers/smtp/types.js +11 -0
- package/.medusa/server/src/public/config.js +186 -0
- package/.medusa/server/src/public/descriptor.js +3 -1
- package/.medusa/server/src/public/gateway.js +19 -0
- package/.medusa/server/src/public/instrumentation.js +56 -0
- package/.medusa/server/src/public/shop-config.js +12 -0
- package/.medusa/server/src/public/shop-master-data.js +2 -2
- package/.medusa/server/src/public/shop-types.js +24 -0
- package/.medusa/server/src/shop-config/build-food-shop-config.js +252 -0
- package/.medusa/server/src/shop-config/options.js +75 -0
- package/.medusa/server/src/subscribers/affiliate-consignment-reminder-due.js +26 -0
- package/.medusa/server/src/subscribers/documents-order-canceled.js +24 -0
- package/.medusa/server/src/subscribers/documents-order-cancellation-ready.js +26 -0
- package/.medusa/server/src/subscribers/documents-refund-ready.js +24 -0
- package/.medusa/server/src/subscribers/documents-shipment-created.js +36 -0
- package/.medusa/server/src/subscribers/documents-shipment-invoice-assignment-decided.js +26 -0
- package/.medusa/server/src/subscribers/email-order-canceled.js +28 -0
- package/.medusa/server/src/subscribers/email-shipment-created.js +32 -0
- package/.medusa/server/src/subscribers/order-placed.js +27 -0
- package/.medusa/server/src/subscribers/packing-list-allocation-revised.js +32 -0
- package/.medusa/server/src/subscribers/packing-list-fulfillment-canceled.js +54 -0
- package/.medusa/server/src/subscribers/packing-list-fulfillment-created.js +31 -0
- package/.medusa/server/src/subscribers/password-reset.js +23 -0
- package/.medusa/server/src/subscribers/payment-refunded.js +38 -0
- package/.medusa/server/src/subscribers/return-received.js +27 -0
- package/.medusa/server/src/subscribers/return-requested.js +27 -0
- package/.medusa/server/src/subscribers/user-invite.js +23 -0
- package/.medusa/server/src/utils/cart-promotion-links.js +101 -0
- package/.medusa/server/src/workflows/documents/issue-cancellation-after-refund.js +246 -0
- package/.medusa/server/src/workflows/documents/issue-document.js +165 -0
- package/.medusa/server/src/workflows/documents/issue-invoice-after-shipment.js +521 -0
- package/.medusa/server/src/workflows/documents/issue-packing-list.js +390 -0
- package/.medusa/server/src/workflows/documents/publish-document-facts.js +53 -0
- package/.medusa/server/src/workflows/documents/reconcile-document-resolutions.js +48 -0
- package/.medusa/server/src/workflows/documents/reconcile-order-cancellation.js +92 -0
- package/.medusa/server/src/workflows/documents/regenerate-issued-document.js +61 -0
- package/.medusa/server/src/workflows/email/dispatch-email-message.js +301 -0
- package/.medusa/server/src/workflows/email/documents-required-facts.js +30 -0
- package/.medusa/server/src/workflows/email/prepare-affiliate-reminder-email.js +58 -0
- package/.medusa/server/src/workflows/email/prepare-order-canceled-email.js +102 -0
- package/.medusa/server/src/workflows/email/prepare-order-received-email.js +82 -0
- package/.medusa/server/src/workflows/email/prepare-refund-email.js +71 -0
- package/.medusa/server/src/workflows/email/prepare-return-email.js +136 -0
- package/.medusa/server/src/workflows/email/prepare-shipment-email.js +115 -0
- package/.medusa/server/src/workflows/email/retry-email-messages.js +31 -0
- package/.medusa/server/src/workflows/hooks/dismiss-deleted-promotion-cart-links.js +23 -0
- package/README.md +1777 -8
- package/dist/admin-components/features/plugin-features/components/ImageSettingInput.d.ts +15 -0
- package/dist/admin-components/features/plugin-features/components/ImageSettingInput.js +42 -0
- package/dist/admin-components/features/plugin-features/components/PluginSettingsForm.js +4 -2
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +1 -1
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +4 -4
- package/dist/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +1 -1
- package/dist/admin-components/features/plugin-features/lib/image-upload.d.ts +6 -0
- package/dist/admin-components/features/plugin-features/lib/image-upload.js +17 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +4 -4
- package/dist/admin-components/i18n/texts.d.ts +6 -0
- package/dist/admin-components/i18n/texts.js +6 -0
- package/dist/documents/config/index.d.ts +11 -0
- package/dist/documents/config/index.js +17 -0
- package/dist/documents/templates/financial-document.d.ts +3 -0
- package/dist/documents/templates/financial-document.js +159 -0
- package/dist/documents/templates/format.d.ts +30 -0
- package/dist/documents/templates/format.js +72 -0
- package/dist/documents/templates/html-factory.d.ts +15 -0
- package/dist/documents/templates/html-factory.js +41 -0
- package/dist/documents/templates/html-utils.d.ts +8 -0
- package/dist/documents/templates/html-utils.js +22 -0
- package/dist/documents/templates/layout.d.ts +35 -0
- package/dist/documents/templates/layout.js +141 -0
- package/dist/documents/templates/packing-list.d.ts +3 -0
- package/dist/documents/templates/packing-list.js +51 -0
- package/dist/documents/types/admin-api.d.ts +1 -0
- package/dist/documents/types/admin-api.js +2 -0
- package/dist/documents/types/document-summary.d.ts +1 -0
- package/dist/documents/types/document-summary.js +2 -0
- package/dist/documents/types/documents.d.ts +191 -0
- package/dist/documents/types/documents.js +2 -0
- package/dist/documents/types/html-factory.d.ts +8 -0
- package/dist/documents/types/html-factory.js +5 -0
- package/dist/documents/types/index.d.ts +5 -0
- package/dist/documents/types/index.js +21 -0
- package/dist/documents/types/store-api.d.ts +1 -0
- package/dist/documents/types/store-api.js +2 -0
- package/dist/email/config/index.d.ts +17 -0
- package/dist/email/config/index.js +83 -0
- package/dist/email/config/notification-module.d.ts +22 -0
- package/dist/email/config/notification-module.js +19 -0
- package/dist/email/types/email-kinds.d.ts +15 -0
- package/dist/email/types/email-kinds.js +17 -0
- package/dist/email/types/index.d.ts +4 -0
- package/dist/email/types/index.js +20 -0
- package/dist/email/types/shop-configuration.d.ts +68 -0
- package/dist/email/types/shop-configuration.js +2 -0
- package/dist/email/types/smtp-configuration.d.ts +9 -0
- package/dist/email/types/smtp-configuration.js +2 -0
- package/dist/email/types/template-data.d.ts +609 -0
- package/dist/email/types/template-data.js +231 -0
- package/dist/files/config/index.d.ts +32 -0
- package/dist/files/config/index.js +255 -0
- package/dist/files/gateway/index.d.ts +30 -0
- package/dist/files/gateway/index.js +114 -0
- package/dist/files/types/index.d.ts +2 -0
- package/dist/files/types/index.js +5 -0
- package/dist/files/types/public.d.ts +90 -0
- package/dist/files/types/public.js +5 -0
- package/dist/modules/documents/domain/merchant.d.ts +22 -0
- package/dist/modules/documents/domain/merchant.js +85 -0
- package/dist/modules/documents/domain/options.d.ts +34 -0
- package/dist/modules/documents/domain/options.js +39 -0
- package/dist/public/config.d.ts +59 -0
- package/dist/public/config.js +185 -0
- package/dist/public/descriptor.js +2 -0
- package/dist/public/gateway.d.ts +2 -0
- package/dist/public/gateway.js +18 -0
- package/dist/public/instrumentation.d.ts +12 -0
- package/dist/public/instrumentation.js +55 -0
- package/dist/public/shop-config.d.ts +8 -0
- package/dist/public/shop-config.js +11 -0
- package/dist/public/shop-master-data.d.ts +1 -1
- package/dist/public/shop-master-data.js +1 -1
- package/dist/public/shop-types.d.ts +7 -0
- package/dist/public/shop-types.js +23 -0
- package/dist/public/types.d.ts +19 -2
- package/dist/shop-config/build-food-shop-config.d.ts +44 -0
- package/dist/shop-config/build-food-shop-config.js +251 -0
- package/dist/shop-config/options.d.ts +48 -0
- package/dist/shop-config/options.js +74 -0
- package/package.json +48 -5
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.emailAttemptNotificationKey = exports.nextAutomaticRetryAt = exports.canAutomaticallyRetry = exports.classifyNotificationFailure = exports.MAX_AUTOMATIC_EMAIL_ATTEMPTS = void 0;
|
|
4
|
+
const types_1 = require("../../providers/smtp/types");
|
|
5
|
+
exports.MAX_AUTOMATIC_EMAIL_ATTEMPTS = 3;
|
|
6
|
+
const RETRY_DELAYS_MS = [60_000, 5 * 60_000];
|
|
7
|
+
const bySentinel = new Map([
|
|
8
|
+
[
|
|
9
|
+
types_1.SMTP_FAILURE_SENTINELS.connectionFailed,
|
|
10
|
+
{ code: "connection_failed", outcome: "retryable" },
|
|
11
|
+
],
|
|
12
|
+
[
|
|
13
|
+
types_1.SMTP_FAILURE_SENTINELS.invalidContent,
|
|
14
|
+
{ code: "invalid_content", outcome: "failed" },
|
|
15
|
+
],
|
|
16
|
+
[
|
|
17
|
+
types_1.SMTP_FAILURE_SENTINELS.outcomeUnknown,
|
|
18
|
+
{ code: "outcome_unknown", outcome: "unknown" },
|
|
19
|
+
],
|
|
20
|
+
[
|
|
21
|
+
types_1.SMTP_FAILURE_SENTINELS.permanentRejection,
|
|
22
|
+
{ code: "permanent_rejection", outcome: "failed" },
|
|
23
|
+
],
|
|
24
|
+
[
|
|
25
|
+
types_1.SMTP_FAILURE_SENTINELS.transientRejection,
|
|
26
|
+
{ code: "temporary_rejection", outcome: "retryable" },
|
|
27
|
+
],
|
|
28
|
+
]);
|
|
29
|
+
const classifyNotificationFailure = (error) => {
|
|
30
|
+
if (!(error instanceof Error)) {
|
|
31
|
+
return { code: "outcome_unknown", outcome: "unknown" };
|
|
32
|
+
}
|
|
33
|
+
const match = error.message.match(/^Failed to send notification with id [A-Za-z0-9_-]+:\r?\n([^\r\n]+)$/);
|
|
34
|
+
return ((match?.[1] ? bySentinel.get(match[1]) : undefined) ?? {
|
|
35
|
+
code: "outcome_unknown",
|
|
36
|
+
outcome: "unknown",
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
exports.classifyNotificationFailure = classifyNotificationFailure;
|
|
40
|
+
const canAutomaticallyRetry = (attemptNumber) => Number.isInteger(attemptNumber) &&
|
|
41
|
+
attemptNumber > 0 &&
|
|
42
|
+
attemptNumber < exports.MAX_AUTOMATIC_EMAIL_ATTEMPTS;
|
|
43
|
+
exports.canAutomaticallyRetry = canAutomaticallyRetry;
|
|
44
|
+
const nextAutomaticRetryAt = (now, attemptNumber) => {
|
|
45
|
+
if (!(0, exports.canAutomaticallyRetry)(attemptNumber)) {
|
|
46
|
+
throw new TypeError("The email attempt has no remaining automatic retry.");
|
|
47
|
+
}
|
|
48
|
+
return new Date(now.getTime() + RETRY_DELAYS_MS[attemptNumber - 1]);
|
|
49
|
+
};
|
|
50
|
+
exports.nextAutomaticRetryAt = nextAutomaticRetryAt;
|
|
51
|
+
const emailAttemptNotificationKey = (attemptId) => `email-attempt:${attemptId}`;
|
|
52
|
+
exports.emailAttemptNotificationKey = emailAttemptNotificationKey;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS1jbGFzc2lmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vZmFpbHVyZS1jbGFzc2lmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBb0U7QUFFdkQsUUFBQSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFOUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBVSxDQUFDO0FBYXRELE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUErQjtJQUN2RDtRQUNFLDhCQUFzQixDQUFDLGdCQUFnQjtRQUN2QyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0tBQ3BEO0lBQ0Q7UUFDRSw4QkFBc0IsQ0FBQyxjQUFjO1FBQ3JDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7S0FDL0M7SUFDRDtRQUNFLDhCQUFzQixDQUFDLGNBQWM7UUFDckMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtLQUNoRDtJQUNEO1FBQ0UsOEJBQXNCLENBQUMsa0JBQWtCO1FBQ3pDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7S0FDbkQ7SUFDRDtRQUNFLDhCQUFzQixDQUFDLGtCQUFrQjtRQUN6QyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0tBQ3REO0NBQ0YsQ0FBQyxDQUFDO0FBRUksTUFBTSwyQkFBMkIsR0FBRyxDQUN6QyxLQUFjLEVBQ1EsRUFBRTtJQUN4QixJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQy9CLHNFQUFzRSxDQUN2RSxDQUFDO0lBQ0YsT0FBTyxDQUNMLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJO1FBQ3JELElBQUksRUFBRSxpQkFBaUI7UUFDdkIsT0FBTyxFQUFFLFNBQVM7S0FDbkIsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBZlcsUUFBQSwyQkFBMkIsK0JBZXRDO0FBRUssTUFBTSxxQkFBcUIsR0FBRyxDQUFDLGFBQXFCLEVBQVcsRUFBRSxDQUN0RSxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUMvQixhQUFhLEdBQUcsQ0FBQztJQUNqQixhQUFhLEdBQUcsb0NBQTRCLENBQUM7QUFIbEMsUUFBQSxxQkFBcUIseUJBR2E7QUFFeEMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxHQUFTLEVBQ1QsYUFBcUIsRUFDZixFQUFFO0lBQ1IsSUFBSSxDQUFDLElBQUEsNkJBQXFCLEVBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksU0FBUyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLGVBQWUsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFSVyxRQUFBLG9CQUFvQix3QkFRL0I7QUFFSyxNQUFNLDJCQUEyQixHQUFHLENBQUMsU0FBaUIsRUFBVSxFQUFFLENBQ3ZFLGlCQUFpQixTQUFTLEVBQUUsQ0FBQztBQURsQixRQUFBLDJCQUEyQiwrQkFDVCJ9
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toOrderSummary = exports.toIsoDateTime = exports.toOrderSummaryAddress = exports.ORDER_SUMMARY_FIELDS = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
/** Order fields `toOrderSummary` reads; load them with `getOrderDetailWorkflow`. */
|
|
6
|
+
exports.ORDER_SUMMARY_FIELDS = [
|
|
7
|
+
"display_id",
|
|
8
|
+
"email",
|
|
9
|
+
"created_at",
|
|
10
|
+
"currency_code",
|
|
11
|
+
"items.title",
|
|
12
|
+
"items.variant_title",
|
|
13
|
+
"items.quantity",
|
|
14
|
+
"items.original_total",
|
|
15
|
+
"shipping_methods.name",
|
|
16
|
+
"original_item_total",
|
|
17
|
+
"original_shipping_total",
|
|
18
|
+
"discount_total",
|
|
19
|
+
"tax_total",
|
|
20
|
+
"total",
|
|
21
|
+
"billing_address.*",
|
|
22
|
+
"shipping_address.*",
|
|
23
|
+
];
|
|
24
|
+
const asRecord = (value) => value && typeof value === "object" ? value : null;
|
|
25
|
+
const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
|
|
26
|
+
/** Medusa returns amounts as numbers, numeric strings or `{ value }` BigNumbers. */
|
|
27
|
+
const asAmount = (value) => {
|
|
28
|
+
const raw = asRecord(value)?.value ?? value;
|
|
29
|
+
if (typeof raw === "number" && Number.isFinite(raw)) {
|
|
30
|
+
return String(raw);
|
|
31
|
+
}
|
|
32
|
+
if (typeof raw === "string" && raw.trim()) {
|
|
33
|
+
return raw.trim();
|
|
34
|
+
}
|
|
35
|
+
return "0";
|
|
36
|
+
};
|
|
37
|
+
const asNumber = (value) => {
|
|
38
|
+
const raw = asRecord(value)?.value ?? value;
|
|
39
|
+
return typeof raw === "string" && raw.trim() ? Number(raw) : raw;
|
|
40
|
+
};
|
|
41
|
+
const toOrderSummaryAddress = (value) => {
|
|
42
|
+
const address = asRecord(value);
|
|
43
|
+
if (!address) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
first_name: asText(address.first_name),
|
|
48
|
+
last_name: asText(address.last_name),
|
|
49
|
+
company: asText(address.company),
|
|
50
|
+
address_1: asText(address.address_1),
|
|
51
|
+
address_2: asText(address.address_2),
|
|
52
|
+
postal_code: asText(address.postal_code),
|
|
53
|
+
city: asText(address.city),
|
|
54
|
+
country_code: asText(address.country_code),
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
exports.toOrderSummaryAddress = toOrderSummaryAddress;
|
|
58
|
+
const asArray = (value) => Array.isArray(value) ? value : [];
|
|
59
|
+
const asIsoDate = (value) => {
|
|
60
|
+
const date = value instanceof Date
|
|
61
|
+
? value
|
|
62
|
+
: typeof value === "string"
|
|
63
|
+
? new Date(value)
|
|
64
|
+
: null;
|
|
65
|
+
return date && !Number.isNaN(date.getTime()) ? date.toISOString() : value;
|
|
66
|
+
};
|
|
67
|
+
/** An order timestamp as ISO 8601; `null` when missing or unreadable. */
|
|
68
|
+
const toIsoDateTime = (value) => {
|
|
69
|
+
const iso = asIsoDate(value);
|
|
70
|
+
return typeof iso === "string" && !Number.isNaN(Date.parse(iso)) ? iso : null;
|
|
71
|
+
};
|
|
72
|
+
exports.toIsoDateTime = toIsoDateTime;
|
|
73
|
+
/** Maps a Medusa order detail to the summary frozen into the order mails. */
|
|
74
|
+
const toOrderSummary = (rawOrder) => {
|
|
75
|
+
const order = asRecord(rawOrder) ?? {};
|
|
76
|
+
return types_1.OrderSummarySchema.parse({
|
|
77
|
+
display_id: asNumber(order.display_id) ?? null,
|
|
78
|
+
email: asText(order.email),
|
|
79
|
+
placed_at: asIsoDate(order.created_at),
|
|
80
|
+
currency_code: order.currency_code,
|
|
81
|
+
items: asArray(order.items).map((rawItem) => {
|
|
82
|
+
const item = asRecord(rawItem) ?? {};
|
|
83
|
+
return {
|
|
84
|
+
title: item.title,
|
|
85
|
+
variant_title: asText(item.variant_title),
|
|
86
|
+
quantity: asNumber(item.quantity),
|
|
87
|
+
original_total: asAmount(item.original_total),
|
|
88
|
+
};
|
|
89
|
+
}),
|
|
90
|
+
shipping_method_names: asArray(order.shipping_methods)
|
|
91
|
+
.map((method) => asText(asRecord(method)?.name))
|
|
92
|
+
.filter((name) => name !== null),
|
|
93
|
+
original_item_total: asAmount(order.original_item_total),
|
|
94
|
+
original_shipping_total: asAmount(order.original_shipping_total),
|
|
95
|
+
discount_total: asAmount(order.discount_total),
|
|
96
|
+
tax_total: asAmount(order.tax_total),
|
|
97
|
+
total: asAmount(order.total),
|
|
98
|
+
billing_address: (0, exports.toOrderSummaryAddress)(order.billing_address),
|
|
99
|
+
shipping_address: (0, exports.toOrderSummaryAddress)(order.shipping_address),
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
exports.toOrderSummary = toOrderSummary;
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItc3VtbWFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vb3JkZXItc3VtbWFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FJa0I7QUFFbEIsb0ZBQW9GO0FBQ3ZFLFFBQUEsb0JBQW9CLEdBQUc7SUFDbEMsWUFBWTtJQUNaLE9BQU87SUFDUCxZQUFZO0lBQ1osZUFBZTtJQUNmLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6QixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLE9BQU87SUFDUCxtQkFBbUI7SUFDbkIsb0JBQW9CO0NBQ1osQ0FBQztBQUlYLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFvQixFQUFFLENBQ3BELEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFFLEtBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUVuRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWMsRUFBaUIsRUFBRSxDQUMvQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUVsRSxvRkFBb0Y7QUFDcEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQVUsRUFBRTtJQUMxQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUM1QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFD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
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toRefundSummary = exports.REFUND_PAYMENT_FIELDS = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const order_summary_1 = require("./order-summary");
|
|
6
|
+
/** Payment fields `toRefundSummary` reads; load them with Query. */
|
|
7
|
+
exports.REFUND_PAYMENT_FIELDS = [
|
|
8
|
+
"id",
|
|
9
|
+
"currency_code",
|
|
10
|
+
"refunds.id",
|
|
11
|
+
"refunds.amount",
|
|
12
|
+
"refunds.created_at",
|
|
13
|
+
"refunds.refund_reason.label",
|
|
14
|
+
];
|
|
15
|
+
const asRecord = (value) => value && typeof value === "object" ? value : {};
|
|
16
|
+
const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
|
|
17
|
+
const asNumber = (value) => {
|
|
18
|
+
const raw = asRecord(value).value ?? value;
|
|
19
|
+
return typeof raw === "string" && raw.trim() ? Number(raw) : raw;
|
|
20
|
+
};
|
|
21
|
+
/** Medusa returns amounts as numbers, numeric strings or `{ value }` BigNumbers. */
|
|
22
|
+
const asAmount = (value) => {
|
|
23
|
+
const raw = asRecord(value).value ?? value;
|
|
24
|
+
return typeof raw === "number" && Number.isFinite(raw) ? String(raw) : raw;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Maps one refund of a payment and its order to the snapshot frozen into the
|
|
28
|
+
* refund confirmation. Fails when the payment has no such refund.
|
|
29
|
+
*/
|
|
30
|
+
const toRefundSummary = (rawOrder, rawPayment, refundId) => {
|
|
31
|
+
const payment = asRecord(rawPayment);
|
|
32
|
+
const refunds = Array.isArray(payment.refunds) ? payment.refunds : [];
|
|
33
|
+
const refund = asRecord(refunds.find((candidate) => asRecord(candidate).id === refundId));
|
|
34
|
+
return types_1.RefundSummarySchema.parse({
|
|
35
|
+
order_display_id: asNumber(asRecord(rawOrder).display_id) ?? null,
|
|
36
|
+
amount: asAmount(refund.amount),
|
|
37
|
+
currency_code: payment.currency_code,
|
|
38
|
+
refunded_at: (0, order_summary_1.toIsoDateTime)(refund.created_at),
|
|
39
|
+
reason: asText(asRecord(refund.refund_reason).label),
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
exports.toRefundSummary = toRefundSummary;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kLXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvZG9tYWluL3JlZnVuZC1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQUFtRTtBQUNuRSxtREFBZ0Q7QUFFaEQsb0VBQW9FO0FBQ3ZELFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsSUFBSTtJQUNKLGVBQWU7SUFDZixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQiw2QkFBNkI7Q0FDckIsQ0FBQztBQUlYLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFhLEVBQUUsQ0FDN0MsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUUsS0FBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBRWpFLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBYyxFQUFpQixFQUFFLENBQy9DLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRWxFLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDM0MsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7SUFDM0MsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNuRSxDQUFDLENBQUM7QUFFRixvRkFBb0Y7QUFDcEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRTtJQUMzQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztJQUMzQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSSxNQUFNLGVBQWUsR0FBRyxDQUM3QixRQUFpQixFQUNqQixVQUFtQixFQUNuQixRQUFnQixFQUNELEVBQUU7SUFDakIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUNqRSxDQUFDO0lBQ0YsT0FBTywyQkFBbUIsQ0FBQyxLQUFLLENBQUM7UUFDL0IsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJO1FBQ2pFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUMvQixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7UUFDcEMsV0FBVyxFQUFFLElBQUEsNkJBQWEsRUFBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQzdDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUM7S0FDckQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBakJXLFFBQUEsZUFBZSxtQkFpQjFCIn0=
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toReturnReceivedSummary = exports.toReturnSummary = exports.RETURN_LOCATION_FIELDS = exports.RETURN_RECEIVED_SUMMARY_FIELDS = exports.RETURN_SUMMARY_FIELDS = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const order_summary_1 = require("./order-summary");
|
|
6
|
+
/** Return fields `toReturnSummary` reads; load them with Query. */
|
|
7
|
+
exports.RETURN_SUMMARY_FIELDS = [
|
|
8
|
+
"id",
|
|
9
|
+
"display_id",
|
|
10
|
+
"location_id",
|
|
11
|
+
"order.display_id",
|
|
12
|
+
"items.quantity",
|
|
13
|
+
"items.item.title",
|
|
14
|
+
"items.item.variant_title",
|
|
15
|
+
"items.reason.label",
|
|
16
|
+
"shipping_methods.name",
|
|
17
|
+
];
|
|
18
|
+
/** Return fields `toReturnReceivedSummary` reads; load them with Query. */
|
|
19
|
+
exports.RETURN_RECEIVED_SUMMARY_FIELDS = [
|
|
20
|
+
"id",
|
|
21
|
+
"display_id",
|
|
22
|
+
"received_at",
|
|
23
|
+
"order.display_id",
|
|
24
|
+
"items.received_quantity",
|
|
25
|
+
"items.damaged_quantity",
|
|
26
|
+
"items.item.title",
|
|
27
|
+
"items.item.variant_title",
|
|
28
|
+
];
|
|
29
|
+
/** Stock location fields `toReturnSummary` reads; load them with Query. */
|
|
30
|
+
exports.RETURN_LOCATION_FIELDS = ["id", "address.*"];
|
|
31
|
+
const asRecord = (value) => value && typeof value === "object" ? value : {};
|
|
32
|
+
const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
|
|
33
|
+
const asArray = (value) => Array.isArray(value) ? value : [];
|
|
34
|
+
const asNumber = (value) => {
|
|
35
|
+
const raw = asRecord(value).value ?? value;
|
|
36
|
+
return typeof raw === "string" && raw.trim() ? Number(raw) : raw;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Where the customer sends the parcel: the return's stock location, else
|
|
40
|
+
* the company address from the shop master data. Both are addressed to the
|
|
41
|
+
* company (`legal_name`) unless the location names its own company.
|
|
42
|
+
*/
|
|
43
|
+
const returnAddress = (rawLocation, shop) => {
|
|
44
|
+
const company = asText(shop.legal_name);
|
|
45
|
+
const location = (0, order_summary_1.toOrderSummaryAddress)(asRecord(rawLocation).address);
|
|
46
|
+
if (location?.address_1) {
|
|
47
|
+
return { ...location, company: location.company ?? company };
|
|
48
|
+
}
|
|
49
|
+
const street = asText(shop.address_line1);
|
|
50
|
+
if (!street) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
first_name: null,
|
|
55
|
+
last_name: null,
|
|
56
|
+
company,
|
|
57
|
+
address_1: street,
|
|
58
|
+
address_2: asText(shop.address_line2),
|
|
59
|
+
postal_code: asText(shop.postal_code),
|
|
60
|
+
city: asText(shop.city),
|
|
61
|
+
country_code: asText(shop.country_code),
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Maps a requested return, its stock location and the shop master data to
|
|
66
|
+
* the snapshot frozen into the return confirmation. Items carry the order
|
|
67
|
+
* line's product and variant title.
|
|
68
|
+
*/
|
|
69
|
+
const toReturnSummary = (rawReturn, rawLocation, shop) => {
|
|
70
|
+
const orderReturn = asRecord(rawReturn);
|
|
71
|
+
const order = asRecord(orderReturn.order);
|
|
72
|
+
return types_1.ReturnSummarySchema.parse({
|
|
73
|
+
display_id: asNumber(orderReturn.display_id) ?? null,
|
|
74
|
+
order_display_id: asNumber(order.display_id) ?? null,
|
|
75
|
+
shipping_method_name: asArray(orderReturn.shipping_methods)
|
|
76
|
+
.map((method) => asText(asRecord(method).name))
|
|
77
|
+
.find((name) => name !== null) ?? null,
|
|
78
|
+
items: asArray(orderReturn.items).map((rawItem) => {
|
|
79
|
+
const item = asRecord(rawItem);
|
|
80
|
+
const line = asRecord(item.item);
|
|
81
|
+
return {
|
|
82
|
+
title: asText(line.title),
|
|
83
|
+
variant_title: asText(line.variant_title),
|
|
84
|
+
quantity: asNumber(item.quantity),
|
|
85
|
+
reason: asText(asRecord(item.reason).label),
|
|
86
|
+
};
|
|
87
|
+
}),
|
|
88
|
+
return_address: returnAddress(rawLocation, shop),
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
exports.toReturnSummary = toReturnSummary;
|
|
92
|
+
/**
|
|
93
|
+
* Maps a completely received return to the snapshot frozen into the return
|
|
94
|
+
* receipt. Only items that arrived are listed; damaged units are part of the
|
|
95
|
+
* received quantity, as in Medusa.
|
|
96
|
+
*/
|
|
97
|
+
const toReturnReceivedSummary = (rawReturn) => {
|
|
98
|
+
const orderReturn = asRecord(rawReturn);
|
|
99
|
+
return types_1.ReturnReceivedSummarySchema.parse({
|
|
100
|
+
display_id: asNumber(orderReturn.display_id) ?? null,
|
|
101
|
+
order_display_id: asNumber(asRecord(orderReturn.order).display_id) ?? null,
|
|
102
|
+
received_at: (0, order_summary_1.toIsoDateTime)(orderReturn.received_at),
|
|
103
|
+
items: asArray(orderReturn.items)
|
|
104
|
+
.map((rawItem) => {
|
|
105
|
+
const item = asRecord(rawItem);
|
|
106
|
+
const line = asRecord(item.item);
|
|
107
|
+
return {
|
|
108
|
+
title: asText(line.title),
|
|
109
|
+
variant_title: asText(line.variant_title),
|
|
110
|
+
quantity: asNumber(item.received_quantity),
|
|
111
|
+
damaged_quantity: asNumber(item.damaged_quantity) ?? 0,
|
|
112
|
+
};
|
|
113
|
+
})
|
|
114
|
+
.filter((item) => Number(item.quantity) > 0),
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
exports.toReturnReceivedSummary = toReturnReceivedSummary;
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJuLXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvZG9tYWluL3JldHVybi1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG9DQU1rQjtBQUNsQixtREFBdUU7QUFFdkUsbUVBQW1FO0FBQ3RELFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsSUFBSTtJQUNKLFlBQVk7SUFDWixhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsMEJBQTBCO0lBQzFCLG9CQUFvQjtJQUNwQix1QkFBdUI7Q0FDZixDQUFDO0FBRVgsMkVBQTJFO0FBQzlELFFBQUEsOEJBQThCLEdBQUc7SUFDNUMsSUFBSTtJQUNKLFlBQVk7SUFDWixhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLHlCQUF5QjtJQUN6Qix3QkFBd0I7SUFDeEIsa0JBQWtCO0lBQ2xCLDBCQUEwQjtDQUNsQixDQUFDO0FBRVgsMkVBQTJFO0FBQzlELFFBQUEsc0JBQXNCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFJbkUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQWEsRUFBRSxDQUM3QyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxLQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFakUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFjLEVBQWlCLEVBQUUsQ0FDL0MsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFbEUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFjLEVBQWEsRUFBRSxDQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxL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
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toShipmentSummary = exports.SHIPMENT_ORDER_FIELDS = exports.SHIPMENT_FULFILLMENT_FIELDS = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const order_summary_1 = require("./order-summary");
|
|
6
|
+
/** Fulfillment fields `toShipmentSummary` reads; load them with Query. */
|
|
7
|
+
exports.SHIPMENT_FULFILLMENT_FIELDS = [
|
|
8
|
+
"id",
|
|
9
|
+
"labels.tracking_number",
|
|
10
|
+
"labels.tracking_url",
|
|
11
|
+
"items.line_item_id",
|
|
12
|
+
"items.quantity",
|
|
13
|
+
"items.title",
|
|
14
|
+
"shipping_option.name",
|
|
15
|
+
"delivery_address.*",
|
|
16
|
+
];
|
|
17
|
+
/** Order fields `toShipmentSummary` reads; load them with `getOrderDetailWorkflow`. */
|
|
18
|
+
exports.SHIPMENT_ORDER_FIELDS = [
|
|
19
|
+
"display_id",
|
|
20
|
+
"items.id",
|
|
21
|
+
"items.title",
|
|
22
|
+
"items.variant_title",
|
|
23
|
+
"items.detail.quantity",
|
|
24
|
+
"items.detail.shipped_quantity",
|
|
25
|
+
];
|
|
26
|
+
const asRecord = (value) => value && typeof value === "object" ? value : {};
|
|
27
|
+
const asText = (value) => typeof value === "string" && value.trim() ? value.trim() : null;
|
|
28
|
+
const asArray = (value) => Array.isArray(value) ? value : [];
|
|
29
|
+
const asNumber = (value) => {
|
|
30
|
+
const raw = asRecord(value).value ?? value;
|
|
31
|
+
return typeof raw === "string" && raw.trim() ? Number(raw) : raw;
|
|
32
|
+
};
|
|
33
|
+
/** Some ordered quantity has not been shipped yet. */
|
|
34
|
+
const hasUnshippedItems = (items) => items.some((rawItem) => {
|
|
35
|
+
const detail = asRecord(asRecord(rawItem).detail);
|
|
36
|
+
const ordered = Number(asNumber(detail.quantity));
|
|
37
|
+
const shipped = Number(asNumber(detail.shipped_quantity) ?? 0);
|
|
38
|
+
return Number.isFinite(ordered) && Number.isFinite(shipped)
|
|
39
|
+
? shipped < ordered
|
|
40
|
+
: false;
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* Maps a shipped fulfillment and its order to the snapshot frozen into the
|
|
44
|
+
* shipping confirmation. Items carry the order line's product and variant
|
|
45
|
+
* title; more is to follow while some ordered quantity is not shipped yet.
|
|
46
|
+
*/
|
|
47
|
+
const toShipmentSummary = (rawOrder, rawFulfillment) => {
|
|
48
|
+
const order = asRecord(rawOrder);
|
|
49
|
+
const fulfillment = asRecord(rawFulfillment);
|
|
50
|
+
const orderItems = new Map(asArray(order.items).map((item) => [asRecord(item).id, asRecord(item)]));
|
|
51
|
+
return types_1.ShipmentSummarySchema.parse({
|
|
52
|
+
display_id: asNumber(order.display_id) ?? null,
|
|
53
|
+
shipping_method_name: asText(asRecord(fulfillment.shipping_option).name),
|
|
54
|
+
tracking: asArray(fulfillment.labels)
|
|
55
|
+
.map((label) => ({
|
|
56
|
+
number: asText(asRecord(label).tracking_number),
|
|
57
|
+
url: asText(asRecord(label).tracking_url),
|
|
58
|
+
}))
|
|
59
|
+
.filter((label) => label.number !== null || label.url !== null),
|
|
60
|
+
items: asArray(fulfillment.items).map((rawItem) => {
|
|
61
|
+
const item = asRecord(rawItem);
|
|
62
|
+
const line = orderItems.get(item.line_item_id);
|
|
63
|
+
return {
|
|
64
|
+
title: asText(line?.title) ?? item.title,
|
|
65
|
+
variant_title: line ? asText(line.variant_title) : null,
|
|
66
|
+
quantity: asNumber(item.quantity),
|
|
67
|
+
};
|
|
68
|
+
}),
|
|
69
|
+
delivery_address: (0, order_summary_1.toOrderSummaryAddress)(fulfillment.delivery_address),
|
|
70
|
+
more_to_follow: hasUnshippedItems(asArray(order.items)),
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
exports.toShipmentSummary = toShipmentSummary;
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQtc3VtbWFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vc2hpcG1lbnQtc3VtbWFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FBdUU7QUFDdkUsbURBQXdEO0FBRXhELDBFQUEwRTtBQUM3RCxRQUFBLDJCQUEyQixHQUFHO0lBQ3pDLElBQUk7SUFDSix3QkFBd0I7SUFDeEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixvQkFBb0I7Q0FDWixDQUFDO0FBRVgsdUZBQXVGO0FBQzFFLFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsWUFBWTtJQUNaLFVBQVU7SUFDVixhQUFhO0lBQ2IscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QiwrQkFBK0I7Q0FDdkIsQ0FBQztBQUlYLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYyxFQUFhLEVBQUUsQ0FDN0MsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUUsS0FBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBRWpFLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBYyxFQUFpQixFQUFFLENBQy9DLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRWxFLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYyxFQUFhLEVBQUUsQ0FDNUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRTtJQUMzQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENB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
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.emailPluginFeatures = void 0;
|
|
4
|
+
const public_1 = require("../public");
|
|
5
|
+
exports.emailPluginFeatures = (0, public_1.definePluginFeatures)({
|
|
6
|
+
plugin_key: "email",
|
|
7
|
+
label: "E-Mail",
|
|
8
|
+
description: "Transaktionale E-Mails und das E-Mail-Protokoll im Admin. Aus: Für neue Ereignisse wird keine Mail erzeugt (Ereignisse werden später nicht nachgeholt), das E-Mail-Protokoll und die AGB-Versionen im Admin sind nicht erreichbar und die Versand-, Wiederholungs- und Abgleichsjobs laufen nicht; bereits eingereihte Mails bleiben liegen, bis das Plugin wieder eingeschaltet wird. Checkout und Bestellungen laufen unverändert weiter.",
|
|
9
|
+
features: [
|
|
10
|
+
{
|
|
11
|
+
key: "order_mails",
|
|
12
|
+
label: "Bestell-Mails",
|
|
13
|
+
description: "Bestelleingang, Versand, Stornierung, Retoure und Erstattung (inklusive der Mails zu Belegen aus dem Dokumente-Plugin). Sind im Dokumente-Plugin die Rechnungen & Stornos aus, gehen Versand- und Storno-Mails ohne Beleg hinaus; Erstattungs-Mails entstehen nur aus einem Erstattungsbeleg und werden dann nicht verschickt. Aus: Für diese Ereignisse wird keine Mail erzeugt und später auch nicht nachgeholt.",
|
|
14
|
+
default_enabled: true,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
key: "account_mails",
|
|
18
|
+
label: "Konto-Mails",
|
|
19
|
+
description: "Passwort-Zurücksetzen für Kunden und Einladungen neuer Admin-Benutzer. Aus: Für diese Ereignisse wird keine Mail erzeugt.",
|
|
20
|
+
default_enabled: true,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
key: "affiliate_reminders",
|
|
24
|
+
label: "Affiliate-Erinnerungen",
|
|
25
|
+
description: "Erinnerungsmails an Affiliates zur fälligen Konsignationsmeldung. Aus: Für diese Ereignisse wird keine Mail erzeugt.",
|
|
26
|
+
default_enabled: true,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
settings: [
|
|
30
|
+
{
|
|
31
|
+
key: "logo",
|
|
32
|
+
label: "Logo",
|
|
33
|
+
description: "PNG oder JPG, erscheint oben in den E-Mails. Am besten mindestens 400 px breit, auf weißem oder transparentem Hintergrund. Ohne Logo steht dort der Shopname.",
|
|
34
|
+
type: "image",
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
admin_page: "/settings/hartl-services/email",
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3BsdWdpbi1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBaUQ7QUFFcEMsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDZCQUFvQixFQUFDO0lBQ3RELFVBQVUsRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsV0FBVyxFQUNULDZhQUE2YTtJQUMvYSxRQUFRLEVBQUU7UUFDUjtZQUNFLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFDVCxvWkFBb1o7WUFDdFosZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFDVCwySEFBMkg7WUFDN0gsZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsS0FBSyxFQUFFLHdCQUF3QjtZQUMvQixXQUFXLEVBQ1Qsc0hBQXNIO1lBQ3hILGVBQWUsRUFBRSxJQUFJO1NBQ3RCO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUjtZQUNFLEdBQUcsRUFBRSxNQUFNO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixXQUFXLEVBQ1QsK0pBQStKO1lBQ2pLLElBQUksRUFBRSxPQUFPO1NBQ2Q7S0FDRjtJQUNELFVBQVUsRUFBRSxnQ0FBZ0M7Q0FDN0MsQ0FBQyxDQUFDIn0=
|