@kshon/loyalty-plugin 2.14.2
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 +69052 -0
- package/.medusa/server/src/admin/index.mjs +69034 -0
- package/.medusa/server/src/api/admin/gift-cards/[id]/orders/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/gift-cards/[id]/orders/route.js +28 -0
- package/.medusa/server/src/api/admin/gift-cards/[id]/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/gift-cards/[id]/route.js +41 -0
- package/.medusa/server/src/api/admin/gift-cards/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/admin/gift-cards/middlewares.js +46 -0
- package/.medusa/server/src/api/admin/gift-cards/query-config.d.ts +14 -0
- package/.medusa/server/src/api/admin/gift-cards/query-config.js +32 -0
- package/.medusa/server/src/api/admin/gift-cards/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/gift-cards/route.js +42 -0
- package/.medusa/server/src/api/admin/gift-cards/validators.d.ts +139 -0
- package/.medusa/server/src/api/admin/gift-cards/validators.js +56 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/[id]/credit/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/[id]/credit/route.js +30 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/[id]/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/[id]/route.js +19 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/[id]/transactions/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/[id]/transactions/route.js +23 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/middlewares.js +46 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/query-config.d.ts +18 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/query-config.js +44 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/route.js +52 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/validators.d.ts +142 -0
- package/.medusa/server/src/api/admin/store-credit-accounts/validators.js +45 -0
- package/.medusa/server/src/api/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/middlewares.js +18 -0
- package/.medusa/server/src/api/store/carts/[id]/gift-cards/route.d.ts +5 -0
- package/.medusa/server/src/api/store/carts/[id]/gift-cards/route.js +43 -0
- package/.medusa/server/src/api/store/carts/[id]/store-credits/route.d.ts +4 -0
- package/.medusa/server/src/api/store/carts/[id]/store-credits/route.js +24 -0
- package/.medusa/server/src/api/store/carts/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/store/carts/middlewares.js +35 -0
- package/.medusa/server/src/api/store/carts/query-config.d.ts +4 -0
- package/.medusa/server/src/api/store/carts/query-config.js +9 -0
- package/.medusa/server/src/api/store/carts/validators.d.ts +13 -0
- package/.medusa/server/src/api/store/carts/validators.js +14 -0
- package/.medusa/server/src/api/store/gift-cards/[idOrCode]/route.d.ts +3 -0
- package/.medusa/server/src/api/store/gift-cards/[idOrCode]/route.js +24 -0
- package/.medusa/server/src/api/store/gift-cards/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/store/gift-cards/middlewares.js +16 -0
- package/.medusa/server/src/api/store/gift-cards/query-config.d.ts +9 -0
- package/.medusa/server/src/api/store/gift-cards/query-config.js +23 -0
- package/.medusa/server/src/api/store/gift-cards/validators.d.ts +7 -0
- package/.medusa/server/src/api/store/gift-cards/validators.js +8 -0
- package/.medusa/server/src/api/store/store-credit-accounts/[id]/route.d.ts +3 -0
- package/.medusa/server/src/api/store/store-credit-accounts/[id]/route.js +31 -0
- package/.medusa/server/src/api/store/store-credit-accounts/claim/route.d.ts +3 -0
- package/.medusa/server/src/api/store/store-credit-accounts/claim/route.js +25 -0
- package/.medusa/server/src/api/store/store-credit-accounts/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/store/store-credit-accounts/middlewares.js +36 -0
- package/.medusa/server/src/api/store/store-credit-accounts/query-config.d.ts +9 -0
- package/.medusa/server/src/api/store/store-credit-accounts/query-config.js +24 -0
- package/.medusa/server/src/api/store/store-credit-accounts/route.d.ts +3 -0
- package/.medusa/server/src/api/store/store-credit-accounts/route.js +40 -0
- package/.medusa/server/src/api/store/store-credit-accounts/validators.d.ts +44 -0
- package/.medusa/server/src/api/store/store-credit-accounts/validators.js +19 -0
- package/.medusa/server/src/links/cart-gift-cards-link.d.ts +2 -0
- package/.medusa/server/src/links/cart-gift-cards-link.js +13 -0
- package/.medusa/server/src/links/customer-store-credit-account-link.d.ts +1 -0
- package/.medusa/server/src/links/customer-store-credit-account-link.js +13 -0
- package/.medusa/server/src/links/gift-card-store-credit.d.ts +2 -0
- package/.medusa/server/src/links/gift-card-store-credit.js +10 -0
- package/.medusa/server/src/links/order-gift-cards-link.d.ts +2 -0
- package/.medusa/server/src/links/order-gift-cards-link.js +13 -0
- package/.medusa/server/src/links/order-line-item-gift-card-link.d.ts +1 -0
- package/.medusa/server/src/links/order-line-item-gift-card-link.js +19 -0
- package/.medusa/server/src/modules/loyalty/index.d.ts +21 -0
- package/.medusa/server/src/modules/loyalty/index.js +12 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250123130553.d.ts +5 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250123130553.js +17 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250127174331.d.ts +5 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250127174331.js +19 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250206141026.d.ts +5 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250206141026.js +19 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250206141429.d.ts +5 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250206141429.js +14 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250206144714.d.ts +5 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250206144714.js +14 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250326095923.d.ts +5 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250326095923.js +16 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250617080328.d.ts +5 -0
- package/.medusa/server/src/modules/loyalty/migrations/Migration20250617080328.js +20 -0
- package/.medusa/server/src/modules/loyalty/models/gift-card.d.ts +18 -0
- package/.medusa/server/src/modules/loyalty/models/gift-card.js +18 -0
- package/.medusa/server/src/modules/loyalty/models/index.d.ts +1 -0
- package/.medusa/server/src/modules/loyalty/models/index.js +9 -0
- package/.medusa/server/src/modules/loyalty/service.d.ts +21 -0
- package/.medusa/server/src/modules/loyalty/service.js +13 -0
- package/.medusa/server/src/modules/store-credit/index.d.ts +5 -0
- package/.medusa/server/src/modules/store-credit/index.js +12 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250129115518.d.ts +5 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250129115518.js +16 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250130213237.d.ts +5 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250130213237.js +18 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250130220640.d.ts +5 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250130220640.js +19 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250131205753.d.ts +5 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250131205753.js +14 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250520081315.d.ts +5 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250520081315.js +16 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250626081315.d.ts +5 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250626081315.js +16 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250722080351.d.ts +5 -0
- package/.medusa/server/src/modules/store-credit/migrations/Migration20250722080351.js +27 -0
- package/.medusa/server/src/modules/store-credit/models/account-transaction.d.ts +28 -0
- package/.medusa/server/src/modules/store-credit/models/account-transaction.js +21 -0
- package/.medusa/server/src/modules/store-credit/models/index.d.ts +2 -0
- package/.medusa/server/src/modules/store-credit/models/index.js +11 -0
- package/.medusa/server/src/modules/store-credit/models/store-credit-account.d.ts +27 -0
- package/.medusa/server/src/modules/store-credit/models/store-credit-account.js +27 -0
- package/.medusa/server/src/modules/store-credit/service.d.ts +29 -0
- package/.medusa/server/src/modules/store-credit/service.js +253 -0
- package/.medusa/server/src/subscribers/create-gift-card.d.ts +5 -0
- package/.medusa/server/src/subscribers/create-gift-card.js +53 -0
- package/.medusa/server/src/types/cart/index.d.ts +12 -0
- package/.medusa/server/src/types/cart/index.js +3 -0
- package/.medusa/server/src/types/http/gift-card.d.ts +42 -0
- package/.medusa/server/src/types/http/gift-card.js +3 -0
- package/.medusa/server/src/types/http/index.d.ts +3 -0
- package/.medusa/server/src/types/http/index.js +20 -0
- package/.medusa/server/src/types/http/store-credit-account.d.ts +60 -0
- package/.medusa/server/src/types/http/store-credit-account.js +3 -0
- package/.medusa/server/src/types/http/transaction.d.ts +19 -0
- package/.medusa/server/src/types/http/transaction.js +3 -0
- package/.medusa/server/src/types/index.d.ts +4 -0
- package/.medusa/server/src/types/index.js +21 -0
- package/.medusa/server/src/types/loyalty/index.d.ts +3 -0
- package/.medusa/server/src/types/loyalty/index.js +20 -0
- package/.medusa/server/src/types/loyalty/module.d.ts +151 -0
- package/.medusa/server/src/types/loyalty/module.js +12 -0
- package/.medusa/server/src/types/loyalty/service.d.ts +168 -0
- package/.medusa/server/src/types/loyalty/service.js +3 -0
- package/.medusa/server/src/types/loyalty/workflows.d.ts +3 -0
- package/.medusa/server/src/types/loyalty/workflows.js +3 -0
- package/.medusa/server/src/types/modules.d.ts +6 -0
- package/.medusa/server/src/types/modules.js +12 -0
- package/.medusa/server/src/types/store-credit/index.d.ts +2 -0
- package/.medusa/server/src/types/store-credit/index.js +19 -0
- package/.medusa/server/src/types/store-credit/module.d.ts +290 -0
- package/.medusa/server/src/types/store-credit/module.js +13 -0
- package/.medusa/server/src/types/store-credit/service.d.ts +325 -0
- package/.medusa/server/src/types/store-credit/service.js +3 -0
- package/.medusa/server/src/utils/code-generator.d.ts +1 -0
- package/.medusa/server/src/utils/code-generator.js +32 -0
- package/.medusa/server/src/workflows/carts/index.d.ts +5 -0
- package/.medusa/server/src/workflows/carts/index.js +22 -0
- package/.medusa/server/src/workflows/carts/steps/validate-gift-card-balances.d.ts +37 -0
- package/.medusa/server/src/workflows/carts/steps/validate-gift-card-balances.js +36 -0
- package/.medusa/server/src/workflows/carts/workflows/add-gift-card-to-cart.d.ts +118 -0
- package/.medusa/server/src/workflows/carts/workflows/add-gift-card-to-cart.js +179 -0
- package/.medusa/server/src/workflows/carts/workflows/add-store-credits-to-cart.d.ts +88 -0
- package/.medusa/server/src/workflows/carts/workflows/add-store-credits-to-cart.js +134 -0
- package/.medusa/server/src/workflows/carts/workflows/confirm-cart-credit-lines.d.ts +68 -0
- package/.medusa/server/src/workflows/carts/workflows/confirm-cart-credit-lines.js +110 -0
- package/.medusa/server/src/workflows/carts/workflows/refresh-cart-gift-cards.d.ts +30 -0
- package/.medusa/server/src/workflows/carts/workflows/refresh-cart-gift-cards.js +154 -0
- package/.medusa/server/src/workflows/carts/workflows/remove-gift-cart-from-cart.d.ts +103 -0
- package/.medusa/server/src/workflows/carts/workflows/remove-gift-cart-from-cart.js +124 -0
- package/.medusa/server/src/workflows/common/steps/validate-presence-of.d.ts +29 -0
- package/.medusa/server/src/workflows/common/steps/validate-presence-of.js +22 -0
- package/.medusa/server/src/workflows/gift-cards/index.d.ts +9 -0
- package/.medusa/server/src/workflows/gift-cards/index.js +26 -0
- package/.medusa/server/src/workflows/gift-cards/steps/create-gift-cards.d.ts +20 -0
- package/.medusa/server/src/workflows/gift-cards/steps/create-gift-cards.js +38 -0
- package/.medusa/server/src/workflows/gift-cards/steps/delete-gift-cards.d.ts +17 -0
- package/.medusa/server/src/workflows/gift-cards/steps/delete-gift-cards.js +24 -0
- package/.medusa/server/src/workflows/gift-cards/steps/retrieve-gift-card-balance.d.ts +32 -0
- package/.medusa/server/src/workflows/gift-cards/steps/retrieve-gift-card-balance.js +34 -0
- package/.medusa/server/src/workflows/gift-cards/steps/update-gift-cards.d.ts +19 -0
- package/.medusa/server/src/workflows/gift-cards/steps/update-gift-cards.js +41 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/claim-gift-card.d.ts +65 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/claim-gift-card.js +101 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/create-gift-cards.d.ts +36 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/create-gift-cards.js +88 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/delete-gift-card.d.ts +28 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/delete-gift-card.js +34 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/redeem-gift-card.d.ts +60 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/redeem-gift-card.js +129 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/update-gift-cards.d.ts +28 -0
- package/.medusa/server/src/workflows/gift-cards/workflows/update-gift-cards.js +31 -0
- package/.medusa/server/src/workflows/hooks/after-order-created.d.ts +1 -0
- package/.medusa/server/src/workflows/hooks/after-order-created.js +31 -0
- package/.medusa/server/src/workflows/hooks/after-order-credit-lines-created.d.ts +1 -0
- package/.medusa/server/src/workflows/hooks/after-order-credit-lines-created.js +32 -0
- package/.medusa/server/src/workflows/hooks/before-payment-collection-refresh.d.ts +1 -0
- package/.medusa/server/src/workflows/hooks/before-payment-collection-refresh.js +26 -0
- package/.medusa/server/src/workflows/hooks/complete-cart-before-payment-authorization.d.ts +1 -0
- package/.medusa/server/src/workflows/hooks/complete-cart-before-payment-authorization.js +27 -0
- package/.medusa/server/src/workflows/index.d.ts +3 -0
- package/.medusa/server/src/workflows/index.js +20 -0
- package/.medusa/server/src/workflows/orders/index.d.ts +2 -0
- package/.medusa/server/src/workflows/orders/index.js +19 -0
- package/.medusa/server/src/workflows/orders/workflows/link-gift-cards-to-order.d.ts +34 -0
- package/.medusa/server/src/workflows/orders/workflows/link-gift-cards-to-order.js +75 -0
- package/.medusa/server/src/workflows/orders/workflows/refund-credit-lines.d.ts +88 -0
- package/.medusa/server/src/workflows/orders/workflows/refund-credit-lines.js +131 -0
- package/.medusa/server/src/workflows/store-credit/index.d.ts +8 -0
- package/.medusa/server/src/workflows/store-credit/index.js +25 -0
- package/.medusa/server/src/workflows/store-credit/steps/create-store-credit-accounts.d.ts +19 -0
- package/.medusa/server/src/workflows/store-credit/steps/create-store-credit-accounts.js +37 -0
- package/.medusa/server/src/workflows/store-credit/steps/credit-account.d.ts +20 -0
- package/.medusa/server/src/workflows/store-credit/steps/credit-account.js +31 -0
- package/.medusa/server/src/workflows/store-credit/steps/debit-account.d.ts +20 -0
- package/.medusa/server/src/workflows/store-credit/steps/debit-account.js +31 -0
- package/.medusa/server/src/workflows/store-credit/workflows/claim-store-credit-account.d.ts +91 -0
- package/.medusa/server/src/workflows/store-credit/workflows/claim-store-credit-account.js +170 -0
- package/.medusa/server/src/workflows/store-credit/workflows/create-store-credit-accounts.d.ts +50 -0
- package/.medusa/server/src/workflows/store-credit/workflows/create-store-credit-accounts.js +50 -0
- package/.medusa/server/src/workflows/store-credit/workflows/credit-accounts.d.ts +29 -0
- package/.medusa/server/src/workflows/store-credit/workflows/credit-accounts.js +32 -0
- package/.medusa/server/src/workflows/store-credit/workflows/credit-store-credit-account.d.ts +29 -0
- package/.medusa/server/src/workflows/store-credit/workflows/credit-store-credit-account.js +67 -0
- package/.medusa/server/src/workflows/store-credit/workflows/debit-accounts.d.ts +29 -0
- package/.medusa/server/src/workflows/store-credit/workflows/debit-accounts.js +32 -0
- package/.medusa/server/tailwind.config.d.ts +3 -0
- package/.medusa/server/tailwind.config.js +12 -0
- package/README.md +62 -0
- package/package.json +107 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.retrieveGiftCardsBalanceStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const workflows_sdk_2 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const types_1 = require("../../../types");
|
|
7
|
+
/**
|
|
8
|
+
* This step retrieves the balance of gift cards from their associated store credit accounts.
|
|
9
|
+
* Returns a map of gift card codes to their account stats.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const data = retrieveGiftCardsBalanceStep({
|
|
13
|
+
* giftCards: [
|
|
14
|
+
* {
|
|
15
|
+
* id: "gc_123",
|
|
16
|
+
* code: "GC-XXXX",
|
|
17
|
+
* // other gift card properties...
|
|
18
|
+
* }
|
|
19
|
+
* ],
|
|
20
|
+
* giftCardStoreCreditAccountMap: { "gc_123": "sca_456" },
|
|
21
|
+
* })
|
|
22
|
+
*/
|
|
23
|
+
exports.retrieveGiftCardsBalanceStep = (0, workflows_sdk_2.createStep)("retrieve-gift-cards-balance", async function ({ giftCardStoreCreditAccountMap, giftCards, }, { container }) {
|
|
24
|
+
const accountBalanceMap = {};
|
|
25
|
+
const module = container.resolve(types_1.PluginModule.STORE_CREDIT);
|
|
26
|
+
for (const giftCard of giftCards) {
|
|
27
|
+
const giftCardBalance = await module.retrieveAccountStats({
|
|
28
|
+
account_id: giftCardStoreCreditAccountMap[giftCard.id],
|
|
29
|
+
});
|
|
30
|
+
accountBalanceMap[giftCard.code] = giftCardBalance;
|
|
31
|
+
}
|
|
32
|
+
return new workflows_sdk_1.StepResponse(accountBalanceMap);
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmlldmUtZ2lmdC1jYXJkLWJhbGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2dpZnQtY2FyZHMvc3RlcHMvcmV0cmlldmUtZ2lmdC1jYXJkLWJhbGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQWlFO0FBRWpFLHFFQUErRDtBQUMvRCwwQ0FBOEM7QUFxQjlDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNVLFFBQUEsNEJBQTRCLEdBQUcsSUFBQSwwQkFBVSxFQUNwRCw2QkFBNkIsRUFDN0IsS0FBSyxXQUNILEVBQ0UsNkJBQTZCLEVBQzdCLFNBQVMsR0FDeUIsRUFDcEMsRUFBRSxTQUFTLEVBQUU7SUFFYixNQUFNLGlCQUFpQixHQUF1QyxFQUFFLENBQUM7SUFDakUsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDOUIsb0JBQVksQ0FBQyxZQUFZLENBQzFCLENBQUM7SUFFRixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sZUFBZSxHQUFHLE1BQU0sTUFBTSxDQUFDLG9CQUFvQixDQUFDO1lBQ3hELFVBQVUsRUFBRSw2QkFBNkIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1NBQ3ZELENBQUMsQ0FBQztRQUVILGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUM7SUFDckQsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ModuleUpdateGiftCard } from "../../../types";
|
|
2
|
+
/**
|
|
3
|
+
* Data for updating one or more gift cards in the Loyalty module.
|
|
4
|
+
*/
|
|
5
|
+
export type UpdateGiftCardsStepInput = ModuleUpdateGiftCard[];
|
|
6
|
+
/**
|
|
7
|
+
* This step updates gift cards. It stores the previous state of the gift cards
|
|
8
|
+
* before the update to enable rollback.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const data = updateGiftCardsStep([
|
|
12
|
+
* {
|
|
13
|
+
* id: "gc_123",
|
|
14
|
+
* status: GiftCardStatus.REDEEMED,
|
|
15
|
+
* // other updatable gift card properties...
|
|
16
|
+
* },
|
|
17
|
+
* ])
|
|
18
|
+
*/
|
|
19
|
+
export declare const updateGiftCardsStep: import("@medusajs/framework/workflows-sdk").StepFunction<UpdateGiftCardsStepInput, import("../../../types").ModuleGiftCard[]>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateGiftCardsStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const types_1 = require("../../../types");
|
|
7
|
+
/**
|
|
8
|
+
* This step updates gift cards. It stores the previous state of the gift cards
|
|
9
|
+
* before the update to enable rollback.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const data = updateGiftCardsStep([
|
|
13
|
+
* {
|
|
14
|
+
* id: "gc_123",
|
|
15
|
+
* status: GiftCardStatus.REDEEMED,
|
|
16
|
+
* // other updatable gift card properties...
|
|
17
|
+
* },
|
|
18
|
+
* ])
|
|
19
|
+
*/
|
|
20
|
+
exports.updateGiftCardsStep = (0, workflows_sdk_1.createStep)("update-gift-cards", async (data, { container }) => {
|
|
21
|
+
const loyaltyModule = container.resolve(types_1.PluginModule.LOYALTY);
|
|
22
|
+
const { selects, relations } = (0, utils_1.getSelectsAndRelationsFromObjectArray)(data);
|
|
23
|
+
const dataBeforeUpdate = await loyaltyModule.listGiftCards({ id: data.map((d) => d.id) }, { relations, select: selects });
|
|
24
|
+
const updatedGiftCards = await loyaltyModule.updateGiftCards(data);
|
|
25
|
+
return new workflows_sdk_1.StepResponse(updatedGiftCards, {
|
|
26
|
+
dataBeforeUpdate,
|
|
27
|
+
selects,
|
|
28
|
+
relations,
|
|
29
|
+
});
|
|
30
|
+
}, async (revertInput, { container }) => {
|
|
31
|
+
if (!revertInput) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const { dataBeforeUpdate, selects, relations } = revertInput;
|
|
35
|
+
const loyaltyModule = container.resolve(types_1.PluginModule.LOYALTY);
|
|
36
|
+
const revertData = dataBeforeUpdate.map((data) => (0, utils_1.convertItemResponseToUpdateRequest)(data, selects, relations));
|
|
37
|
+
if (revertData.length) {
|
|
38
|
+
await loyaltyModule.updateGiftCards(revertData);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWdpZnQtY2FyZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2dpZnQtY2FyZHMvc3RlcHMvdXBkYXRlLWdpZnQtY2FyZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBR21DO0FBQ25DLHFFQUE2RTtBQUM3RSwwQ0FJd0I7QUFPeEI7Ozs7Ozs7Ozs7OztHQVlHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDBCQUFVLEVBQzNDLG1CQUFtQixFQUNuQixLQUFLLEVBQUUsSUFBOEIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdEQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDckMsb0JBQVksQ0FBQyxPQUFPLENBQ3JCLENBQUM7SUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsNkNBQXFDLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFFM0UsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLGFBQWEsQ0FBQyxhQUFhLENBQ3hELEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUM3QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQy9CLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuRSxPQUFPLElBQUksNEJBQVksQ0FBQyxnQkFBZ0IsRUFBRTtRQUN4QyxnQkFBZ0I7UUFDaEIsT0FBTztRQUNQLFNBQVM7S0FDVixDQUFDLENBQUM7QUFDTCxDQUFDLEVBQ0QsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pCLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDN0QsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDckMsb0JBQVksQ0FBQyxPQUFPLENBQ3JCLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUMvQyxJQUFBLDBDQUFrQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQzdELENBQUM7SUFFRixJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixNQUFNLGFBQWEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { CustomerDTO } from "@medusajs/framework/types";
|
|
2
|
+
import { ModuleGiftCard } from "../../../types";
|
|
3
|
+
/**
|
|
4
|
+
* Input to claim a gift card for a customer.
|
|
5
|
+
*/
|
|
6
|
+
export type ClaimGiftCardWorkflowInput = {
|
|
7
|
+
/**
|
|
8
|
+
* The code of the gift card to claim.
|
|
9
|
+
*/
|
|
10
|
+
code: string;
|
|
11
|
+
/**
|
|
12
|
+
* The ID of the customer claiming the gift card.
|
|
13
|
+
*/
|
|
14
|
+
customer_id: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* This step validates that a gift card can be claimed. It throws an error if the
|
|
18
|
+
* gift card does not have a store credit account, the gift card's store credit account
|
|
19
|
+
* has no code, or the customer does not have a registered account.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const data = validateClaimGiftCardInputStep({
|
|
23
|
+
* giftCard: {
|
|
24
|
+
* id: "gc_123",
|
|
25
|
+
* store_credit_account: { id: "sca_123", code: "SC-XXXX" },
|
|
26
|
+
* // other gift card properties...
|
|
27
|
+
* },
|
|
28
|
+
* customer: {
|
|
29
|
+
* has_account: true,
|
|
30
|
+
* // other customer properties...
|
|
31
|
+
* },
|
|
32
|
+
* })
|
|
33
|
+
*/
|
|
34
|
+
export declare const validateClaimGiftCardInputStep: import("@medusajs/framework/workflows-sdk").StepFunction<{
|
|
35
|
+
giftCard: ModuleGiftCard & {
|
|
36
|
+
store_credit_account: {
|
|
37
|
+
id: string;
|
|
38
|
+
code: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
customer: CustomerDTO;
|
|
42
|
+
}, unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* This workflow claims a gift card for a customer. It validates the gift card
|
|
45
|
+
* and customer, then transfers the gift card's store credit account balance to
|
|
46
|
+
* the customer's store credit account. The customer must have a registered account
|
|
47
|
+
* to claim a gift card.
|
|
48
|
+
*
|
|
49
|
+
* You can use this workflow within your own customizations or custom workflows,
|
|
50
|
+
* allowing you to wrap custom logic around gift card claiming.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* await claimGiftCardWorkflow(container)
|
|
54
|
+
* .run({
|
|
55
|
+
* input: {
|
|
56
|
+
* code: "GC-XXXX-XXXX",
|
|
57
|
+
* customer_id: "cust_123",
|
|
58
|
+
* },
|
|
59
|
+
* })
|
|
60
|
+
*
|
|
61
|
+
* @summary
|
|
62
|
+
*
|
|
63
|
+
* Claim a gift card for a customer.
|
|
64
|
+
*/
|
|
65
|
+
export declare const claimGiftCardWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<ClaimGiftCardWorkflowInput, undefined, []>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.claimGiftCardWorkflow = exports.validateClaimGiftCardInputStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
7
|
+
const claim_store_credit_account_1 = require("../../store-credit/workflows/claim-store-credit-account");
|
|
8
|
+
/**
|
|
9
|
+
* This step validates that a gift card can be claimed. It throws an error if the
|
|
10
|
+
* gift card does not have a store credit account, the gift card's store credit account
|
|
11
|
+
* has no code, or the customer does not have a registered account.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const data = validateClaimGiftCardInputStep({
|
|
15
|
+
* giftCard: {
|
|
16
|
+
* id: "gc_123",
|
|
17
|
+
* store_credit_account: { id: "sca_123", code: "SC-XXXX" },
|
|
18
|
+
* // other gift card properties...
|
|
19
|
+
* },
|
|
20
|
+
* customer: {
|
|
21
|
+
* has_account: true,
|
|
22
|
+
* // other customer properties...
|
|
23
|
+
* },
|
|
24
|
+
* })
|
|
25
|
+
*/
|
|
26
|
+
exports.validateClaimGiftCardInputStep = (0, workflows_sdk_1.createStep)("validate-claim-gift-card-input", async function (args) {
|
|
27
|
+
const { giftCard, customer } = args;
|
|
28
|
+
if (!giftCard.store_credit_account?.id) {
|
|
29
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Gift card does not have a store credit account");
|
|
30
|
+
}
|
|
31
|
+
if (!giftCard.store_credit_account.code) {
|
|
32
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Gift card does not have a store credit account code");
|
|
33
|
+
}
|
|
34
|
+
if (!customer.has_account) {
|
|
35
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Only customers with an account can claim a gift card");
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* This workflow claims a gift card for a customer. It validates the gift card
|
|
40
|
+
* and customer, then transfers the gift card's store credit account balance to
|
|
41
|
+
* the customer's store credit account. The customer must have a registered account
|
|
42
|
+
* to claim a gift card.
|
|
43
|
+
*
|
|
44
|
+
* You can use this workflow within your own customizations or custom workflows,
|
|
45
|
+
* allowing you to wrap custom logic around gift card claiming.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* await claimGiftCardWorkflow(container)
|
|
49
|
+
* .run({
|
|
50
|
+
* input: {
|
|
51
|
+
* code: "GC-XXXX-XXXX",
|
|
52
|
+
* customer_id: "cust_123",
|
|
53
|
+
* },
|
|
54
|
+
* })
|
|
55
|
+
*
|
|
56
|
+
* @summary
|
|
57
|
+
*
|
|
58
|
+
* Claim a gift card for a customer.
|
|
59
|
+
*/
|
|
60
|
+
exports.claimGiftCardWorkflow = (0, workflows_sdk_1.createWorkflow)("claim-gift-card", function (input) {
|
|
61
|
+
const giftCardData = (0, core_flows_1.useQueryGraphStep)({
|
|
62
|
+
entity: "gift_card",
|
|
63
|
+
fields: [
|
|
64
|
+
"id",
|
|
65
|
+
"code",
|
|
66
|
+
"customer_id",
|
|
67
|
+
"currency_code",
|
|
68
|
+
"status",
|
|
69
|
+
"store_credit_account.id",
|
|
70
|
+
"store_credit_account.code",
|
|
71
|
+
],
|
|
72
|
+
filters: { code: input.code },
|
|
73
|
+
}).config({
|
|
74
|
+
name: "gift-card-data",
|
|
75
|
+
});
|
|
76
|
+
const giftCard = (0, workflows_sdk_1.transform)({ giftCardData }, ({ giftCardData }) => {
|
|
77
|
+
return giftCardData.data[0];
|
|
78
|
+
});
|
|
79
|
+
const customerData = (0, core_flows_1.useQueryGraphStep)({
|
|
80
|
+
entity: "customer",
|
|
81
|
+
fields: ["id", "email", "has_account"],
|
|
82
|
+
filters: { id: input.customer_id },
|
|
83
|
+
}).config({
|
|
84
|
+
name: "customer-data",
|
|
85
|
+
});
|
|
86
|
+
const customer = (0, workflows_sdk_1.transform)({ customerData }, ({ customerData }) => {
|
|
87
|
+
return customerData.data[0];
|
|
88
|
+
});
|
|
89
|
+
(0, exports.validateClaimGiftCardInputStep)({ giftCard, customer });
|
|
90
|
+
const accountCode = (0, workflows_sdk_1.transform)({ giftCard }, ({ giftCard }) => {
|
|
91
|
+
return giftCard.store_credit_account.code;
|
|
92
|
+
});
|
|
93
|
+
claim_store_credit_account_1.claimStoreCreditAccountWorkflow.runAsStep({
|
|
94
|
+
input: {
|
|
95
|
+
code: accountCode,
|
|
96
|
+
customer_id: customer.id,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
return new workflows_sdk_1.WorkflowResponse(void 0);
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW0tZ2lmdC1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9naWZ0LWNhcmRzL3dvcmtmbG93cy9jbGFpbS1naWZ0LWNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBQ3ZELDREQUErRDtBQUMvRCxxRUFLMEM7QUFJMUMsd0dBQXlHO0FBZ0J6Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDVSxRQUFBLDhCQUE4QixHQUFHLElBQUEsMEJBQVUsRUFDdEQsZ0NBQWdDLEVBQ2hDLEtBQUssV0FBVyxJQUtmO0lBQ0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUE7SUFFbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixnREFBZ0QsQ0FDakQsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFEQUFxRCxDQUN0RCxDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsc0RBQXNELENBQ3ZELENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUE7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxJQUFBLDhCQUFjLEVBQ2pELGlCQUFpQixFQUNqQixVQUFVLEtBQWlDO0lBQ3pDLE1BQU0sWUFBWSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDckMsTUFBTSxFQUFFLFdBQVc7UUFDbkIsTUFBTSxFQUFFO1lBQ04sSUFBSTtZQUNKLE1BQU07WUFDTixhQUFhO1lBQ2IsZUFBZTtZQUNmLFFBQVE7WUFDUix5QkFBeUI7WUFDekIsMkJBQTJCO1NBQzVCO1FBQ0QsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7S0FDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNSLElBQUksRUFBRSxnQkFBZ0I7S0FDdkIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7UUFDaEUsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxZQUFZLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUNyQyxNQUFNLEVBQUUsVUFBVTtRQUNsQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQztRQUN0QyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRTtLQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1IsSUFBSSxFQUFFLGVBQWU7S0FDdEIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7UUFDaEUsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBQSxzQ0FBOEIsRUFBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBQzNELE9BQU8sUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQTtJQUMzQyxDQUFDLENBQUMsQ0FBQTtJQUVGLDREQUErQixDQUFDLFNBQVMsQ0FBQztRQUN4QyxLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsV0FBVztZQUNqQixXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUU7U0FDekI7S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQSJ9
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ModuleCreateGiftCard } from "../../../types";
|
|
2
|
+
/**
|
|
3
|
+
* Data for creating one or more gift cards with backing store credit accounts.
|
|
4
|
+
*/
|
|
5
|
+
export type CreateGiftCardsWorkflowInput = ModuleCreateGiftCard[];
|
|
6
|
+
/**
|
|
7
|
+
* This workflow creates gift cards and automatically sets up their backing store credit accounts.
|
|
8
|
+
* It creates the gift cards, generates anonymous store credit accounts linked to each gift card,
|
|
9
|
+
* credits the accounts with the gift card values, and marks the gift cards as redeemed.
|
|
10
|
+
*
|
|
11
|
+
* You can use this workflow within your own customizations or custom workflows,
|
|
12
|
+
* allowing you to wrap custom logic around gift card creation.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const { result } = await createGiftCardsWorkflow(container)
|
|
16
|
+
* .run({
|
|
17
|
+
* input: [
|
|
18
|
+
* {
|
|
19
|
+
* code: "GC-XXXX-XXXX",
|
|
20
|
+
* value: 100,
|
|
21
|
+
* currency_code: "usd",
|
|
22
|
+
* expires_at: null,
|
|
23
|
+
* reference: "order",
|
|
24
|
+
* reference_id: "order_123",
|
|
25
|
+
* line_item_id: "li_123",
|
|
26
|
+
* customer_id: "cust_123",
|
|
27
|
+
* metadata: { custom_key: "custom_value" },
|
|
28
|
+
* },
|
|
29
|
+
* ],
|
|
30
|
+
* })
|
|
31
|
+
*
|
|
32
|
+
* @summary
|
|
33
|
+
*
|
|
34
|
+
* Create gift cards with backing store credit accounts.
|
|
35
|
+
*/
|
|
36
|
+
export declare const createGiftCardsWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<CreateGiftCardsWorkflowInput, import("../../../types").ModuleGiftCard[], []>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGiftCardsWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const create_gift_cards_1 = require("../steps/create-gift-cards");
|
|
7
|
+
const create_store_credit_accounts_1 = require("../../store-credit/steps/create-store-credit-accounts");
|
|
8
|
+
const types_1 = require("../../../types");
|
|
9
|
+
const credit_accounts_1 = require("../../store-credit/workflows/credit-accounts");
|
|
10
|
+
const update_gift_cards_1 = require("./update-gift-cards");
|
|
11
|
+
/**
|
|
12
|
+
* This workflow creates gift cards and automatically sets up their backing store credit accounts.
|
|
13
|
+
* It creates the gift cards, generates anonymous store credit accounts linked to each gift card,
|
|
14
|
+
* credits the accounts with the gift card values, and marks the gift cards as redeemed.
|
|
15
|
+
*
|
|
16
|
+
* You can use this workflow within your own customizations or custom workflows,
|
|
17
|
+
* allowing you to wrap custom logic around gift card creation.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const { result } = await createGiftCardsWorkflow(container)
|
|
21
|
+
* .run({
|
|
22
|
+
* input: [
|
|
23
|
+
* {
|
|
24
|
+
* code: "GC-XXXX-XXXX",
|
|
25
|
+
* value: 100,
|
|
26
|
+
* currency_code: "usd",
|
|
27
|
+
* expires_at: null,
|
|
28
|
+
* reference: "order",
|
|
29
|
+
* reference_id: "order_123",
|
|
30
|
+
* line_item_id: "li_123",
|
|
31
|
+
* customer_id: "cust_123",
|
|
32
|
+
* metadata: { custom_key: "custom_value" },
|
|
33
|
+
* },
|
|
34
|
+
* ],
|
|
35
|
+
* })
|
|
36
|
+
*
|
|
37
|
+
* @summary
|
|
38
|
+
*
|
|
39
|
+
* Create gift cards with backing store credit accounts.
|
|
40
|
+
*/
|
|
41
|
+
exports.createGiftCardsWorkflow = (0, workflows_sdk_1.createWorkflow)("create-gift-cards", function (input) {
|
|
42
|
+
const giftCards = (0, create_gift_cards_1.createGiftCardsStep)(input);
|
|
43
|
+
/**
|
|
44
|
+
* Create anonymous credit accounts for the gift cards and link them
|
|
45
|
+
*/
|
|
46
|
+
const storeCreditAccontCurrencies = (0, workflows_sdk_1.transform)({ giftCards }, ({ giftCards }) => {
|
|
47
|
+
return giftCards.map((giftCard) => ({
|
|
48
|
+
currency_code: giftCard.currency_code,
|
|
49
|
+
}));
|
|
50
|
+
});
|
|
51
|
+
const createdStoreCreditAccounts = (0, create_store_credit_accounts_1.createStoreCreditAccountsStep)(storeCreditAccontCurrencies);
|
|
52
|
+
const linkToCreate = (0, workflows_sdk_1.transform)({ giftCards, createdStoreCreditAccounts }, ({ giftCards, createdStoreCreditAccounts }) => giftCards.map((giftCard, index) => ({
|
|
53
|
+
[types_1.PluginModule.LOYALTY]: { gift_card_id: giftCard.id },
|
|
54
|
+
[types_1.PluginModule.STORE_CREDIT]: {
|
|
55
|
+
store_credit_account_id: createdStoreCreditAccounts[index].id,
|
|
56
|
+
},
|
|
57
|
+
})));
|
|
58
|
+
core_flows_1.createLinksWorkflow.runAsStep({ input: linkToCreate });
|
|
59
|
+
/**
|
|
60
|
+
* Credit the accounts with the GC value
|
|
61
|
+
*/
|
|
62
|
+
const creditAccountsInput = (0, workflows_sdk_1.transform)({ giftCards, createdStoreCreditAccounts }, ({ giftCards, createdStoreCreditAccounts }) => {
|
|
63
|
+
return giftCards.map((giftCard, index) => ({
|
|
64
|
+
account_id: createdStoreCreditAccounts[index].id,
|
|
65
|
+
amount: giftCard.value,
|
|
66
|
+
note: "Gift card redemption",
|
|
67
|
+
reference: "gift_card",
|
|
68
|
+
reference_id: giftCard.id,
|
|
69
|
+
}));
|
|
70
|
+
});
|
|
71
|
+
credit_accounts_1.creditAccountsWorkflow.runAsStep({
|
|
72
|
+
input: creditAccountsInput,
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Mark the gift cards as redeemed
|
|
76
|
+
*/
|
|
77
|
+
const updateGiftCardsInput = (0, workflows_sdk_1.transform)({ giftCards }, ({ giftCards }) => {
|
|
78
|
+
return giftCards.map((giftCard, index) => ({
|
|
79
|
+
id: giftCard.id,
|
|
80
|
+
status: types_1.GiftCardStatus.REDEEMED,
|
|
81
|
+
}));
|
|
82
|
+
});
|
|
83
|
+
update_gift_cards_1.updateGiftCardsWorkflow.runAsStep({
|
|
84
|
+
input: updateGiftCardsInput,
|
|
85
|
+
});
|
|
86
|
+
return new workflows_sdk_1.WorkflowResponse(giftCards);
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWdpZnQtY2FyZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2dpZnQtY2FyZHMvd29ya2Zsb3dzL2NyZWF0ZS1naWZ0LWNhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUkyQztBQUMzQyw0REFBa0U7QUFFbEUsa0VBQWlFO0FBQ2pFLHdHQUFzRztBQUN0RywwQ0FJd0I7QUFDeEIsa0ZBQXNGO0FBQ3RGLDJEQUE4RDtBQU85RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDVSxRQUFBLHVCQUF1QixHQUFHLElBQUEsOEJBQWMsRUFDbkQsbUJBQW1CLEVBQ25CLFVBQVUsS0FBbUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBQSx1Q0FBbUIsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUU3Qzs7T0FFRztJQUVILE1BQU0sMkJBQTJCLEdBQUcsSUFBQSx5QkFBUyxFQUMzQyxFQUFFLFNBQVMsRUFBRSxFQUNiLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1FBQ2hCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsQyxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7U0FDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQ0YsQ0FBQztJQUVGLE1BQU0sMEJBQTBCLEdBQUcsSUFBQSw0REFBNkIsRUFDOUQsMkJBQTJCLENBQzVCLENBQUM7SUFFRixNQUFNLFlBQVksR0FBRyxJQUFBLHlCQUFTLEVBQzVCLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLEVBQ3pDLENBQUMsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsRUFBRSxFQUFFLENBQzVDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO1FBQ3JELENBQUMsb0JBQVksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMzQix1QkFBdUIsRUFBRSwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1NBQzlEO0tBQ0YsQ0FBQyxDQUFDLENBQ04sQ0FBQztJQUVGLGdDQUFtQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRXZEOztPQUVHO0lBRUgsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLHlCQUFTLEVBQ25DLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLEVBQ3pDLENBQUMsRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsRUFBRSxFQUFFO1FBQzVDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekMsVUFBVSxFQUFFLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDaEQsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLO1lBQ3RCLElBQUksRUFBRSxzQkFBc0I7WUFDNUIsU0FBUyxFQUFFLFdBQVc7WUFDdEIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1NBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUNGLENBQUM7SUFFRix3Q0FBc0IsQ0FBQyxTQUFTLENBQUM7UUFDL0IsS0FBSyxFQUFFLG1CQUFtQjtLQUMzQixDQUFDLENBQUM7SUFFSDs7T0FFRztJQUVILE1BQU0sb0JBQW9CLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7UUFDdEUsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6QyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDZixNQUFNLEVBQUUsc0JBQWMsQ0FBQyxRQUFRO1NBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFFSCwyQ0FBdUIsQ0FBQyxTQUFTLENBQUM7UUFDaEMsS0FBSyxFQUFFLG9CQUFvQjtLQUM1QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksZ0NBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The data to delete a gift card.
|
|
3
|
+
*/
|
|
4
|
+
export interface DeleteGiftCardWorkflowInput {
|
|
5
|
+
/**
|
|
6
|
+
* The ID of the gift card to delete.
|
|
7
|
+
*/
|
|
8
|
+
id: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* This workflow deletes a gift card by its ID.
|
|
12
|
+
*
|
|
13
|
+
* You can use this workflow within your own customizations or custom workflows,
|
|
14
|
+
* allowing you to wrap custom logic around gift card deletion.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* await deleteGiftCardWorkflow(container)
|
|
18
|
+
* .run({
|
|
19
|
+
* input: {
|
|
20
|
+
* id: "gc_123",
|
|
21
|
+
* },
|
|
22
|
+
* })
|
|
23
|
+
*
|
|
24
|
+
* @summary
|
|
25
|
+
*
|
|
26
|
+
* Delete a gift card.
|
|
27
|
+
*/
|
|
28
|
+
export declare const deleteGiftCardWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<DeleteGiftCardWorkflowInput, unknown, any[]>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteGiftCardWorkflow = void 0;
|
|
4
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const delete_gift_cards_1 = require("../steps/delete-gift-cards");
|
|
7
|
+
/**
|
|
8
|
+
* This workflow deletes a gift card by its ID.
|
|
9
|
+
*
|
|
10
|
+
* You can use this workflow within your own customizations or custom workflows,
|
|
11
|
+
* allowing you to wrap custom logic around gift card deletion.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* await deleteGiftCardWorkflow(container)
|
|
15
|
+
* .run({
|
|
16
|
+
* input: {
|
|
17
|
+
* id: "gc_123",
|
|
18
|
+
* },
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* @summary
|
|
22
|
+
*
|
|
23
|
+
* Delete a gift card.
|
|
24
|
+
*/
|
|
25
|
+
exports.deleteGiftCardWorkflow = (0, workflows_sdk_1.createWorkflow)("delete-gift-card", function (input) {
|
|
26
|
+
(0, core_flows_1.useQueryGraphStep)({
|
|
27
|
+
entity: "gift_card",
|
|
28
|
+
filters: { id: input.id },
|
|
29
|
+
fields: ["id", "status"],
|
|
30
|
+
options: { throwIfKeyNotFound: true },
|
|
31
|
+
}).config({ name: "get-gift-card-query" });
|
|
32
|
+
(0, delete_gift_cards_1.deleteGiftCardsStep)({ id: [input.id] });
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWdpZnQtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZ2lmdC1jYXJkcy93b3JrZmxvd3MvZGVsZXRlLWdpZnQtY2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBZ0U7QUFDaEUscUVBQW1FO0FBQ25FLGtFQUFpRTtBQVlqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDVSxRQUFBLHNCQUFzQixHQUFHLElBQUEsOEJBQWMsRUFDbEQsa0JBQWtCLEVBQ2xCLFVBQVUsS0FBa0M7SUFDMUMsSUFBQSw4QkFBaUIsRUFBQztRQUNoQixNQUFNLEVBQUUsV0FBVztRQUNuQixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUN6QixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtLQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUUzQyxJQUFBLHVDQUFtQixFQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ModuleGiftCard, ModuleStoreCreditAccount, RedeemGiftCardWorkflowInput } from "../../../types";
|
|
2
|
+
/**
|
|
3
|
+
* Input to validate that a gift card is eligible for redemption.
|
|
4
|
+
*/
|
|
5
|
+
export interface ValidateGiftCardRedeemStepInput {
|
|
6
|
+
/**
|
|
7
|
+
* The gift card to validate.
|
|
8
|
+
*/
|
|
9
|
+
giftCard: ModuleGiftCard;
|
|
10
|
+
/**
|
|
11
|
+
* The store credit account already linked to the gift card, if any.
|
|
12
|
+
*/
|
|
13
|
+
giftCardStoreCreditAccount: ModuleStoreCreditAccount;
|
|
14
|
+
/**
|
|
15
|
+
* The original workflow input containing the gift card ID.
|
|
16
|
+
*/
|
|
17
|
+
input: RedeemGiftCardWorkflowInput;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* This step validates that a gift card can be redeemed. It throws an error if the
|
|
21
|
+
* gift card is already redeemed or already has an associated store credit account.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const data = validateGiftCardRedeemStep({
|
|
25
|
+
* giftCard: {
|
|
26
|
+
* id: "gc_123",
|
|
27
|
+
* status: GiftCardStatus.ACTIVE,
|
|
28
|
+
* // other gift card properties...
|
|
29
|
+
* },
|
|
30
|
+
* giftCardStoreCreditAccount: {
|
|
31
|
+
* id: "sca_123",
|
|
32
|
+
* balance: 100,
|
|
33
|
+
* // other store credit account properties...
|
|
34
|
+
* },
|
|
35
|
+
* input: { gift_card_id: "gc_123" },
|
|
36
|
+
* })
|
|
37
|
+
*/
|
|
38
|
+
export declare const validateGiftCardRedeemStep: import("@medusajs/framework/workflows-sdk").StepFunction<ValidateGiftCardRedeemStepInput, unknown>;
|
|
39
|
+
/**
|
|
40
|
+
* This workflow redeems a gift card by creating an anonymous store credit account,
|
|
41
|
+
* crediting it with the gift card's value, and marking the gift card as redeemed.
|
|
42
|
+
* It throws an error if the gift card is already redeemed or already has an
|
|
43
|
+
* associated store credit account.
|
|
44
|
+
*
|
|
45
|
+
* You can use this workflow within your own customizations or custom workflows,
|
|
46
|
+
* allowing you to wrap custom logic around gift card redemption.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* const { result } = await redeemGiftCardWorkflow(container)
|
|
50
|
+
* .run({
|
|
51
|
+
* input: {
|
|
52
|
+
* gift_card_id: "gc_123",
|
|
53
|
+
* },
|
|
54
|
+
* })
|
|
55
|
+
*
|
|
56
|
+
* @summary
|
|
57
|
+
*
|
|
58
|
+
* Redeem a gift card and create a backing store credit account.
|
|
59
|
+
*/
|
|
60
|
+
export declare const redeemGiftCardWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<RedeemGiftCardWorkflowInput, any, []>;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.redeemGiftCardWorkflow = exports.validateGiftCardRedeemStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
7
|
+
const types_1 = require("../../../types");
|
|
8
|
+
const create_store_credit_accounts_1 = require("../../store-credit/steps/create-store-credit-accounts");
|
|
9
|
+
const credit_accounts_1 = require("../../store-credit/workflows/credit-accounts");
|
|
10
|
+
const update_gift_cards_1 = require("./update-gift-cards");
|
|
11
|
+
/**
|
|
12
|
+
* This step validates that a gift card can be redeemed. It throws an error if the
|
|
13
|
+
* gift card is already redeemed or already has an associated store credit account.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const data = validateGiftCardRedeemStep({
|
|
17
|
+
* giftCard: {
|
|
18
|
+
* id: "gc_123",
|
|
19
|
+
* status: GiftCardStatus.ACTIVE,
|
|
20
|
+
* // other gift card properties...
|
|
21
|
+
* },
|
|
22
|
+
* giftCardStoreCreditAccount: {
|
|
23
|
+
* id: "sca_123",
|
|
24
|
+
* balance: 100,
|
|
25
|
+
* // other store credit account properties...
|
|
26
|
+
* },
|
|
27
|
+
* input: { gift_card_id: "gc_123" },
|
|
28
|
+
* })
|
|
29
|
+
*/
|
|
30
|
+
exports.validateGiftCardRedeemStep = (0, workflows_sdk_1.createStep)("validate-gift-card-redeem", async function ({ giftCardStoreCreditAccount, giftCard, }) {
|
|
31
|
+
if (giftCard.status === types_1.GiftCardStatus.REDEEMED) {
|
|
32
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Gift card is already redeemed");
|
|
33
|
+
}
|
|
34
|
+
if (giftCardStoreCreditAccount) {
|
|
35
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Gift card already has a store credit account");
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* This workflow redeems a gift card by creating an anonymous store credit account,
|
|
40
|
+
* crediting it with the gift card's value, and marking the gift card as redeemed.
|
|
41
|
+
* It throws an error if the gift card is already redeemed or already has an
|
|
42
|
+
* associated store credit account.
|
|
43
|
+
*
|
|
44
|
+
* You can use this workflow within your own customizations or custom workflows,
|
|
45
|
+
* allowing you to wrap custom logic around gift card redemption.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* const { result } = await redeemGiftCardWorkflow(container)
|
|
49
|
+
* .run({
|
|
50
|
+
* input: {
|
|
51
|
+
* gift_card_id: "gc_123",
|
|
52
|
+
* },
|
|
53
|
+
* })
|
|
54
|
+
*
|
|
55
|
+
* @summary
|
|
56
|
+
*
|
|
57
|
+
* Redeem a gift card and create a backing store credit account.
|
|
58
|
+
*/
|
|
59
|
+
exports.redeemGiftCardWorkflow = (0, workflows_sdk_1.createWorkflow)("redeem-gift-card", function (input) {
|
|
60
|
+
const giftCardQuery = (0, core_flows_1.useQueryGraphStep)({
|
|
61
|
+
entity: "gift_card",
|
|
62
|
+
filters: { id: input.gift_card_id },
|
|
63
|
+
fields: ["id", "code", "status", "value", "currency_code"],
|
|
64
|
+
options: { throwIfKeyNotFound: true },
|
|
65
|
+
}).config({ name: "get-gift-card-query" });
|
|
66
|
+
const giftCard = (0, workflows_sdk_1.transform)({ giftCardQuery }, ({ giftCardQuery }) => {
|
|
67
|
+
return giftCardQuery.data[0];
|
|
68
|
+
});
|
|
69
|
+
const giftCardStoreCreditAccountQuery = (0, core_flows_1.useQueryGraphStep)({
|
|
70
|
+
entity: "gift_card_store_credit_account",
|
|
71
|
+
filters: {
|
|
72
|
+
gift_card_id: giftCard.id,
|
|
73
|
+
},
|
|
74
|
+
fields: ["id", "store_credit_account_id"],
|
|
75
|
+
}).config({ name: "get-gift-card-store-credit-account-query" });
|
|
76
|
+
const giftCardStoreCreditAccount = (0, workflows_sdk_1.transform)({ giftCardStoreCreditAccountQuery }, ({ giftCardStoreCreditAccountQuery }) => giftCardStoreCreditAccountQuery.data?.[0]);
|
|
77
|
+
(0, exports.validateGiftCardRedeemStep)({
|
|
78
|
+
giftCardStoreCreditAccount,
|
|
79
|
+
giftCard,
|
|
80
|
+
input,
|
|
81
|
+
});
|
|
82
|
+
const createdStoreCreditAccounts = (0, create_store_credit_accounts_1.createStoreCreditAccountsStep)([
|
|
83
|
+
{
|
|
84
|
+
currency_code: giftCard.currency_code,
|
|
85
|
+
},
|
|
86
|
+
]);
|
|
87
|
+
const createdStoreCreditAccount = (0, workflows_sdk_1.transform)({ createdStoreCreditAccounts }, ({ createdStoreCreditAccounts }) => {
|
|
88
|
+
return createdStoreCreditAccounts[0];
|
|
89
|
+
});
|
|
90
|
+
const linkToCreate = (0, workflows_sdk_1.transform)({ giftCard, createdStoreCreditAccount }, ({ giftCard, createdStoreCreditAccount }) => {
|
|
91
|
+
return [
|
|
92
|
+
{
|
|
93
|
+
[types_1.PluginModule.LOYALTY]: { gift_card_id: giftCard.id },
|
|
94
|
+
[types_1.PluginModule.STORE_CREDIT]: {
|
|
95
|
+
store_credit_account_id: createdStoreCreditAccount.id,
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
});
|
|
100
|
+
core_flows_1.createLinksWorkflow.runAsStep({ input: linkToCreate });
|
|
101
|
+
credit_accounts_1.creditAccountsWorkflow.runAsStep({
|
|
102
|
+
input: [
|
|
103
|
+
{
|
|
104
|
+
account_id: createdStoreCreditAccount.id,
|
|
105
|
+
amount: giftCard.value,
|
|
106
|
+
note: "Gift card redemption",
|
|
107
|
+
reference: "gift_card",
|
|
108
|
+
reference_id: giftCard.code,
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
});
|
|
112
|
+
update_gift_cards_1.updateGiftCardsWorkflow.runAsStep({
|
|
113
|
+
input: [
|
|
114
|
+
{
|
|
115
|
+
id: giftCard.id,
|
|
116
|
+
status: types_1.GiftCardStatus.REDEEMED,
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
});
|
|
120
|
+
const accountQuery = (0, core_flows_1.useQueryGraphStep)({
|
|
121
|
+
entity: "store_credit_account",
|
|
122
|
+
filters: { id: createdStoreCreditAccount.id },
|
|
123
|
+
fields: ["id", "debits", "credits", "code", "transactions.*"],
|
|
124
|
+
options: { throwIfKeyNotFound: true },
|
|
125
|
+
}).config({ name: "get-account-query" });
|
|
126
|
+
const account = (0, workflows_sdk_1.transform)({ accountQuery }, ({ accountQuery }) => accountQuery.data[0]);
|
|
127
|
+
return new workflows_sdk_1.WorkflowResponse(account);
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkZWVtLWdpZnQtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZ2lmdC1jYXJkcy93b3JrZmxvd3MvcmVkZWVtLWdpZnQtY2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBd0Q7QUFDeEQsNERBR3FDO0FBQ3JDLHFFQUsyQztBQUMzQywwQ0FNd0I7QUFDeEIsd0dBQXNHO0FBQ3RHLGtGQUFzRjtBQUN0RiwyREFBOEQ7QUFvQjlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDVSxRQUFBLDBCQUEwQixHQUFHLElBQUEsMEJBQVUsRUFDbEQsMkJBQTJCLEVBQzNCLEtBQUssV0FBVyxFQUNkLDBCQUEwQixFQUMxQixRQUFRLEdBQ3dCO0lBQ2hDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxzQkFBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLCtCQUErQixDQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qiw4Q0FBOEMsQ0FDL0MsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcsSUFBQSw4QkFBYyxFQUNsRCxrQkFBa0IsRUFDbEIsVUFBVSxLQUFrQztJQUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQ3RDLE1BQU0sRUFBRSxXQUFXO1FBQ25CLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFO1FBQ25DLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxNQUFN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
|