bananas-commerce-admin 0.18.9 → 0.19.0

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 (35) hide show
  1. package/dist/esm/extensions/member/components/MemberDetailCard.js +6 -0
  2. package/dist/esm/extensions/member/components/MemberDetailCard.js.map +1 -1
  3. package/dist/esm/extensions/member/components/MemberMetaCard.js +3 -0
  4. package/dist/esm/extensions/member/components/MemberMetaCard.js.map +1 -1
  5. package/dist/esm/extensions/member/pages/member/detail.js +6 -1
  6. package/dist/esm/extensions/member/pages/member/detail.js.map +1 -1
  7. package/dist/esm/extensions/member/pages/member/list.js +7 -2
  8. package/dist/esm/extensions/member/pages/member/list.js.map +1 -1
  9. package/dist/esm/extensions/member/types/member.js +5 -1
  10. package/dist/esm/extensions/member/types/member.js.map +1 -1
  11. package/dist/esm/extensions/member/utils/customerTypeIcon.js +10 -0
  12. package/dist/esm/extensions/member/utils/customerTypeIcon.js.map +1 -0
  13. package/dist/esm/extensions/pos/components/PurchaseRow.js +2 -2
  14. package/dist/esm/extensions/pos/components/PurchaseRow.js.map +1 -1
  15. package/dist/esm/util/format_string.js +9 -0
  16. package/dist/esm/util/format_string.js.map +1 -0
  17. package/dist/types/extensions/member/components/MemberDetailCard.d.ts +3 -1
  18. package/dist/types/extensions/member/types/member.d.ts +8 -0
  19. package/dist/types/extensions/member/utils/customerTypeIcon.d.ts +3 -0
  20. package/dist/types/types/index.d.ts +7 -0
  21. package/dist/types/util/format_string.d.ts +2 -0
  22. package/package.json +1 -1
  23. package/src/extensions/member/components/MemberDetailCard.tsx +18 -1
  24. package/src/extensions/member/components/MemberMetaCard.tsx +9 -0
  25. package/src/extensions/member/pages/member/detail.tsx +11 -1
  26. package/src/extensions/member/pages/member/list.tsx +9 -2
  27. package/src/extensions/member/types/member.ts +9 -0
  28. package/src/extensions/member/utils/customerTypeIcon.tsx +12 -0
  29. package/src/extensions/pos/components/PurchaseRow.tsx +2 -2
  30. package/src/types/index.ts +8 -0
  31. package/src/util/format_string.ts +11 -0
  32. package/dist/esm/util/format_purchase_name.js +0 -9
  33. package/dist/esm/util/format_purchase_name.js.map +0 -1
  34. package/dist/types/util/format_purchase_name.d.ts +0 -2
  35. package/src/util/format_purchase_name.ts +0 -11
@@ -13,6 +13,7 @@ import { useApi } from "../../../contexts/ApiContext";
13
13
  import { useI18n } from "../../../contexts/I18nContext";
14
14
  import { useUser } from "../../../contexts/UserContext";
15
15
  import { hasPermission } from "../../../util/has_permission";
