@zaamx/netme-pos 0.0.15 → 0.0.18
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 +216 -216
- package/.medusa/server/src/admin/index.mjs +220 -220
- package/.medusa/server/src/api/admin/orders/sales/pending-by-location/route.js +152 -0
- package/.medusa/server/src/api/admin/orders/sales/route.js +398 -0
- package/.medusa/server/src/api/middlewares.js +168 -1
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/convert-to-order/route.js +37 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/confirm/route.js +20 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/[action_id]/route.js +74 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/item/[item_id]/route.js +41 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/route.js +31 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/promotions/route.js +31 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/request/route.js +16 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/route.js +32 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/[action_id]/route.js +32 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/method/[method_id]/route.js +30 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/route.js +19 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/route.js +63 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/guards.js +77 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/helpers.js +19 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/pricing.js +136 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/query-config.js +60 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/route.js +140 -0
- package/.medusa/server/src/api/store/netme-pos/draft-orders/validators.js +217 -0
- package/.medusa/server/src/api/store/netme-pos/fulfillment-validators.js +74 -0
- package/.medusa/server/src/api/store/netme-pos/payment-collections/[id]/mark-as-paid/route.js +34 -0
- package/.medusa/server/src/api/store/netme-pos/payment-collections/[id]/payment-sessions/route.js +28 -0
- package/.medusa/server/src/api/store/netme-pos/payment-collections/guards.js +27 -0
- package/.medusa/server/src/api/store/netme-pos/products/[id]/route.js +10 -0
- package/.medusa/server/src/api/store/netme-pos/products/route.js +14 -0
- package/.medusa/server/src/api/store/netme-pos/scope.js +106 -0
- package/.medusa/server/src/api/store/netme-pos/shipping-options/route.js +100 -0
- package/.medusa/server/src/api/store/netme-pos/stock-locations/route.js +45 -0
- package/.medusa/server/src/links/agent-draft-order.js +31 -0
- package/.medusa/server/src/workflows/ensure-agent-can-act-for/index.js +36 -0
- package/package.json +1 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const scope_1 = require("../scope");
|
|
6
|
+
/**
|
|
7
|
+
* `GET /store/netme-pos/shipping-options` — store clone of
|
|
8
|
+
* `GET /admin/shipping-options` (same params, default fields and response
|
|
9
|
+
* `{ shipping_options, count, offset, limit }`). The POS uses it as
|
|
10
|
+
* `?stock_location_id=<id>&fields=id,name,price_type,*prices,service_zone.fulfillment_set.type`.
|
|
11
|
+
*
|
|
12
|
+
* Differences with the admin list, so an agent only sees options it can sell:
|
|
13
|
+
* - limited to stock locations of the publishable key's sales channels;
|
|
14
|
+
* - excludes return options and options not enabled in store.
|
|
15
|
+
*/
|
|
16
|
+
const ruleValue = (value) => {
|
|
17
|
+
if (typeof value !== "string") {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
return JSON.parse(value);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const hasRule = (option, attribute, expected) => (option.rules ?? []).some((r) => r?.attribute === attribute &&
|
|
28
|
+
r?.operator === "eq" &&
|
|
29
|
+
String(ruleValue(r.value)) === String(expected));
|
|
30
|
+
async function GET(req, res) {
|
|
31
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
32
|
+
const pagination = req.queryConfig.pagination;
|
|
33
|
+
const empty = () => res.json({
|
|
34
|
+
shipping_options: [],
|
|
35
|
+
count: 0,
|
|
36
|
+
offset: pagination.skip ?? 0,
|
|
37
|
+
limit: pagination.take ?? 50,
|
|
38
|
+
});
|
|
39
|
+
const allowedLocationIds = (await (0, scope_1.listStockLocationsForChannels)(req.scope, (0, scope_1.getKeySalesChannelIds)(req))).map((l) => l.id);
|
|
40
|
+
const { stock_location_id: requestedLocations, id: requestedIds, ...otherFilters } = req.filterableFields;
|
|
41
|
+
let locationIds = allowedLocationIds;
|
|
42
|
+
if (requestedLocations) {
|
|
43
|
+
const asked = Array.isArray(requestedLocations)
|
|
44
|
+
? requestedLocations
|
|
45
|
+
: [requestedLocations];
|
|
46
|
+
locationIds = locationIds.filter((id) => asked.includes(id));
|
|
47
|
+
}
|
|
48
|
+
if (!locationIds.length) {
|
|
49
|
+
empty();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Options served from those locations (location → fulfillment sets → zones).
|
|
53
|
+
const { data: locations } = await query.graph({
|
|
54
|
+
entity: "stock_location",
|
|
55
|
+
filters: { id: locationIds },
|
|
56
|
+
fields: ["id", "fulfillment_sets.service_zones.shipping_options.id"],
|
|
57
|
+
});
|
|
58
|
+
let optionIds = [
|
|
59
|
+
...new Set(locations
|
|
60
|
+
.flatMap((l) => l.fulfillment_sets ?? [])
|
|
61
|
+
.flatMap((fs) => fs?.service_zones ?? [])
|
|
62
|
+
.flatMap((sz) => sz?.shipping_options ?? [])
|
|
63
|
+
.map((so) => so?.id)
|
|
64
|
+
.filter(Boolean)),
|
|
65
|
+
];
|
|
66
|
+
if (requestedIds) {
|
|
67
|
+
const asked = Array.isArray(requestedIds) ? requestedIds : [requestedIds];
|
|
68
|
+
optionIds = optionIds.filter((id) => asked.includes(id));
|
|
69
|
+
}
|
|
70
|
+
if (!optionIds.length) {
|
|
71
|
+
empty();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Drop return / not-enabled-in-store options before paginating.
|
|
75
|
+
const { data: withRules } = await query.graph({
|
|
76
|
+
entity: "shipping_option",
|
|
77
|
+
filters: { id: optionIds },
|
|
78
|
+
fields: ["id", "rules.attribute", "rules.operator", "rules.value"],
|
|
79
|
+
});
|
|
80
|
+
const sellableIds = withRules
|
|
81
|
+
.filter((o) => !hasRule(o, "is_return", true) && !hasRule(o, "enabled_in_store", false))
|
|
82
|
+
.map((o) => o.id);
|
|
83
|
+
if (!sellableIds.length) {
|
|
84
|
+
empty();
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const { data: shipping_options, metadata } = await query.graph({
|
|
88
|
+
entity: "shipping_option",
|
|
89
|
+
filters: { ...otherFilters, id: sellableIds },
|
|
90
|
+
fields: req.queryConfig.fields,
|
|
91
|
+
pagination: req.queryConfig.pagination,
|
|
92
|
+
});
|
|
93
|
+
res.json({
|
|
94
|
+
shipping_options,
|
|
95
|
+
count: metadata?.count ?? shipping_options.length,
|
|
96
|
+
offset: metadata?.skip ?? 0,
|
|
97
|
+
limit: metadata?.take ?? shipping_options.length,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9zaGlwcGluZy1vcHRpb25zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0NBLGtCQTRGQztBQWhJRCxxREFBcUU7QUFDckUsb0NBR2lCO0FBRWpCOzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDbkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBVyxFQUFFLFNBQWlCLEVBQUUsUUFBaUIsRUFBRSxFQUFFLENBQ3BFLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FDVCxDQUFDLEVBQUUsU0FBUyxLQUFLLFNBQVM7SUFDMUIsQ0FBQyxFQUFFLFFBQVEsS0FBSyxJQUFJO0lBQ3BCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUNsRCxDQUFBO0FBRUksS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUErQixFQUFFLEdBQW1CO0lBQzVFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFHbEMsQ0FBQTtJQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUNqQixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDNUIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLElBQUksRUFBRTtLQUM3QixDQUFDLENBQUE7SUFFSixNQUFNLGtCQUFrQixHQUFHLENBQ3pCLE1BQU0sSUFBQSxxQ0FBNkIsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUEsNkJBQXFCLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FDM0UsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVsQixNQUFNLEVBQ0osaUJBQWlCLEVBQUUsa0JBQWtCLEVBQ3JDLEVBQUUsRUFBRSxZQUFZLEVBQ2hCLEdBQUcsWUFBWSxFQUNoQixHQUFHLEdBQUcsQ0FBQyxnQkFBdUMsQ0FBQTtJQUUvQyxJQUFJLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtJQUNwQyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUM3QyxDQUFDLENBQUMsa0JBQWtCO1lBQ3BCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDeEIsV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QixLQUFLLEVBQUUsQ0FBQTtRQUNQLE9BQU07SUFDUixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVDLE1BQU0sRUFBRSxnQkFBZ0I7UUFDeEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRTtRQUM1QixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsb0RBQW9ELENBQUM7S0FDckUsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxTQUFTLEdBQUc7UUFDZCxHQUFHLElBQUksR0FBRyxDQUNSLFNBQVM7YUFDTixPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7YUFDN0MsT0FBTyxDQUFDLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQzthQUM3QyxPQUFPLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7YUFDaEQsR0FBRyxDQUFDLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDbkI7S0FDRixDQUFBO0lBRUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDekUsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixLQUFLLEVBQUUsQ0FBQTtRQUNQLE9BQU07SUFDUixDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVDLE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRTtRQUMxQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDO0tBQ25FLENBQUMsQ0FBQTtJQUNGLE1BQU0sV0FBVyxHQUFHLFNBQVM7U0FDMUIsTUFBTSxDQUNMLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FDVCxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FDM0U7U0FDQSxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLEtBQUssRUFBRSxDQUFBO1FBQ1AsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM3RCxNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLE9BQU8sRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUU7UUFDN0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUM5QixVQUFVLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVO0tBQ3ZDLENBQUMsQ0FBQTtJQUVGLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxnQkFBZ0I7UUFDaEIsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLElBQUksZ0JBQWdCLENBQUMsTUFBTTtRQUNqRCxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDO1FBQzNCLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLGdCQUFnQixDQUFDLE1BQU07S0FDakQsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const scope_1 = require("../scope");
|
|
6
|
+
/**
|
|
7
|
+
* `GET /store/netme-pos/stock-locations` — store clone of
|
|
8
|
+
* `GET /admin/stock-locations` (same params, default fields and response
|
|
9
|
+
* `{ stock_locations, count, offset, limit }`), limited to the stock locations
|
|
10
|
+
* of the publishable key's sales channels. The POS uses it with
|
|
11
|
+
* `fields=id,name,address.*`.
|
|
12
|
+
*/
|
|
13
|
+
async function GET(req, res) {
|
|
14
|
+
const allowed = await (0, scope_1.listStockLocationsForChannels)(req.scope, (0, scope_1.getKeySalesChannelIds)(req));
|
|
15
|
+
let ids = allowed.map((l) => l.id);
|
|
16
|
+
const requested = req.filterableFields.id;
|
|
17
|
+
if (requested) {
|
|
18
|
+
const asked = Array.isArray(requested) ? requested : [requested];
|
|
19
|
+
ids = ids.filter((id) => asked.includes(id));
|
|
20
|
+
}
|
|
21
|
+
const pagination = req.queryConfig.pagination;
|
|
22
|
+
if (!ids.length) {
|
|
23
|
+
res.json({
|
|
24
|
+
stock_locations: [],
|
|
25
|
+
count: 0,
|
|
26
|
+
offset: pagination.skip ?? 0,
|
|
27
|
+
limit: pagination.take ?? 50,
|
|
28
|
+
});
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
32
|
+
const { data: stock_locations, metadata } = await query.graph({
|
|
33
|
+
entity: "stock_location",
|
|
34
|
+
filters: { ...req.filterableFields, id: ids },
|
|
35
|
+
fields: req.queryConfig.fields,
|
|
36
|
+
pagination: req.queryConfig.pagination,
|
|
37
|
+
});
|
|
38
|
+
res.json({
|
|
39
|
+
stock_locations,
|
|
40
|
+
count: metadata?.count ?? stock_locations.length,
|
|
41
|
+
offset: metadata?.skip ?? 0,
|
|
42
|
+
limit: metadata?.take ?? stock_locations.length,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9zdG9jay1sb2NhdGlvbnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsa0JBMENDO0FBdkRELHFEQUFxRTtBQUNyRSxvQ0FHaUI7QUFFakI7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUErQixFQUFFLEdBQW1CO0lBQzVFLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxxQ0FBNkIsRUFDakQsR0FBRyxDQUFDLEtBQUssRUFDVCxJQUFBLDZCQUFxQixFQUFDLEdBQUcsQ0FBQyxDQUMzQixDQUFBO0lBQ0QsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRWxDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFtQyxDQUFBO0lBQzFFLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDaEUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUdsQyxDQUFBO0lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsZUFBZSxFQUFFLEVBQUU7WUFDbkIsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQzVCLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUU7U0FDN0IsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUQsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixPQUFPLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFO1FBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU07UUFDOUIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVTtLQUN2QyxDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsZUFBZTtRQUNmLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxJQUFJLGVBQWUsQ0FBQyxNQUFNO1FBQ2hELE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDM0IsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDLE1BQU07S0FDaEQsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const customer_1 = __importDefault(require("@medusajs/medusa/customer"));
|
|
8
|
+
const order_1 = __importDefault(require("@medusajs/medusa/order"));
|
|
9
|
+
/**
|
|
10
|
+
* Attribution link (spec §3.1 option B): agent (customer) ↔ draft order.
|
|
11
|
+
*
|
|
12
|
+
* Source of truth for "which agent created/owns this draft order". Created in
|
|
13
|
+
* `POST /store/netme-pos/draft-orders` and used by `ensureDraftOrderAgent` and
|
|
14
|
+
* the agent's list route.
|
|
15
|
+
*
|
|
16
|
+
* Custom aliases (`agent` / `draft_order`) instead of the defaults
|
|
17
|
+
* (`customer` / `order`): in 2.14.2 the graph `extends` this link generates
|
|
18
|
+
* would otherwise collide with the native `order.customer` / `customer.orders`
|
|
19
|
+
* aliases. With these aliases the graph gains:
|
|
20
|
+
* - `order.agent` → the agent customer (single)
|
|
21
|
+
* - `customer.draft_orders` → the agent's draft orders (list)
|
|
22
|
+
* - entryPoint `agent_draft_order` (queryable link table)
|
|
23
|
+
*
|
|
24
|
+
* After deploying: `npx medusa db:migrate` creates the pivot table
|
|
25
|
+
* `mlm_agent_draft_order`.
|
|
26
|
+
*/
|
|
27
|
+
exports.default = (0, utils_1.defineLink)({ linkable: { ...customer_1.default.linkable.customer.toJSON(), alias: "agent" } }, {
|
|
28
|
+
linkable: { ...order_1.default.linkable.order.toJSON(), alias: "draft_order" },
|
|
29
|
+
isList: true,
|
|
30
|
+
}, { database: { table: "mlm_agent_draft_order" } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtZHJhZnQtb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGlua3MvYWdlbnQtZHJhZnQtb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBc0Q7QUFDdEQseUVBQXNEO0FBQ3RELG1FQUFnRDtBQUVoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxrQkFBZSxJQUFBLGtCQUFVLEVBQ3ZCLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxrQkFBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQzlFO0lBQ0UsUUFBUSxFQUFFLEVBQUUsR0FBRyxlQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO0lBQzFFLE1BQU0sRUFBRSxJQUFJO0NBQ2IsRUFDRCxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxFQUFFLENBQ2pELENBQUEifQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureAgentCanActForWorkflow = exports.ensureAgentCanActForWorkflowId = exports.ensureAgentCanActForStep = exports.ensureAgentCanActForStepId = exports.ensureAgentCanActFor = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const ensureAgentCanActFor = async (container, { agent_customer_id, target_customer_id }) => {
|
|
7
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
8
|
+
const { data: customers } = await query.graph({
|
|
9
|
+
entity: "customer",
|
|
10
|
+
filters: {
|
|
11
|
+
id: [...new Set([agent_customer_id, target_customer_id])],
|
|
12
|
+
},
|
|
13
|
+
fields: ["id", "email", "groups.id"],
|
|
14
|
+
});
|
|
15
|
+
const agent = customers.find((c) => c.id === agent_customer_id);
|
|
16
|
+
const target = customers.find((c) => c.id === target_customer_id);
|
|
17
|
+
if (!agent) {
|
|
18
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, `Agent customer ${agent_customer_id} was not found`);
|
|
19
|
+
}
|
|
20
|
+
if (!target) {
|
|
21
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Customer ${target_customer_id} was not found`);
|
|
22
|
+
}
|
|
23
|
+
return { agent, target };
|
|
24
|
+
};
|
|
25
|
+
exports.ensureAgentCanActFor = ensureAgentCanActFor;
|
|
26
|
+
exports.ensureAgentCanActForStepId = "netme-pos-ensure-agent-can-act-for";
|
|
27
|
+
exports.ensureAgentCanActForStep = (0, workflows_sdk_1.createStep)(exports.ensureAgentCanActForStepId, async (input, { container }) => {
|
|
28
|
+
const result = await (0, exports.ensureAgentCanActFor)(container, input);
|
|
29
|
+
return new workflows_sdk_1.StepResponse(result);
|
|
30
|
+
});
|
|
31
|
+
exports.ensureAgentCanActForWorkflowId = "netme-pos-ensure-agent-can-act-for-workflow";
|
|
32
|
+
exports.ensureAgentCanActForWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.ensureAgentCanActForWorkflowId, function (input) {
|
|
33
|
+
const result = (0, exports.ensureAgentCanActForStep)(input);
|
|
34
|
+
return new workflows_sdk_1.WorkflowResponse(result);
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Vuc3VyZS1hZ2VudC1jYW4tYWN0LWZvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFHa0M7QUFDbEMscUVBTTBDO0FBMEJuQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFDdkMsU0FBMEIsRUFDMUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBNkIsRUFDL0IsRUFBRTtJQUN2QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVDLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQztLQUNyQyxDQUFDLENBQUE7SUFFRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLGlCQUFpQixDQUFDLENBQUE7SUFDcEUsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxrQkFBa0IsQ0FBQyxDQUFBO0lBRXRFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGtCQUFrQixpQkFBaUIsZ0JBQWdCLENBQ3BELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsWUFBWSxrQkFBa0IsZ0JBQWdCLENBQy9DLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQTtBQUMxQixDQUFDLENBQUE7QUFoQ1ksUUFBQSxvQkFBb0Isd0JBZ0NoQztBQUVZLFFBQUEsMEJBQTBCLEdBQUcsb0NBQW9DLENBQUE7QUFFakUsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELGtDQUEwQixFQUMxQixLQUFLLEVBQUUsS0FBZ0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRCQUFvQixFQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMzRCxPQUFPLElBQUksNEJBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNqQyxDQUFDLENBQ0YsQ0FBQTtBQUVZLFFBQUEsOEJBQThCLEdBQ3pDLDZDQUE2QyxDQUFBO0FBRWxDLFFBQUEsNEJBQTRCLEdBQUcsSUFBQSw4QkFBYyxFQUN4RCxzQ0FBOEIsRUFDOUIsVUFBVSxLQUE4QztJQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUF3QixFQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQSJ9
|