@punchcommerce/punchcommerce-medusa-plugin 0.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 +265 -0
- package/.medusa/server/src/admin/index.mjs +264 -0
- package/.medusa/server/src/api/admin/customers/[id]/punchcommerce-customer/route.js +35 -0
- package/.medusa/server/src/api/middlewares.js +52 -0
- package/.medusa/server/src/api/store/punchout/actions/parse-items.js +32 -0
- package/.medusa/server/src/api/store/punchout/actions/route.js +70 -0
- package/.medusa/server/src/api/store/punchout/basket/route.js +17 -0
- package/.medusa/server/src/modules/punchcommerce-client/index.js +13 -0
- package/.medusa/server/src/modules/punchcommerce-client/service.js +36 -0
- package/.medusa/server/src/modules/punchcommerce-client/transform.js +43 -0
- package/.medusa/server/src/modules/punchcommerce-client/types.js +3 -0
- package/.medusa/server/src/providers/punchcommerce-auth/index.js +10 -0
- package/.medusa/server/src/providers/punchcommerce-auth/service.js +69 -0
- package/.medusa/server/src/subscribers/customer-deleted.js +26 -0
- package/.medusa/server/src/workflows/build-background-search-basket.js +49 -0
- package/.medusa/server/src/workflows/build-punchout-basket.js +40 -0
- package/.medusa/server/src/workflows/delete-punchcommerce-customer.js +12 -0
- package/.medusa/server/src/workflows/lookup-product-handle.js +10 -0
- package/.medusa/server/src/workflows/restore-punchout-basket.js +33 -0
- package/.medusa/server/src/workflows/steps/get-punchout-cart.js +48 -0
- package/.medusa/server/src/workflows/steps/link-punchcommerce-auth-identity.js +86 -0
- package/.medusa/server/src/workflows/steps/lookup-product-handle-by-sku.js +21 -0
- package/.medusa/server/src/workflows/steps/lookup-punchcommerce-uid.js +16 -0
- package/.medusa/server/src/workflows/steps/lookup-variants-by-sku.js +25 -0
- package/.medusa/server/src/workflows/steps/search-products.js +42 -0
- package/.medusa/server/src/workflows/steps/unlink-punchcommerce-auth-identity.js +37 -0
- package/.medusa/server/src/workflows/upsert-punchcommerce-customer.js +10 -0
- package/README.md +513 -0
- package/package.json +72 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const restore_punchout_basket_1 = require("../../../../workflows/restore-punchout-basket");
|
|
5
|
+
const lookup_product_handle_1 = require("../../../../workflows/lookup-product-handle");
|
|
6
|
+
const build_background_search_basket_1 = require("../../../../workflows/build-background-search-basket");
|
|
7
|
+
const parse_items_1 = require("./parse-items");
|
|
8
|
+
const punchcommerce_client_1 = require("../../../../modules/punchcommerce-client");
|
|
9
|
+
const RESTORE_BASKET = "restore-basket";
|
|
10
|
+
const DETAIL = "detail";
|
|
11
|
+
const SEARCH = "search";
|
|
12
|
+
const BACKGROUND_SEARCH = "background-search";
|
|
13
|
+
async function GET(req, res) {
|
|
14
|
+
const customer_id = req.auth_context.actor_id;
|
|
15
|
+
const { cart_id, actions, items, ordernumber, keyword } = req.validatedQuery;
|
|
16
|
+
const notifications = [];
|
|
17
|
+
let response = { type: "default" };
|
|
18
|
+
for (const action of actions) {
|
|
19
|
+
if (action === RESTORE_BASKET) {
|
|
20
|
+
const parsedItems = (0, parse_items_1.parsePunchOutItems)(items);
|
|
21
|
+
const { result } = await (0, restore_punchout_basket_1.restorePunchOutBasketWorkflow)(req.scope).run({
|
|
22
|
+
input: { cart_id, items: parsedItems },
|
|
23
|
+
});
|
|
24
|
+
notifications.push(...result.notifications);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (response.type !== "default") {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (action === DETAIL) {
|
|
31
|
+
if (!ordernumber) {
|
|
32
|
+
notifications.push({
|
|
33
|
+
type: "warning",
|
|
34
|
+
message: "Produktnummer für 'detail' fehlt.",
|
|
35
|
+
});
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const { result } = await (0, lookup_product_handle_1.lookupProductHandleWorkflow)(req.scope).run({
|
|
39
|
+
input: { sku: ordernumber },
|
|
40
|
+
});
|
|
41
|
+
if (result.handle) {
|
|
42
|
+
response = { type: "detail", product_handle: result.handle };
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
notifications.push({
|
|
46
|
+
type: "warning",
|
|
47
|
+
message: `Produkt '${ordernumber}' nicht gefunden.`,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (action === SEARCH) {
|
|
53
|
+
response = { type: "search", keyword: keyword ?? "" };
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (action === BACKGROUND_SEARCH) {
|
|
57
|
+
const { result } = await (0, build_background_search_basket_1.buildBackgroundSearchBasketWorkflow)(req.scope).run({
|
|
58
|
+
input: { cart_id, customer_id, keyword: keyword ?? "" },
|
|
59
|
+
});
|
|
60
|
+
const client = req.scope.resolve(punchcommerce_client_1.PUNCHCOMMERCE_CLIENT_MODULE);
|
|
61
|
+
response = {
|
|
62
|
+
type: "background_search",
|
|
63
|
+
basket: result.basket.basket,
|
|
64
|
+
punchoutUrl: client.getReturnUrl(result.sID),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
res.status(200).json({ notifications, response });
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3B1bmNob3V0L2FjdGlvbnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxQkEsa0JBcUVDO0FBdEZELDJGQUE2RjtBQUM3Rix1RkFBeUY7QUFDekYseUdBQTBHO0FBQzFHLCtDQUFrRDtBQUNsRCxtRkFBc0Y7QUFRdEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUE7QUFDdkMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFBO0FBQ3ZCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQTtBQUN2QixNQUFNLGlCQUFpQixHQUFHLG1CQUFtQixDQUFBO0FBRXRDLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQStELEVBQy9ELEdBQW1CO0lBRW5CLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFBO0lBQzdDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQTtJQUU1RSxNQUFNLGFBQWEsR0FBaUMsRUFBRSxDQUFBO0lBQ3RELElBQUksUUFBUSxHQUEyQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUUxRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0NBQWtCLEVBQUMsS0FBSyxDQUFDLENBQUE7WUFDN0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSx1REFBNkIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNwRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTthQUN2QyxDQUFDLENBQUE7WUFDRixhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzNDLFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDO29CQUNqQixJQUFJLEVBQUUsU0FBUztvQkFDZixPQUFPLEVBQUUsbUNBQW1DO2lCQUM3QyxDQUFDLENBQUE7Z0JBQ0YsU0FBUTtZQUNWLENBQUM7WUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLG1EQUEyQixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2xFLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7YUFDNUIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xCLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDakIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsT0FBTyxFQUFFLFlBQVksV0FBVyxtQkFBbUI7aUJBQ3BELENBQUMsQ0FBQTtZQUNKLENBQUM7WUFDRCxTQUFRO1FBQ1YsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQTtZQUNyRCxTQUFRO1FBQ1YsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDakMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxvRUFBbUMsRUFDMUQsR0FBRyxDQUFDLEtBQUssQ0FDVixDQUFDLEdBQUcsQ0FBQztnQkFDSixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxFQUFFO2FBQ3hELENBQUMsQ0FBQTtZQUNGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUM5QixrREFBMkIsQ0FDNUIsQ0FBQTtZQUNELFFBQVEsR0FBRztnQkFDVCxJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUM1QixXQUFXLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQzdDLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7QUFDbkQsQ0FBQyJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const build_punchout_basket_1 = require("../../../../workflows/build-punchout-basket");
|
|
5
|
+
const punchcommerce_client_1 = require("../../../../modules/punchcommerce-client");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
const customer_id = req.auth_context.actor_id;
|
|
8
|
+
const { cart_id } = req.validatedQuery;
|
|
9
|
+
const { result } = await (0, build_punchout_basket_1.buildPunchOutBasketWorkflow)(req.scope).run({
|
|
10
|
+
input: { customer_id, cart_id },
|
|
11
|
+
});
|
|
12
|
+
const client = req.scope.resolve(punchcommerce_client_1.PUNCHCOMMERCE_CLIENT_MODULE);
|
|
13
|
+
res.status(200).json({
|
|
14
|
+
...result.basket, punchoutUrl: client.getReturnUrl(result.sID),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3B1bmNob3V0L2Jhc2tldC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLGtCQWdCQztBQXJCRCx1RkFBeUY7QUFDekYsbUZBQXNGO0FBSS9FLEtBQUssVUFBVSxHQUFHLENBQ3JCLEdBQWlFLEVBQ2pFLEdBQW1CO0lBRW5CLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFBO0lBQzdDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFBO0lBRXRDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsbURBQTJCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNoRSxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFO0tBQ2xDLENBQUMsQ0FBQTtJQUVGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUE2QixrREFBMkIsQ0FBQyxDQUFBO0lBRXpGLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2pCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0tBQ2pFLENBQUMsQ0FBQTtBQUNOLENBQUMifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PUNCHCOMMERCE_CLIENT_MODULE = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const service_1 = __importDefault(require("./service"));
|
|
9
|
+
exports.PUNCHCOMMERCE_CLIENT_MODULE = "PUNCHCOMMERCE_CLIENT_MODULE";
|
|
10
|
+
exports.default = (0, utils_1.Module)(exports.PUNCHCOMMERCE_CLIENT_MODULE, {
|
|
11
|
+
service: service_1.default,
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wdW5jaGNvbW1lcmNlLWNsaWVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBa0Q7QUFDbEQsd0RBQWtEO0FBRXJDLFFBQUEsMkJBQTJCLEdBQUcsNkJBQTZCLENBQUE7QUFFeEUsa0JBQWUsSUFBQSxjQUFNLEVBQUMsbUNBQTJCLEVBQUU7SUFDakQsT0FBTyxFQUFFLGlCQUEwQjtDQUNwQyxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_PUNCHCOMMERCE_URL = exports.PUNCHCOMMERCE_GATEWAY_VERSION = void 0;
|
|
4
|
+
exports.PUNCHCOMMERCE_GATEWAY_VERSION = "v3";
|
|
5
|
+
exports.DEFAULT_PUNCHCOMMERCE_URL = "https://www.punchcommerce.de";
|
|
6
|
+
class PunchCommerceClientService {
|
|
7
|
+
constructor(_container, options) {
|
|
8
|
+
const url = options?.punchcommerceUrl ?? exports.DEFAULT_PUNCHCOMMERCE_URL;
|
|
9
|
+
this.baseUrl = url.replace(/\/+$/, "");
|
|
10
|
+
}
|
|
11
|
+
gatewayUrl(path, query) {
|
|
12
|
+
const url = `${this.baseUrl}/gateway/${exports.PUNCHCOMMERCE_GATEWAY_VERSION}${path}`;
|
|
13
|
+
if (!query) {
|
|
14
|
+
return url;
|
|
15
|
+
}
|
|
16
|
+
const search = new URLSearchParams(query).toString();
|
|
17
|
+
return search ? `${url}?${search}` : url;
|
|
18
|
+
}
|
|
19
|
+
getPunchCommerceUrl() {
|
|
20
|
+
return this.baseUrl;
|
|
21
|
+
}
|
|
22
|
+
getReturnUrl(sID) {
|
|
23
|
+
return this.gatewayUrl("/return", { sID });
|
|
24
|
+
}
|
|
25
|
+
async validateSession(sID, uID) {
|
|
26
|
+
const response = await fetch(this.gatewayUrl("/session/validate", { sID, uID }), {
|
|
27
|
+
method: "GET",
|
|
28
|
+
headers: {
|
|
29
|
+
"Content-Type": "application/json",
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
return { valid: response.ok, status: response.status };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.default = PunchCommerceClientService;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3B1bmNoY29tbWVyY2UtY2xpZW50L3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSw2QkFBNkIsR0FBRyxJQUFJLENBQUE7QUFDcEMsUUFBQSx5QkFBeUIsR0FBRyw4QkFBOEIsQ0FBQTtBQU12RSxNQUFNLDBCQUEwQjtJQUc5QixZQUFZLFVBQW1CLEVBQUUsT0FBMEM7UUFDekUsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLGdCQUFnQixJQUFJLGlDQUF5QixDQUFBO1FBQ2xFLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVPLFVBQVUsQ0FBQyxJQUFZLEVBQUUsS0FBOEI7UUFDN0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxZQUFZLHFDQUE2QixHQUFHLElBQUksRUFBRSxDQUFBO1FBQzdFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ3BELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQzFDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVztRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUNsRDtZQUNFLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7U0FDRixDQUNGLENBQUE7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUN4RCxDQUFDO0NBQ0Y7QUFFRCxrQkFBZSwwQkFBMEIsQ0FBQSJ9
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PRODUCT_NAME_MAX_LENGTH = void 0;
|
|
4
|
+
exports.toPunchOutPosition = toPunchOutPosition;
|
|
5
|
+
exports.PRODUCT_NAME_MAX_LENGTH = 39;
|
|
6
|
+
function toPunchOutPosition(source, currency) {
|
|
7
|
+
const taxRate = Number(source.tax_rate ?? 0);
|
|
8
|
+
const quantity = Number(source.quantity);
|
|
9
|
+
const unitPrice = Number(source.unit_price ?? 0);
|
|
10
|
+
const priceNet = source.subtotal !== undefined && source.subtotal !== null
|
|
11
|
+
? Number(source.subtotal)
|
|
12
|
+
: unitPrice * quantity;
|
|
13
|
+
const priceGross = source.total !== undefined && source.total !== null
|
|
14
|
+
? Number(source.total)
|
|
15
|
+
: priceNet;
|
|
16
|
+
const itemPrice = quantity > 0 ? priceNet / quantity : 0;
|
|
17
|
+
const productTitle = (source.product_title ?? "").slice(0, exports.PRODUCT_NAME_MAX_LENGTH);
|
|
18
|
+
return {
|
|
19
|
+
product_ordernumber: source.ordernumber,
|
|
20
|
+
product_name: productTitle,
|
|
21
|
+
quantity,
|
|
22
|
+
item_price: itemPrice,
|
|
23
|
+
price: priceGross,
|
|
24
|
+
price_net: priceNet,
|
|
25
|
+
tax_rate: taxRate,
|
|
26
|
+
type: "product",
|
|
27
|
+
product: {
|
|
28
|
+
id: source.product_id ?? "",
|
|
29
|
+
ordernumber: source.ordernumber,
|
|
30
|
+
brand_ordernumber: source.ordernumber,
|
|
31
|
+
title: source.product_title ?? "",
|
|
32
|
+
description: source.product_description ?? "",
|
|
33
|
+
image_url: source.thumbnail ?? null,
|
|
34
|
+
price: itemPrice,
|
|
35
|
+
currency,
|
|
36
|
+
tax_rate: taxRate,
|
|
37
|
+
packaging_unit: "Piece",
|
|
38
|
+
shipping_time: 0,
|
|
39
|
+
active: "true",
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcHVuY2hjb21tZXJjZS1jbGllbnQvdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlCQSxnREE2Q0M7QUE1RFksUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUE7QUFlekMsU0FBZ0Isa0JBQWtCLENBQ2hDLE1BQThCLEVBQzlCLFFBQWdCO0lBRWhCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDeEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDaEQsTUFBTSxRQUFRLEdBQ1osTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJO1FBQ3ZELENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUN6QixDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQTtJQUMxQixNQUFNLFVBQVUsR0FDZCxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUk7UUFDakQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxRQUFRLENBQUE7SUFDZCxNQUFNLFNBQVMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDeEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FDckQsQ0FBQyxFQUNELCtCQUF1QixDQUN4QixDQUFBO0lBRUQsT0FBTztRQUNMLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZDLFlBQVksRUFBRSxZQUFZO1FBQzFCLFFBQVE7UUFDUixVQUFVLEVBQUUsU0FBUztRQUNyQixLQUFLLEVBQUUsVUFBVTtRQUNqQixTQUFTLEVBQUUsUUFBUTtRQUNuQixRQUFRLEVBQUUsT0FBTztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDM0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQ3JDLEtBQUssRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUU7WUFDakMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxFQUFFO1lBQzdDLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUk7WUFDbkMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsUUFBUTtZQUNSLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGNBQWMsRUFBRSxPQUFPO1lBQ3ZCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1NBQ2Y7S0FDRixDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wdW5jaGNvbW1lcmNlLWNsaWVudC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PUNCHCOMMERCE_AUTH_PROVIDER_ID = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const service_1 = require("./service");
|
|
6
|
+
exports.PUNCHCOMMERCE_AUTH_PROVIDER_ID = "punchcommerce";
|
|
7
|
+
exports.default = (0, utils_1.ModuleProvider)(utils_1.Modules.AUTH, {
|
|
8
|
+
services: [service_1.PunchCommerceAuthProviderService],
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3B1bmNoY29tbWVyY2UtYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBbUU7QUFDbkUsdUNBQTREO0FBRS9DLFFBQUEsOEJBQThCLEdBQUcsZUFBZSxDQUFBO0FBRTdELGtCQUFlLElBQUEsc0JBQWMsRUFBQyxlQUFPLENBQUMsSUFBSSxFQUFFO0lBQzFDLFFBQVEsRUFBRSxDQUFDLDBDQUFnQyxDQUFDO0NBQzdDLENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PunchCommerceAuthProviderService = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
const service_1 = __importDefault(require("../../modules/punchcommerce-client/service"));
|
|
10
|
+
const CredentialSchema = zod_1.z.object({
|
|
11
|
+
sID: zod_1.z.string().min(5),
|
|
12
|
+
uID: zod_1.z.string().min(1),
|
|
13
|
+
});
|
|
14
|
+
class PunchCommerceAuthProviderService extends utils_1.AbstractAuthModuleProvider {
|
|
15
|
+
constructor({ logger }, options) {
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.logger_ = logger;
|
|
19
|
+
this.options_ = options;
|
|
20
|
+
this.client_ = new service_1.default(undefined, {
|
|
21
|
+
punchcommerceUrl: options.punchcommerceUrl,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async register() {
|
|
25
|
+
return {
|
|
26
|
+
success: false,
|
|
27
|
+
error: "Registration not supported.",
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
async authenticate(data, authIdentityProviderService) {
|
|
31
|
+
const result = CredentialSchema.safeParse(data.body);
|
|
32
|
+
if (!result.success) {
|
|
33
|
+
return {
|
|
34
|
+
success: false,
|
|
35
|
+
error: "Invalid credentials 'sID' und 'uID' parameters required.",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const { sID, uID } = result.data;
|
|
39
|
+
try {
|
|
40
|
+
let validation;
|
|
41
|
+
if (this.options_.disableSessionValidation) {
|
|
42
|
+
validation = { valid: true };
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
validation = await this.client_.validateSession(sID, uID);
|
|
46
|
+
}
|
|
47
|
+
if (!validation.valid) {
|
|
48
|
+
return { success: false, error: "Invalid PunchOut-Session", };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
53
|
+
this.logger_.error(`PunchOut-Session-Validation failed: ${message}`, error);
|
|
54
|
+
return { success: false, error: "PunchOut-Session could not be validated", };
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const authIdentity = await authIdentityProviderService.retrieve({ entity_id: uID });
|
|
58
|
+
return { success: true, authIdentity };
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return { success: false, error: "No PunchCommerce Identity found.", };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.PunchCommerceAuthProviderService = PunchCommerceAuthProviderService;
|
|
66
|
+
PunchCommerceAuthProviderService.identifier = "punchcommerce";
|
|
67
|
+
PunchCommerceAuthProviderService.DISPLAY_NAME = "PunchCommerce Authentication";
|
|
68
|
+
exports.default = PunchCommerceAuthProviderService;
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvcHVuY2hjb21tZXJjZS1hdXRoL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQXNFO0FBT3RFLDZCQUF3QjtBQUN4Qix5RkFBbUY7QUFZbkYsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlCLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0QixHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDekIsQ0FBQyxDQUFDO0FBRUgsTUFBYSxnQ0FBaUMsU0FBUSxrQ0FBMEI7SUFRNUUsWUFDSSxFQUFFLE1BQU0sRUFBd0IsRUFDaEMsT0FBeUM7UUFFekMsYUFBYTtRQUNiLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFBO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxpQkFBMEIsQ0FBQyxTQUFTLEVBQUU7WUFDckQsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtTQUM3QyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDVixPQUFPO1lBQ0gsT0FBTyxFQUFFLEtBQUs7WUFDZCxLQUFLLEVBQUUsNkJBQTZCO1NBQ3ZDLENBQUE7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FDZCxJQUF5QixFQUN6QiwyQkFBd0Q7UUFHeEQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVwRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU87Z0JBQ0gsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLDBEQUEwRDthQUNwRSxDQUFBO1FBQ0wsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQTtRQUVoQyxJQUFJLENBQUM7WUFDRCxJQUFJLFVBQW1DLENBQUE7WUFFdkMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ3pDLFVBQVUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQTtZQUNoQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQzdELENBQUM7WUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNwQixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEdBQUcsQ0FBQTtZQUNqRSxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFFdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXdDLE9BQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBRTdFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSx5Q0FBeUMsR0FBRyxDQUFBO1FBQ2hGLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyxNQUFNLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBRW5GLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFBO1FBQzFDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxHQUFHLENBQUE7UUFDekUsQ0FBQztJQUNMLENBQUM7O0FBdEVMLDRFQXVFQztBQXRFVSwyQ0FBVSxHQUFHLGVBQWUsQ0FBQTtBQUM1Qiw2Q0FBWSxHQUFHLDhCQUE4QixDQUFBO0FBdUV4RCxrQkFBZSxnQ0FBZ0MsQ0FBQSJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = customerDeletedHandler;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const delete_punchcommerce_customer_1 = require("../workflows/delete-punchcommerce-customer");
|
|
7
|
+
async function customerDeletedHandler({ event: { data }, container, }) {
|
|
8
|
+
const logger = container.resolve("logger");
|
|
9
|
+
try {
|
|
10
|
+
await (0, delete_punchcommerce_customer_1.deletePunchCommerceCustomerWorkflow)(container).run({
|
|
11
|
+
input: { customer_id: data.id },
|
|
12
|
+
});
|
|
13
|
+
logger.info(`Removed punchcommerce_customer linked to deleted customer ${data.id}`);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error?.type === utils_1.MedusaError.Types.NOT_FOUND) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
20
|
+
logger.error(`Failed to clean up punchcommerce_customer for deleted customer ${data.id}: ${message}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.config = {
|
|
24
|
+
event: "customer.deleted",
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZGVsZXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9jdXN0b21lci1kZWxldGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHlDQXNCQztBQXpCRCxxREFBdUQ7QUFDdkQsOEZBQWdHO0FBRWpGLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQ3NCO0lBQy9CLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFMUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFBLG1FQUFtQyxFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUN2RCxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtTQUNoQyxDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsSUFBSSxDQUNULDZEQUE2RCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQ3ZFLENBQUE7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUssS0FBMkIsRUFBRSxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkUsT0FBTTtRQUNSLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEUsTUFBTSxDQUFDLEtBQUssQ0FDVixrRUFBa0UsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FDeEYsQ0FBQTtJQUNILENBQUM7QUFDSCxDQUFDO0FBRVksUUFBQSxNQUFNLEdBQXFCO0lBQ3RDLEtBQUssRUFBRSxrQkFBa0I7Q0FDMUIsQ0FBQSJ9
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildBackgroundSearchBasketWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const get_punchout_cart_1 = require("./steps/get-punchout-cart");
|
|
6
|
+
const search_products_1 = require("./steps/search-products");
|
|
7
|
+
const transform_1 = require("../modules/punchcommerce-client/transform");
|
|
8
|
+
exports.buildBackgroundSearchBasketWorkflow = (0, workflows_sdk_1.createWorkflow)("build-background-search-basket", function (input) {
|
|
9
|
+
const loaded = (0, get_punchout_cart_1.getPunchOutCartStep)({
|
|
10
|
+
cart_id: input.cart_id,
|
|
11
|
+
customer_id: input.customer_id,
|
|
12
|
+
});
|
|
13
|
+
const searchInput = (0, workflows_sdk_1.transform)({ input, loaded }, ({ input, loaded }) => ({
|
|
14
|
+
keyword: input.keyword,
|
|
15
|
+
currency_code: loaded.cart.currency_code ?? "",
|
|
16
|
+
region_id: loaded.cart.region_id ?? null,
|
|
17
|
+
}));
|
|
18
|
+
const searchResult = (0, search_products_1.searchProductsStep)(searchInput);
|
|
19
|
+
const output = (0, workflows_sdk_1.transform)({ loaded, searchResult }, ({ loaded, searchResult }) => {
|
|
20
|
+
const currency = (loaded.cart.currency_code ?? "").toUpperCase();
|
|
21
|
+
const positions = searchResult.products.flatMap((product) => {
|
|
22
|
+
const variant = product.variants?.[0];
|
|
23
|
+
if (!variant?.sku) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
const amount = Number(variant.calculated_price?.calculated_amount ?? 0);
|
|
27
|
+
return [
|
|
28
|
+
(0, transform_1.toPunchOutPosition)({
|
|
29
|
+
ordernumber: variant.sku,
|
|
30
|
+
product_id: product.id,
|
|
31
|
+
product_title: product.title,
|
|
32
|
+
product_description: product.description,
|
|
33
|
+
thumbnail: product.thumbnail,
|
|
34
|
+
quantity: 1,
|
|
35
|
+
unit_price: amount,
|
|
36
|
+
subtotal: amount,
|
|
37
|
+
total: amount,
|
|
38
|
+
tax_rate: 0,
|
|
39
|
+
}, currency),
|
|
40
|
+
];
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
basket: { basket: positions },
|
|
44
|
+
sID: loaded.session_id,
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
return new workflows_sdk_1.WorkflowResponse(output);
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtYmFja2dyb3VuZC1zZWFyY2gtYmFza2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9idWlsZC1iYWNrZ3JvdW5kLXNlYXJjaC1iYXNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSTBDO0FBQzFDLGlFQUErRDtBQUMvRCw2REFBNEQ7QUFDNUQseUVBQThFO0FBY2pFLFFBQUEsbUNBQW1DLEdBQUcsSUFBQSw4QkFBYyxFQUMvRCxnQ0FBZ0MsRUFDaEMsVUFBVSxLQUFZO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUEsdUNBQW1CLEVBQUM7UUFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztLQUMvQixDQUFDLENBQUE7SUFFRixNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFTLEVBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUU7UUFDOUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUk7S0FDekMsQ0FBQyxDQUFDLENBQUE7SUFFSCxNQUFNLFlBQVksR0FBRyxJQUFBLG9DQUFrQixFQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRXBELE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQVMsRUFDdEIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQ3hCLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQVUsRUFBRTtRQUNuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRWhFLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDMUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFBO1lBQ1gsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDdkUsT0FBTztnQkFDTCxJQUFBLDhCQUFrQixFQUNoQjtvQkFDRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUc7b0JBQ3hCLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDdEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUM1QixtQkFBbUIsRUFBRSxPQUFPLENBQUMsV0FBVztvQkFDeEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO29CQUM1QixRQUFRLEVBQUUsQ0FBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtvQkFDbEIsUUFBUSxFQUFFLE1BQU07b0JBQ2hCLEtBQUssRUFBRSxNQUFNO29CQUNiLFFBQVEsRUFBRSxDQUFDO2lCQUNaLEVBQ0QsUUFBUSxDQUNUO2FBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTztZQUNMLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7WUFDN0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVO1NBQ3ZCLENBQUE7SUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUVELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQSJ9
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildPunchOutBasketWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const transform_1 = require("../modules/punchcommerce-client/transform");
|
|
6
|
+
const get_punchout_cart_1 = require("./steps/get-punchout-cart");
|
|
7
|
+
exports.buildPunchOutBasketWorkflow = (0, workflows_sdk_1.createWorkflow)("build-punchout-basket", function (input) {
|
|
8
|
+
const loaded = (0, get_punchout_cart_1.getPunchOutCartStep)({
|
|
9
|
+
cart_id: input.cart_id,
|
|
10
|
+
customer_id: input.customer_id,
|
|
11
|
+
});
|
|
12
|
+
const output = (0, workflows_sdk_1.transform)({ loaded }, (data) => {
|
|
13
|
+
const cart = data.loaded.cart;
|
|
14
|
+
const currency = (cart.currency_code ?? "").toUpperCase();
|
|
15
|
+
const positions = (cart.items ?? []).map((item) => (0, transform_1.toPunchOutPosition)({
|
|
16
|
+
ordernumber: item.variant_sku ?? item.id,
|
|
17
|
+
product_id: item.product_id,
|
|
18
|
+
product_title: item.product_title ?? item.title,
|
|
19
|
+
product_description: item.product_description,
|
|
20
|
+
thumbnail: item.thumbnail,
|
|
21
|
+
quantity: Number(item.quantity),
|
|
22
|
+
unit_price: Number(item.unit_price),
|
|
23
|
+
subtotal: item.subtotal !== undefined && item.subtotal !== null
|
|
24
|
+
? Number(item.subtotal)
|
|
25
|
+
: null,
|
|
26
|
+
total: item.total !== undefined && item.total !== null
|
|
27
|
+
? Number(item.total)
|
|
28
|
+
: null,
|
|
29
|
+
tax_rate: item.tax_lines?.[0]?.rate !== undefined
|
|
30
|
+
? Number(item.tax_lines[0].rate)
|
|
31
|
+
: null,
|
|
32
|
+
}, currency));
|
|
33
|
+
return {
|
|
34
|
+
basket: { basket: positions },
|
|
35
|
+
sID: data.loaded.session_id,
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
return new workflows_sdk_1.WorkflowResponse(output);
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcHVuY2hvdXQtYmFza2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9idWlsZC1wdW5jaG91dC1iYXNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSTBDO0FBSzFDLHlFQUE4RTtBQUM5RSxpRUFBK0Q7QUFZbEQsUUFBQSwyQkFBMkIsR0FBRyxJQUFBLDhCQUFjLEVBQ3ZELHVCQUF1QixFQUN2QixVQUFVLEtBQStCO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUEsdUNBQW1CLEVBQUM7UUFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztLQUMvQixDQUFDLENBQUE7SUFFRixNQUFNLE1BQU0sR0FBRyxJQUFBLHlCQUFTLEVBQ3RCLEVBQUUsTUFBTSxFQUFFLEVBQ1YsQ0FBQyxJQUFJLEVBQTZCLEVBQUU7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFDN0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRXpELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQW1CLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDbEUsSUFBQSw4QkFBa0IsRUFDaEI7WUFDRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUN4QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUs7WUFDL0MsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUM3QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9CLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxRQUFRLEVBQ04sSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJO2dCQUNuRCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxJQUFJO1lBQ1YsS0FBSyxFQUNILElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtnQkFDN0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNwQixDQUFDLENBQUMsSUFBSTtZQUNWLFFBQVEsRUFDTixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLFNBQVM7Z0JBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxJQUFJO1NBQ1gsRUFDRCxRQUFRLENBQ1QsQ0FDRixDQUFBO1FBRUQsT0FBTztZQUNMLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7WUFDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtTQUM1QixDQUFBO0lBQ0gsQ0FBQyxDQUNGLENBQUE7SUFFRCxPQUFPLElBQUksZ0NBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDckMsQ0FBQyxDQUNGLENBQUEifQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deletePunchCommerceCustomerWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const lookup_punchcommerce_uid_1 = require("./steps/lookup-punchcommerce-uid");
|
|
6
|
+
const unlink_punchcommerce_auth_identity_1 = require("./steps/unlink-punchcommerce-auth-identity");
|
|
7
|
+
exports.deletePunchCommerceCustomerWorkflow = (0, workflows_sdk_1.createWorkflow)("delete-punchcommerce-customer", function (input) {
|
|
8
|
+
const { uid } = (0, lookup_punchcommerce_uid_1.lookupPunchCommerceUidStep)(input);
|
|
9
|
+
(0, unlink_punchcommerce_auth_identity_1.unlinkPunchCommerceAuthIdentityStep)({ uid });
|
|
10
|
+
return new workflows_sdk_1.WorkflowResponse({});
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLXB1bmNoY29tbWVyY2UtY3VzdG9tZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2RlbGV0ZS1wdW5jaGNvbW1lcmNlLWN1c3RvbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcwQztBQUMxQywrRUFBNkU7QUFDN0UsbUdBQWdHO0FBSW5GLFFBQUEsbUNBQW1DLEdBQUcsSUFBQSw4QkFBYyxFQUMvRCwrQkFBK0IsRUFDL0IsVUFBVSxLQUFvQjtJQUM1QixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBQSxxREFBMEIsRUFBQyxLQUFLLENBQUMsQ0FBQTtJQUNqRCxJQUFBLHdFQUFtQyxFQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUM1QyxPQUFPLElBQUksZ0NBQWdCLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDakMsQ0FBQyxDQUNGLENBQUEifQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.lookupProductHandleWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const lookup_product_handle_by_sku_1 = require("./steps/lookup-product-handle-by-sku");
|
|
6
|
+
exports.lookupProductHandleWorkflow = (0, workflows_sdk_1.createWorkflow)("lookup-product-handle", function (input) {
|
|
7
|
+
const result = (0, lookup_product_handle_by_sku_1.lookupProductHandleBySkuStep)({ sku: input.sku });
|
|
8
|
+
return new workflows_sdk_1.WorkflowResponse(result);
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXByb2R1Y3QtaGFuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9sb29rdXAtcHJvZHVjdC1oYW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHVGQUFtRjtBQU10RSxRQUFBLDJCQUEyQixHQUFHLElBQUEsOEJBQWMsRUFDdkQsdUJBQXVCLEVBQ3ZCLFVBQVUsS0FBWTtJQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFBLDJEQUE0QixFQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQy9ELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQSJ9
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.restorePunchOutBasketWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const lookup_variants_by_sku_1 = require("./steps/lookup-variants-by-sku");
|
|
7
|
+
exports.restorePunchOutBasketWorkflow = (0, workflows_sdk_1.createWorkflow)("restore-punchout-basket", function (input) {
|
|
8
|
+
const skus = (0, workflows_sdk_1.transform)({ input }, ({ input }) => input.items.map((i) => i.sku));
|
|
9
|
+
const lookupResult = (0, lookup_variants_by_sku_1.lookupVariantsBySkuStep)({ skus });
|
|
10
|
+
const prepared = (0, workflows_sdk_1.transform)({ input, lookupResult }, ({ input, lookupResult }) => {
|
|
11
|
+
const lineItems = input.items
|
|
12
|
+
.filter((item) => item.sku in lookupResult.found && item.quantity > 0)
|
|
13
|
+
.map((item) => ({
|
|
14
|
+
variant_id: lookupResult.found[item.sku],
|
|
15
|
+
quantity: item.quantity,
|
|
16
|
+
}));
|
|
17
|
+
const notifications = lookupResult.missing.map((sku) => ({
|
|
18
|
+
type: "warning",
|
|
19
|
+
message: `Produkt '${sku}' wurde nicht gefunden und nicht in den Warenkorb übernommen.`,
|
|
20
|
+
}));
|
|
21
|
+
return { lineItems, notifications };
|
|
22
|
+
});
|
|
23
|
+
const addItemsInput = (0, workflows_sdk_1.transform)({ input, prepared }, ({ input, prepared }) => ({
|
|
24
|
+
cart_id: input.cart_id,
|
|
25
|
+
items: prepared.lineItems,
|
|
26
|
+
}));
|
|
27
|
+
(0, workflows_sdk_1.when)({ prepared }, ({ prepared }) => prepared.lineItems.length > 0).then(() => {
|
|
28
|
+
core_flows_1.addToCartWorkflow.runAsStep({ input: addItemsInput });
|
|
29
|
+
});
|
|
30
|
+
const output = (0, workflows_sdk_1.transform)({ prepared }, ({ prepared }) => ({ notifications: prepared.notifications }));
|
|
31
|
+
return new workflows_sdk_1.WorkflowResponse(output);
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdG9yZS1wdW5jaG91dC1iYXNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Jlc3RvcmUtcHVuY2hvdXQtYmFza2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFzRztBQUN0Ryw0REFBK0Q7QUFDL0QsMkVBQXdFO0FBWTNELFFBQUEsNkJBQTZCLEdBQUcsSUFBQSw4QkFBYyxFQUN2RCx5QkFBeUIsRUFDekIsVUFBVSxLQUFZO0lBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQzVDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQ2hDLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLGdEQUF1QixFQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFBLHlCQUFTLEVBQ3RCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUN2QixDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7UUFDeEIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUs7YUFDeEIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7YUFDckUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1osVUFBVSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN4QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDLENBQUE7UUFFUCxNQUFNLGFBQWEsR0FBaUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkYsSUFBSSxFQUFFLFNBQWtCO1lBQ3hCLE9BQU8sRUFBRSxZQUFhLEdBQUksK0RBQStEO1NBQzVGLENBQUMsQ0FBQyxDQUFBO1FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN2QyxDQUFDLENBQ0osQ0FBQTtJQUVELE1BQU0sYUFBYSxHQUFHLElBQUEseUJBQVMsRUFDM0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ25CLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUztLQUM1QixDQUFDLENBQ0wsQ0FBQTtJQUVELElBQUEsb0JBQUksRUFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNwRSxHQUFHLEVBQUU7UUFDRCw4QkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUN6RCxDQUFDLENBQ0osQ0FBQTtJQUVELE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQVMsRUFDcEIsRUFBRSxRQUFRLEVBQUUsRUFDWixDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQ3hFLENBQUE7SUFFRCxPQUFPLElBQUksZ0NBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDdkMsQ0FBQyxDQUNKLENBQUEifQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPunchOutCartStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
exports.getPunchOutCartStep = (0, workflows_sdk_1.createStep)("get-punchout-cart", async ({ cart_id, customer_id }, { container }) => {
|
|
7
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
8
|
+
const { data: carts } = await query.graph({
|
|
9
|
+
entity: "cart",
|
|
10
|
+
fields: [
|
|
11
|
+
"id",
|
|
12
|
+
"customer_id",
|
|
13
|
+
"currency_code",
|
|
14
|
+
"region_id",
|
|
15
|
+
"completed_at",
|
|
16
|
+
"metadata",
|
|
17
|
+
"total",
|
|
18
|
+
"subtotal",
|
|
19
|
+
"items.id",
|
|
20
|
+
"items.title",
|
|
21
|
+
"items.product_id",
|
|
22
|
+
"items.product_title",
|
|
23
|
+
"items.product_description",
|
|
24
|
+
"items.product_handle",
|
|
25
|
+
"items.variant_id",
|
|
26
|
+
"items.variant_sku",
|
|
27
|
+
"items.variant_title",
|
|
28
|
+
"items.thumbnail",
|
|
29
|
+
"items.quantity",
|
|
30
|
+
"items.unit_price",
|
|
31
|
+
"items.subtotal",
|
|
32
|
+
"items.total",
|
|
33
|
+
"items.tax_total",
|
|
34
|
+
"items.tax_lines.rate",
|
|
35
|
+
],
|
|
36
|
+
filters: { id: cart_id, customer_id: customer_id, completed_at: null },
|
|
37
|
+
});
|
|
38
|
+
const cart = carts[0];
|
|
39
|
+
if (!cart) {
|
|
40
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "PunchOut-Cart not found.");
|
|
41
|
+
}
|
|
42
|
+
const sessionId = cart.metadata?.punchcommerce_session_id;
|
|
43
|
+
if (typeof sessionId !== "string" || sessionId.length === 0) {
|
|
44
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Cart not does not belong to any PunchCommerce-Session.");
|
|
45
|
+
}
|
|
46
|
+
return new workflows_sdk_1.StepResponse({ cart, session_id: sessionId });
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXB1bmNob3V0LWNhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2dldC1wdW5jaG91dC1jYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSxxREFHa0M7QUFhckIsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDBCQUFVLEVBQzNDLG1CQUFtQixFQUNuQixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEMsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUU7WUFDTixJQUFJO1lBQ0osYUFBYTtZQUNiLGVBQWU7WUFDZixXQUFXO1lBQ1gsY0FBYztZQUNkLFVBQVU7WUFDVixPQUFPO1lBQ1AsVUFBVTtZQUNWLFVBQVU7WUFDVixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLHFCQUFxQjtZQUNyQiwyQkFBMkI7WUFDM0Isc0JBQXNCO1lBQ3RCLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLHNCQUFzQjtTQUN2QjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO0tBQ3ZFLENBQUMsQ0FBQTtJQUVGLE1BQU0sSUFBSSxHQUFJLEtBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFcEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsMEJBQTBCLENBQzNCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQTtJQUN6RCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzdCLHdEQUF3RCxDQUN6RCxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0FBQ2xFLENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.linkPunchCommerceAuthIdentityStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const PROVIDER = "punchcommerce";
|
|
7
|
+
async function resolveIdentityScenario(authModule, customer_id, uid) {
|
|
8
|
+
const [existing] = await authModule.listProviderIdentities({ provider: PROVIDER, entity_id: uid }, { relations: ["auth_identity"] });
|
|
9
|
+
if (existing) {
|
|
10
|
+
const linkedCustomerId = existing.auth_identity?.app_metadata?.customer_id;
|
|
11
|
+
if (linkedCustomerId === customer_id)
|
|
12
|
+
return { kind: "noop" };
|
|
13
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.DUPLICATE_ERROR, "punchcommerce.customer.errors.uid_conflict");
|
|
14
|
+
}
|
|
15
|
+
const [authIdentity] = await authModule.listAuthIdentities({ app_metadata: { customer_id } }, { relations: ["provider_identities"] });
|
|
16
|
+
if (!authIdentity)
|
|
17
|
+
return { kind: "create_both" };
|
|
18
|
+
const pcProvider = authIdentity.provider_identities?.find((pi) => pi.provider === PROVIDER);
|
|
19
|
+
if (pcProvider) {
|
|
20
|
+
return {
|
|
21
|
+
kind: "update_provider",
|
|
22
|
+
providerIdentityId: pcProvider.id,
|
|
23
|
+
previousEntityId: pcProvider.entity_id,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return { kind: "create_provider", authIdentityId: authIdentity.id };
|
|
27
|
+
}
|
|
28
|
+
exports.linkPunchCommerceAuthIdentityStep = (0, workflows_sdk_1.createStep)("link-punchcommerce-auth-identity", async ({ customer_id, uid }, { container }) => {
|
|
29
|
+
const authModule = container.resolve(utils_1.Modules.AUTH);
|
|
30
|
+
const scenario = await resolveIdentityScenario(authModule, customer_id, uid);
|
|
31
|
+
switch (scenario.kind) {
|
|
32
|
+
case "noop":
|
|
33
|
+
return new workflows_sdk_1.StepResponse(undefined, { action: "noop" });
|
|
34
|
+
case "update_provider": {
|
|
35
|
+
await authModule.updateProviderIdentities({
|
|
36
|
+
id: scenario.providerIdentityId,
|
|
37
|
+
entity_id: uid,
|
|
38
|
+
});
|
|
39
|
+
return new workflows_sdk_1.StepResponse(undefined, {
|
|
40
|
+
action: "updated_provider",
|
|
41
|
+
provider_identity_id: scenario.providerIdentityId,
|
|
42
|
+
previous_entity_id: scenario.previousEntityId,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
case "create_provider": {
|
|
46
|
+
const created = await authModule.createProviderIdentities({
|
|
47
|
+
provider: PROVIDER,
|
|
48
|
+
entity_id: uid,
|
|
49
|
+
auth_identity_id: scenario.authIdentityId,
|
|
50
|
+
});
|
|
51
|
+
return new workflows_sdk_1.StepResponse(undefined, {
|
|
52
|
+
action: "created_provider",
|
|
53
|
+
provider_identity_id: created.id,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
case "create_both": {
|
|
57
|
+
const createdAuth = await authModule.createAuthIdentities({
|
|
58
|
+
app_metadata: { customer_id },
|
|
59
|
+
provider_identities: [{ provider: PROVIDER, entity_id: uid }],
|
|
60
|
+
});
|
|
61
|
+
return new workflows_sdk_1.StepResponse(undefined, {
|
|
62
|
+
action: "created_auth_and_provider",
|
|
63
|
+
auth_identity_id: createdAuth.id,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}, async (state, { container }) => {
|
|
68
|
+
if (!state || state.action === "noop")
|
|
69
|
+
return;
|
|
70
|
+
const authModule = container.resolve(utils_1.Modules.AUTH);
|
|
71
|
+
switch (state.action) {
|
|
72
|
+
case "created_auth_and_provider":
|
|
73
|
+
await authModule.deleteAuthIdentities([state.auth_identity_id]);
|
|
74
|
+
break;
|
|
75
|
+
case "created_provider":
|
|
76
|
+
await authModule.deleteProviderIdentities([state.provider_identity_id]);
|
|
77
|
+
break;
|
|
78
|
+
case "updated_provider":
|
|
79
|
+
await authModule.updateProviderIdentities({
|
|
80
|
+
id: state.provider_identity_id,
|
|
81
|
+
entity_id: state.previous_entity_id,
|
|
82
|
+
});
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wdW5jaGNvbW1lcmNlLWF1dGgtaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2xpbmstcHVuY2hjb21tZXJjZS1hdXRoLWlkZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSxxREFBZ0U7QUFHaEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFBO0FBbUJoQyxLQUFLLFVBQVUsdUJBQXVCLENBQ3BDLFVBQThCLEVBQzlCLFdBQW1CLEVBQ25CLEdBQVc7SUFFWCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxVQUFVLENBQUMsc0JBQXNCLENBQ3hELEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQ3RDLEVBQUUsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FDakMsQ0FBQTtJQUVELElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQWlDLENBQUE7UUFDaEcsSUFBSSxnQkFBZ0IsS0FBSyxXQUFXO1lBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQTtRQUM3RCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUNqQyw0Q0FBNEMsQ0FDN0MsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxVQUFVLENBQUMsa0JBQWtCLENBQ3hELEVBQUUsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFDakMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQ3ZDLENBQUE7SUFFRCxJQUFJLENBQUMsWUFBWTtRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFF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
|