@medusajs/loyalty-plugin 2.21.0 → 2.21.1-preview-20260917150924

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.
@@ -280,6 +280,24 @@ const useCreditStoreCreditAccount = (id, options) => {
280
280
  ...options
281
281
  });
282
282
  };
283
+ const useDebitStoreCreditAccount = (id, options) => {
284
+ const queryClient = reactQuery.useQueryClient();
285
+ return reactQuery.useMutation({
286
+ mutationFn: (payload) => sdk.client.fetch(
287
+ `/admin/store-credit-accounts/${id}/debit`,
288
+ { body: payload, method: "POST" }
289
+ ),
290
+ onSuccess: (data, variables, context) => {
291
+ queryClient.invalidateQueries({
292
+ queryKey: storeCreditAccountQueryKey.detail(id)
293
+ });
294
+ queryClient.invalidateQueries({
295
+ queryKey: transactionQueryKey.list({ sca_id: id })
296
+ });
297
+ },
298
+ ...options
299
+ });
300
+ };
283
301
  const CreditCardIcon = ({ className }) => {
284
302
  return /* @__PURE__ */ jsxRuntime.jsxs(
285
303
  "svg",
@@ -413,17 +431,29 @@ const CustomerStoreCreditWidget = () => {
413
431
  const { store_credit_accounts: storeCreditAccounts, isPending } = useStoreCreditAccounts({
414
432
  customer_id: params.id
415
433
  });
416
- if (isPending || !storeCreditAccounts?.length) {
434
+ if (isPending) {
417
435
  return null;
418
436
  }
437
+ const createHref = `/store-credit-accounts/create?prefill_customer_id=${params.id}`;
419
438
  return /* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "p-0", children: [
420
- /* @__PURE__ */ jsxRuntime.jsx(Header$5, { title: "Store Credit Accounts" }),
421
- storeCreditAccounts?.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(
439
+ /* @__PURE__ */ jsxRuntime.jsx(
440
+ Header$5,
441
+ {
442
+ title: "Store Credit Accounts",
443
+ actions: [
444
+ {
445
+ type: "custom",
446
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Link, { to: createHref, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "secondary", size: "small", children: "Create" }) })
447
+ }
448
+ ]
449
+ }
450
+ ),
451
+ !storeCreditAccounts?.length && /* @__PURE__ */ jsxRuntime.jsx(
422
452
  NoRecords,
423
453
  {
424
454
  className: "border-t",
425
455
  title: "No store credit accounts",
426
- message: "There are no store credit accounts to show",
456
+ message: "Create an account to credit this customer",
427
457
  icon: null
428
458
  }
429
459
  ),
@@ -23688,10 +23718,12 @@ const formSchema = zod.z.object({
23688
23718
  });
23689
23719
  const StoreCreditAccountCreateForm = () => {
23690
23720
  const { handleSuccess } = useRouteModal();
23721
+ const [searchParams] = reactRouterDom.useSearchParams();
23722
+ const prefilledCustomerId = searchParams.get("prefill_customer_id") ?? "";
23691
23723
  const form = useForm({
23692
23724
  defaultValues: {
23693
23725
  currency_code: "",
23694
- customer_id: ""
23726
+ customer_id: prefilledCustomerId
23695
23727
  },
23696
23728
  resolver: u(formSchema)
23697
23729
  });
@@ -23732,6 +23764,7 @@ const StoreCreditAccountCreateForm = () => {
23732
23764
  isLoading
23733
23765
  } = useComboboxData({
23734
23766
  queryKey: customersQueryKeys.list(),
23767
+ defaultValue: prefilledCustomerId || void 0,
23735
23768
  queryFn: async (params) => {
23736
23769
  return sdk.admin.customer.list(params);
23737
23770
  },
@@ -26856,7 +26889,7 @@ const GiftCardExpirationForm = ({ giftCard }) => {
26856
26889
  defaultValues: {
26857
26890
  expires_at: giftCard.expires_at ? new Date(giftCard.expires_at) : null
26858
26891
  },
26859
- resolver: u(schema$2)
26892
+ resolver: u(schema$3)
26860
26893
  });
26861
26894
  const { mutateAsync, isPending } = useUpdateGiftCard(giftCard.id);
26862
26895
  const { handleSuccess } = useRouteModal();
@@ -26951,7 +26984,7 @@ const GiftCardExpirationForm = ({ giftCard }) => {
26951
26984
  }
26952
26985
  ) });
26953
26986
  };
26954
- const schema$2 = zod.z.object({
26987
+ const schema$3 = zod.z.object({
26955
26988
  expires_at: zod.z.date().nullish()
26956
26989
  });
26957
26990
  const Note$1 = () => {
@@ -26979,7 +27012,7 @@ const GiftCardNoteForm = ({ giftCard }) => {
26979
27012
  defaultValues: {
26980
27013
  note: giftCard.note ?? ""
26981
27014
  },
26982
- resolver: u(schema$1)
27015
+ resolver: u(schema$2)
26983
27016
  });
26984
27017
  const { mutateAsync, isPending } = useUpdateGiftCard(giftCard.id);
26985
27018
  const { handleSuccess } = useRouteModal();
@@ -27018,7 +27051,7 @@ const GiftCardNoteForm = ({ giftCard }) => {
27018
27051
  }
27019
27052
  ) });
27020
27053
  };
27021
- const schema$1 = zod.z.object({
27054
+ const schema$2 = zod.z.object({
27022
27055
  note: zod.z.string().optional()
27023
27056
  });
27024
27057
  const columnHelper$7 = createColumnHelper();
@@ -40801,6 +40834,12 @@ const StoreCreditAccountDetailsSection = ({
40801
40834
  icon: /* @__PURE__ */ jsxRuntime.jsx(icons.CreditCard, {}),
40802
40835
  label: "Credit the account",
40803
40836
  to: "credit"
40837
+ },
40838
+ {
40839
+ icon: /* @__PURE__ */ jsxRuntime.jsx(icons.MinusMini, {}),
40840
+ label: "Debit the account",
40841
+ to: "debit",
40842
+ disabled: !Number(storeCreditAccount.balance)
40804
40843
  }
40805
40844
  ]
40806
40845
  }
@@ -40918,7 +40957,7 @@ const StoreCreditAccountCreditForm = ({
40918
40957
  },
40919
40958
  note: ""
40920
40959
  },
40921
- resolver: u(schema)
40960
+ resolver: u(schema$1)
40922
40961
  });
40923
40962
  const { mutateAsync, isPending } = useCreditStoreCreditAccount(
40924
40963
  storeCreditAccount.id
@@ -40992,6 +41031,125 @@ const StoreCreditAccountCreditForm = ({
40992
41031
  }
40993
41032
  ) });
40994
41033
  };
