medusa-pos-plugin 0.0.9 → 0.0.10
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.
|
@@ -6,7 +6,9 @@ const pos_auto_promotions_1 = require("../../../../../../utils/pos-auto-promotio
|
|
|
6
6
|
/**
|
|
7
7
|
* POST /admin/pos/draft-orders/:id/confirm-lite
|
|
8
8
|
* Idle flush for new POS keep_edit_open path:
|
|
9
|
-
*
|
|
9
|
+
* 1) confirm the open item-add edit
|
|
10
|
+
* 2) begin a fresh edit, attach automatic promotions, confirm
|
|
11
|
+
* (same order as the default /items forceConfirm path)
|
|
10
12
|
*/
|
|
11
13
|
async function POST(req, res) {
|
|
12
14
|
const draftOrderId = req.params.id;
|
|
@@ -20,20 +22,20 @@ async function POST(req, res) {
|
|
|
20
22
|
const confirmedBy = actorId || "system";
|
|
21
23
|
try {
|
|
22
24
|
const t0 = performance.now();
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const confirmed = await (0, pos_draft_edit_1.confirmEditLite)(req.scope, draftOrderId, confirmedBy);
|
|
25
|
+
// Confirm pending item adds first. Attaching promos onto that same open
|
|
26
|
+
// edit fails Medusa's active-order-change check; /items already confirmed
|
|
27
|
+
// before applyAutoPromotions.
|
|
28
|
+
const confirmedItems = await (0, pos_draft_edit_1.confirmEditLite)(req.scope, draftOrderId, confirmedBy);
|
|
29
|
+
const autoPromoRes = await (0, pos_auto_promotions_1.applyAutoPromotions)(req.scope, draftOrderId, confirmedBy);
|
|
29
30
|
const draft_order = await (0, pos_draft_edit_1.retrievePosCart)(req.scope, draftOrderId);
|
|
30
31
|
const ms = Math.round(performance.now() - t0);
|
|
31
|
-
console.log(`[pos confirm-lite] draft=${draftOrderId}
|
|
32
|
+
console.log(`[pos confirm-lite] plugin=${pos_auto_promotions_1.POS_PLUGIN_VERSION} draft=${draftOrderId} confirmed_items=${confirmedItems ? 1 : 0} ms=${ms} auto_promos=${JSON.stringify(autoPromoRes)} applied=${(autoPromoRes.applied || []).join(",")}`);
|
|
32
33
|
res.status(200).json({
|
|
33
34
|
id: draftOrderId,
|
|
34
|
-
confirmed:
|
|
35
|
+
confirmed: true,
|
|
35
36
|
draft_order: draft_order || { id: draftOrderId },
|
|
36
37
|
_pos_auto_promos: autoPromoRes,
|
|
38
|
+
_pos_plugin_version: pos_auto_promotions_1.POS_PLUGIN_VERSION,
|
|
37
39
|
_pos_timings_ms: { confirm_lite: ms },
|
|
38
40
|
});
|
|
39
41
|
}
|
|
@@ -44,4 +46,4 @@ async function POST(req, res) {
|
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9kcmFmdC1vcmRlcnMvW2lkXS9jb25maXJtLWxpdGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsb0JBbURDO0FBbkVELDJFQUcrQztBQUMvQyxxRkFHb0Q7QUFFcEQ7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLElBQUksQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQ2hFLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO0lBRWxDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxDQUFDLENBQUE7UUFDL0QsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FDVixHQUFXLENBQUMsWUFBWSxFQUFFLFFBQVE7UUFDbEMsR0FBVyxDQUFDLElBQUksRUFBRSxRQUFRO1FBQzNCLElBQUksQ0FBQTtJQUNOLE1BQU0sV0FBVyxHQUFHLE9BQU8sSUFBSSxRQUFRLENBQUE7SUFFdkMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBRTVCLHdFQUF3RTtRQUN4RSwwRUFBMEU7UUFDMUUsOEJBQThCO1FBQzlCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBQSxnQ0FBZSxFQUMxQyxHQUFHLENBQUMsS0FBSyxFQUNULFlBQVksRUFDWixXQUFXLENBQ1osQ0FBQTtRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSx5Q0FBbUIsRUFDNUMsR0FBRyxDQUFDLEtBQUssRUFDVCxZQUFZLEVBQ1osV0FBVyxDQUNaLENBQUE7UUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsZ0NBQWUsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsNkJBQTZCLHdDQUFrQixVQUFVLFlBQVksb0JBQW9CLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ3pOLENBQUE7UUFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixFQUFFLEVBQUUsWUFBWTtZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxXQUFXLElBQUksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFO1lBQ2hELGdCQUFnQixFQUFFLFlBQVk7WUFDOUIsbUJBQW1CLEVBQUUsd0NBQWtCO1lBQ3ZDLGVBQWUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7U0FDdEMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN0RCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksOEJBQThCLENBQUM7U0FDbEUsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -1,49 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POS_PLUGIN_VERSION = void 0;
|
|
3
4
|
exports.applyAutoPromotions = applyAutoPromotions;
|
|
4
5
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
6
|
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
7
|
const pos_draft_edit_1 = require("./pos-draft-edit");
|
|
8
|
+
exports.POS_PLUGIN_VERSION = "0.0.10";
|
|
7
9
|
/**
|
|
8
10
|
* Attach active automatic promotions to a POS draft order.
|
|
9
|
-
*
|
|
11
|
+
* Same begin → addDraftOrderPromotion → confirm sequence as /promotions.
|
|
12
|
+
*
|
|
13
|
+
* Callers must confirm any open item-add edit first — adding promotions onto an
|
|
14
|
+
* edit that already has ITEM_ADD actions intermittently fails Medusa's
|
|
15
|
+
* "An active Order Change is required" check even when a change is pending.
|
|
10
16
|
*/
|
|
11
17
|
async function applyAutoPromotions(scope, orderId, confirmedBy, options) {
|
|
12
18
|
const log = [];
|
|
19
|
+
const plugin_version = exports.POS_PLUGIN_VERSION;
|
|
13
20
|
try {
|
|
14
21
|
const query = scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
15
|
-
// Lean query only — loading rules.values for every promo previously preceded
|
|
16
|
-
// intermittent "An active Order Change is required" failures on the add workflow.
|
|
17
22
|
const { data: promos = [] } = await query.graph({
|
|
18
23
|
entity: "promotion",
|
|
19
24
|
fields: ["id", "code", "is_automatic", "status"],
|
|
20
25
|
filters: { status: "active" },
|
|
21
26
|
});
|
|
22
27
|
const list = Array.isArray(promos) ? promos : [];
|
|
23
|
-
log.push(`Query found ${list.length} active promotions`);
|
|
28
|
+
log.push(`Query found ${list.length} active promotions (plugin=${plugin_version})`);
|
|
24
29
|
const autoCodes = list
|
|
25
30
|
.filter((p) => p?.is_automatic === true)
|
|
26
31
|
.map((p) => String(p?.code || "").trim())
|
|
27
32
|
.filter((code) => code && !code.startsWith("POSMAN-"));
|
|
28
|
-
log.push(`Applying promo_codes=[${autoCodes.join(", ")}]
|
|
33
|
+
log.push(`Applying promo_codes=[${autoCodes.join(", ")}]`);
|
|
29
34
|
if (autoCodes.length === 0) {
|
|
30
|
-
return { log, applied: [] };
|
|
35
|
+
return { log, applied: [], plugin_version };
|
|
31
36
|
}
|
|
32
37
|
await (0, pos_draft_edit_1.beginEditSafe)(scope, orderId);
|
|
33
38
|
const appliedSuccessfully = [];
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
// One workflow call (same as /promotions) — avoids lock timeouts from
|
|
40
|
+
// hundreds of sequential addDraftOrderPromotionWorkflow runs.
|
|
41
|
+
try {
|
|
42
|
+
await (0, core_flows_1.addDraftOrderPromotionWorkflow)(scope).run({
|
|
43
|
+
input: {
|
|
44
|
+
order_id: orderId,
|
|
45
|
+
promo_codes: autoCodes,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
appliedSuccessfully.push(...autoCodes);
|
|
49
|
+
log.push(`Attached autos batch count=${autoCodes.length}`);
|
|
50
|
+
}
|
|
51
|
+
catch (batchErr) {
|
|
52
|
+
log.push(`Batch autos note: ${batchErr?.message || batchErr}; falling back per-code`);
|
|
53
|
+
for (const code of autoCodes) {
|
|
54
|
+
try {
|
|
55
|
+
await (0, pos_draft_edit_1.beginEditSafe)(scope, orderId);
|
|
56
|
+
await (0, core_flows_1.addDraftOrderPromotionWorkflow)(scope).run({
|
|
57
|
+
input: {
|
|
58
|
+
order_id: orderId,
|
|
59
|
+
promo_codes: [code],
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
log.push(`Attached promo '${code}'`);
|
|
63
|
+
appliedSuccessfully.push(code);
|
|
64
|
+
}
|
|
65
|
+
catch (promoErr) {
|
|
66
|
+
log.push(`Promo '${code}' note: ${promoErr?.message || promoErr}`);
|
|
67
|
+
}
|
|
47
68
|
}
|
|
48
69
|
}
|
|
49
70
|
if (!options?.skipFinalConfirm) {
|
|
@@ -52,11 +73,11 @@ async function applyAutoPromotions(scope, orderId, confirmedBy, options) {
|
|
|
52
73
|
? `Confirmed edit with autos=[${appliedSuccessfully.join(", ")}]`
|
|
53
74
|
: "Confirmed edit (no autos attached)");
|
|
54
75
|
}
|
|
55
|
-
return { log, applied: appliedSuccessfully };
|
|
76
|
+
return { log, applied: appliedSuccessfully, plugin_version };
|
|
56
77
|
}
|
|
57
78
|
catch (err) {
|
|
58
79
|
log.push(`applyAutoPromotions error: ${err?.message || err}`);
|
|
59
80
|
}
|
|
60
|
-
return { log, applied: [] };
|
|
81
|
+
return { log, applied: [], plugin_version };
|
|
61
82
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLWF1dG8tcHJvbW90aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9wb3MtYXV0by1wcm9tb3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLGtEQWlGQztBQS9GRCxxREFBcUU7QUFDckUsNERBQTRFO0FBQzVFLHFEQUFpRTtBQUVwRCxRQUFBLGtCQUFrQixHQUFHLFFBQVEsQ0FBQTtBQUUxQzs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLG1CQUFtQixDQUN2QyxLQUE2QixFQUM3QixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsT0FBd0M7SUFFeEMsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFBO0lBQ3hCLE1BQU0sY0FBYyxHQUFHLDBCQUFrQixDQUFBO0lBQ3pDLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFNUQsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzlDLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsQ0FBQztZQUNoRCxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO1NBQzlCLENBQUMsQ0FBQTtRQUVGLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ2hELEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsTUFBTSw4QkFBOEIsY0FBYyxHQUFHLENBQUMsQ0FBQTtRQUVuRixNQUFNLFNBQVMsR0FBRyxJQUFJO2FBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFB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
|
package/package.json
CHANGED