bananas-commerce-admin 0.17.6 → 0.17.8

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.
Files changed (26) hide show
  1. package/dist/esm/contexts/DialogContext.js +4 -4
  2. package/dist/esm/contexts/DialogContext.js.map +1 -1
  3. package/dist/esm/extensions/member/components/SubscriptionsCardContent.js +39 -3
  4. package/dist/esm/extensions/member/components/SubscriptionsCardContent.js.map +1 -1
  5. package/dist/esm/extensions/member/components/SubscriptionsListItem.js +4 -2
  6. package/dist/esm/extensions/member/components/SubscriptionsListItem.js.map +1 -1
  7. package/dist/esm/extensions/member/contrib/PaymentMethodsCard.js +56 -16
  8. package/dist/esm/extensions/member/contrib/PaymentMethodsCard.js.map +1 -1
  9. package/dist/esm/extensions/member/contrib/SubscriptionsCard.js +3 -2
  10. package/dist/esm/extensions/member/contrib/SubscriptionsCard.js.map +1 -1
  11. package/dist/esm/extensions/member/utils/paymentMethodMask.js +3 -9
  12. package/dist/esm/extensions/member/utils/paymentMethodMask.js.map +1 -1
  13. package/dist/esm/extensions/pos/components/ReceiptTable.js +16 -1
  14. package/dist/esm/extensions/pos/components/ReceiptTable.js.map +1 -1
  15. package/dist/types/contexts/DialogContext.d.ts +2 -2
  16. package/dist/types/extensions/member/components/SubscriptionsCardContent.d.ts +1 -0
  17. package/dist/types/extensions/pos/types/purchase.d.ts +2 -0
  18. package/package.json +1 -1
  19. package/src/contexts/DialogContext.tsx +10 -10
  20. package/src/extensions/member/components/SubscriptionsCardContent.tsx +56 -2
  21. package/src/extensions/member/components/SubscriptionsListItem.tsx +10 -4
  22. package/src/extensions/member/contrib/PaymentMethodsCard.tsx +99 -24
  23. package/src/extensions/member/contrib/SubscriptionsCard.tsx +7 -1
  24. package/src/extensions/member/utils/paymentMethodMask.ts +3 -9
  25. package/src/extensions/pos/components/ReceiptTable.tsx +34 -1
  26. package/src/extensions/pos/types/purchase.ts +3 -0
@@ -26,10 +26,10 @@ function DialogContextProvider(props) {
26
26
  setTitle(title);
27
27
  setChildren(children);
28
28
  setOpen(true);
29
- if (options?.ok) {
29
+ if (options?.ok !== undefined) {
30
30
  setOk(options.ok);
31
31
  }
32
- if (options?.cancel) {
32
+ if (options?.cancel !== undefined) {
33
33
  setCancel(options.cancel);
34
34
  }
35
35
  if (options?.dialogProps) {
@@ -62,8 +62,8 @@ export function BcomDialog() {
62
62
  React.createElement(DialogTitle, null, ctx.title),
63
63
  React.createElement(DialogContent, null, ctx.children),
64
64
  React.createElement(DialogActions, null,
65
- React.createElement(Button, { onClick: () => ctx.cb(false) }, ctx.cancel),
66
- React.createElement(Button, { onClick: () => ctx.cb(true) }, ctx.ok)))));
65
+ ctx.cancel && React.createElement(Button, { onClick: () => ctx.cb(false) }, ctx.cancel),
66
+ ctx.ok && React.createElement(Button, { onClick: () => ctx.cb(true) }, ctx.ok)))));
67
67
  }