16
+ import { CustomerType } from "../types/member";
16
17
  export const MemberDetailCard = (props) => {
17
18
  const params = useParams();
18
19
  const api = useApi();
@@ -58,6 +59,8 @@ export const MemberDetailCard = (props) => {
58
59
  const member = props.member ?? {
59
60
  id: "",
60
61
  number: "",
62
+ customer_type: "",
63
+ company_name: "",
61
64
  given_name: "",
62
65
  family_name: "",
63
66
  email: "",
@@ -74,9 +77,12 @@ export const MemberDetailCard = (props) => {
74
77
  origin: "",
75
78
  date_verified: "",
76
79
  };
80
+ const isCompany = member.customer_type === CustomerType.COMPANY;
77
81
  return (React.createElement(Card, { columns: 6, isEditable: hasPermission(user, "member.change_member"), onSubmit: handleSave },
78
82
  React.createElement(CardHeader, { title: t("Contact Details") }),
79
83
  React.createElement(CardContent, null,
84
+ isCompany && (React.createElement(CardRow, null,
85
+ React.createElement(CardFieldText, { formName: "company_name", label: t("Company name"), required: isCompany, size: 6, value: member.company_name }))),
80
86
  React.createElement(CardRow, null,
81
87
  React.createElement(CardFieldText, { formName: "given_name", label: t("First Name"), required: true, size: 3, value: member.given_name }),
82
88
  React.createElement(CardFieldText, { formName: "family_name", label: t("Last Name"), required: true, size: 3, value: member.family_name })),
@@ -1 +1 @@
1
- {"version":3,"file":"MemberDetailCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/MemberDetailCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemberDetailCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/MemberDetailCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAC5C,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,aAAa,MAAM,wCAAwC,CAAC;AACnE,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAgC7D,MAAM,CAAC,MAAM,gBAAgB,GAA8B,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,MAAM,UAAU,GAAG,KAAK,EAAE,MAAkC,EAAE,EAAE;QAC9D,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAE3B,MAAM,aAAa,GAAG;YACpB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACrD,sEAAsE;gBACtE,IAAI,KAAK,IAAI,IAAI;oBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM;YACN,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC/B,OAAO,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI;QAC7B,EAAE,EAAE,EAAE;QACN,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;QACT,eAAe,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,eAAe,EAAE,EAAE;YACnB,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,EAAE;YACR,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACZ;QACD,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,EAAE;KAClB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,KAAK,YAAY,CAAC,OAAO,CAAC;IAEhE,OAAO,CACL,oBAAC,IAAI,IACH,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,sBAAsB,CAAC,EACvD,QAAQ,EAAE,UAAU;QAEpB,oBAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAI;QAE3C,oBAAC,WAAW;YACT,SAAS,IAAI,CACZ,oBAAC,OAAO;gBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EACxB,QAAQ,EAAE,SAAS,EACnB,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC,YAAY,GAC1B,CACM,CACX;YACD,oBAAC,OAAO;gBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,YAAY,EACrB,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EACtB,QAAQ,EAAE,IAAI,EACd,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC,UAAU,GACxB;gBAEF,oBAAC,aAAa,IACZ,QAAQ,EAAC,aAAa,EACtB,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EACrB,QAAQ,EAAE,IAAI,EACd,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC,WAAW,GACzB,CACM;YAEV,oBAAC,OAAO;gBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,OAAO,EAChB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EACjB,QAAQ,EAAE,IAAI,EACd,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC,KAAK,GACnB;gBACF,oBAAC,aAAa,IAAC,QAAQ,EAAC,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,CAC3E;YAEV,oBAAC,OAAO;gBACN,oBAAC,gBAAgB,IACf,QAAQ,EAAC,iBAAiB,EAC1B,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,6BAA6B,CAAC,EAC9D,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EACnB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,eAAe,GAC7B,CACM,CACE;QAEd,oBAAC,WAAW;YACV,oBAAC,gBAAgB,OAAG;YACpB,oBAAC,cAAc,OAAG,CACN,CACT,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -13,6 +13,7 @@ export const MemberMetaCard = (props) => {
13
13
  const { t } = useI18n();
14
14
  const member = props.member ?? {
15
15
  number: "",
16
+ customer_type: "",
16
17
  site_code: "",
17
18
  origin: "",
18
19
  locale: "",
@@ -25,6 +26,8 @@ export const MemberMetaCard = (props) => {
25
26
  React.createElement(CardContent, null,
26
27
  React.createElement(CardRow, null,
27
28
  React.createElement(CardFieldText, { formName: "number", label: t("Membership Number"), required: true, value: String(member.number) })),
29
+ React.createElement(CardRow, null,
30
+ React.createElement(CardFieldText, { formName: "customer_type", label: t("Customer type"), required: true, value: member.customer_type })),
28
31
  React.createElement(CardRow, null,
29
32
  React.createElement(CardFieldText, { formName: "site", label: t("Site"), required: true, value: member.site_code })),
30
33
  React.createElement(CardRow, null,
@@ -1 +1 @@
1
- {"version":3,"file":"MemberMetaCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/MemberMetaCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAC5C,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,aAAa,MAAM,wCAAwC,CAAC;AACnE,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAOxD,MAAM,CAAC,MAAM,cAAc,GAA8B,CAAC,KAAK,EAAE,EAAE;IACjE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI;QAC7B,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,OAAO,CACL;QACE,oBAAC,IAAI,IAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK;YACtC,oBAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,GAAI;YAEvC,oBAAC,WAAW;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,QAAQ,EACjB,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAC7B,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAC5B,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAChB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,SAAS,GACvB,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,QAAQ,EACjB,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,EAClB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,GACpB,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,EACpB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,GACpB,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EACxB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,YAAsB,CAAC,CAAC,SAAS,EAAE,IAAI,SAAS,GAC/E,CACM,CACE;YACd,oBAAC,WAAW;gBACV,oBAAC,gBAAgB,OAAG;gBACpB,oBAAC,cAAc,OAAG,CACN,CACT,CACN,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"MemberMetaCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/MemberMetaCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAC5C,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,aAAa,MAAM,wCAAwC,CAAC;AACnE,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAOxD,MAAM,CAAC,MAAM,cAAc,GAA8B,CAAC,KAAK,EAAE,EAAE;IACjE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI;QAC7B,MAAM,EAAE,EAAE;QACV,aAAa,EAAE,EAAE;QACjB,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,OAAO,CACL;QACE,oBAAC,IAAI,IAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK;YACtC,oBAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,GAAI;YAEvC,oBAAC,WAAW;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,QAAQ,EACjB,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAC7B,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAC5B,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,eAAe,EACxB,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,EACzB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,aAAa,GAC3B,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAChB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,SAAS,GACvB,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,QAAQ,EACjB,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,EAClB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,GACpB,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,EACpB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,GACpB,CACM;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EACxB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,YAAsB,CAAC,CAAC,SAAS,EAAE,IAAI,SAAS,GAC/E,CACM,CACE;YACd,oBAAC,WAAW;gBACV,oBAAC,gBAAgB,OAAG;gBACpB,oBAAC,cAAc,OAAG,CACN,CACT,CACN,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from "react";
2
2
  import CardMembershipIcon from "@mui/icons-material/CardMembership";
3
+ import { Box, Stack } from "@mui/material";
3
4
  import { ContribInlines } from "../../../../components/ContribInlines";
4
5
  import { Header } from "../../../../components/Header";
5
6
  import { Page } from "../../../../components/Page";
@@ -9,13 +10,17 @@ import { TabPanels } from "../../../../components/TabPanels";
9
10
  import { Tabs } from "../../../../components/Tabs";
10
11
  import { TitleBar } from "../../../../components/TitleBar";
11
12
  import Content, { LeftColumn, RightColumn } from "../../../../containers/Content";
13
+ import { formatCustomerName } from "../../../../util/format_string";
12
14
  import { MemberDetailCard } from "../../components/MemberDetailCard";
13
15
  import MemberMetaCard from "../../components/MemberMetaCard";
16
+ import { CustomerTypeIcon } from "../../utils/customerTypeIcon";
14
17
  const MemberDetailPage = ({ data }) => {
15
18
  const [member, setMember] = useState(data);
16
19
  return (React.createElement(Page, null,
17
20
  React.createElement(Header, { variant: "opaque" },
18
- React.createElement(TitleBar, { title: `${data.given_name} ${data.family_name}` }),
21
+ React.createElement(TitleBar, { title: React.createElement(Stack, { alignItems: "center", direction: "row", spacing: 1 },
22
+ CustomerTypeIcon(member.customer_type),
23
+ React.createElement(Box, { component: "span" }, formatCustomerName(member))) }),
19
24
  React.createElement(Tabs, { data: member },
20
25
  React.createElement(Tab, { key: "default", icon: React.createElement(CardMembershipIcon, null), label: "Member", value: "default" }))),
21
26
  React.createElement(TabPanels, { contribParams: { membership_number: member.number } },
@@ -1 +1 @@
1
- {"version":3,"file":"detail.js","sourceRoot":"","sources":["../../../../../../src/extensions/member/pages/member/detail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAG7D,MAAM,gBAAgB,GAAgC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE3C,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,MAAM,IAAC,OAAO,EAAC,QAAQ;YACtB,oBAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,GAAI;YAC7D,oBAAC,IAAI,IAAC,IAAI,EAAE,MAAM;gBAChB,oBAAC,GAAG,IAAC,GAAG,EAAC,SAAS,EAAC,IAAI,EAAE,oBAAC,kBAAkB,OAAG,EAAE,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,SAAS,GAAG,CAC7E,CACA;QAET,oBAAC,SAAS,IAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE;YAC5D,oBAAC,QAAQ,IAAC,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS;gBACrC,oBAAC,OAAO,IAAC,MAAM,EAAC,YAAY;oBAC1B,oBAAC,UAAU;wBACT,oBAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAI;wBAC1D,oBAAC,cAAc,IACb,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,EAClE,IAAI,EAAE,IAAI,GACV,CACS;oBAEb,oBAAC,WAAW;wBACV,oBAAC,cAAc,IAAC,MAAM,EAAE,MAAM,GAAI,CACtB,CACN,CACD,CACD,CACP,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"detail.js","sourceRoot":"","sources":["../../../../../../src/extensions/member/pages/member/detail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,gBAAgB,GAAgC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE3C,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,MAAM,IAAC,OAAO,EAAC,QAAQ;YACtB,oBAAC,QAAQ,IACP,KAAK,EACH,oBAAC,KAAK,IAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,EAAE,CAAC;oBAClD,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC;oBACvC,oBAAC,GAAG,IAAC,SAAS,EAAC,MAAM,IAAE,kBAAkB,CAAC,MAAM,CAAC,CAAO,CAClD,GAEV;YACF,oBAAC,IAAI,IAAC,IAAI,EAAE,MAAM;gBAChB,oBAAC,GAAG,IAAC,GAAG,EAAC,SAAS,EAAC,IAAI,EAAE,oBAAC,kBAAkB,OAAG,EAAE,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,SAAS,GAAG,CAC7E,CACA;QAET,oBAAC,SAAS,IAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE;YAC5D,oBAAC,QAAQ,IAAC,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS;gBACrC,oBAAC,OAAO,IAAC,MAAM,EAAC,YAAY;oBAC1B,oBAAC,UAAU;wBACT,oBAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAI;wBAC1D,oBAAC,cAAc,IACb,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,EAClE,IAAI,EAAE,IAAI,GACV,CACS;oBAEb,oBAAC,WAAW;wBACV,oBAAC,cAAc,IAAC,MAAM,EAAE,MAAM,GAAI,CACtB,CACN,CACD,CACD,CACP,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { TableBody } from "@mui/material";
2
+ import { Box, Stack, TableBody } from "@mui/material";
3
3
  import { Header } from "../../../../components/Header";
4
4
  import { Page } from "../../../../components/Page";
5
5
  import SearchBar from "../../../../components/SearchBar";
@@ -13,6 +13,8 @@ import { TitleBar } from "../../../../components/TitleBar";
13
13
  import Content from "../../../../containers/Content";
14
14
  import { useI18n } from "../../../../contexts/I18nContext";
15
15
  import { useRouter } from "../../../../contexts/RouterContext";
16
+ import { formatCustomerName } from "../../../../util/format_string";
17
+ import { CustomerTypeIcon } from "../../utils/customerTypeIcon";
16
18
  const MemberListPage = ({ data }) => {
17
19
  const { t } = useI18n();
18
20
  const { navigate } = useRouter();
@@ -45,7 +47,10 @@ const MemberListPage = ({ data }) => {
45
47
  React.createElement(TableHeading, null, t("Site"))),
46
48
  React.createElement(TableBody, null, data?.results.map((member) => (React.createElement(NavigatingTableRow, { key: member.id, route: "member.member:detail", routeParams: { id: member.id } },
47
49
  React.createElement(TableCell, null, member.number),
48
- React.createElement(TableCell, null, `${member.given_name} ${member.family_name}`),
50
+ React.createElement(TableCell, null,
51
+ React.createElement(Stack, { alignItems: "center", direction: "row", spacing: 1 },
52
+ CustomerTypeIcon(member.customer_type),
53
+ React.createElement(Box, { component: "span" }, formatCustomerName(member)))),
49
54
  React.createElement(TableCell, null, member.phone ?? "—"),
50
55
  React.createElement(TableCell, null, member.email),
51
56
  React.createElement(TableCell, null, member.site_code))))))))));
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../../src/extensions/member/pages/member/list.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../../src/extensions/member/pages/member/list.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
1
- export {};
1
+ export var CustomerType;
2
+ (function (CustomerType) {
3
+ CustomerType["PRIVATE"] = "PRIVATE";
4
+ CustomerType["COMPANY"] = "COMPANY";
5
+ })(CustomerType || (CustomerType = {}));
2
6
  //# sourceMappingURL=member.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"member.js","sourceRoot":"","sources":["../../../../../src/extensions/member/types/member.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"member.js","sourceRoot":"","sources":["../../../../../src/extensions/member/types/member.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { BusinessCenterOutlined, PersonOutlineOutlined } from "@mui/icons-material";
3
+ import { CustomerType } from "../types/member";
4
+ export const CustomerTypeIcon = (type) => {
5
+ if (type === CustomerType.COMPANY) {
6
+ return React.createElement(BusinessCenterOutlined, { fontSize: "small" });
7
+ }
8
+ return React.createElement(PersonOutlineOutlined, { fontSize: "small" });
9
+ };
10
+ //# sourceMappingURL=customerTypeIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customerTypeIcon.js","sourceRoot":"","sources":["../../../../../src/extensions/member/utils/customerTypeIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAkB,EAAE,EAAE;IACrD,IAAI,IAAI,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,oBAAC,sBAAsB,IAAC,QAAQ,EAAC,OAAO,GAAG,CAAC;IACrD,CAAC;IACD,OAAO,oBAAC,qBAAqB,IAAC,QAAQ,EAAC,OAAO,GAAG,CAAC;AACpD,CAAC,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import React from "react";
2
2
  import { TableCell } from "../../../components/Table/TableCell";
3
3
  import { NavigatingTableRow } from "../../../components/Table/TableRow";
4
- import { formatPurchaseName } from "../../../util/format_purchase_name";
5
4
  import { formatPurchaseNumber } from "../../../util/format_purchase_number";
5
+ import { formatCustomerName } from "../../../util/format_string";
6
6
  export const PurchaseRow = ({ purchase }) => (React.createElement(NavigatingTableRow, { route: "pos.purchase:detail", routeParams: { purchase_number: purchase.number } },
7
7
  React.createElement(TableCell, null, formatPurchaseNumber(purchase.number)),
8
- React.createElement(TableCell, null, formatPurchaseName(purchase)),
8
+ React.createElement(TableCell, null, formatCustomerName(purchase)),
9
9
  React.createElement(TableCell, null, purchase.email),
10
10
  React.createElement(TableCell, null, purchase.phone),
11
11
  React.createElement(TableCell, null, new Date(purchase.date_confirmed).toLocaleString("sv-SE", {
@@ -1 +1 @@
1
- {"version":3,"file":"PurchaseRow.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/components/PurchaseRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAO5E,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACvE,oBAAC,kBAAkB,IACjB,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE;IAEjD,oBAAC,SAAS,QAAE,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAa;IAC9D,oBAAC,SAAS,QAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAa;IACrD,oBAAC,SAAS,QAAE,QAAQ,CAAC,KAAK,CAAa;IACvC,oBAAC,SAAS,QAAE,QAAQ,CAAC,KAAK,CAAa;IACvC,oBAAC,SAAS,QACP,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;QACzD,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CACQ,CACO,CACtB,CAAC"}
1
+ {"version":3,"file":"PurchaseRow.js","sourceRoot":"","sources":["../../../../../src/extensions/pos/components/PurchaseRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAOjE,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACvE,oBAAC,kBAAkB,IACjB,KAAK,EAAC,qBAAqB,EAC3B,WAAW,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE;IAEjD,oBAAC,SAAS,QAAE,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAa;IAC9D,oBAAC,SAAS,QAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAa;IACrD,oBAAC,SAAS,QAAE,QAAQ,CAAC,KAAK,CAAa;IACvC,oBAAC,SAAS,QAAE,QAAQ,CAAC,KAAK,CAAa;IACvC,oBAAC,SAAS,QACP,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;QACzD,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CACQ,CACO,CACtB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export function formatCustomerName(contact) {
2
+ if (contact.company_name)
3
+ return contact.company_name;
4
+ if (contact.given_name && contact.family_name) {
5
+ return `${contact.given_name} ${contact.family_name}`;
6
+ }
7
+ return contact.given_name || contact.family_name || "—";
8
+ }
9
+ //# sourceMappingURL=format_string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format_string.js","sourceRoot":"","sources":["../../../src/util/format_string.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,OAAO,CAAC,YAAY,CAAC;IAEtD,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;AAC1D,CAAC"}
@@ -1,10 +1,12 @@
1
1
  import React from "react";
2
- import { MemberDetail } from "../types/member";
2
+ import { CustomerType, MemberDetail } from "../types/member";
3
3
  export interface MemberCardProps {
4
4
  member: MemberDetail;
5
5
  onUpdated: (member: MemberDetail) => void;
6
6
  }
7
7
  export interface MemberDetailCardFormValues {
8
+ customer_type: CustomerType;
9
+ company_name: string;
8
10
  given_name: string;
9
11
  family_name: string;
10
12
  email: string;
@@ -1,6 +1,12 @@
1
+ export declare enum CustomerType {
2
+ PRIVATE = "PRIVATE",
3
+ COMPANY = "COMPANY"
4
+ }
1
5
  export interface MemberList {
2
6
  id: number;
3
7
  number: number;
8
+ customer_type: CustomerType;
9
+ company_name: string;
4
10
  given_name: string;
5
11
  family_name: string;
6
12
  email: string;
@@ -10,6 +16,8 @@ export interface MemberList {
10
16
  export interface MemberDetail {
11
17
  id: number;
12
18
  number: number;
19
+ customer_type: CustomerType;
20
+ company_name: string;
13
21
  given_name: string;
14
22
  family_name: string;
15
23
  email: string;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import { CustomerType } from "../types/member";
3
+ export declare const CustomerTypeIcon: (type: CustomerType) => React.JSX.Element;
@@ -117,3 +117,10 @@ export interface LimitOffset<T> {
117
117
  results: T[];
118
118
  count: number;
119
119
  }
120
+ export interface Contact {
121
+ email: string;
122
+ phone?: string;
123
+ company_name: string;
124
+ given_name: string;
125
+ family_name: string;
126
+ }
@@ -0,0 +1,2 @@
1
+ import { Contact } from "../types";
2
+ export declare function formatCustomerName(contact: Contact): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bananas-commerce-admin",
3
- "version": "0.18.9",
3
+ "version": "0.19.0",
4
4
  "description": "What's this, an admin for apes?",
5
5
  "keywords": [
6
6
  "admin",
@@ -14,7 +14,7 @@ import { useApi } from "../../../contexts/ApiContext";
14
14
  import { useI18n } from "../../../contexts/I18nContext";
15
15
  import { useUser } from "../../../contexts/UserContext";
16
16
  import { hasPermission } from "../../../util/has_permission";
17
- import { MemberDetail } from "../types/member";
17
+ import { CustomerType, MemberDetail } from "../types/member";
18
18
 
19
19
  export interface MemberCardProps {
20
20
  member: MemberDetail;
@@ -22,6 +22,8 @@ export interface MemberCardProps {
22
22
  }
23
23
 
24
24
  export interface MemberDetailCardFormValues {
25
+ customer_type: CustomerType;
26
+ company_name: string;
25
27
  given_name: string;
26
28
  family_name: string;
27
29
  email: string;
@@ -94,6 +96,8 @@ export const MemberDetailCard: React.FC<MemberCardProps> = (props) => {
94
96
  const member = props.member ?? {
95
97
  id: "",
96
98
  number: "",
99
+ customer_type: "",
100
+ company_name: "",
97
101
  given_name: "",
98
102
  family_name: "",
99
103
  email: "",
@@ -111,6 +115,8 @@ export const MemberDetailCard: React.FC<MemberCardProps> = (props) => {
111
115
  date_verified: "",
112
116
  };
113
117
 
118
+ const isCompany = member.customer_type === CustomerType.COMPANY;
119
+
114
120
  return (
115
121
  <Card<MemberDetailCardFormValues>
116
122
  columns={6}
@@ -120,6 +126,17 @@ export const MemberDetailCard: React.FC<MemberCardProps> = (props) => {
120
126
  <CardHeader title={t("Contact Details")} />
121
127
 
122
128
  <CardContent>
129
+ {isCompany && (
130
+ <CardRow>
131
+ <CardFieldText
132
+ formName="company_name"
133
+ label={t("Company name")}
134
+ required={isCompany}
135
+ size={6}
136
+ value={member.company_name}
137
+ />
138
+ </CardRow>
139
+ )}
123
140
  <CardRow>
124
141
  <CardFieldText
125
142
  formName="given_name"
@@ -22,6 +22,7 @@ export const MemberMetaCard: React.FC<MemberCardProps> = (props) => {
22
22
 
23
23
  const member = props.member ?? {
24
24
  number: "",
25
+ customer_type: "",
25
26
  site_code: "",
26
27
  origin: "",
27
28
  locale: "",
@@ -43,6 +44,14 @@ export const MemberMetaCard: React.FC<MemberCardProps> = (props) => {
43
44
  value={String(member.number)}
44
45
  />
45
46
  </CardRow>
47
+ <CardRow>
48
+ <CardFieldText
49
+ formName="customer_type"
50
+ label={t("Customer type")}
51
+ required={true}
52
+ value={member.customer_type}
53
+ />
54
+ </CardRow>
46
55
  <CardRow>
47
56
  <CardFieldText
48
57
  formName="site"
@@ -1,6 +1,7 @@
1
1
  import React, { useState } from "react";
2
2
 
3
3
  import CardMembershipIcon from "@mui/icons-material/CardMembership";
4
+ import { Box, Stack } from "@mui/material";
4
5
 
5
6
  import { ContribInlines } from "../../../../components/ContribInlines";
6
7
  import { Header } from "../../../../components/Header";
@@ -12,9 +13,11 @@ import { Tabs } from "../../../../components/Tabs";
12
13
  import { TitleBar } from "../../../../components/TitleBar";
13
14
  import Content, { LeftColumn, RightColumn } from "../../../../containers/Content";
14
15
  import { PageComponent } from "../../../../types";
16
+ import { formatCustomerName } from "../../../../util/format_string";
15
17
  import { MemberDetailCard } from "../../components/MemberDetailCard";
16
18
  import MemberMetaCard from "../../components/MemberMetaCard";
17
19
  import { MemberDetail } from "../../types/member";
20
+ import { CustomerTypeIcon } from "../../utils/customerTypeIcon";
18
21
 
19
22
  const MemberDetailPage: PageComponent<MemberDetail> = ({ data }) => {
20
23
  const [member, setMember] = useState(data);
@@ -22,7 +25,14 @@ const MemberDetailPage: PageComponent<MemberDetail> = ({ data }) => {
22
25
  return (
23
26
  <Page>
24
27
  <Header variant="opaque">
25
- <TitleBar title={`${data.given_name} ${data.family_name}`} />
28
+ <TitleBar
29
+ title={
30
+ <Stack alignItems="center" direction="row" spacing={1}>
31
+ {CustomerTypeIcon(member.customer_type)}
32
+ <Box component="span">{formatCustomerName(member)}</Box>
33
+ </Stack>
34
+ }
35
+ />
26
36
  <Tabs data={member}>
27
37
  <Tab key="default" icon={<CardMembershipIcon />} label="Member" value="default" />
28
38
  </Tabs>
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
 
3
- import { TableBody } from "@mui/material";
3
+ import { Box, Stack, TableBody } from "@mui/material";
4
4
 
5
5
  import { Header } from "../../../../components/Header";
6
6
  import { Page } from "../../../../components/Page";
@@ -16,7 +16,9 @@ import Content from "../../../../containers/Content";
16
16
  import { useI18n } from "../../../../contexts/I18nContext";
17
17
  import { useRouter } from "../../../../contexts/RouterContext";
18
18
  import { LimitOffset, PageComponent } from "../../../../types";
19
+ import { formatCustomerName } from "../../../../util/format_string";
19
20
  import { MemberList } from "../../types/member";
21
+ import { CustomerTypeIcon } from "../../utils/customerTypeIcon";
20
22
 
21
23
  const MemberListPage: PageComponent<LimitOffset<MemberList>> = ({ data }) => {
22
24
  const { t } = useI18n();
@@ -66,7 +68,12 @@ const MemberListPage: PageComponent<LimitOffset<MemberList>> = ({ data }) => {
66
68
  routeParams={{ id: member.id }}
67
69
  >
68
70
  <TableCell>{member.number}</TableCell>
69
- <TableCell>{`${member.given_name} ${member.family_name}`}</TableCell>
71
+ <TableCell>
72
+ <Stack alignItems="center" direction="row" spacing={1}>
73
+ {CustomerTypeIcon(member.customer_type)}
74
+ <Box component="span">{formatCustomerName(member)}</Box>
75
+ </Stack>
76
+ </TableCell>
70
77
  <TableCell>{member.phone ?? "—"}</TableCell>
71
78
  <TableCell>{member.email}</TableCell>
72
79
  <TableCell>{member.site_code}</TableCell>
@@ -1,6 +1,13 @@
1
+ export enum CustomerType {
2
+ PRIVATE = "PRIVATE",
3
+ COMPANY = "COMPANY",
4
+ }
5
+
1
6
  export interface MemberList {
2
7
  id: number;
3
8
  number: number;
9
+ customer_type: CustomerType;
10
+ company_name: string;
4
11
  given_name: string;
5
12
  family_name: string;
6
13
  email: string;
@@ -11,6 +18,8 @@ export interface MemberList {
11
18
  export interface MemberDetail {
12
19
  id: number;
13
20
  number: number;
21
+ customer_type: CustomerType;
22
+ company_name: string;
14
23
  given_name: string;
15
24
  family_name: string;
16
25
  email: string;
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+
3
+ import { BusinessCenterOutlined, PersonOutlineOutlined } from "@mui/icons-material";
4
+
5
+ import { CustomerType } from "../types/member";
6
+
7
+ export const CustomerTypeIcon = (type: CustomerType) => {
8
+ if (type === CustomerType.COMPANY) {
9
+ return <BusinessCenterOutlined fontSize="small" />;
10
+ }
11
+ return <PersonOutlineOutlined fontSize="small" />;
12
+ };
@@ -2,8 +2,8 @@ import React from "react";
2
2
 
3
3
  import { TableCell } from "../../../components/Table/TableCell";
4
4
  import { NavigatingTableRow } from "../../../components/Table/TableRow";
5
- import { formatPurchaseName } from "../../../util/format_purchase_name";
6
5
  import { formatPurchaseNumber } from "../../../util/format_purchase_number";
6
+ import { formatCustomerName } from "../../../util/format_string";
7
7
  import { PurchaseDetail } from "../types/purchase";
8
8
 
9
9
  export interface PurchaseRowProps {
@@ -16,7 +16,7 @@ export const PurchaseRow: React.FC<PurchaseRowProps> = ({ purchase }) => (
16
16
  routeParams={{ purchase_number: purchase.number }}
17
17
  >
18
18
  <TableCell>{formatPurchaseNumber(purchase.number)}</TableCell>
19
- <TableCell>{formatPurchaseName(purchase)}</TableCell>
19
+ <TableCell>{formatCustomerName(purchase)}</TableCell>
20
20
  <TableCell>{purchase.email}</TableCell>
21
21
  <TableCell>{purchase.phone}</TableCell>
22
22
  <TableCell>
@@ -136,3 +136,11 @@ export interface LimitOffset<T> {
136
136
  results: T[];
137
137
  count: number;
138
138
  }
139
+
140
+ export interface Contact {
141
+ email: string;
142
+ phone?: string;
143
+ company_name: string;
144
+ given_name: string;
145
+ family_name: string;
146
+ }
@@ -0,0 +1,11 @@
1
+ import { Contact } from "../types";
2
+
3
+ export function formatCustomerName(contact: Contact): string {
4
+ if (contact.company_name) return contact.company_name;
5
+
6
+ if (contact.given_name && contact.family_name) {
7
+ return `${contact.given_name} ${contact.family_name}`;
8
+ }
9
+
10
+ return contact.given_name || contact.family_name || "—";
11
+ }
@@ -1,9 +0,0 @@
1
- export function formatPurchaseName(purchase) {
2
- if (purchase.company_name)
3
- return purchase.company_name;
4
- if (purchase.given_name && purchase.family_name) {
5
- return `${purchase.given_name} ${purchase.family_name}`;
6
- }
7
- return purchase.given_name || purchase.family_name || "—";
8
- }
9
- //# sourceMappingURL=format_purchase_name.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format_purchase_name.js","sourceRoot":"","sources":["../../../src/util/format_purchase_name.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IACzD,IAAI,QAAQ,CAAC,YAAY;QAAE,OAAO,QAAQ,CAAC,YAAY,CAAC;IAExD,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAChD,OAAO,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,WAAW,IAAI,GAAG,CAAC;AAC5D,CAAC"}
@@ -1,2 +0,0 @@
1
- import { PurchaseDetail } from "../extensions/pos";
2
- export declare function formatPurchaseName(purchase: PurchaseDetail): string;
@@ -1,11 +0,0 @@
1
- import { PurchaseDetail } from "../extensions/pos";
2
-
3
- export function formatPurchaseName(purchase: PurchaseDetail): string {
4
- if (purchase.company_name) return purchase.company_name;
5
-
6
- if (purchase.given_name && purchase.family_name) {
7
- return `${purchase.given_name} ${purchase.family_name}`;
8
- }
9
-
10
- return purchase.given_name || purchase.family_name || "—";
11
- }