41034
+ const schema$1 = zod.z.object({
41035
+ note: zod.z.string(),
41036
+ amount: zod.z.object({
41037
+ float: zod.z.number(),
41038
+ value: zod.z.string()
41039
+ })
41040
+ });
41041
+ const Debit = () => {
41042
+ const { id } = reactRouterDom.useParams();
41043
+ const {
41044
+ store_credit_account: storeCreditAccount,
41045
+ isPending,
41046
+ isError,
41047
+ error
41048
+ } = useStoreCreditAccount(id, {});
41049
+ if (isError) {
41050
+ throw error;
41051
+ }
41052
+ const isReady = !isPending && !!storeCreditAccount;
41053
+ return /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer, { children: [
41054
+ /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Header, { children: [
41055
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Debit store credit account" }) }),
41056
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Debit the store credit account" }) })
41057
+ ] }),
41058
+ isReady && /* @__PURE__ */ jsxRuntime.jsx(StoreCreditAccountDebitForm, { storeCreditAccount })
41059
+ ] });
41060
+ };
41061
+ const StoreCreditAccountDebitForm = ({
41062
+ storeCreditAccount
41063
+ }) => {
41064
+ const form = useForm({
41065
+ defaultValues: {
41066
+ amount: {
41067
+ float: 0,
41068
+ value: ""
41069
+ },
41070
+ note: ""
41071
+ },
41072
+ resolver: u(schema)
41073
+ });
41074
+ const { mutateAsync, isPending } = useDebitStoreCreditAccount(
41075
+ storeCreditAccount.id
41076
+ );
41077
+ const { handleSuccess } = useRouteModal();
41078
+ const balance = storeCreditAccount.balance ?? 0;
41079
+ const onSubmit = form.handleSubmit(async (data) => {
41080
+ if (data.amount.float <= 0) {
41081
+ form.setError("amount", { message: "Amount must be greater than 0" });
41082
+ return;
41083
+ }
41084
+ if (data.amount.float > balance) {
41085
+ form.setError("amount", {
41086
+ message: "Amount can't be greater than the current balance"
41087
+ });
41088
+ return;
41089
+ }
41090
+ await mutateAsync(
41091
+ { amount: data.amount.float, note: data.note },
41092
+ {
41093
+ onSuccess: () => handleSuccess(),
41094
+ onError: (error) => ui.toast.error(error.message)
41095
+ }
41096
+ );
41097
+ });
41098
+ return /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxRuntime.jsxs(
41099
+ KeyboundForm,
41100
+ {
41101
+ className: "flex flex-1 flex-col overflow-hidden",
41102
+ onSubmit,
41103
+ children: [
41104
+ /* @__PURE__ */ jsxRuntime.jsxs(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: [
41105
+ /* @__PURE__ */ jsxRuntime.jsx(
41106
+ Form$2.Field,
41107
+ {
41108
+ control: form.control,
41109
+ name: "amount",
41110
+ render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
41111
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Amount" }),
41112
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(
41113
+ ui.CurrencyInput,
41114
+ {
41115
+ min: 0,
41116
+ placeholder: "0",
41117
+ value: field.value.value,
41118
+ onValueChange: (_value, _name, values) => {
41119
+ field.onChange({
41120
+ value: values?.value,
41121
+ float: values?.float || null
41122
+ });
41123
+ },
41124
+ symbol: currencies[storeCreditAccount.currency_code.toUpperCase()].symbol_native,
41125
+ code: storeCreditAccount.currency_code.toUpperCase()
41126
+ }
41127
+ ) }),
41128
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
41129
+ ] })
41130
+ }
41131
+ ),
41132
+ /* @__PURE__ */ jsxRuntime.jsx(
41133
+ Form$2.Field,
41134
+ {
41135
+ control: form.control,
41136
+ name: "note",
41137
+ render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsxs(Form$2.Item, { children: [
41138
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.Label, { children: "Note" }),
41139
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.Control, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Textarea, { ...field }) }),
41140
+ /* @__PURE__ */ jsxRuntime.jsx(Form$2.ErrorMessage, {})
41141
+ ] })
41142
+ }
41143
+ )
41144
+ ] }),
41145
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
41146
+ /* @__PURE__ */ jsxRuntime.jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
41147
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
41148
+ ] }) })
41149
+ ]
41150
+ }
41151
+ ) });
41152
+ };
40995
41153
  const schema = zod.z.object({
40996
41154
  note: zod.z.string(),
40997
41155
  amount: zod.z.object({
@@ -42761,6 +42919,10 @@ const routeModule = {
42761
42919
  {
42762
42920
  Component: Note,
42763
42921
  path: "/store-credit-accounts/:id/credit"
42922
+ },
42923
+ {
42924
+ Component: Debit,
42925
+ path: "/store-credit-accounts/:id/debit"
42764
42926
  }
42765
42927
  ]
42766
42928
  },
@@ -4,7 +4,7 @@ import { DropdownMenu, IconButton, clx, Heading, Text, Tooltip, Button, Containe
4
4
  import { Link, useParams, useSearchParams, useNavigate, Outlet, useBlocker, useLocation } from "react-router-dom";
5
5
  import * as React from "react";
6
6
  import React__default, { createElement as createElement$1, useState, useCallback, useMemo, Fragment as Fragment$1, createContext, forwardRef, useId as useId$1, useContext, useEffect, isValidElement as isValidElement$1, useLayoutEffect, useRef, useReducer, useTransition, useImperativeHandle, useDeferredValue, Suspense, memo as memo$2, cloneElement } from "react";
7
- import { EllipsisHorizontal, InformationCircleSolid, ExclamationCircle, PlusMini, TriangleRightMini, Gift, Photo, PencilSquare, Trash, Tag, XMarkMini, TrianglesMini, CheckMini, EllipseMiniSolid, ArrowUpRightOnBox, TriangleDownMini, Check, SquareTwoStack, Calendar, ShoppingCart, AdjustmentsDone, Adjustments, TaxInclusive, TaxExclusive, XMark, ArrowDownTray, DotsSix, ThumbnailBadge, StackPerspective, CreditCard, User, Share, XCircleSolid, TriangleLeftMini } from "@medusajs/icons";
7
+ import { EllipsisHorizontal, InformationCircleSolid, ExclamationCircle, PlusMini, TriangleRightMini, Gift, Photo, PencilSquare, Trash, Tag, XMarkMini, TrianglesMini, CheckMini, EllipseMiniSolid, ArrowUpRightOnBox, TriangleDownMini, Check, SquareTwoStack, Calendar, ShoppingCart, AdjustmentsDone, Adjustments, TaxInclusive, TaxExclusive, XMark, ArrowDownTray, DotsSix, ThumbnailBadge, StackPerspective, CreditCard, MinusMini, User, Share, XCircleSolid, TriangleLeftMini } from "@medusajs/icons";
8
8
  import { useQuery, useQueryClient, useMutation, useInfiniteQuery, keepPreviousData } from "@tanstack/react-query";
9
9
  import Medusa, { FetchError } from "@medusajs/js-sdk";
10
10
  import { LayoutComposer } from "@medusajs/dashboard/components";
@@ -260,6 +260,24 @@ const useCreditStoreCreditAccount = (id, options) => {
260
260
  ...options
261
261
  });
262
262
  };
263
+ const useDebitStoreCreditAccount = (id, options) => {
264
+ const queryClient = useQueryClient();
265
+ return useMutation({
266
+ mutationFn: (payload) => sdk.client.fetch(
267
+ `/admin/store-credit-accounts/${id}/debit`,
268
+ { body: payload, method: "POST" }
269
+ ),
270
+ onSuccess: (data, variables, context) => {
271
+ queryClient.invalidateQueries({
272
+ queryKey: storeCreditAccountQueryKey.detail(id)
273
+ });
274
+ queryClient.invalidateQueries({
275
+ queryKey: transactionQueryKey.list({ sca_id: id })
276
+ });
277
+ },
278
+ ...options
279
+ });
280
+ };
263
281
  const CreditCardIcon = ({ className }) => {
264
282
  return /* @__PURE__ */ jsxs(
265
283
  "svg",
@@ -393,17 +411,29 @@ const CustomerStoreCreditWidget = () => {
393
411
  const { store_credit_accounts: storeCreditAccounts, isPending } = useStoreCreditAccounts({
394
412
  customer_id: params.id
395
413
  });
396
- if (isPending || !storeCreditAccounts?.length) {
414
+ if (isPending) {
397
415
  return null;
398
416
  }
417
+ const createHref = `/store-credit-accounts/create?prefill_customer_id=${params.id}`;
399
418
  return /* @__PURE__ */ jsxs(Container$1, { className: "p-0", children: [
400
- /* @__PURE__ */ jsx(Header$5, { title: "Store Credit Accounts" }),
401
- storeCreditAccounts?.length === 0 && /* @__PURE__ */ jsx(
419
+ /* @__PURE__ */ jsx(
420
+ Header$5,
421
+ {
422
+ title: "Store Credit Accounts",
423
+ actions: [
424
+ {
425
+ type: "custom",
426
+ children: /* @__PURE__ */ jsx(Link, { to: createHref, children: /* @__PURE__ */ jsx(Button, { variant: "secondary", size: "small", children: "Create" }) })
427
+ }
428
+ ]
429
+ }
430
+ ),
431
+ !storeCreditAccounts?.length && /* @__PURE__ */ jsx(
402
432
  NoRecords,
403
433
  {
404
434
  className: "border-t",
405
435
  title: "No store credit accounts",
406
- message: "There are no store credit accounts to show",
436
+ message: "Create an account to credit this customer",
407
437
  icon: null
408
438
  }
409
439
  ),
@@ -23668,10 +23698,12 @@ const formSchema = z.object({
23668
23698
  });
23669
23699
  const StoreCreditAccountCreateForm = () => {
23670
23700
  const { handleSuccess } = useRouteModal();
23701
+ const [searchParams] = useSearchParams();
23702
+ const prefilledCustomerId = searchParams.get("prefill_customer_id") ?? "";
23671
23703
  const form = useForm({
23672
23704
  defaultValues: {
23673
23705
  currency_code: "",
23674
- customer_id: ""
23706
+ customer_id: prefilledCustomerId
23675
23707
  },
23676
23708
  resolver: u(formSchema)
23677
23709
  });
@@ -23712,6 +23744,7 @@ const StoreCreditAccountCreateForm = () => {
23712
23744
  isLoading
23713
23745
  } = useComboboxData({
23714
23746
  queryKey: customersQueryKeys.list(),
23747
+ defaultValue: prefilledCustomerId || void 0,
23715
23748
  queryFn: async (params) => {
23716
23749
  return sdk.admin.customer.list(params);
23717
23750
  },
@@ -26836,7 +26869,7 @@ const GiftCardExpirationForm = ({ giftCard }) => {
26836
26869
  defaultValues: {
26837
26870
  expires_at: giftCard.expires_at ? new Date(giftCard.expires_at) : null
26838
26871
  },
26839
- resolver: u(schema$2)
26872
+ resolver: u(schema$3)
26840
26873
  });
26841
26874
  const { mutateAsync, isPending } = useUpdateGiftCard(giftCard.id);
26842
26875
  const { handleSuccess } = useRouteModal();
@@ -26931,7 +26964,7 @@ const GiftCardExpirationForm = ({ giftCard }) => {
26931
26964
  }
26932
26965
  ) });
26933
26966
  };
26934
- const schema$2 = z.object({
26967
+ const schema$3 = z.object({
26935
26968
  expires_at: z.date().nullish()
26936
26969
  });
26937
26970
  const Note$1 = () => {
@@ -26959,7 +26992,7 @@ const GiftCardNoteForm = ({ giftCard }) => {
26959
26992
  defaultValues: {
26960
26993
  note: giftCard.note ?? ""
26961
26994
  },
26962
- resolver: u(schema$1)
26995
+ resolver: u(schema$2)
26963
26996
  });
26964
26997
  const { mutateAsync, isPending } = useUpdateGiftCard(giftCard.id);
26965
26998
  const { handleSuccess } = useRouteModal();
@@ -26998,7 +27031,7 @@ const GiftCardNoteForm = ({ giftCard }) => {
26998
27031
  }
26999
27032
  ) });
27000
27033
  };
27001
- const schema$1 = z.object({
27034
+ const schema$2 = z.object({
27002
27035
  note: z.string().optional()
27003
27036
  });
27004
27037
  const columnHelper$7 = createColumnHelper();
@@ -40781,6 +40814,12 @@ const StoreCreditAccountDetailsSection = ({
40781
40814
  icon: /* @__PURE__ */ jsx(CreditCard, {}),
40782
40815
  label: "Credit the account",
40783
40816
  to: "credit"
40817
+ },
40818
+ {
40819
+ icon: /* @__PURE__ */ jsx(MinusMini, {}),
40820
+ label: "Debit the account",
40821
+ to: "debit",
40822
+ disabled: !Number(storeCreditAccount.balance)
40784
40823
  }
40785
40824
  ]
40786
40825
  }
@@ -40898,7 +40937,7 @@ const StoreCreditAccountCreditForm = ({
40898
40937
  },
40899
40938
  note: ""
40900
40939
  },
40901
- resolver: u(schema)
40940
+ resolver: u(schema$1)
40902
40941
  });
40903
40942
  const { mutateAsync, isPending } = useCreditStoreCreditAccount(
40904
40943
  storeCreditAccount.id
@@ -40972,6 +41011,125 @@ const StoreCreditAccountCreditForm = ({
40972
41011
  }
40973
41012
  ) });
40974
41013
  };
41014
+ const schema$1 = z.object({
41015
+ note: z.string(),
41016
+ amount: z.object({
41017
+ float: z.number(),
41018
+ value: z.string()
41019
+ })
41020
+ });
41021
+ const Debit = () => {
41022
+ const { id } = useParams();
41023
+ const {
41024
+ store_credit_account: storeCreditAccount,
41025
+ isPending,
41026
+ isError,
41027
+ error
41028
+ } = useStoreCreditAccount(id, {});
41029
+ if (isError) {
41030
+ throw error;
41031
+ }
41032
+ const isReady = !isPending && !!storeCreditAccount;
41033
+ return /* @__PURE__ */ jsxs(RouteDrawer, { children: [
41034
+ /* @__PURE__ */ jsxs(RouteDrawer.Header, { children: [
41035
+ /* @__PURE__ */ jsx(RouteDrawer.Title, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { children: "Debit store credit account" }) }),
41036
+ /* @__PURE__ */ jsx(RouteDrawer.Description, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Debit the store credit account" }) })
41037
+ ] }),
41038
+ isReady && /* @__PURE__ */ jsx(StoreCreditAccountDebitForm, { storeCreditAccount })
41039
+ ] });
41040
+ };
41041
+ const StoreCreditAccountDebitForm = ({
41042
+ storeCreditAccount
41043
+ }) => {
41044
+ const form = useForm({
41045
+ defaultValues: {
41046
+ amount: {
41047
+ float: 0,
41048
+ value: ""
41049
+ },
41050
+ note: ""
41051
+ },
41052
+ resolver: u(schema)
41053
+ });
41054
+ const { mutateAsync, isPending } = useDebitStoreCreditAccount(
41055
+ storeCreditAccount.id
41056
+ );
41057
+ const { handleSuccess } = useRouteModal();
41058
+ const balance = storeCreditAccount.balance ?? 0;
41059
+ const onSubmit = form.handleSubmit(async (data) => {
41060
+ if (data.amount.float <= 0) {
41061
+ form.setError("amount", { message: "Amount must be greater than 0" });
41062
+ return;
41063
+ }
41064
+ if (data.amount.float > balance) {
41065
+ form.setError("amount", {
41066
+ message: "Amount can't be greater than the current balance"
41067
+ });
41068
+ return;
41069
+ }
41070
+ await mutateAsync(
41071
+ { amount: data.amount.float, note: data.note },
41072
+ {
41073
+ onSuccess: () => handleSuccess(),
41074
+ onError: (error) => toast.error(error.message)
41075
+ }
41076
+ );
41077
+ });
41078
+ return /* @__PURE__ */ jsx(RouteDrawer.Form, { form, children: /* @__PURE__ */ jsxs(
41079
+ KeyboundForm,
41080
+ {
41081
+ className: "flex flex-1 flex-col overflow-hidden",
41082
+ onSubmit,
41083
+ children: [
41084
+ /* @__PURE__ */ jsxs(RouteDrawer.Body, { className: "flex flex-col gap-y-6 overflow-y-auto", children: [
41085
+ /* @__PURE__ */ jsx(
41086
+ Form$2.Field,
41087
+ {
41088
+ control: form.control,
41089
+ name: "amount",
41090
+ render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
41091
+ /* @__PURE__ */ jsx(Form$2.Label, { children: "Amount" }),
41092
+ /* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(
41093
+ CurrencyInput$1,
41094
+ {
41095
+ min: 0,
41096
+ placeholder: "0",
41097
+ value: field.value.value,
41098
+ onValueChange: (_value, _name, values) => {
41099
+ field.onChange({
41100
+ value: values?.value,
41101
+ float: values?.float || null
41102
+ });
41103
+ },
41104
+ symbol: currencies[storeCreditAccount.currency_code.toUpperCase()].symbol_native,
41105
+ code: storeCreditAccount.currency_code.toUpperCase()
41106
+ }
41107
+ ) }),
41108
+ /* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
41109
+ ] })
41110
+ }
41111
+ ),
41112
+ /* @__PURE__ */ jsx(
41113
+ Form$2.Field,
41114
+ {
41115
+ control: form.control,
41116
+ name: "note",
41117
+ render: ({ field }) => /* @__PURE__ */ jsxs(Form$2.Item, { children: [
41118
+ /* @__PURE__ */ jsx(Form$2.Label, { children: "Note" }),
41119
+ /* @__PURE__ */ jsx(Form$2.Control, { children: /* @__PURE__ */ jsx(Textarea, { ...field }) }),
41120
+ /* @__PURE__ */ jsx(Form$2.ErrorMessage, {})
41121
+ ] })
41122
+ }
41123
+ )
41124
+ ] }),
41125
+ /* @__PURE__ */ jsx(RouteDrawer.Footer, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
41126
+ /* @__PURE__ */ jsx(RouteDrawer.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", children: "Cancel" }) }),
41127
+ /* @__PURE__ */ jsx(Button, { size: "small", type: "submit", isLoading: isPending, children: "Save" })
41128
+ ] }) })
41129
+ ]
41130
+ }
41131
+ ) });
41132
+ };
40975
41133
  const schema = z.object({
40976
41134
  note: z.string(),
40977
41135
  amount: z.object({
@@ -42741,6 +42899,10 @@ const routeModule = {
42741
42899
  {
42742
42900
  Component: Note,
42743
42901
  path: "/store-credit-accounts/:id/credit"
42902
+ },
42903
+ {
42904
+ Component: Debit,
42905
+ path: "/store-credit-accounts/:id/debit"
42744
42906
  }
42745
42907
  ]
42746
42908
  },
@@ -0,0 +1,3 @@
1
+ import type { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework";
2
+ import { AdminDebitStoreCreditAccountParams, AdminStoreCreditAccountResponse } from "../../../../../types";
3
+ export declare const POST: (req: AuthenticatedMedusaRequest<AdminDebitStoreCreditAccountParams>, res: MedusaResponse<AdminStoreCreditAccountResponse>) => Promise<void>;
@@ -0,0 +1,30 @@
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 debit_store_credit_account_1 = require("../../../../../workflows/store-credit/workflows/debit-store-credit-account");
6
+ const POST = async (req, res) => {
7
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const { id } = req.params;
9
+ const filters = {
10
+ id,
11
+ };
12
+ await debit_store_credit_account_1.debitStoreCreditAccountWorkflow.run({
13
+ input: {
14
+ account_id: id,
15
+ amount: req.validatedBody.amount,
16
+ note: req.validatedBody.note,
17
+ reference: req.auth_context.actor_type,
18
+ reference_id: req.auth_context.actor_id,
19
+ },
20
+ container: req.scope,
21
+ });
22
+ const { data: [store_credit_account], } = await query.graph({
23
+ entity: "store_credit_account",
24
+ fields: req.queryConfig.fields,
25
+ filters,
26
+ }, { throwIfKeyNotFound: true });
27
+ res.json({ store_credit_account });
28
+ };
29
+ exports.POST = POST;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N0b3JlLWNyZWRpdC1hY2NvdW50cy9baWRdL2RlYml0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUFzRTtBQU90RSwySEFBNkg7QUFFdEgsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFtRSxFQUNuRSxHQUFvRCxFQUNwRCxFQUFFO0lBQ0YsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFFMUIsTUFBTSxPQUFPLEdBQXNDO1FBQ2pELEVBQUU7S0FDSCxDQUFDO0lBRUYsTUFBTSw0REFBK0IsQ0FBQyxHQUFHLENBQUM7UUFDeEMsS0FBSyxFQUFFO1lBQ0wsVUFBVSxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNO1lBQ2hDLElBQUksRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDNUIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVTtZQUN0QyxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRO1NBQ3hDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLO0tBQ3JCLENBQUMsQ0FBQztJQUVILE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUM3QixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FDbkI7UUFDRSxNQUFNLEVBQUUsc0JBQXNCO1FBQzlCLE1BQU0sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU07UUFDOUIsT0FBTztLQUNSLEVBQ0QsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FDN0IsQ0FBQztJQUVGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBbENXLFFBQUEsSUFBSSxRQWtDZiJ9
@@ -34,6 +34,14 @@ exports.adminStoreCreditAccountMiddlewares = [
34
34
  (0, framework_1.validateAndTransformQuery)(validators_1.AdminGetStoreCreditAccountsParams, query_config_1.retrieveStoreCreditAccountTransformQueryConfig),
35
35
  ],
36
36
  },
37
+ {
38
+ method: ["POST"],
39
+ matcher: "/admin/store-credit-accounts/:id/debit",
40
+ middlewares: [
41
+ (0, framework_1.validateAndTransformBody)(validators_1.AdminDebitStoreCreditAccountParams),
42
+ (0, framework_1.validateAndTransformQuery)(validators_1.AdminGetStoreCreditAccountsParams, query_config_1.retrieveStoreCreditAccountTransformQueryConfig),
43
+ ],
44
+ },
37
45
  {
38
46
  method: ["POST"],
39
47
  matcher: "/admin/store-credit-accounts",
@@ -43,4 +51,4 @@ exports.adminStoreCreditAccountMiddlewares = [
43
51
  ],
44
52
  },
45
53
  ];
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N0b3JlLWNyZWRpdC1hY2NvdW50cy9taWRkbGV3YXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFHNkI7QUFFN0IsaURBSXdCO0FBQ3hCLDZDQUtzQjtBQUVULFFBQUEsa0NBQWtDLEdBQXNCO0lBQ25FO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLDhCQUE4QjtRQUN2QyxXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsMERBQTJDLENBQzVDO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLGtDQUFrQztRQUMzQyxXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsNkRBQThDLENBQy9DO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLCtDQUErQztRQUN4RCxXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2Qix5REFBNEMsRUFDNUMscUVBQXNELENBQ3ZEO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSx5Q0FBeUM7UUFDbEQsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQyxnREFBbUMsQ0FBQztZQUM3RCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsNkRBQThDLENBQy9DO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSw4QkFBOEI7UUFDdkMsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQywwQ0FBNkIsQ0FBQztZQUN2RCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsNkRBQThDLENBQy9DO1NBQ0Y7S0FDRjtDQUNGLENBQUMifQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N0b3JlLWNyZWRpdC1hY2NvdW50cy9taWRkbGV3YXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFHNkI7QUFFN0IsaURBSXdCO0FBQ3hCLDZDQU1zQjtBQUVULFFBQUEsa0NBQWtDLEdBQXNCO0lBQ25FO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLDhCQUE4QjtRQUN2QyxXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsMERBQTJDLENBQzVDO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLGtDQUFrQztRQUMzQyxXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsNkRBQThDLENBQy9DO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLCtDQUErQztRQUN4RCxXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2Qix5REFBNEMsRUFDNUMscUVBQXNELENBQ3ZEO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSx5Q0FBeUM7UUFDbEQsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQyxnREFBbUMsQ0FBQztZQUM3RCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsNkRBQThDLENBQy9DO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSx3Q0FBd0M7UUFDakQsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQywrQ0FBa0MsQ0FBQztZQUM1RCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsNkRBQThDLENBQy9DO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSw4QkFBOEI7UUFDdkMsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQywwQ0FBNkIsQ0FBQztZQUN2RCxJQUFBLHFDQUF5QixFQUN2Qiw4Q0FBaUMsRUFDakMsNkRBQThDLENBQy9DO1NBQ0Y7S0FDRjtDQUNGLENBQUMifQ==
@@ -89,6 +89,11 @@ export declare const AdminCreditStoreCreditAccountParams: z.ZodObject<{
89
89
  amount: z.ZodNumber;
90
90
  note: z.ZodOptional<z.ZodString>;
91
91
  }, z.core.$strip>;
92
+ export type AdminDebitStoreCreditAccountParamsType = z.infer<typeof AdminDebitStoreCreditAccountParams>;
93
+ export declare const AdminDebitStoreCreditAccountParams: z.ZodObject<{
94
+ amount: z.ZodNumber;
95
+ note: z.ZodOptional<z.ZodString>;
96
+ }, z.core.$strip>;
92
97
  export type AdminGetStoreCreditAccountTransactionsParamsType = z.infer<typeof AdminGetStoreCreditAccountTransactionsParams>;
93
98
  export declare const AdminGetStoreCreditAccountTransactionsParams: z.ZodObject<{
94
99
  q: z.ZodOptional<z.ZodString>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdminGetStoreCreditAccountTransactionsParams = exports.AdminCreditStoreCreditAccountParams = exports.AdminCreateStoreCreditAccount = exports.AdminGetStoreCreditAccountsParams = void 0;
3
+ exports.AdminGetStoreCreditAccountTransactionsParams = exports.AdminDebitStoreCreditAccountParams = exports.AdminCreditStoreCreditAccountParams = exports.AdminCreateStoreCreditAccount = exports.AdminGetStoreCreditAccountsParams = void 0;
4
4
  const validators_1 = require("@medusajs/medusa/api/utils/validators");
5
5
  const zod_1 = require("@medusajs/framework/zod");
6
6
  exports.AdminGetStoreCreditAccountsParams = zod_1.z.strictObject({
@@ -30,6 +30,10 @@ exports.AdminCreditStoreCreditAccountParams = zod_1.z.object({
30
30
  amount: zod_1.z.number(),
31
31
  note: zod_1.z.string().optional(),
32
32
  });
33
+ exports.AdminDebitStoreCreditAccountParams = zod_1.z.object({
34
+ amount: zod_1.z.number(),
35
+ note: zod_1.z.string().optional(),
36
+ });
33
37
  exports.AdminGetStoreCreditAccountTransactionsParams = zod_1.z.strictObject({
34
38
  ...(0, validators_1.createFindParams)({
35
39
  limit: 15,
@@ -42,4 +46,4 @@ exports.AdminGetStoreCreditAccountTransactionsParams = zod_1.z.strictObject({
42
46
  updated_at: (0, validators_1.createOperatorMap)().optional(),
43
47
  created_at: (0, validators_1.createOperatorMap)().optional(),
44
48
  });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vc3RvcmUtY3JlZGl0LWFjY291bnRzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0VBRytDO0FBQy9DLGlEQUE0QztBQUsvQixRQUFBLGlDQUFpQyxHQUFHLE9BQUMsQ0FBQyxZQUFZLENBQUM7SUFDOUQsR0FBRyxJQUFBLDZCQUFnQixFQUFDO1FBQ2xCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLENBQUM7S0FDVixDQUFDLENBQUMsS0FBSztJQUNSLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hCLEVBQUUsRUFBRSxPQUFDO1NBQ0YsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBQSw4QkFBaUIsR0FBRSxDQUFDLENBQUM7U0FDN0QsUUFBUSxFQUFFO0lBQ2IsYUFBYSxFQUFFLE9BQUM7U0FDYixLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFBLDhCQUFpQixHQUFFLENBQUMsQ0FBQztTQUM3RCxRQUFRLEVBQUU7SUFDYixXQUFXLEVBQUUsT0FBQztTQUNYLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUEsOEJBQWlCLEdBQUUsQ0FBQyxDQUFDO1NBQzdELFFBQVEsRUFBRTtJQUNiLFVBQVUsRUFBRSxJQUFBLDhCQUFpQixHQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFDLFVBQVUsRUFBRSxJQUFBLDhCQUFpQixHQUFFLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQztBQUtVLFFBQUEsNkJBQTZCLEdBQUcsT0FBQyxDQUFDLFlBQVksQ0FBQztJQUMxRCxhQUFhLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN6QixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xFLENBQUMsQ0FBQztBQUtVLFFBQUEsbUNBQW1DLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxRCxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNsQixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM1QixDQUFDLENBQUM7QUFLVSxRQUFBLDRDQUE0QyxHQUFHLE9BQUMsQ0FBQyxZQUFZLENBQUM7SUFDekUsR0FBRyxJQUFBLDZCQUFnQixFQUFDO1FBQ2xCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLENBQUM7S0FDVixDQUFDLENBQUMsS0FBSztJQUNSLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hCLEVBQUUsRUFBRSxPQUFDO1NBQ0YsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBQSw4QkFBaUIsR0FBRSxDQUFDLENBQUM7U0FDN0QsUUFBUSxFQUFFO0lBQ2IsVUFBVSxFQUFFLElBQUEsOEJBQWlCLEdBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsVUFBVSxFQUFFLElBQUEsOEJBQWlCLEdBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDM0MsQ0FBQyxDQUFDIn0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vc3RvcmUtY3JlZGl0LWFjY291bnRzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0VBRytDO0FBQy9DLGlEQUE0QztBQUsvQixRQUFBLGlDQUFpQyxHQUFHLE9BQUMsQ0FBQyxZQUFZLENBQUM7SUFDOUQsR0FBRyxJQUFBLDZCQUFnQixFQUFDO1FBQ2xCLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLENBQUM7S0FDVixDQUFDLENBQUMsS0FBSztJQUNSLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hCLEVBQUUsRUFBRSxPQUFDO1NBQ0YsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBQSw4QkFBaUIsR0FBRSxDQUFDLENBQUM7U0FDN0QsUUFBUSxFQUFFO0lBQ2IsYUFBYSxFQUFFLE9BQUM7U0FDYixLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFBLDhCQUFpQixHQUFFLENBQUMsQ0FBQztTQUM3RCxRQUFRLEVBQUU7SUFDYixXQUFXLEVBQUUsT0FBQztTQUNYLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUEsOEJBQWlCLEdBQUUsQ0FBQyxDQUFDO1NBQzdELFFBQVEsRUFBRTtJQUNiLFVBQVUsRUFBRSxJQUFBLDhCQUFpQixHQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFDLFVBQVUsRUFBRSxJQUFBLDhCQUFpQixHQUFFLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQztBQUtVLFFBQUEsNkJBQTZCLEdBQUcsT0FBQyxDQUFDLFlBQVksQ0FBQztJQUMxRCxhQUFhLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN6QixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xFLENBQUMsQ0FBQztBQUtVLFFBQUEsbUNBQW1DLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxRCxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNsQixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM1QixDQUFDLENBQUM7QUFLVSxRQUFBLGtDQUFrQyxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDekQsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDNUIsQ0FBQyxDQUFDO0FBS1UsUUFBQSw0Q0FBNEMsR0FBRyxPQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3pFLEdBQUcsSUFBQSw2QkFBZ0IsRUFBQztRQUNsQixLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxDQUFDO0tBQ1YsQ0FBQyxDQUFDLEtBQUs7SUFDUixDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN4QixFQUFFLEVBQUUsT0FBQztTQUNGLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUEsOEJBQWlCLEdBQUUsQ0FBQyxDQUFDO1NBQzdELFFBQVEsRUFBRTtJQUNiLFVBQVUsRUFBRSxJQUFBLDhCQUFpQixHQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFDLFVBQVUsRUFBRSxJQUFBLDhCQUFpQixHQUFFLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQyJ9
@@ -27,6 +27,10 @@ export interface AdminCreditStoreCreditAccount {
27
27
  amount: number;
28
28
  note?: string;
29
29
  }
30
+ export interface AdminDebitStoreCreditAccount {
31
+ amount: number;
32
+ note?: string;
33
+ }
30
34
  export interface StoreAddStoreCreditsToCart {
31
35
  amount: number;
32
36
  }
@@ -58,3 +62,10 @@ export interface AdminCreditStoreCreditAccountParams {
58
62
  export interface AdminCreditStoreCreditAccountResponse {
59
63
  store_credit_account: AdminStoreCreditAccount;
60
64
  }
65
+ export interface AdminDebitStoreCreditAccountParams {
66
+ amount: number;
67
+ note?: string;
68
+ }
69
+ export interface AdminDebitStoreCreditAccountResponse {
70
+ store_credit_account: AdminStoreCreditAccount;
71
+ }
@@ -94,6 +94,31 @@ export type ModuleCreditStoreCreditAccount = {
94
94
  */
95
95
  reference_id?: string;
96
96
  };
97
+ /**
98
+ * The data required to debit a store credit account by an amount.
99
+ */
100
+ export type ModuleDebitStoreCreditAccount = {
101
+ /**
102
+ * The ID of the store credit account to debit.
103
+ */
104
+ account_id: string;
105
+ /**
106
+ * The amount to debit from the account.
107
+ */
108
+ amount: number;
109
+ /**
110
+ * An optional note describing the debit transaction.
111
+ */
112
+ note?: string;
113
+ /**
114
+ * The resource type this debit references (for example, "user", "order").
115
+ */
116
+ reference?: string;
117
+ /**
118
+ * The ID of the referenced resource.
119
+ */
120
+ reference_id?: string;
121
+ };
97
122
  /**
98
123
  * The data required to update a store credit account.
99
124
  */
@@ -10,4 +10,4 @@ var TransactionType;
10
10
  TransactionType["CREDIT"] = "credit";
11
11
  TransactionType["DEBIT"] = "debit";
12
12
  })(TransactionType || (exports.TransactionType = TransactionType = {}));
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3R5cGVzL3N0b3JlLWNyZWRpdC9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNEhBLGdDQUFnQztBQUVoQzs7R0FFRztBQUNILElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6QixvQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxlQUFlLCtCQUFmLGVBQWUsUUFHMUIifQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3R5cGVzL3N0b3JlLWNyZWRpdC9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0pBLGdDQUFnQztBQUVoQzs7R0FFRztBQUNILElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6QixvQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxlQUFlLCtCQUFmLGVBQWUsUUFHMUIifQ==
@@ -1,5 +1,5 @@
1
1
  import { CreateCartCreditLineDTO } from "@medusajs/framework/types";
2
- import { PluginCartDTO } from "../../../../src/types/cart";
2
+ import { PluginCartDTO } from "../../../types/cart";
3
3
  import { ModuleStoreCreditAccount } from "../../../types/store-credit";
4
4
  /**
5
5
  * Input to validate that a customer's store credit account exists and has a positive balance.
@@ -3,6 +3,7 @@ export * from "./workflows/create-store-credit-accounts";
3
3
  export * from "./workflows/credit-accounts";
4
4
  export * from "./workflows/credit-store-credit-account";
5
5
  export * from "./workflows/debit-accounts";
6
+ export * from "./workflows/debit-store-credit-account";
6
7
  export * from "./steps/create-store-credit-accounts";
7
8
  export * from "./steps/credit-account";
8
9
  export * from "./steps/debit-account";
@@ -19,7 +19,8 @@ __exportStar(require("./workflows/create-store-credit-accounts"), exports);
19
19
  __exportStar(require("./workflows/credit-accounts"), exports);
20
20
  __exportStar(require("./workflows/credit-store-credit-account"), exports);
21
21
  __exportStar(require("./workflows/debit-accounts"), exports);
22
+ __exportStar(require("./workflows/debit-store-credit-account"), exports);
22
23
  __exportStar(require("./steps/create-store-credit-accounts"), exports);
23
24
  __exportStar(require("./steps/credit-account"), exports);
24
25
  __exportStar(require("./steps/debit-account"), exports);
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0b3JlLWNyZWRpdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELDJFQUF5RDtBQUN6RCw4REFBNEM7QUFDNUMsMEVBQXdEO0FBQ3hELDZEQUEyQztBQUUzQyx1RUFBcUQ7QUFDckQseURBQXVDO0FBQ3ZDLHdEQUFzQyJ9
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0b3JlLWNyZWRpdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELDJFQUF5RDtBQUN6RCw4REFBNEM7QUFDNUMsMEVBQXdEO0FBQ3hELDZEQUEyQztBQUMzQyx5RUFBdUQ7QUFFdkQsdUVBQXFEO0FBQ3JELHlEQUF1QztBQUN2Qyx3REFBc0MifQ==
@@ -1,4 +1,4 @@
1
- import { ModuleCreditStoreCreditAccount } from "../../../../src/types/store-credit";
1
+ import { ModuleCreditStoreCreditAccount } from "../../../types/store-credit";
2
2
  /**
3
3
  * Input to credit a specific store credit account with an amount.
4
4
  */
@@ -41,27 +41,15 @@ exports.creditStoreCreditAccountWorkflow = (0, workflows_sdk_1.createWorkflow)("
41
41
  filters: { id: input.account_id },
42
42
  options: { throwIfKeyNotFound: true },
43
43
  });
44
- const storeCreditAccount = (0, workflows_sdk_1.transform)({ storeCreditAccountData }, ({ storeCreditAccountData }) => {
45
- return storeCreditAccountData.data[0];
46
- });
47
- const amount = (0, workflows_sdk_1.transform)({ input }, ({ input }) => {
48
- return utils_1.MathBN.convert(input.amount);
49
- });
50
- const transactionInfo = (0, workflows_sdk_1.transform)({ input }, ({ input }) => {
44
+ const creditData = (0, workflows_sdk_1.transform)({ storeCreditAccountData, input }, ({ storeCreditAccountData, input }) => {
51
45
  return {
46
+ account_id: storeCreditAccountData.data[0].id,
47
+ amount: utils_1.MathBN.convert(input.amount),
52
48
  note: input.note || "",
53
49
  reference: input.reference || "",
54
50
  reference_id: input.reference_id || "",
55
51
  };
56
52
  });
57
- (0, credit_account_1.creditAccountStep)([
58
- {
59
- account_id: storeCreditAccount.id,
60
- amount: amount,
61
- note: transactionInfo.note,
62
- reference: transactionInfo.reference,
63
- reference_id: transactionInfo.reference_id,
64
- },
65
- ]);
53
+ (0, credit_account_1.creditAccountStep)([creditData]);
66
54
  });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGl0LXN0b3JlLWNyZWRpdC1hY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdG9yZS1jcmVkaXQvd29ya2Zsb3dzL2NyZWRpdC1zdG9yZS1jcmVkaXQtYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBZ0U7QUFDaEUsNERBQWdFO0FBQ2hFLHFFQUEwRjtBQUcxRiw0REFBNEQ7QUFPNUQsTUFBTSxtQ0FBbUMsR0FBRyxJQUFBLDBCQUFVLEVBQ3BELHFDQUFxQyxFQUNyQyxLQUFLLFdBQVcsS0FBcUM7SUFDbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLCtCQUErQixDQUNoQyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDVSxRQUFBLGdDQUFnQyxHQUFHLElBQUEsOEJBQWMsRUFDNUQsNkJBQTZCLEVBQzdCLFVBQVUsS0FBNEM7SUFDcEQsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFM0MsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQy9DLE1BQU0sRUFBRSxzQkFBc0I7UUFDOUIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFNBQVMsQ0FBQztRQUNqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtRQUNqQyxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7S0FDdEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLHlCQUFTLEVBQ2xDLEVBQUUsc0JBQXNCLEVBQUUsRUFDMUIsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsRUFBRTtRQUM3QixPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQ0YsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2hELE9BQU8sY0FBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGVBQWUsR0FBRyxJQUFBLHlCQUFTLEVBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtRQUN6RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTtZQUN0QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxFQUFFO1lBQ2hDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUU7U0FDdkMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxrQ0FBaUIsRUFBQztRQUNoQjtZQUNFLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJO1lBQzFCLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUztZQUNwQyxZQUFZLEVBQUUsZUFBZSxDQUFDLFlBQVk7U0FDM0M7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGl0LXN0b3JlLWNyZWRpdC1hY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdG9yZS1jcmVkaXQvd29ya2Zsb3dzL2NyZWRpdC1zdG9yZS1jcmVkaXQtYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBZ0U7QUFDaEUsNERBQWdFO0FBQ2hFLHFFQUEwRjtBQUcxRiw0REFBNEQ7QUFPNUQsTUFBTSxtQ0FBbUMsR0FBRyxJQUFBLDBCQUFVLEVBQ3BELHFDQUFxQyxFQUNyQyxLQUFLLFdBQVcsS0FBcUM7SUFDbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLCtCQUErQixDQUNoQyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDVSxRQUFBLGdDQUFnQyxHQUFHLElBQUEsOEJBQWMsRUFDNUQsNkJBQTZCLEVBQzdCLFVBQVUsS0FBNEM7SUFDcEQsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFM0MsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQy9DLE1BQU0sRUFBRSxzQkFBc0I7UUFDOUIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFNBQVMsQ0FBQztRQUNqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtRQUNqQyxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7S0FDdEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxVQUFVLEdBQUcsSUFBQSx5QkFBUyxFQUMxQixFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxFQUNqQyxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtRQUNwQyxPQUFPO1lBQ0wsVUFBVSxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sRUFBRSxjQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTtZQUN0QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxFQUFFO1lBQ2hDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUU7U0FDdkMsQ0FBQztJQUNKLENBQUMsQ0FDRixDQUFDO0lBRUYsSUFBQSxrQ0FBaUIsRUFBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,30 @@
1
+ import { ModuleDebitStoreCreditAccount } from "../../../types/store-credit";
2
+ /**
3
+ * Input to debit a specific store credit account by an amount.
4
+ */
5
+ export type DebitStoreCreditAccountWorkflowInput = ModuleDebitStoreCreditAccount;
6
+ /**
7
+ * This workflow debits a specific store credit account by an amount. It validates
8
+ * that the amount is greater than zero and that the account exists before debiting.
9
+ * The debit is rejected if the account's balance doesn't cover the amount.
10
+ *
11
+ * You can use this workflow within your own customizations or custom workflows,
12
+ * allowing you to wrap custom logic around debiting a store credit account.
13
+ *
14
+ * @example
15
+ * await debitStoreCreditAccountWorkflow(container)
16
+ * .run({
17
+ * input: {
18
+ * account_id: "sca_123",
19
+ * amount: 100,
20
+ * note: "Credit issued by mistake",
21
+ * reference: "user",
22
+ * reference_id: "user_123",
23
+ * },
24
+ * })
25
+ *
26
+ * @summary
27
+ *
28
+ * Debit a store credit account.
29
+ */
30
+ export declare const debitStoreCreditAccountWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<ModuleDebitStoreCreditAccount, unknown, any[]>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.debitStoreCreditAccountWorkflow = 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 debit_account_1 = require("../steps/debit-account");
8
+ const validateDebitStoreCreditAccountInputStep = (0, workflows_sdk_1.createStep)("validate-debit-store-credit-account-input", async function (input) {
9
+ if (input.amount <= 0) {
10
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Amount must be greater than 0");
11
+ }
12
+ });
13
+ /**
14
+ * This workflow debits a specific store credit account by an amount. It validates
15
+ * that the amount is greater than zero and that the account exists before debiting.
16
+ * The debit is rejected if the account's balance doesn't cover the amount.
17
+ *
18
+ * You can use this workflow within your own customizations or custom workflows,
19
+ * allowing you to wrap custom logic around debiting a store credit account.
20
+ *
21
+ * @example
22
+ * await debitStoreCreditAccountWorkflow(container)
23
+ * .run({
24
+ * input: {
25
+ * account_id: "sca_123",
26
+ * amount: 100,
27
+ * note: "Credit issued by mistake",
28
+ * reference: "user",
29
+ * reference_id: "user_123",
30
+ * },
31
+ * })
32
+ *
33
+ * @summary
34
+ *
35
+ * Debit a store credit account.
36
+ */
37
+ exports.debitStoreCreditAccountWorkflow = (0, workflows_sdk_1.createWorkflow)("debit-store-credit-account", function (input) {
38
+ validateDebitStoreCreditAccountInputStep(input);
39
+ const storeCreditAccountData = (0, core_flows_1.useQueryGraphStep)({
40
+ entity: "store_credit_account",
41
+ fields: ["id", "code", "customer_id", "currency_code", "balance"],
42
+ filters: { id: input.account_id },
43
+ options: { throwIfKeyNotFound: true },
44
+ });
45
+ const debitData = (0, workflows_sdk_1.transform)({ storeCreditAccountData, input }, ({ storeCreditAccountData, input }) => {
46
+ return {
47
+ account_id: storeCreditAccountData.data[0].id,
48
+ amount: utils_1.MathBN.convert(input.amount),
49
+ note: input.note || "",
50
+ reference: input.reference || "",
51
+ reference_id: input.reference_id || "",
52
+ };
53
+ });
54
+ (0, debit_account_1.debitAccountStep)([debitData]);
55
+ });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGViaXQtc3RvcmUtY3JlZGl0LWFjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0b3JlLWNyZWRpdC93b3JrZmxvd3MvZGViaXQtc3RvcmUtY3JlZGl0LWFjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWdFO0FBQ2hFLDREQUFnRTtBQUNoRSxxRUFBMEY7QUFHMUYsMERBQTBEO0FBTzFELE1BQU0sd0NBQXdDLEdBQUcsSUFBQSwwQkFBVSxFQUN6RCwyQ0FBMkMsRUFDM0MsS0FBSyxXQUFXLEtBQW9DO0lBQ2xELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwrQkFBK0IsQ0FDaEMsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNVLFFBQUEsK0JBQStCLEdBQUcsSUFBQSw4QkFBYyxFQUMzRCw0QkFBNEIsRUFDNUIsVUFBVSxLQUEyQztJQUNuRCx3Q0FBd0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVoRCxNQUFNLHNCQUFzQixHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDL0MsTUFBTSxFQUFFLHNCQUFzQjtRQUM5QixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsU0FBUyxDQUFDO1FBQ2pFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFO1FBQ2pDLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtLQUN0QyxDQUFDLENBQUM7SUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFBLHlCQUFTLEVBQ3pCLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLEVBQ2pDLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ3BDLE9BQU87WUFDTCxVQUFVLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0MsTUFBTSxFQUFFLGNBQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNwQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUU7WUFDaEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRTtTQUN2QyxDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQUM7SUFFRixJQUFBLGdDQUFnQixFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQ0YsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medusajs/loyalty-plugin",
3
- "version": "2.21.0",
3
+ "version": "2.21.1-preview-20260917150924",
4
4
  "description": "Medusa Plugin: Loyalty - Gift Cards",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",
@@ -55,16 +55,16 @@
55
55
  "watch": "medusa plugin:develop"
56
56
  },
57
57
  "devDependencies": {
58
- "@medusajs/admin-sdk": "2.21.0",
59
- "@medusajs/cli": "2.21.0",
60
- "@medusajs/dashboard": "2.21.0",
61
- "@medusajs/framework": "2.21.0",
62
- "@medusajs/icons": "2.21.0",
63
- "@medusajs/medusa": "2.21.0",
64
- "@medusajs/test-utils": "2.21.0",
65
- "@medusajs/types": "2.21.0",
66
- "@medusajs/ui": "4.2.4",
67
- "@medusajs/ui-preset": "2.21.0",
58
+ "@medusajs/admin-sdk": "2.21.1-preview-20260917150924",
59
+ "@medusajs/cli": "2.21.1-preview-20260917150924",
60
+ "@medusajs/dashboard": "2.21.1-preview-20260917150924",
61
+ "@medusajs/framework": "2.21.1-preview-20260917150924",
62
+ "@medusajs/icons": "2.21.1-preview-20260917150924",
63
+ "@medusajs/medusa": "2.21.1-preview-20260917150924",
64
+ "@medusajs/test-utils": "2.21.1-preview-20260917150924",
65
+ "@medusajs/types": "2.21.1-preview-20260917150924",
66
+ "@medusajs/ui": "4.2.5-preview-20260917150924",
67
+ "@medusajs/ui-preset": "2.21.1-preview-20260917150924",
68
68
  "@swc/core": "1.5.7",
69
69
  "@types/node": "^20.0.0",
70
70
  "cross-env": "^7.0.3",
@@ -72,14 +72,14 @@
72
72
  "typescript": "^5.7.3"
73
73
  },
74
74
  "peerDependencies": {
75
- "@medusajs/admin-sdk": "2.21.0",
76
- "@medusajs/cli": "2.21.0",
77
- "@medusajs/dashboard": "2.21.0",
78
- "@medusajs/framework": "2.21.0",
79
- "@medusajs/icons": "2.21.0",
80
- "@medusajs/medusa": "2.21.0",
81
- "@medusajs/test-utils": "2.21.0",
82
- "@medusajs/ui": "4.2.4",
75
+ "@medusajs/admin-sdk": "2.21.1-preview-20260917150924",
76
+ "@medusajs/cli": "2.21.1-preview-20260917150924",
77
+ "@medusajs/dashboard": "2.21.1-preview-20260917150924",
78
+ "@medusajs/framework": "2.21.1-preview-20260917150924",
79
+ "@medusajs/icons": "2.21.1-preview-20260917150924",
80
+ "@medusajs/medusa": "2.21.1-preview-20260917150924",
81
+ "@medusajs/test-utils": "2.21.1-preview-20260917150924",
82
+ "@medusajs/ui": "4.2.5-preview-20260917150924",
83
83
  "react": "^18.3.1",
84
84
  "react-dom": "^18.3.1",
85
85
  "react-router-dom": "^6.30.4 || ^7.0.0"