68
68
  export function useDialog() {
69
69
  const { makeOpen } = useContext(DialogContext);
@@ -1 +1 @@
1
- {"version":3,"file":"DialogContext.js","sourceRoot":"","sources":["../../../src/contexts/DialogContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DialogContext.js","sourceRoot":"","sources":["../../../src/contexts/DialogContext.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
- import React, { useEffect, useState } from "react";
1
+ import React, { useCallback, useEffect, useState } from "react";
2
+ import CopyAllOutlinedIcon from "@mui/icons-material/CopyAllOutlined";
2
3
  import { Button, Collapse, Stack } from "@mui/material";
3
4
  import { DateTime } from "luxon";
5
+ import { useSnackbar } from "notistack";
4
6
  import CardActions from "../../../components/Card/CardActions";
5
7
  import CardCloseButton from "../../../components/Card/CardCloseButton";
6
8
  import CardContent from "../../../components/Card/CardContent";
@@ -9,7 +11,10 @@ import CardFieldText from "../../../components/Card/CardFieldText";
9
11
  import CardRow from "../../../components/Card/CardRow";
10
12
  import { useApi } from "../../../contexts/ApiContext";
11
13
  import { useCardContext } from "../../../contexts/CardContext";
14
+ import { useDialog } from "../../../contexts/DialogContext";
12
15
  import { useI18n } from "../../../contexts/I18nContext";
16
+ import { useUser } from "../../../contexts/UserContext";
17
+ import { hasPermission } from "../../../util/has_permission";
13
18
  import { toTitleCase } from "../../../util/to_title_case";
14
19
  import { currencyFormat } from "../../pos/utils/amountToCurrencyString";
15
20
  import EndSubscriptionButton from "./EndSubscriptionButton";
@@ -17,12 +22,15 @@ import ResumeSubscriptionButton from "./ResumeSubscriptionButton";
17
22
  import StartSubscriptionButton from "./StartSubscriptionButton";
18
23
  import SubscriptionsDialog from "./SubscriptionsDialog";
19
24
  import SubscriptionsList from "./SubscriptionsList";
20
- const SubscriptionsCardContent = ({ subscription, refresh, }) => {
25
+ const SubscriptionsCardContent = ({ subscription, membership_number, refresh, }) => {
21
26
  const [cancelDialogOpen, setCancelDialogOpen] = useState(false);
22
27
  const [periods, setPeriods] = useState(null);
28
+ const openDialog = useDialog();
23
29
  const api = useApi();
30
+ const { user } = useUser();
24
31
  const { isOpen } = useCardContext();
25
32
  const { t } = useI18n();
33
+ const { enqueueSnackbar } = useSnackbar();
26
34
  const handleRefresh = async () => {
27
35
  refresh();
28
36
  await fetchPeriods();
@@ -38,6 +46,32 @@ const SubscriptionsCardContent = ({ subscription, refresh, }) => {
38
46
  if (periods == null)
39
47
  setPeriods(data.results);
40
48
  };
49
+ const subscribeAgain = useCallback(async () => {
50
+ if (await openDialog(t("Subscribe"), `Are you sure you want to subscribe this member to "${subscription.name}" again?`, {
51
+ ok: t("Yes, subscribe"),
52
+ cancel: t("Cancel"),
53
+ })) {
54
+ const action = api.operations["subscription.contrib:member-subscription-create"];
55
+ if (!action) {
56
+ throw new Error('Invalid action "subscription.contrib:member-subscription-create".');
57
+ }
58
+ const response = await action.call({
59
+ params: { membership_number },
60
+ body: { reference: subscription.plan },
61
+ });
62
+ if (response.status == 201) {
63
+ refresh();
64
+ enqueueSnackbar(t("New subscription created"), { variant: "success" });
65
+ }
66
+ else if (response.status == 200) {
67
+ enqueueSnackbar(t("Member already subscribed"), { variant: "info" });
68
+ }
69
+ else {
70
+ console.error("[SUBSCRIBE_AGAIN]", response);
71
+ enqueueSnackbar(t("Failed to subscribe"), { variant: "error" });
72
+ }
73
+ }
74
+ }, [api, subscription]);
41
75
  useEffect(() => {
42
76
  if (periods != null)
43
77
  return;
@@ -57,7 +91,7 @@ const SubscriptionsCardContent = ({ subscription, refresh, }) => {
57
91
  subscription.end_date && (React.createElement(CardFieldDate, { formName: "end_date", isEditable: false, label: t("End date"), size: 1, value: DateTime.fromISO(subscription.end_date) })),
58
92
  !subscription.is_cancelled && subscription.state === "RUNNING" && (React.createElement(CardFieldDate, { formName: "expiry_date", isEditable: false, label: t("Next payment"), size: 1, value: DateTime.fromISO(subscription.expiry_date) })))),
59
93
  React.createElement(SubscriptionsList, { periods: periods, refresh: handleRefresh }),
60
- React.createElement(CardActions, null,
94
+ React.createElement(CardActions, { alwaysVisible: true },
61
95
  React.createElement(Stack, { direction: "row", justifyContent: "space-between", width: "100%" },
62
96
  subscription.state === "PENDING" && (React.createElement(Stack, { direction: "row", spacing: 2 },
63
97
  React.createElement(StartSubscriptionButton, { refresh: handleRefresh, subscriptionId: subscription.id }),
@@ -67,6 +101,8 @@ const SubscriptionsCardContent = ({ subscription, refresh, }) => {
67
101
  subscription.state === "RUNNING" && subscription.is_cancelled === true && (React.createElement(Stack, { direction: "row", spacing: 2 },
68
102
  React.createElement(ResumeSubscriptionButton, { refresh: handleRefresh, subscriptionId: subscription.id }),
69
103
  React.createElement(EndSubscriptionButton, { refresh: handleRefresh, subscriptionId: subscription.id }))),
104
+ subscription.state === "ENDED" &&
105
+ hasPermission(user, "subscription.add_subscription") && (React.createElement(Button, { startIcon: React.createElement(CopyAllOutlinedIcon, null), variant: "outlined", onClick: subscribeAgain }, "Subscribe Again")),
70
106
  React.createElement(CardCloseButton, null)))),
71
107
  React.createElement(SubscriptionsDialog, { open: cancelDialogOpen, refresh: handleRefresh, setOpen: setCancelDialogOpen, subscriptionId: subscription.id })));
72
108
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionsCardContent.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/SubscriptionsCardContent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubscriptionsCardContent.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/SubscriptionsCardContent.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import CheckIcon from "@mui/icons-material/Check";
4
4
  import CheckCircleIcon from "@mui/icons-material/CheckCircle";
5
5
  import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
6
6
  import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
7
+ import PriorityHighOutlinedIcon from "@mui/icons-material/PriorityHighOutlined";
7
8
  import { Avatar, Collapse, IconButton, Stack, Table, TableBody } from "@mui/material";
8
9
  import Chip from "@mui/material/Chip";
9
10
  import TableRow from "@mui/material/TableRow";
@@ -49,8 +50,9 @@ export const SubscriptionsListItem = ({ period }) => {
49
50
  React.createElement(TableCell, { align: "right" },
50
51
  React.createElement(Stack, { direction: "row", justifyContent: "end" },
51
52
  charge.reason,
52
- React.createElement(Avatar, { sx: { bgcolor: "success.light", width: 18, height: 18 } },
53
- React.createElement(CheckIcon, { sx: { width: 12, height: 12 } })))),
53
+ charge.reason === "" ? (React.createElement(Avatar, { sx: { bgcolor: "success.light", width: 18, height: 18, ml: 1 } },
54
+ React.createElement(CheckIcon, { sx: { width: 12, height: 12 } }))) : (React.createElement(Avatar, { sx: { bgcolor: "error.light", width: 18, height: 18, ml: 1 } },
55
+ React.createElement(PriorityHighOutlinedIcon, { sx: { width: 12, height: 12 } }))))),
54
56
  React.createElement(TableCell, { width: 58 })))))))))));
55
57
  };
56
58
  export default SubscriptionsListItem;
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionsListItem.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/SubscriptionsListItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubscriptionsListItem.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/SubscriptionsListItem.tsx"],"names":[],"mappings":"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"}
@@ -1,23 +1,63 @@
1
- import React from "react";
1
+ import React, { useCallback, useState } from "react";
2
+ import DeleteOutlineOutlinedIcon from "@mui/icons-material/DeleteOutlineOutlined";
3
+ import { TableBody, TableRow } from "@mui/material";
4
+ import IconButton from "@mui/material/IconButton";
2
5
  import Typography from "@mui/material/Typography";
3
- import { Stack } from "@mui/system";
4
6
  import { DateTime } from "luxon";
