medusa-pos-plugin 0.0.34 → 0.0.36

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.
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ exports.POST = POST;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const barcode_labels_1 = require("../../../utils/barcode-labels");
7
+ const VARIANT_FIELDS = [
8
+ "id",
9
+ "barcode",
10
+ "sku",
11
+ "product.id",
12
+ "product.title",
13
+ "options.value",
14
+ "options.option.title",
15
+ "calculated_price.*",
16
+ "price_set.prices.amount",
17
+ "price_set.prices.currency_code",
18
+ "price_set.prices.price_list_id",
19
+ ];
20
+ function isVariantRow(value) {
21
+ return (!!value &&
22
+ typeof value === "object" &&
23
+ typeof value.id === "string");
24
+ }
25
+ async function loadContactDetails(scope) {
26
+ try {
27
+ const dynamicConfigService = scope.resolve("dynamic_config");
28
+ return (0, barcode_labels_1.contactDetailsFromConfig)(await dynamicConfigService.listValues());
29
+ }
30
+ catch (configError) {
31
+ console.warn("[barcode-template] Could not fetch dynamic config:", configError);
32
+ return { phone: "", email: "", address: "" };
33
+ }
34
+ }
35
+ async function resolveRegionId(scope, requested) {
36
+ if (requested)
37
+ return requested;
38
+ try {
39
+ const regionModule = scope.resolve(utils_1.Modules.REGION);
40
+ const regions = await regionModule.listRegions({}, { take: 20 });
41
+ const inr = regions.find((r) => (r.currency_code || "").toLowerCase() === "inr");
42
+ return inr?.id || regions[0]?.id || "";
43
+ }
44
+ catch (regionError) {
45
+ console.warn("[barcode-template] region resolve failed:", regionError);
46
+ return "";
47
+ }
48
+ }
49
+ /**
50
+ * GET /admin/barcode-template
51
+ * Returns raw template + contact details (legacy / preview).
52
+ */
53
+ async function GET(req, res) {
54
+ try {
55
+ const template = (0, barcode_labels_1.loadBarcodeTemplate)();
56
+ const contactDetails = await loadContactDetails(req.scope);
57
+ res.json({ template, contactDetails });
58
+ }
59
+ catch (error) {
60
+ console.error("Error reading barcode template:", error);
61
+ res.status(500).json({ error: "Failed to load barcode template" });
62
+ }
63
+ }
64
+ /**
65
+ * POST /admin/barcode-template
66
+ * Body: { items: [{ variant_id, quantity }], region_id?, print_width?, print_height? }
67
+ * or legacy { variant_ids: string[] }
68
+ * Returns ready-to-print HTML with all variables filled on the backend.
69
+ * Quantity repeats labels (unique SVG ids per copy).
70
+ */
71
+ async function POST(req, res) {
72
+ try {
73
+ const body = (0, barcode_labels_1.parseBarcodePrintBody)(req.body);
74
+ const printQueue = (0, barcode_labels_1.buildPrintQueue)(body);
75
+ if (printQueue.length === 0) {
76
+ res.status(400).json({ error: "items or variant_ids is required" });
77
+ return;
78
+ }
79
+ const uniqueVariantIds = [...new Set(printQueue)];
80
+ const printWidth = Number(body.print_width) || 2;
81
+ const printHeight = Number(body.print_height) || 60;
82
+ const template = (0, barcode_labels_1.loadBarcodeTemplate)();
83
+ const contactHtml = (0, barcode_labels_1.buildContactHtml)(await loadContactDetails(req.scope));
84
+ const regionId = await resolveRegionId(req.scope, body.region_id);
85
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
86
+ const { data: variantsRaw = [] } = await query.graph({
87
+ entity: "product_variant",
88
+ fields: VARIANT_FIELDS,
89
+ filters: { id: uniqueVariantIds },
90
+ ...(regionId
91
+ ? {
92
+ context: {
93
+ calculated_price: (0, utils_1.QueryContext)({
94
+ region_id: regionId,
95
+ currency_code: "inr",
96
+ }),
97
+ },
98
+ }
99
+ : {}),
100
+ });
101
+ const variants = (Array.isArray(variantsRaw) ? variantsRaw : []).filter(isVariantRow);
102
+ const byId = new Map(variants.map((v) => [v.id, v]));
103
+ const ordered = printQueue
104
+ .map((id) => byId.get(id))
105
+ .filter((v) => !!v);
106
+ if (ordered.length === 0) {
107
+ res.status(404).json({ error: "No variants found for the given ids" });
108
+ return;
109
+ }
110
+ const { html, count } = (0, barcode_labels_1.renderBarcodeLabelsHtml)({
111
+ template,
112
+ variants: ordered,
113
+ contactHtml,
114
+ printWidth,
115
+ printHeight,
116
+ });
117
+ res.json({
118
+ html,
119
+ count,
120
+ variants: uniqueVariantIds.length,
121
+ });
122
+ }
123
+ catch (error) {
124
+ console.error("[barcode-template] POST error:", error);
125
+ res.status(500).json({
126
+ error: error instanceof Error && error.message
127
+ ? error.message
128
+ : "Failed to build barcode print HTML",
129
+ });
130
+ }
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2JhcmNvZGUtdGVtcGxhdGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErRkEsa0JBWUM7QUFTRCxvQkF3RUM7QUEzTEQscURBSWtDO0FBQ2xDLGtFQVNzQztBQXVCdEMsTUFBTSxjQUFjLEdBQUc7SUFDckIsSUFBSTtJQUNKLFNBQVM7SUFDVCxLQUFLO0lBQ0wsWUFBWTtJQUNaLGVBQWU7SUFDZixlQUFlO0lBQ2Ysc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQix5QkFBeUI7SUFDekIsZ0NBQWdDO0lBQ2hDLGdDQUFnQztDQUNqQyxDQUFBO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBYztJQUNsQyxPQUFPLENBQ0wsQ0FBQyxDQUFDLEtBQUs7UUFDUCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLE9BQVEsS0FBMEIsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUNuRCxDQUFBO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxrQkFBa0IsQ0FDL0IsS0FBNkI7SUFFN0IsSUFBSSxDQUFDO1FBQ0gsTUFBTSxvQkFBb0IsR0FDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBdUIsZ0JBQWdCLENBQUMsQ0FBQTtRQUN2RCxPQUFPLElBQUEseUNBQXdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFBQyxPQUFPLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDOUMsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsZUFBZSxDQUM1QixLQUE2QixFQUM3QixTQUFr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
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const barcode_ean13_1 = require("../../../../utils/barcode-ean13");
6
+ function readVariantIds(body) {
7
+ if (!body || typeof body !== "object")
8
+ return [];
9
+ const ids = body.variantIds;
10
+ if (!Array.isArray(ids))
11
+ return [];
12
+ return ids.filter((id) => typeof id === "string" && !!id);
13
+ }
14
+ /**
15
+ * POST /admin/barcodes/bulk-generate
16
+ * Body: { variantIds: string[] }
17
+ * Writes a deterministic SHA-256 EAN-13 barcode onto each variant.
18
+ */
19
+ const POST = async (req, res) => {
20
+ try {
21
+ const productModuleService = req.scope.resolve(utils_1.Modules.PRODUCT);
22
+ const variantIds = readVariantIds(req.body);
23
+ if (variantIds.length === 0) {
24
+ res.json({ success: true, message: "No variants requested.", count: 0 });
25
+ return;
26
+ }
27
+ // Fetch variant details with parent product & options relations
28
+ const variants = await productModuleService.listProductVariants({ id: variantIds }, { relations: ["product", "options", "options.option"] });
29
+ const updates = [];
30
+ for (const id of variantIds) {
31
+ const variant = variants.find((v) => v.id === id);
32
+ const barcode = (0, barcode_ean13_1.generateDeterministicBarcodeSHA256)(variant?.product?.title || "", variant?.title || "", variant?.options || [], variant?.weight, variant?.width, variant?.length, variant?.height);
33
+ updates.push({ id, barcode });
34
+ }
35
+ for (const update of updates) {
36
+ await productModuleService.updateProductVariants(update.id, {
37
+ barcode: update.barcode,
38
+ });
39
+ }
40
+ res.json({
41
+ success: true,
42
+ message: `Successfully generated SHA-256 deterministic barcodes for ${updates.length} variants.`,
43
+ count: updates.length,
44
+ });
45
+ }
46
+ catch (error) {
47
+ console.error("Bulk barcode generation error:", error);
48
+ res.status(500).json({
49
+ success: false,
50
+ message: error instanceof Error && error.message
51
+ ? error.message
52
+ : "Internal server error",
53
+ });
54
+ }
55
+ };
56
+ exports.POST = POST;
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2JhcmNvZGVzL2J1bGstZ2VuZXJhdGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEscURBQW1EO0FBQ25ELG1FQUd3QztBQWF4QyxTQUFTLGNBQWMsQ0FBQyxJQUFhO0lBQ25DLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ2hELE1BQU0sR0FBRyxHQUFJLElBQWlDLENBQUMsVUFBVSxDQUFBO0lBQ3pELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ2xDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBZ0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDekUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixJQUFJLENBQUM7UUFDSCxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUM1QyxlQUFPLENBQUMsT0FBTyxDQUNoQixDQUFBO1FBRUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMzQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ3hFLE9BQU07UUFDUixDQUFDO1FBRUQsZ0VBQWdFO1FBQ2hFLE1BQU0sUUFBUSxHQUNaLE1BQU0sb0JBQW9CLENBQUMsbUJBQW1CLENBQzVDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUNsQixFQUFFLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUN4RCxDQUFBO1FBRUgsTUFBTSxPQUFPLEdBQTJDLEVBQUUsQ0FBQTtRQUUxRCxLQUFLLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7WUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBQSxrREFBa0MsRUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRSxFQUM3QixPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFDcEIsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLEVBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLEtBQUssRUFDZCxPQUFPLEVBQUUsTUFBTSxFQUNmLE9BQU8sRUFBRSxNQUFNLENBQ2hCLENBQUE7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDL0IsQ0FBQztRQUVELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsTUFBTSxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO2dCQUMxRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87YUFDeEIsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSw2REFBNkQsT0FBTyxDQUFDLE1BQU0sWUFBWTtZQUNoRyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDdEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3RELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUNMLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU87Z0JBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztnQkFDZixDQUFDLENBQUMsdUJBQXVCO1NBQzlCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUEzRFksUUFBQSxJQUFJLFFBMkRoQiJ9
@@ -3,10 +3,145 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DELETE = DELETE;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const core_flows_1 = require("@medusajs/medusa/core-flows");
6
+ const pos_manual_discount_1 = require("../../../../../utils/pos-manual-discount");
6
7
  function log(step, detail) {
7
8
  const payload = { step, at: new Date().toISOString(), ...detail };
8
9
  console.log(`[POS Clear] ${step}`, payload);
9
10
  }
11
+ async function cleanupManualDiscountPromotions(scope, draftOrderId) {
12
+ const deletedPromoIds = [];
13
+ try {
14
+ const query = scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
15
+ // Retrieve draft order or its cart to inspect manual discount and applied promotions
16
+ let draftOrder = null;
17
+ try {
18
+ const { data = [] } = await query.graph({
19
+ entity: "order",
20
+ fields: [
21
+ "id",
22
+ "metadata",
23
+ "promotions.id",
24
+ "promotions.code",
25
+ "items.adjustments.code",
26
+ ],
27
+ filters: { id: draftOrderId },
28
+ });
29
+ draftOrder = Array.isArray(data) ? data[0] : null;
30
+ }
31
+ catch (graphErr) {
32
+ log("3_fetch_draft_order_graph_warn", {
33
+ deleting_id: draftOrderId,
34
+ message: graphErr instanceof Error ? graphErr.message : String(graphErr),
35
+ });
36
+ }
37
+ if (!draftOrder) {
38
+ try {
39
+ const orderModule = scope.resolve(utils_1.Modules.ORDER);
40
+ draftOrder = await orderModule.retrieveOrder(draftOrderId, {
41
+ select: ["id", "metadata"],
42
+ relations: ["items", "items.adjustments"],
43
+ });
44
+ }
45
+ catch {
46
+ // Fallback retrieve failed; continue with what we have
47
+ }
48
+ }
49
+ const posManualMeta = draftOrder?.metadata && typeof draftOrder.metadata === "object"
50
+ ? draftOrder.metadata.pos_manual_discount
51
+ : null;
52
+ const metaPromoId = posManualMeta && typeof posManualMeta === "object"
53
+ ? (typeof posManualMeta.id === "string" && posManualMeta.id.trim()
54
+ ? posManualMeta.id.trim()
55
+ : typeof posManualMeta.promotion_id === "string" && posManualMeta.promotion_id.trim()
56
+ ? posManualMeta.promotion_id.trim()
57
+ : null)
58
+ : null;
59
+ const metaPromoCode = posManualMeta && typeof posManualMeta === "object" && typeof posManualMeta.code === "string"
60
+ ? posManualMeta.code.trim()
61
+ : null;
62
+ const promoIdsToDelete = new Set();
63
+ const promoCodesToLookup = new Set();
64
+ if (metaPromoId) {
65
+ promoIdsToDelete.add(metaPromoId);
66
+ }
67
+ if (metaPromoCode) {
68
+ promoCodesToLookup.add(metaPromoCode);
69
+ }
70
+ // Check promotions applied on the draft order / cart
71
+ if (Array.isArray(draftOrder?.promotions)) {
72
+ for (const p of draftOrder.promotions) {
73
+ const code = typeof p?.code === "string" ? p.code.trim() : "";
74
+ const pid = typeof p?.id === "string" ? p.id.trim() : "";
75
+ if ((0, pos_manual_discount_1.isPosManualCode)(code)) {
76
+ if (pid)
77
+ promoIdsToDelete.add(pid);
78
+ if (code)
79
+ promoCodesToLookup.add(code);
80
+ }
81
+ else if (metaPromoCode && code === metaPromoCode) {
82
+ if (pid)
83
+ promoIdsToDelete.add(pid);
84
+ }
85
+ }
86
+ }
87
+ // Check item adjustments for any POSMAN- codes
88
+ if (Array.isArray(draftOrder?.items)) {
89
+ for (const item of draftOrder.items) {
90
+ if (Array.isArray(item?.adjustments)) {
91
+ for (const adj of item.adjustments) {
92
+ const code = typeof adj?.code === "string" ? adj.code.trim() : "";
93
+ if ((0, pos_manual_discount_1.isPosManualCode)(code)) {
94
+ promoCodesToLookup.add(code);
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ if (promoIdsToDelete.size > 0 || promoCodesToLookup.size > 0) {
101
+ const promotionModuleService = scope.resolve(utils_1.Modules.PROMOTION);
102
+ // If we found codes whose promotion IDs aren't in promoIdsToDelete yet, look them up
103
+ if (promoCodesToLookup.size > 0) {
104
+ try {
105
+ const codes = Array.from(promoCodesToLookup);
106
+ const foundPromos = await promotionModuleService.listPromotions({ code: codes }, { take: codes.length });
107
+ for (const promo of foundPromos || []) {
108
+ if (promo?.id) {
109
+ promoIdsToDelete.add(promo.id);
110
+ }
111
+ }
112
+ }
113
+ catch (lookupErr) {
114
+ log("3_lookup_promos_by_code_warn", {
115
+ deleting_id: draftOrderId,
116
+ codes: Array.from(promoCodesToLookup),
117
+ message: lookupErr instanceof Error ? lookupErr.message : String(lookupErr),
118
+ });
119
+ }
120
+ }
121
+ for (const promoId of promoIdsToDelete) {
122
+ try {
123
+ await promotionModuleService.deletePromotions([promoId]);
124
+ deletedPromoIds.push(promoId);
125
+ log("3_delete_manual_discount_promo_ok", { deleting_id: draftOrderId, promoId });
126
+ }
127
+ catch (delPromoErr) {
128
+ log("3_delete_manual_discount_promo_failed", {
129
+ deleting_id: draftOrderId,
130
+ promoId,
131
+ message: delPromoErr instanceof Error ? delPromoErr.message : String(delPromoErr),
132
+ });
133
+ }
134
+ }
135
+ }
136
+ }
137
+ catch (err) {
138
+ log("3_cleanup_manual_discounts_error", {
139
+ deleting_id: draftOrderId,
140
+ message: err instanceof Error ? err.message : String(err),
141
+ });
142
+ }
143
+ return deletedPromoIds;
144
+ }
10
145
  async function snapshotOrders(query) {
11
146
  const { data = [] } = await query.graph({
12
147
  entity: "order",
@@ -92,6 +227,9 @@ async function DELETE(req, res) {
92
227
  });
93
228
  return;
94
229
  }
230
+ log("3_cleanup_manual_discounts", { deleting_id: id });
231
+ const deletedPromoIds = await cleanupManualDiscountPromotions(req.scope, id);
232
+ log("3_cleanup_manual_discounts_done", { deleting_id: id, promo_ids: deletedPromoIds });
95
233
  log("4_cancel_edit", { deleting_id: id });
96
234
  try {
97
235
  await (0, core_flows_1.cancelDraftOrderEditWorkflow)(req.scope).run({
@@ -162,6 +300,7 @@ async function DELETE(req, res) {
162
300
  missing_completed: missingCompleted,
163
301
  drafts_removed: removedDrafts,
164
302
  verdict: completedVerdict,
303
+ manual_discounts_deleted: deletedPromoIds,
165
304
  },
166
305
  });
167
306
  }
@@ -175,4 +314,4 @@ async function DELETE(req, res) {
175
314
  });
176
315
  }
177
316
  }
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9kcmFmdC1vcmRlcnMvW2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTZEQSx3QkF1SkM7QUFuTkQscURBQXFFO0FBQ3JFLDREQUdvQztBQVVwQyxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsTUFBZ0M7SUFDekQsTUFBTSxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQTtJQUNqRSxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDN0MsQ0FBQztBQUVELEtBQUssVUFBVSxjQUFjLENBQUMsS0FFN0I7SUFDQyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQztRQUN0RSxPQUFPLEVBQUUsRUFBRTtRQUNYLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLEVBQUU7WUFDUixLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO1NBQzlCO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3hELE1BQU0sQ0FBQyxHQUFHLEdBQWdCLENBQUE7UUFD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
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9kcmFmdC1vcmRlcnMvW2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTBOQSx3QkE0SkM7QUFyWEQscURBQThFO0FBQzlFLDREQUdvQztBQUNwQyxrRkFBMEU7QUFVMUUsU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLE1BQWdDO0lBQ3pELE1BQU0sT0FBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUE7SUFDakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQzdDLENBQUM7QUFFRCxLQUFLLFVBQVUsK0JBQStCLENBQzVDLEtBQTZCLEVBQzdCLFlBQW9CO0lBRXBCLE1BQU0sZUFBZSxHQUFhLEVBQUUsQ0FBQTtJQUNwQyxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRTVELHFGQUFxRjtRQUNyRixJQUFJLFVBQVUsR0FBK0IsSUFBSSxDQUFBO1FBQ2pELElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxNQUFNLEVBQUUsT0FBTztnQkFDZixNQUFNLEVBQUU7b0JBQ04sSUFBSTtvQkFDSixVQUFVO29CQUNWLGVBQWU7b0JBQ2YsaUJBQWlCO29CQUNqQix3QkFBd0I7aUJBQ3pCO2dCQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUU7YUFDOUIsQ0FBQyxDQUFBO1lBQ0YsVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMs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
@@ -3,38 +3,48 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GET = GET;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const POSMAN_PREFIX = "POSMAN-";
6
+ function isPosManualPromotion(p) {
7
+ const code = String(p.code || "");
8
+ return code.startsWith(POSMAN_PREFIX) || p.metadata?.source === "pos_manual";
9
+ }
6
10
  /**
7
11
  * GET /admin/pos/manual-discounts
8
- * Lists POS manual-discount promotions (POSMAN-*) for POS + external UI.
9
- * Includes inactive codes (hidden from Admin active promotions).
12
+ * Lists POS manual-discount promotions (POSMAN-*) and Admin-created promo codes
13
+ * for the POS Discounts page. Includes inactive codes.
10
14
  */
11
15
  async function GET(req, res) {
12
16
  const query = (req.query || {});
13
- const limit = Math.min(Math.max(Number(query.limit) || 50, 1), 100);
17
+ const limit = Math.min(Math.max(Number(query.limit) || 50, 1), 200);
14
18
  const offset = Math.max(Number(query.offset) || 0, 0);
15
19
  const q = (query.q || "").trim().toLowerCase();
16
20
  try {
17
21
  const promotionModule = req.scope.resolve(utils_1.Modules.PROMOTION);
18
- // Fetch a window of promotions; filter POSMAN in-process (prefix match).
19
- const take = Math.min(offset + limit + 200, 500);
20
- const [rows] = await promotionModule.listAndCountPromotions({}, {
21
- take,
22
- skip: 0,
22
+ const config = {
23
23
  order: { created_at: "DESC" },
24
24
  relations: ["application_method"],
25
- });
26
- let manual = (rows || []).filter((p) => {
27
- const code = String(p.code || "");
28
- const source = p.metadata?.source;
29
- return code.startsWith(POSMAN_PREFIX) || source === "pos_manual";
25
+ };
26
+ // POSMAN codes are created per sale, so Admin promos are queried separately
27
+ // to keep them from being pushed out of the POSMAN window.
28
+ const take = Math.min(offset + limit + 200, 500);
29
+ const [manualRows, adminRows] = await Promise.all([
30
+ promotionModule.listPromotions({}, { ...config, take, skip: 0 }),
31
+ promotionModule.listPromotions({ code: { $not: { $like: `${POSMAN_PREFIX}%` } } }, { ...config, take: 500, skip: 0 }),
32
+ ]);
33
+ const manual = (manualRows || []).filter(isPosManualPromotion);
34
+ const admin = (adminRows || []).filter((p) => !isPosManualPromotion(p));
35
+ let combined = [...manual, ...admin].sort((a, b) => {
36
+ const at = new Date(a.created_at ?? 0).getTime();
37
+ const bt = new Date(b.created_at ?? 0).getTime();
38
+ return bt - at;
30
39
  });
31
40
  if (q) {
32
- manual = manual.filter((p) => {
41
+ combined = combined.filter((p) => {
33
42
  const hay = [
34
43
  p.code,
35
44
  p.metadata?.draft_order_id,
36
45
  p.metadata?.applied_by,
37
46
  String(p.metadata?.amount ?? ""),
47
+ String(p.application_method?.value ?? ""),
38
48
  ]
39
49
  .filter(Boolean)
40
50
  .join(" ")
@@ -42,23 +52,32 @@ async function GET(req, res) {
42
52
  return hay.includes(q);
43
53
  });
44
54
  }
45
- const count = manual.length;
46
- const page = manual.slice(offset, offset + limit).map((p) => ({
47
- id: p.id,
48
- code: p.code,
49
- status: p.status,
50
- amount: p.metadata?.amount ??
51
- p.application_method?.value ??
52
- null,
53
- currency_code: p.metadata?.currency_code ??
54
- p.application_method?.currency_code ??
55
- null,
56
- draft_order_id: p.metadata?.draft_order_id ?? null,
57
- applied_by: p.metadata?.applied_by ?? null,
58
- applied_at: p.metadata?.applied_at ?? p.created_at ?? null,
59
- created_at: p.created_at ?? null,
60
- metadata: p.metadata ?? null,
61
- }));
55
+ const count = combined.length;
56
+ const page = combined.slice(offset, offset + limit).map((p) => {
57
+ const posManual = isPosManualPromotion(p);
58
+ const method = p.application_method;
59
+ const methodType = method?.type === "percentage" ? "percentage" : method?.type === "fixed" ? "fixed" : null;
60
+ return {
61
+ id: p.id,
62
+ code: p.code,
63
+ status: p.status,
64
+ origin: posManual ? "pos_manual" : "admin",
65
+ // Admin percentage promos have no rupee amount until applied to a cart.
66
+ amount: posManual
67
+ ? p.metadata?.amount ?? method?.value ?? null
68
+ : methodType === "fixed"
69
+ ? method?.value ?? null
70
+ : null,
71
+ discount_type: posManual ? p.metadata?.discount_type ?? null : methodType,
72
+ discount_value: posManual ? p.metadata?.discount_value ?? null : method?.value ?? null,
73
+ currency_code: p.metadata?.currency_code ?? method?.currency_code ?? null,
74
+ draft_order_id: p.metadata?.draft_order_id ?? null,
75
+ applied_by: posManual ? p.metadata?.applied_by ?? null : "admin",
76
+ applied_at: posManual ? p.metadata?.applied_at ?? p.created_at ?? null : p.created_at ?? null,
77
+ created_at: p.created_at ?? null,
78
+ metadata: p.metadata ?? null,
79
+ };
80
+ });
62
81
  res.json({
63
82
  manual_discounts: page,
64
83
  count,
@@ -73,4 +92,4 @@ async function GET(req, res) {
73
92
  });
74
93
  }
75
94
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9tYW51YWwtZGlzY291bnRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0JBLGtCQStFQztBQTlGRCxxREFBbUQ7QUFFbkQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFBO0FBUS9COzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBYyxDQUFBO0lBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUU5QyxJQUFJLENBQUM7UUFDSCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUsxRCxDQUFBO1FBRUQseUVBQXlFO1FBQ3pFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sZUFBZSxDQUFDLHNCQUFzQixDQUN6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
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9tYW51YWwtZGlzY291bnRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdUJBLGtCQWdHQztBQXRIRCxxREFBbUQ7QUFFbkQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFBO0FBVS9CLFNBQVMsb0JBQW9CLENBQUMsQ0FBZTtJQUMzQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLEtBQUssWUFBWSxDQUFBO0FBQzlFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQWMsQ0FBQTtJQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyRCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFFOUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFNBQVMsQ0FLMUQsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHO1lBQ2IsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtZQUM3QixTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztTQUNsQyxDQUFBO1FBRUQsNEVBQTRFO1FBQzVFLDJEQUEyRDtRQUMzRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2hELGVBQWUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoRSxlQUFlLENBQUMsY0FBYyxDQUM1QixFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLGFBQWEsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUNsRCxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUNsQztTQUNGLENBQUMsQ0FBQTtRQUVGLE1BQU0sTUFBTSxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQzlELE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXZFLElBQUksUUFBUSxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUNoRCxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMvQixNQUFNLEdBQUcsR0FBRztvQkFDVixDQUFDLENBQUMsSUFBSTtvQkFDTixDQUFDLENBQUMsUUFBUSxFQUFFLGNBQWM7b0JBQzFCLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVTtvQkFDdEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO2lCQUMxQztxQkFDRSxNQUFNLENBQUMsT0FBTyxDQUFDO3FCQUNmLElBQUksQ0FBQyxHQUFHLENBQUM7cUJBQ1QsV0FBVyxFQUFFLENBQUE7Z0JBQ2hCLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN4QixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFBO1FBQzdCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM1RCxNQUFNLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUE7WUFDbkMsTUFBTSxVQUFVLEdBQ2QsTUFBTSxFQUFFLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBRTFGLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUNSLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07Z0JBQ2hCLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDMUMsd0VBQXdFO2dCQUN4RSxNQUFNLEVBQUUsU0FBUztvQkFDZixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJO29CQUM3QyxDQUFDLENBQUMsVUFBVSxLQUFLLE9BQU87d0JBQ3RCLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUk7d0JBQ3ZCLENBQUMsQ0FBQyxJQUFJO2dCQUNWLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVTtnQkFDekUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUk7Z0JBQ3RGLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLGFBQWEsSUFBSSxNQUFNLEVBQUUsYUFBYSxJQUFJLElBQUk7Z0JBQ3pFLGNBQWMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLGNBQWMsSUFBSSxJQUFJO2dCQUNsRCxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87Z0JBQ2hFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUk7Z0JBQzdGLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUk7Z0JBQ2hDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxJQUFJLElBQUk7YUFDN0IsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNQLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsS0FBSztZQUNMLEtBQUs7WUFDTCxNQUFNO1NBQ1AsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN6RCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxpQ0FBaUM7U0FDN0QsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,66 @@
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.generateDeterministicBarcodeSHA256 = generateDeterministicBarcodeSHA256;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ /**
9
+ * Deterministic EAN-13 Barcode Generator using SHA-256 Hashing.
10
+ * Format: Product Title|Variant Title|Color=White|Size=3-4Y|Weight=200|Width=20|Length=30|Height=2
11
+ *
12
+ * Algorithm Pipeline:
13
+ * Fixed Input String -> SHA-256 -> Numeric Conversion -> 12-Digit Base -> EAN-13 Check Digit -> Final 13-Digit Barcode
14
+ *
15
+ * Output must stay stable: printed labels already carry these values.
16
+ */
17
+ function generateDeterministicBarcodeSHA256(productTitle, variantTitle, options, weight, width, length, height, prefix = "200" // Standard 3-digit in-store retail prefix
18
+ ) {
19
+ const parts = [];
20
+ const pTitle = (productTitle || "").trim();
21
+ if (pTitle)
22
+ parts.push(pTitle);
23
+ const vTitle = (variantTitle || "").trim();
24
+ if (vTitle)
25
+ parts.push(vTitle);
26
+ // Append option attributes (e.g. Color=White|Size=3-4Y)
27
+ if (Array.isArray(options)) {
28
+ options.forEach((opt) => {
29
+ const optTitle = (opt?.option?.title || "").trim();
30
+ const optVal = (opt?.value || "").trim();
31
+ if (optTitle && optVal) {
32
+ parts.push(`${optTitle}=${optVal}`);
33
+ }
34
+ else if (optVal) {
35
+ parts.push(optVal);
36
+ }
37
+ });
38
+ }
39
+ // Append physical attributes if present
40
+ if (weight != null && !isNaN(Number(weight)))
41
+ parts.push(`Weight=${weight}`);
42
+ if (width != null && !isNaN(Number(width)))
43
+ parts.push(`Width=${width}`);
44
+ if (length != null && !isNaN(Number(length)))
45
+ parts.push(`Length=${length}`);
46
+ if (height != null && !isNaN(Number(height)))
47
+ parts.push(`Height=${height}`);
48
+ const inputString = parts.join("|");
49
+ // Step 1: Compute SHA-256 Hash
50
+ const sha256Hex = crypto_1.default.createHash("sha256").update(inputString).digest("hex");
51
+ // Step 2: Convert SHA-256 hash slice to 9-digit numeric payload
52
+ const numericVal = BigInt("0x" + sha256Hex.slice(0, 15));
53
+ const payload9Digits = String(numericVal % 1000000000n).padStart(9, "0");
54
+ // Step 3: Create 12-digit base number (3-digit prefix + 9-digit payload)
55
+ const base12 = `${prefix}${payload9Digits}`;
56
+ // Step 4: Calculate EAN-13 Check Digit
57
+ let sum = 0;
58
+ for (let i = 0; i < 12; i++) {
59
+ const digit = parseInt(base12.charAt(i), 10);
60
+ sum += i % 2 === 0 ? digit : digit * 3;
61
+ }
62
+ const checkDigit = (10 - (sum % 10)) % 10;
63
+ // Step 5: Final 13-digit EAN-13 Barcode
64
+ return `${base12}${checkDigit}`;
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyY29kZS1lYW4xMy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9iYXJjb2RlLWVhbjEzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZ0JBLGdGQTJEQztBQTNFRCxvREFBMkI7QUFPM0I7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixrQ0FBa0MsQ0FDaEQsWUFBb0IsRUFDcEIsWUFBb0IsRUFDcEIsT0FBdUMsRUFDdkMsTUFBc0IsRUFDdEIsS0FBcUIsRUFDckIsTUFBc0IsRUFDdEIsTUFBc0IsRUFDdEIsTUFBTSxHQUFHLEtBQUssQ0FBQywwQ0FBMEM7O0lBRXpELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQTtJQUUxQixNQUFNLE1BQU0sR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQyxJQUFJLE1BQU07UUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTlCLE1BQU0sTUFBTSxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzFDLElBQUksTUFBTTtRQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFOUIsd0RBQXdEO0lBQ3hELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0QixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ2xELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUN4QyxJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUUsQ0FBQztn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