@zaamx/netme-bundle 0.0.12 → 0.0.13
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.
|
@@ -1,52 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Subscriber: order.payment_captured
|
|
4
|
-
*
|
|
5
|
-
* Cuando se confirma el pago de una orden que contiene productos
|
|
6
|
-
* de la categoría Paquetes a Precio Especial, redime 1 crédito
|
|
7
|
-
* por cada unidad comprada (usando la versión actual de la orden).
|
|
8
|
-
*
|
|
9
|
-
* Orden FIFO por created_at — el crédito más antiguo se redime primero.
|
|
10
|
-
*/
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.config = void 0;
|
|
13
4
|
exports.default = redeemSpecialPackOnPayment;
|
|
14
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
15
5
|
const bundles_1 = require("../modules/bundles");
|
|
16
6
|
async function redeemSpecialPackOnPayment({ event: { data }, container, }) {
|
|
17
|
-
const
|
|
7
|
+
const query = container.resolve("query");
|
|
8
|
+
// Resolver la orden desde el payment via query.graph
|
|
9
|
+
const { data: [payment] } = await query.graph({
|
|
10
|
+
entity: "payment",
|
|
11
|
+
fields: [
|
|
12
|
+
"id",
|
|
13
|
+
"payment_collection.order.id",
|
|
14
|
+
"payment_collection.order.customer_id",
|
|
15
|
+
],
|
|
16
|
+
filters: { id: data.id },
|
|
17
|
+
});
|
|
18
|
+
const order = payment?.payment_collection?.order;
|
|
19
|
+
if (!order?.id)
|
|
20
|
+
return;
|
|
18
21
|
const bundleService = container.resolve(bundles_1.BUNDLE_MODULE);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const packCount = await bundleService.countSpecialPacksInOrder(orderId);
|
|
22
|
+
// Contar unidades de paquetes especiales en la versión actual de la orden
|
|
23
|
+
const packCount = await bundleService.countSpecialPacksInOrder(order.id);
|
|
22
24
|
if (packCount === 0)
|
|
23
25
|
return;
|
|
24
|
-
// Obtener el customer de la orden
|
|
25
|
-
const order = await orderModule.retrieveOrder(orderId);
|
|
26
26
|
const customerId = order.customer_id;
|
|
27
27
|
if (!customerId) {
|
|
28
|
-
console.warn(`[special-packs] Orden ${
|
|
28
|
+
console.warn(`[special-packs] Orden ${order.id} sin customer_id`);
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
// Redimir 1 crédito por
|
|
31
|
+
// Redimir 1 crédito por pack (FIFO por created_at)
|
|
32
32
|
let redeemedCount = 0;
|
|
33
33
|
for (let i = 0; i < packCount; i++) {
|
|
34
|
-
const redeemedPackId = await bundleService.redeemOldestPack(customerId,
|
|
34
|
+
const redeemedPackId = await bundleService.redeemOldestPack(customerId, order.id);
|
|
35
35
|
if (!redeemedPackId)
|
|
36
|
-
break;
|
|
36
|
+
break;
|
|
37
37
|
redeemedCount++;
|
|
38
38
|
}
|
|
39
39
|
if (redeemedCount === packCount) {
|
|
40
|
-
console.log(`[special-packs] ${redeemedCount}/${packCount} crédito(s) redimidos
|
|
40
|
+
console.log(`[special-packs] ${redeemedCount}/${packCount} crédito(s) redimidos — customer ${customerId} orden ${order.id}`);
|
|
41
41
|
}
|
|
42
42
|
else if (redeemedCount > 0) {
|
|
43
|
-
console.warn(`[special-packs] PARCIAL: ${redeemedCount}/${packCount}
|
|
43
|
+
console.warn(`[special-packs] PARCIAL: ${redeemedCount}/${packCount} — créditos insuficientes para customer ${customerId} orden ${order.id}`);
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
|
-
console.error(`[special-packs] ALERTA: orden ${
|
|
46
|
+
console.error(`[special-packs] ALERTA: orden ${order.id} con ${packCount} pack(s) sin créditos disponibles para customer ${customerId}`);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
exports.config = {
|
|
50
|
-
event: "
|
|
50
|
+
event: "payment.captured",
|
|
51
51
|
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkZWVtLXNwZWNpYWwtcGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9yZWRlZW0tc3BlY2lhbC1wYWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLDZDQStDQztBQWxERCxnREFBa0Q7QUFHbkMsS0FBSyxVQUFVLDBCQUEwQixDQUFDLEVBQ3ZELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUNmLFNBQVMsR0FDc0I7SUFDL0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUV4QyxxREFBcUQ7SUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVDLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSiw2QkFBNkI7WUFDN0Isc0NBQXNDO1NBQ3ZDO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7S0FDekIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEtBQUssQ0FBQTtJQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFBRSxPQUFNO0lBRXRCLE1BQU0sYUFBYSxHQUFrQixTQUFTLENBQUMsT0FBTyxDQUFDLHVCQUFhLENBQUMsQ0FBQTtJQUVyRSwwRUFBMEU7SUFDMUUsTUFBTSxTQUFTLEdBQUcsTUFBTSxhQUFhLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3hFLElBQUksU0FBUyxLQUFLLENBQUM7UUFBRSxPQUFNO0lBRTNCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUE7SUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUE7UUFDakUsT0FBTTtJQUNSLENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFBO0lBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNuQyxNQUFNLGNBQWMsR0FBRyxNQUFNLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2pGLElBQUksQ0FBQyxjQUFjO1lBQUUsTUFBSztRQUMxQixhQUFhLEVBQUUsQ0FBQTtJQUNqQixDQUFDO0lBRUQsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsYUFBYSxJQUFJLFNBQVMsb0NBQW9DLFVBQVUsVUFBVSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM5SCxDQUFDO1NBQU0sSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsYUFBYSxJQUFJLFNBQVMsMkNBQTJDLFVBQVUsVUFBVSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMvSSxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEtBQUssQ0FBQyxFQUFFLFFBQVEsU0FBUyxtREFBbUQsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUMxSSxDQUFDO0FBQ0gsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUsa0JBQWtCO0NBQzFCLENBQUEifQ==
|