5
- import Card from "../../../components/Card";
6
- import { CardContent } from "../../../components/Card/CardContent";
7
- import CardHeader from "../../../components/Card/CardHeader";
7
+ import { useSnackbar } from "notistack";
8
+ import Table from "../../../components/Table";
9
+ import { TableCell } from "../../../components/Table/TableCell";
10
+ import TableHeading from "../../../components/Table/TableHeading";
11
+ import TableCard from "../../../components/TableCard";
12
+ import TableCardHeader from "../../../components/TableCardHeader";
13
+ import { useApi } from "../../../contexts/ApiContext";
14
+ import { useDialog } from "../../../contexts/DialogContext";
15
+ import { useI18n } from "../../../contexts/I18nContext";
16
+ import { useUser } from "../../../contexts/UserContext";
17
+ import { hasPermission } from "../../../util/has_permission";
8
18
  import { getHumanReadablePaymentMethod } from "../../pos/utils/getHumanReadablePaymentMethod";
9
19
  import { paymentMethodMask } from "../utils/paymentMethodMask";
10
- const PaymentMethodsCard = ({ data: { next: _next, previous: _previous, results }, }) => {
11
- if (results.length === 0)
12
- return null;
13
- return (React.createElement(Card, null,
14
- React.createElement(CardHeader, { title: "Payment Methods" }),
15
- React.createElement(CardContent, null, results
16
- .filter((method) => !method.is_revoked)
17
- .map((method) => (React.createElement(Stack, { key: method.id + method.method, direction: "row", justifyContent: "space-between" },
18
- React.createElement(Typography, { fontWeight: 600 }, getHumanReadablePaymentMethod(method.method)?.name ?? method.method),
19
- React.createElement(Typography, null, paymentMethodMask(method)),
20
- React.createElement(Typography, null, DateTime.fromISO(method.expiry_date).toFormat("MM/yy"))))))));
20
+ const PaymentMethodsCard = ({ data: { next: _next, previous: _previous, results: initialResults }, params, refresh, }) => {
21
+ const results = initialResults.filter((method) => !method.is_revoked);
22
+ const openDialog = useDialog();
23
+ const api = useApi();
24
+ const { t } = useI18n();
25
+ const { user } = useUser();
26
+ const { enqueueSnackbar } = useSnackbar();
27
+ const isEditable = hasPermission(user, "pos.delete_paymenttoken") && results.length > 0;
28
+ const [isEditing, setIsEditing] = useState(false);
29
+ const { membership_number } = params;
30
+ const revoke = useCallback(async (token_id) => {
31
+ if (await openDialog(t("Revoke Payment Method"), t("Are you sure you want to revoke this member's payment method?"), {
32
+ ok: t("Yes, revoke"),
33
+ cancel: t("Cancel"),
34
+ })) {
35
+ const action = api.operations["pos.contrib:member-paymenttoken-revoke"];
36
+ if (!action) {
37
+ throw new Error('Invalid action "pos.contrib:member-paymenttoken-revoke".');
38
+ }
39
+ const response = await action.call({ params: { membership_number, token_id } });
40
+ if (response.ok) {
41
+ refresh();
42
+ setIsEditing(false);
43
+ enqueueSnackbar(t("Payment method revoked"), { variant: "success" });
44
+ }
45
+ else {
46
+ console.error("[REVOKE_PAYMENT_METHOD]", response);
47
+ enqueueSnackbar(t("Failed to revoke payment method"), { variant: "error" });
48
+ }
49
+ }
50
+ }, [api, results]);
51
+ return (React.createElement(TableCard, null,
52
+ React.createElement(TableCardHeader, { isEditable: isEditable, title: "Payment Methods", toggled: isEditing, onChange: setIsEditing }),
53
+ React.createElement(Table, { count: results.length },
54
+ React.createElement(TableBody, { sx: { ".MuiTableRow-root:last-child > .MuiTableCell-root": { borderBottom: "none" } } }, results.length > 0 ? (results.map((method) => (React.createElement(TableRow, { key: method.id },
55
+ React.createElement(TableHeading, null, getHumanReadablePaymentMethod(method.method)?.name ?? method.method),
56
+ React.createElement(TableCell, null, paymentMethodMask(method)),
57
+ React.createElement(TableCell, { align: "right" }, DateTime.fromISO(method.expiry_date).toFormat("MM/yy")),
58
+ isEditable && isEditing && (React.createElement(TableCell, { align: "right", padding: "none", sx: { width: 64 } },
59
+ React.createElement(IconButton, { onClick: () => revoke(method.id) },
60
+ React.createElement(DeleteOutlineOutlinedIcon, { fontSize: "small" })))))))) : (React.createElement(Typography, { color: "text.disabled", fontStyle: "italic", m: "0 1em 1em 1em" }, "No payment methods registered"))))));
21
61
  };
22
62
  export default PaymentMethodsCard;
23
63
  //# sourceMappingURL=PaymentMethodsCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentMethodsCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/contrib/PaymentMethodsCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAE7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,kBAAkB,GAAiD,CAAC,EACxE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GACpD,EAAE,EAAE;IACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,UAAU,IAAC,KAAK,EAAC,iBAAiB,GAAG;QAEtC,oBAAC,WAAW,QACT,OAAO;aACL,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;aACtC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACf,oBAAC,KAAK,IAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAC,KAAK,EAAC,cAAc,EAAC,eAAe;YACnF,oBAAC,UAAU,IAAC,UAAU,EAAE,GAAG,IACxB,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,MAAM,CACzD;YACb,oBAAC,UAAU,QAAE,iBAAiB,CAAC,MAAM,CAAC,CAAc;YACpD,oBAAC,UAAU,QAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc,CAC3E,CACT,CAAC,CACQ,CACT,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"PaymentMethodsCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/contrib/PaymentMethodsCard.tsx"],"names":[],"mappings":"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"}
@@ -5,8 +5,9 @@ import CardHeader from "../../../components/Card/CardHeader";
5
5
  import { useUser } from "../../../contexts/UserContext";
6
6
  import { hasPermission } from "../../../util/has_permission";
7
7
  import SubscriptionsCardContent from "../components/SubscriptionsCardContent";
8
- const SubscriptionsCard = ({ data: { next: _next, previous: _previous, results }, refresh, }) => {
8
+ const SubscriptionsCard = ({ data: { next: _next, previous: _previous, results }, params, refresh, }) => {
9
9
  const { user } = useUser();
10
+ const { membership_number } = params;
10
11
  return (React.createElement(Grid, { container: true, columns: 12, spacing: 3, width: "100%" }, results.map((subscription, index) => (React.createElement(Card, { key: subscription.id, isCollapsible: true, isDisabled: subscription.state === "ENDED", isEditable: hasPermission(user, "subscription.change_subscription"), isOpen: index === 0 && subscription.state !== "ENDED", sx: { overflow: "hidden" } },
11
12
  React.createElement(CardHeader, { title: subscription.name },
12
13
  !subscription.is_cancelled &&
@@ -15,7 +16,7 @@ const SubscriptionsCard = ({ data: { next: _next, previous: _previous, results }
15
16
  subscription.is_cancelled && subscription.state !== "ENDED" && (React.createElement(Chip, { color: "warning", label: subscription.state, size: "small" })),
16
17
  subscription.state === "ENDED" && (React.createElement(Chip, { color: "default", label: subscription.state, size: "small" })),
17
18
  subscription.state === "PENDING" && (React.createElement(Chip, { color: "info", label: subscription.state, size: "small" }))),
18
- React.createElement(SubscriptionsCardContent, { refresh: refresh, subscription: subscription }))))));
19
+ React.createElement(SubscriptionsCardContent, { membership_number: membership_number, refresh: refresh, subscription: subscription }))))));
19
20
  };
20
21
  export default SubscriptionsCard;
21
22
  //# sourceMappingURL=SubscriptionsCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionsCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/contrib/SubscriptionsCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAC5C,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,wBAAwB,MAAM,wCAAwC,CAAC;AAG9E,MAAM,iBAAiB,GAAgD,CAAC,EACtE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EACnD,OAAO,GACR,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAE3B,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,QAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IACnD,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,oBAAC,IAAI,IACH,GAAG,EAAE,YAAY,CAAC,EAAE,EACpB,aAAa,QACb,UAAU,EAAE,YAAY,CAAC,KAAK,KAAK,OAAO,EAC1C,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,kCAAkC,CAAC,EACnE,MAAM,EAAE,KAAK,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,KAAK,OAAO,EACrD,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAE1B,oBAAC,UAAU,IAAC,KAAK,EAAE,YAAY,CAAC,IAAI;YACjC,CAAC,YAAY,CAAC,YAAY;gBACzB,YAAY,CAAC,KAAK,KAAK,OAAO;gBAC9B,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,CAClC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CACjE;YAEF,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,OAAO,IAAI,CAC9D,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CACjE;YAEA,YAAY,CAAC,KAAK,KAAK,OAAO,IAAI,CACjC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CACjE;YAEA,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,CACnC,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CAC9D,CACU;QAEb,oBAAC,wBAAwB,IAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,GAAI,CACrE,CACR,CAAC,CACG,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"SubscriptionsCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/contrib/SubscriptionsCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAC5C,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,wBAAwB,MAAM,wCAAwC,CAAC;AAG9E,MAAM,iBAAiB,GAAgD,CAAC,EACtE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EACnD,MAAM,EACN,OAAO,GACR,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAwC,CAAC;IAEvE,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,QAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IACnD,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,oBAAC,IAAI,IACH,GAAG,EAAE,YAAY,CAAC,EAAE,EACpB,aAAa,QACb,UAAU,EAAE,YAAY,CAAC,KAAK,KAAK,OAAO,EAC1C,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,kCAAkC,CAAC,EACnE,MAAM,EAAE,KAAK,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,KAAK,OAAO,EACrD,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAE1B,oBAAC,UAAU,IAAC,KAAK,EAAE,YAAY,CAAC,IAAI;YACjC,CAAC,YAAY,CAAC,YAAY;gBACzB,YAAY,CAAC,KAAK,KAAK,OAAO;gBAC9B,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,CAClC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CACjE;YAEF,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,OAAO,IAAI,CAC9D,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CACjE;YAEA,YAAY,CAAC,KAAK,KAAK,OAAO,IAAI,CACjC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CACjE;YAEA,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,CACnC,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,CAC9D,CACU;QAEb,oBAAC,wBAAwB,IACvB,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,GAC1B,CACG,CACR,CAAC,CACG,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,12 +1,6 @@
1
1
  export const paymentMethodMask = (method) => {
2
- switch (method.method.toLowerCase()) {
3
- case "visa":
4
- case "mc":
5
- case "mastercard":
6
- case "amex":
7
- return `•••• •••• •••• ${method.summary}`;
8
- default:
9
- return method.summary;
10
- }
2
+ return method.method.toLowerCase().match(/.*(visa|mastercard|american express).*/)
3
+ ? `•••• •••• •••• ${method.summary}`
4
+ : method.summary;
11
5
  };
12
6
  //# sourceMappingURL=paymentMethodMask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paymentMethodMask.js","sourceRoot":"","sources":["../../../../../src/extensions/member/utils/paymentMethodMask.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAqB,EAAE,EAAE;IACzD,QAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,YAAY,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,kBAAkB,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5C;YACE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"paymentMethodMask.js","sourceRoot":"","sources":["../../../../../src/extensions/member/utils/paymentMethodMask.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAqB,EAAE,EAAE;IACzD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC;QAChF,CAAC,CAAC,kBAAkB,MAAM,CAAC,OAAO,EAAE;QACpC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import React, { useEffect, useState } from "react";
2
+ import ListAltOutlinedIcon from "@mui/icons-material/ListAltOutlined";
2
3
  import Checkbox from "@mui/material/Checkbox";
4
+ import IconButton from "@mui/material/IconButton";
3
5
  import Input from "@mui/material/Input";
4
6
  import Table from "@mui/material/Table";
5
7
  import TableBody from "@mui/material/TableBody";
@@ -8,11 +10,13 @@ import Typography from "@mui/material/Typography";
8
10
  import { TableCell } from "../../../components/Table/TableCell";
9
11
  import TableHead from "../../../components/Table/TableHead";
10
12
  import TableHeading from "../../../components/Table/TableHeading";
13
+ import { useDialog } from "../../../contexts/DialogContext";
11
14
  import { useI18n } from "../../../contexts/I18nContext";
12
15
  export const HIDDEN_ITEM_TYPES = ["SHIPPING", "PICKUP"];
13
16
  export const ReceiptTable = ({ lines, currency, editable, onSelect, }) => {
14
17
  const [selected, setSelected] = useState([]);
15
18
  const { t } = useI18n();
19
+ const openDialog = useDialog();
16
20
  const refundableLines = lines.filter((line) => Boolean(line.adjustments.reduce((t, v) => t + v.quantity, line.quantity)));
17
21
  const sortedLines = lines.sort((a, b) => a.line_number - b.line_number);
18
22
  // Group lines by their whole number part, sorted by their decimal part
@@ -46,6 +50,14 @@ export const ReceiptTable = ({ lines, currency, editable, onSelect, }) => {
46
50
  if (onSelect != null)
47
51
  onSelect(selected);
48
52
  }, [onSelect, selected]);
53
+ const showItemProperties = async (title, itemProperties) => {
54
+ await openDialog(title, React.createElement(Table, { size: "small", sx: { "& td": { border: 0 } } }, Object.entries(itemProperties ?? {}).map(([key, value]) => (React.createElement(TableRow, { key: key },
55
+ React.createElement(TableCell, { variant: "head" }, key.toUpperCase()),
56
+ React.createElement(TableCell, { variant: "body" }, `${value}`))))), {
57
+ ok: false,
58
+ cancel: "Close",
59
+ });
60
+ };
49
61
  return (React.createElement(Table, null,
50
62
  React.createElement(TableHead, null,
51
63
  editable && (React.createElement(TableHeading, { align: "left", padding: "checkbox" },
@@ -78,7 +90,10 @@ export const ReceiptTable = ({ lines, currency, editable, onSelect, }) => {
78
90
  } },
79
91
  editable ? (React.createElement(TableCell, { align: "left", padding: "checkbox", sx: { verticalAlign: "top" } }, disabled ? null : (React.createElement(Checkbox, { checked: isSelected && currentQuantity !== 0, color: "secondary", onChange: (_, checked) => toggleLine({ ...line, quantity: currentQuantity }, checked) })))) : null,
80
92
  React.createElement(TableCell, { align: "left" },
81
- React.createElement(Typography, { fontSize: "0.875rem", paddingLeft: subLine ? 2 : undefined }, line.title)),
93
+ React.createElement(Typography, { fontSize: "0.875rem", paddingLeft: subLine ? 2 : undefined },
94
+ line.title,
95
+ line.item_properties && (React.createElement(IconButton, { "aria-label": "Show line item properties", size: "small", onClick: () => showItemProperties(line.title, line.item_properties) },
96
+ React.createElement(ListAltOutlinedIcon, { fontSize: "small" }))))),
82
97
  React.createElement(TableCell, { align: "left" }, ["SHIPPING", "PICKUP"].includes(line.item_type) ? null : line.reference),
83
98
  React.createElement(TableCell, { align: "right", typographyProps: { fontSize: "0.875rem" } }, line.quantity),
84
99
  React.createElement(TableCell, { align: "right" },
@@ -1 +1 @@
1
- {"version":3,"file":"ReceiptTable.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/components/ReceiptTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReceiptTable.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/components/ReceiptTable.tsx"],"names":[],"mappings":"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"}
@@ -6,8 +6,8 @@ declare function DialogContextProvider(props: {
6
6
  }): React.JSX.Element;
7
7
  export declare function BcomDialog(): React.JSX.Element;
8
8
  export declare function useDialog(): (title: string, children: React.ReactNode, options?: {
9
- ok?: string;
10
- cancel?: string;
9
+ ok?: string | false;
10
+ cancel?: string | false;
11
11
  dialogProps?: BananasDialogProps;
12
12
  }) => Promise<boolean>;
13
13
  export default DialogContextProvider;
@@ -3,6 +3,7 @@ import { PageProps } from "../../../types";
3
3
  import { Subscription } from "../types/subscription";
4
4
  export interface SubscriptionsCardContentProps {
5
5
  subscription: Subscription;
6
+ membership_number?: number;
6
7
  refresh: PageProps["refresh"];
7
8
  }
8
9
  declare const SubscriptionsCardContent: React.FC<SubscriptionsCardContentProps>;
@@ -32,9 +32,11 @@ export interface PurchaseDetail {
32
32
  } | null;
33
33
  lines: Line[];
34
34
  }
35
+ export type ItemProperties = Record<string, string | number | boolean>;
35
36
  export interface Line {
36
37
  line_number: number;
37
38
  item_type: string;
39
+ item_properties?: ItemProperties;
38
40
  title: string;
39
41
  reference: string;
40
42
  quantity: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bananas-commerce-admin",
3
- "version": "0.17.6",
3
+ "version": "0.17.8",
4
4
  "description": "What's this, an admin for apes?",
5
5
  "keywords": [
6
6
  "admin",
@@ -17,16 +17,16 @@ const DialogContext = React.createContext<{
17
17
  title: string,
18
18
  children: React.ReactNode,
19
19
  options?: {
20
- ok?: string;
21
- cancel?: string;
20
+ ok?: string | false;
21
+ cancel?: string | false;
22
22
 
23
23
  dialogProps?: BananasDialogProps;
24
24
  },
25
25
  ) => Promise<boolean>;
26
26
 
27
27
  dialogProps: BananasDialogProps;
28
- ok: string;
29
- cancel: string;
28
+ ok: string | false;
29
+ cancel: string | false;
30
30
  }>({
31
31
  title: "",
32
32
  children: null,
@@ -43,8 +43,8 @@ function DialogContextProvider(props: { children: React.ReactNode }) {
43
43
  const [title, setTitle] = useState("");
44
44
  const [children, setChildren] = useState<React.ReactNode>(null);
45
45
  const [open, setOpen] = useState(false);
46
- const [ok, setOk] = useState("Ok");
47
- const [cancel, setCancel] = useState("Cancel");
46
+ const [ok, setOk] = useState<string | false>("Ok");
47
+ const [cancel, setCancel] = useState<string | false>("Cancel");
48
48
 
49
49
  const [dialogProps, setDialogProps] = useState<BananasDialogProps>({});
50
50
 
@@ -56,11 +56,11 @@ function DialogContextProvider(props: { children: React.ReactNode }) {
56
56
  setChildren(children);
57
57
  setOpen(true);
58
58
 
59
- if (options?.ok) {
59
+ if (options?.ok !== undefined) {
60
60
  setOk(options.ok);
61
61
  }
62
62
 
63
- if (options?.cancel) {
63
+ if (options?.cancel !== undefined) {
64
64
  setCancel(options.cancel);
65
65
  }
66
66
 
@@ -103,8 +103,8 @@ export function BcomDialog() {
103
103
  <DialogTitle>{ctx.title}</DialogTitle>
104
104
  <DialogContent>{ctx.children}</DialogContent>
105
105
  <DialogActions>
106
- <Button onClick={() => ctx.cb(false)}>{ctx.cancel}</Button>
107
- <Button onClick={() => ctx.cb(true)}>{ctx.ok}</Button>
106
+ {ctx.cancel && <Button onClick={() => ctx.cb(false)}>{ctx.cancel}</Button>}
107
+ {ctx.ok && <Button onClick={() => ctx.cb(true)}>{ctx.ok}</Button>}
108
108
  </DialogActions>
109
109
  </DialogContent>
110
110
  </Dialog>
@@ -1,8 +1,10 @@
1
- import React, { useEffect, useState } from "react";
1
+ import React, { useCallback, useEffect, useState } from "react";
2
2
 
3
+ import CopyAllOutlinedIcon from "@mui/icons-material/CopyAllOutlined";
3
4
  import { Button, Collapse, Stack } from "@mui/material";
4
5
 
5
6
  import { DateTime } from "luxon";
7
+ import { useSnackbar } from "notistack";
6
8
 
7
9
  import CardActions from "../../../components/Card/CardActions";
8
10
  import CardCloseButton from "../../../components/Card/CardCloseButton";
@@ -12,8 +14,11 @@ import CardFieldText from "../../../components/Card/CardFieldText";
12
14
  import CardRow from "../../../components/Card/CardRow";
13
15
  import { useApi } from "../../../contexts/ApiContext";
14
16
  import { useCardContext } from "../../../contexts/CardContext";
17
+ import { useDialog } from "../../../contexts/DialogContext";
15
18
  import { useI18n } from "../../../contexts/I18nContext";
19
+ import { useUser } from "../../../contexts/UserContext";
16
20
  import { PageProps } from "../../../types";
21
+ import { hasPermission } from "../../../util/has_permission";
17
22
  import { toTitleCase } from "../../../util/to_title_case";
18
23
  import { currencyFormat } from "../../pos/utils/amountToCurrencyString";
19
24
  import {
@@ -30,18 +35,23 @@ import SubscriptionsList from "./SubscriptionsList";
30
35
 
31
36
  export interface SubscriptionsCardContentProps {
32
37
  subscription: Subscription;
38
+ membership_number?: number;
33
39
  refresh: PageProps["refresh"];
34
40
  }
35
41
 
36
42
  const SubscriptionsCardContent: React.FC<SubscriptionsCardContentProps> = ({
37
43
  subscription,
44
+ membership_number,
38
45
  refresh,
39
46
  }) => {
40
47
  const [cancelDialogOpen, setCancelDialogOpen] = useState(false);
41
48
  const [periods, setPeriods] = useState<SubscriptionPeriod[] | null>(null);
49
+ const openDialog = useDialog();
42
50
  const api = useApi();
51
+ const { user } = useUser();
43
52
  const { isOpen } = useCardContext();
44
53
  const { t } = useI18n();
54
+ const { enqueueSnackbar } = useSnackbar();
45
55
 
46
56
  const handleRefresh = async () => {
47
57
  refresh();
@@ -59,6 +69,38 @@ const SubscriptionsCardContent: React.FC<SubscriptionsCardContentProps> = ({
59
69
  if (periods == null) setPeriods(data.results);
60
70
  };
61
71
 
72
+ const subscribeAgain = useCallback(async () => {
73
+ if (
74
+ await openDialog(
75
+ t("Subscribe"),
76
+ `Are you sure you want to subscribe this member to "${subscription.name}" again?`,
77
+ {
78
+ ok: t("Yes, subscribe"),
79
+ cancel: t("Cancel"),
80
+ },
81
+ )
82
+ ) {
83
+ const action = api.operations["subscription.contrib:member-subscription-create"];
84
+ if (!action) {
85
+ throw new Error('Invalid action "subscription.contrib:member-subscription-create".');
86
+ }
87
+
88
+ const response = await action.call({
89
+ params: { membership_number },
90
+ body: { reference: subscription.plan },
91
+ });
92
+ if (response.status == 201) {
93
+ refresh();
94
+ enqueueSnackbar(t("New subscription created"), { variant: "success" });
95
+ } else if (response.status == 200) {
96
+ enqueueSnackbar(t("Member already subscribed"), { variant: "info" });
97
+ } else {
98
+ console.error("[SUBSCRIBE_AGAIN]", response);
99
+ enqueueSnackbar(t("Failed to subscribe"), { variant: "error" });
100
+ }
101
+ }
102
+ }, [api, subscription]);
103
+
62
104
  useEffect(() => {
63
105
  if (periods != null) return;
64
106
  fetchPeriods();
@@ -151,7 +193,7 @@ const SubscriptionsCardContent: React.FC<SubscriptionsCardContentProps> = ({
151
193
 
152
194
  <SubscriptionsList periods={periods} refresh={handleRefresh} />
153
195
 
154
- <CardActions>
196
+ <CardActions alwaysVisible>
155
197
  <Stack direction="row" justifyContent="space-between" width="100%">
156
198
  {subscription.state === "PENDING" && (
157
199
  <Stack direction="row" spacing={2}>
@@ -177,6 +219,18 @@ const SubscriptionsCardContent: React.FC<SubscriptionsCardContentProps> = ({
177
219
  <EndSubscriptionButton refresh={handleRefresh} subscriptionId={subscription.id} />
178
220
  </Stack>
179
221
  )}
222
+
223
+ {subscription.state === "ENDED" &&
224
+ hasPermission(user, "subscription.add_subscription") && (
225
+ <Button
226
+ startIcon={<CopyAllOutlinedIcon />}
227
+ variant="outlined"
228
+ onClick={subscribeAgain}
229
+ >
230
+ Subscribe Again
231
+ </Button>
232
+ )}
233
+
180
234
  <CardCloseButton />
181
235
  </Stack>
182
236
  </CardActions>
@@ -5,6 +5,7 @@ import CheckIcon from "@mui/icons-material/Check";
5
5
  import CheckCircleIcon from "@mui/icons-material/CheckCircle";
6
6
  import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
7
7
  import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
8
+ import PriorityHighOutlinedIcon from "@mui/icons-material/PriorityHighOutlined";
8
9
  import { Avatar, Collapse, IconButton, Stack, Table, TableBody } from "@mui/material";
9
10
  import Chip from "@mui/material/Chip";
10
11
  import TableRow from "@mui/material/TableRow";
@@ -98,12 +99,17 @@ export const SubscriptionsListItem: React.FC<SubscriptionsListItemProps> = ({ pe
98
99
  <TableCell>{charge.payment_token?.method}</TableCell>
99
100
  <TableCell align="right">
100
101
  <Stack direction="row" justifyContent="end">
101
- {/* TODO correct icon */}
102
102
  {/* TODO Retry button, date_confirmed != null */}
103
103
  {charge.reason}
104
- <Avatar sx={{ bgcolor: "success.light", width: 18, height: 18 }}>
105
- <CheckIcon sx={{ width: 12, height: 12 }} />
106
- </Avatar>
104
+ {charge.reason === "" ? (
105
+ <Avatar sx={{ bgcolor: "success.light", width: 18, height: 18, ml: 1 }}>
106
+ <CheckIcon sx={{ width: 12, height: 12 }} />
107
+ </Avatar>
108
+ ) : (
109
+ <Avatar sx={{ bgcolor: "error.light", width: 18, height: 18, ml: 1 }}>
110
+ <PriorityHighOutlinedIcon sx={{ width: 12, height: 12 }} />
111
+ </Avatar>
112
+ )}
107
113
  </Stack>
108
114
  </TableCell>
109
115
 
@@ -1,41 +1,116 @@
1
- import React from "react";
1
+ import React, { useCallback, useState } from "react";
2
2
 
3
+ import DeleteOutlineOutlinedIcon from "@mui/icons-material/DeleteOutlineOutlined";
4
+ import { TableBody, TableRow } from "@mui/material";
5
+ import IconButton from "@mui/material/IconButton";
3
6
  import Typography from "@mui/material/Typography";
4
- import { Stack } from "@mui/system";
5
7
 
6
8
  import { DateTime } from "luxon";
9
+ import { useSnackbar } from "notistack";
7
10
 
8
- import Card from "../../../components/Card";
9
- import { CardContent } from "../../../components/Card/CardContent";
10
- import CardHeader from "../../../components/Card/CardHeader";
11
+ import Table from "../../../components/Table";
12
+ import { TableCell } from "../../../components/Table/TableCell";
13
+ import TableHeading from "../../../components/Table/TableHeading";
14
+ import TableCard from "../../../components/TableCard";
15
+ import TableCardHeader from "../../../components/TableCardHeader";
16
+ import { useApi } from "../../../contexts/ApiContext";
17
+ import { useDialog } from "../../../contexts/DialogContext";
18
+ import { useI18n } from "../../../contexts/I18nContext";
19
+ import { useUser } from "../../../contexts/UserContext";
11
20
  import { ContribComponent, LimitOffset } from "../../../types";
21
+ import { hasPermission } from "../../../util/has_permission";
12
22
  import { getHumanReadablePaymentMethod } from "../../pos/utils/getHumanReadablePaymentMethod";
13
23
  import { PaymentMethod } from "../types/paymentMethod";
14
24
  import { paymentMethodMask } from "../utils/paymentMethodMask";
15
25
 
16
26
  const PaymentMethodsCard: ContribComponent<LimitOffset<PaymentMethod>> = ({
17
- data: { next: _next, previous: _previous, results },
27
+ data: { next: _next, previous: _previous, results: initialResults },
28
+ params,
29
+ refresh,
18
30
  }) => {
19
- if (results.length === 0) return null;
31
+ const results = initialResults.filter((method) => !method.is_revoked);
32
+
33
+ const openDialog = useDialog();
34
+ const api = useApi();
35
+ const { t } = useI18n();
36
+ const { user } = useUser();
37
+ const { enqueueSnackbar } = useSnackbar();
38
+
39
+ const isEditable = hasPermission(user, "pos.delete_paymenttoken") && results.length > 0;
40
+ const [isEditing, setIsEditing] = useState(false);
41
+
42
+ const { membership_number } = params as { membership_number?: number };
43
+
44
+ const revoke = useCallback(
45
+ async (token_id: number) => {
46
+ if (
47
+ await openDialog(
48
+ t("Revoke Payment Method"),
49
+ t("Are you sure you want to revoke this member's payment method?"),
50
+ {
51
+ ok: t("Yes, revoke"),
52
+ cancel: t("Cancel"),
53
+ },
54
+ )
55
+ ) {
56
+ const action = api.operations["pos.contrib:member-paymenttoken-revoke"];
57
+ if (!action) {
58
+ throw new Error('Invalid action "pos.contrib:member-paymenttoken-revoke".');
59
+ }
60
+
61
+ const response = await action.call({ params: { membership_number, token_id } });
62
+ if (response.ok) {
63
+ refresh();
64
+ setIsEditing(false);
65
+ enqueueSnackbar(t("Payment method revoked"), { variant: "success" });
66
+ } else {
67
+ console.error("[REVOKE_PAYMENT_METHOD]", response);
68
+ enqueueSnackbar(t("Failed to revoke payment method"), { variant: "error" });
69
+ }
70
+ }
71
+ },
72
+ [api, results],
73
+ );
20
74
 
21
75
  return (
22
- <Card>
23
- <CardHeader title="Payment Methods" />
24
-
25
- <CardContent>
26
- {results
27
- .filter((method) => !method.is_revoked)
28
- .map((method) => (
29
- <Stack key={method.id + method.method} direction="row" justifyContent="space-between">
30
- <Typography fontWeight={600}>
31
- {getHumanReadablePaymentMethod(method.method)?.name ?? method.method}
32
- </Typography>
33
- <Typography>{paymentMethodMask(method)}</Typography>
34
- <Typography>{DateTime.fromISO(method.expiry_date).toFormat("MM/yy")}</Typography>
35
- </Stack>
36
- ))}
37
- </CardContent>
38
- </Card>
76
+ <TableCard>
77
+ <TableCardHeader
78
+ isEditable={isEditable}
79
+ title="Payment Methods"
80
+ toggled={isEditing}
81
+ onChange={setIsEditing}
82
+ />
83
+ <Table count={results.length}>
84
+ <TableBody
85
+ sx={{ ".MuiTableRow-root:last-child > .MuiTableCell-root": { borderBottom: "none" } }}
86
+ >
87
+ {results.length > 0 ? (
88
+ results.map((method) => (
89
+ <TableRow key={method.id}>
90
+ <TableHeading>
91
+ {getHumanReadablePaymentMethod(method.method)?.name ?? method.method}
92
+ </TableHeading>
93
+ <TableCell>{paymentMethodMask(method)}</TableCell>
94
+ <TableCell align="right">
95
+ {DateTime.fromISO(method.expiry_date).toFormat("MM/yy")}
96
+ </TableCell>
97
+ {isEditable && isEditing && (
98
+ <TableCell align="right" padding="none" sx={{ width: 64 }}>
99
+ <IconButton onClick={() => revoke(method.id)}>
100
+ <DeleteOutlineOutlinedIcon fontSize="small" />
101
+ </IconButton>
102
+ </TableCell>
103
+ )}
104
+ </TableRow>
105
+ ))
106
+ ) : (
107
+ <Typography color="text.disabled" fontStyle="italic" m="0 1em 1em 1em">
108
+ No payment methods registered
109
+ </Typography>
110
+ )}
111
+ </TableBody>
112
+ </Table>
113
+ </TableCard>
39
114
  );
40
115
  };
41
116
 
@@ -12,9 +12,11 @@ import { Subscription } from "../types/subscription";
12
12
 
13
13
  const SubscriptionsCard: ContribComponent<LimitOffset<Subscription>> = ({
14
14
  data: { next: _next, previous: _previous, results },
15
+ params,
15
16
  refresh,
16
17
  }) => {
17
18
  const { user } = useUser();
19
+ const { membership_number } = params as { membership_number?: number };
18
20
 
19
21
  return (
20
22
  <Grid container columns={12} spacing={3} width={"100%"}>
@@ -47,7 +49,11 @@ const SubscriptionsCard: ContribComponent<LimitOffset<Subscription>> = ({
47
49
  )}
48
50
  </CardHeader>
49
51
 
50
- <SubscriptionsCardContent refresh={refresh} subscription={subscription} />
52
+ <SubscriptionsCardContent
53
+ membership_number={membership_number}
54
+ refresh={refresh}
55
+ subscription={subscription}
56
+ />
51
57
  </Card>
52
58
  ))}
53
59
  </Grid>
@@ -1,13 +1,7 @@
1
1
  import { PaymentMethod } from "../types/paymentMethod";
2
2
 
3
3
  export const paymentMethodMask = (method: PaymentMethod) => {
4
- switch (method.method.toLowerCase()) {
5
- case "visa":
6
- case "mc":
7
- case "mastercard":
8
- case "amex":
9
- return `•••• •••• •••• ${method.summary}`;
10
- default:
11
- return method.summary;
12
- }
4
+ return method.method.toLowerCase().match(/.*(visa|mastercard|american express).*/)
5
+ ? `•••• •••• •••• ${method.summary}`
6
+ : method.summary;
13
7
  };
@@ -1,6 +1,8 @@
1
1
  import React, { useEffect, useState } from "react";
2
2
 
3
+ import ListAltOutlinedIcon from "@mui/icons-material/ListAltOutlined";
3
4
  import Checkbox from "@mui/material/Checkbox";
5
+ import IconButton from "@mui/material/IconButton";
4
6
  import Input from "@mui/material/Input";
5
7
  import Table from "@mui/material/Table";
6
8
  import TableBody from "@mui/material/TableBody";
@@ -10,8 +12,9 @@ import Typography from "@mui/material/Typography";
10
12
  import { TableCell } from "../../../components/Table/TableCell";
11
13
  import TableHead from "../../../components/Table/TableHead";
12
14
  import TableHeading from "../../../components/Table/TableHeading";
15
+ import { useDialog } from "../../../contexts/DialogContext";
13
16
  import { useI18n } from "../../../contexts/I18nContext";
14
- import { Adjustment, Line } from "../types/purchase";
17
+ import { Adjustment, ItemProperties, Line } from "../types/purchase";
15
18
 
16
19
  export const HIDDEN_ITEM_TYPES = ["SHIPPING", "PICKUP"];
17
20
 
@@ -30,6 +33,7 @@ export const ReceiptTable: React.FC<ReceiptTableProps> = ({
30
33
  }) => {
31
34
  const [selected, setSelected] = useState<Line[]>([]);
32
35
  const { t } = useI18n();
36
+ const openDialog = useDialog();
33
37
 
34
38
  const refundableLines = lines.filter((line) =>
35
39
  Boolean(line.adjustments.reduce((t, v) => t + v.quantity, line.quantity)),
@@ -71,6 +75,24 @@ export const ReceiptTable: React.FC<ReceiptTableProps> = ({
71
75
  if (onSelect != null) onSelect(selected);
72
76
  }, [onSelect, selected]);
73
77
 
78
+ const showItemProperties = async (title: string, itemProperties: ItemProperties) => {
79
+ await openDialog(
80
+ title,
81
+ <Table size="small" sx={{ "& td": { border: 0 } }}>
82
+ {Object.entries(itemProperties ?? {}).map(([key, value]) => (
83
+ <TableRow key={key}>
84
+ <TableCell variant="head">{key.toUpperCase()}</TableCell>
85
+ <TableCell variant="body">{`${value}`}</TableCell>
86
+ </TableRow>
87
+ ))}
88
+ </Table>,
89
+ {
90
+ ok: false,
91
+ cancel: "Close",
92
+ },
93
+ );
94
+ };
95
+
74
96
  return (
75
97
  <Table>
76
98
  <TableHead>
@@ -148,6 +170,17 @@ export const ReceiptTable: React.FC<ReceiptTableProps> = ({
148
170
  <TableCell align="left">
149
171
  <Typography fontSize="0.875rem" paddingLeft={subLine ? 2 : undefined}>
150
172
  {line.title}
173
+ {line.item_properties && (
174
+ <IconButton
175
+ aria-label="Show line item properties"
176
+ size="small"
177
+ onClick={() =>
178
+ showItemProperties(line.title, line.item_properties as ItemProperties)
179
+ }
180
+ >
181
+ <ListAltOutlinedIcon fontSize="small" />
182
+ </IconButton>
183
+ )}
151
184
  </Typography>
152
185
  </TableCell>
153
186
  <TableCell align="left">
@@ -34,9 +34,12 @@ export interface PurchaseDetail {
34
34
  lines: Line[];
35
35
  }
36
36
 
37
+ export type ItemProperties = Record<string, string | number | boolean>;
38
+
37
39
  export interface Line {
38
40
  line_number: number;
39
41
  item_type: string;
42
+ item_properties?: ItemProperties;
40
43
  title: string;
41
44
  reference: string;
42
45
  quantity: number;