@endora-commerce/mod-returns 0.100.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 (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +60 -0
  3. package/dist/admin/api/returns-client.d.ts +69 -0
  4. package/dist/admin/api/returns-client.d.ts.map +1 -0
  5. package/dist/admin/api/returns-client.js +36 -0
  6. package/dist/admin/api/returns-client.js.map +1 -0
  7. package/dist/admin/index.d.ts +37 -0
  8. package/dist/admin/index.d.ts.map +1 -0
  9. package/dist/admin/index.js +57 -0
  10. package/dist/admin/index.js.map +1 -0
  11. package/dist/admin/pages/ReturnDeliveryMethodsPage.d.ts +5 -0
  12. package/dist/admin/pages/ReturnDeliveryMethodsPage.d.ts.map +1 -0
  13. package/dist/admin/pages/ReturnDeliveryMethodsPage.js +44 -0
  14. package/dist/admin/pages/ReturnDeliveryMethodsPage.js.map +1 -0
  15. package/dist/admin/pages/ReturnDetail.d.ts +5 -0
  16. package/dist/admin/pages/ReturnDetail.d.ts.map +1 -0
  17. package/dist/admin/pages/ReturnDetail.js +115 -0
  18. package/dist/admin/pages/ReturnDetail.js.map +1 -0
  19. package/dist/admin/pages/ReturnReasonsPage.d.ts +5 -0
  20. package/dist/admin/pages/ReturnReasonsPage.d.ts.map +1 -0
  21. package/dist/admin/pages/ReturnReasonsPage.js +44 -0
  22. package/dist/admin/pages/ReturnReasonsPage.js.map +1 -0
  23. package/dist/admin/pages/ReturnStatusesConfigPage.d.ts +5 -0
  24. package/dist/admin/pages/ReturnStatusesConfigPage.d.ts.map +1 -0
  25. package/dist/admin/pages/ReturnStatusesConfigPage.js +71 -0
  26. package/dist/admin/pages/ReturnStatusesConfigPage.js.map +1 -0
  27. package/dist/admin/pages/ReturnsList.d.ts +5 -0
  28. package/dist/admin/pages/ReturnsList.d.ts.map +1 -0
  29. package/dist/admin/pages/ReturnsList.js +189 -0
  30. package/dist/admin/pages/ReturnsList.js.map +1 -0
  31. package/dist/backend/domain/default-reasons.d.ts +14 -0
  32. package/dist/backend/domain/default-reasons.d.ts.map +1 -0
  33. package/dist/backend/domain/default-reasons.js +9 -0
  34. package/dist/backend/domain/default-reasons.js.map +1 -0
  35. package/dist/backend/domain/free-return-window.d.ts +2 -0
  36. package/dist/backend/domain/free-return-window.d.ts.map +1 -0
  37. package/dist/backend/domain/free-return-window.js +19 -0
  38. package/dist/backend/domain/free-return-window.js.map +1 -0
  39. package/dist/backend/domain/refund-math.d.ts +19 -0
  40. package/dist/backend/domain/refund-math.d.ts.map +1 -0
  41. package/dist/backend/domain/refund-math.js +27 -0
  42. package/dist/backend/domain/refund-math.js.map +1 -0
  43. package/dist/backend/domain/return-status-graph.d.ts +91 -0
  44. package/dist/backend/domain/return-status-graph.d.ts.map +1 -0
  45. package/dist/backend/domain/return-status-graph.js +143 -0
  46. package/dist/backend/domain/return-status-graph.js.map +1 -0
  47. package/dist/backend/email-templates/return-authorized.d.ts +11 -0
  48. package/dist/backend/email-templates/return-authorized.d.ts.map +1 -0
  49. package/dist/backend/email-templates/return-authorized.js +18 -0
  50. package/dist/backend/email-templates/return-authorized.js.map +1 -0
  51. package/dist/backend/email-templates/return-rejected.d.ts +11 -0
  52. package/dist/backend/email-templates/return-rejected.d.ts.map +1 -0
  53. package/dist/backend/email-templates/return-rejected.js +20 -0
  54. package/dist/backend/email-templates/return-rejected.js.map +1 -0
  55. package/dist/backend/email-templates/transactional-defaults.d.ts +11 -0
  56. package/dist/backend/email-templates/transactional-defaults.d.ts.map +1 -0
  57. package/dist/backend/email-templates/transactional-defaults.js +64 -0
  58. package/dist/backend/email-templates/transactional-defaults.js.map +1 -0
  59. package/dist/backend/entities/refund.entity.d.ts +41 -0
  60. package/dist/backend/entities/refund.entity.d.ts.map +1 -0
  61. package/dist/backend/entities/refund.entity.js +122 -0
  62. package/dist/backend/entities/refund.entity.js.map +1 -0
  63. package/dist/backend/entities/return-case-attachment.entity.d.ts +16 -0
  64. package/dist/backend/entities/return-case-attachment.entity.d.ts.map +1 -0
  65. package/dist/backend/entities/return-case-attachment.entity.js +53 -0
  66. package/dist/backend/entities/return-case-attachment.entity.js.map +1 -0
  67. package/dist/backend/entities/return-case-comment.entity.d.ts +20 -0
  68. package/dist/backend/entities/return-case-comment.entity.d.ts.map +1 -0
  69. package/dist/backend/entities/return-case-comment.entity.js +70 -0
  70. package/dist/backend/entities/return-case-comment.entity.js.map +1 -0
  71. package/dist/backend/entities/return-case-item.entity.d.ts +25 -0
  72. package/dist/backend/entities/return-case-item.entity.d.ts.map +1 -0
  73. package/dist/backend/entities/return-case-item.entity.js +87 -0
  74. package/dist/backend/entities/return-case-item.entity.js.map +1 -0
  75. package/dist/backend/entities/return-case.entity.d.ts +41 -0
  76. package/dist/backend/entities/return-case.entity.d.ts.map +1 -0
  77. package/dist/backend/entities/return-case.entity.js +155 -0
  78. package/dist/backend/entities/return-case.entity.js.map +1 -0
  79. package/dist/backend/entities/return-delivery-method.entity.d.ts +18 -0
  80. package/dist/backend/entities/return-delivery-method.entity.d.ts.map +1 -0
  81. package/dist/backend/entities/return-delivery-method.entity.js +63 -0
  82. package/dist/backend/entities/return-delivery-method.entity.js.map +1 -0
  83. package/dist/backend/entities/return-list-saved-view.entity.d.ts +24 -0
  84. package/dist/backend/entities/return-list-saved-view.entity.d.ts.map +1 -0
  85. package/dist/backend/entities/return-list-saved-view.entity.js +74 -0
  86. package/dist/backend/entities/return-list-saved-view.entity.js.map +1 -0
  87. package/dist/backend/entities/return-reason.entity.d.ts +21 -0
  88. package/dist/backend/entities/return-reason.entity.d.ts.map +1 -0
  89. package/dist/backend/entities/return-reason.entity.js +65 -0
  90. package/dist/backend/entities/return-reason.entity.js.map +1 -0
  91. package/dist/backend/entities/return-shipment.entity.d.ts +22 -0
  92. package/dist/backend/entities/return-shipment.entity.d.ts.map +1 -0
  93. package/dist/backend/entities/return-shipment.entity.js +71 -0
  94. package/dist/backend/entities/return-shipment.entity.js.map +1 -0
  95. package/dist/backend/entities/return-status-transition.entity.d.ts +17 -0
  96. package/dist/backend/entities/return-status-transition.entity.d.ts.map +1 -0
  97. package/dist/backend/entities/return-status-transition.entity.js +55 -0
  98. package/dist/backend/entities/return-status-transition.entity.js.map +1 -0
  99. package/dist/backend/entities/return-status.entity.d.ts +29 -0
  100. package/dist/backend/entities/return-status.entity.d.ts.map +1 -0
  101. package/dist/backend/entities/return-status.entity.js +90 -0
  102. package/dist/backend/entities/return-status.entity.js.map +1 -0
  103. package/dist/backend/events/return-status-events.d.ts +44 -0
  104. package/dist/backend/events/return-status-events.d.ts.map +1 -0
  105. package/dist/backend/events/return-status-events.js +50 -0
  106. package/dist/backend/events/return-status-events.js.map +1 -0
  107. package/dist/backend/index.d.ts +106 -0
  108. package/dist/backend/index.d.ts.map +1 -0
  109. package/dist/backend/index.js +116 -0
  110. package/dist/backend/index.js.map +1 -0
  111. package/dist/backend/plugin.d.ts +33 -0
  112. package/dist/backend/plugin.d.ts.map +1 -0
  113. package/dist/backend/plugin.js +124 -0
  114. package/dist/backend/plugin.js.map +1 -0
  115. package/dist/backend/routes.admin.d.ts +38 -0
  116. package/dist/backend/routes.admin.d.ts.map +1 -0
  117. package/dist/backend/routes.admin.js +181 -0
  118. package/dist/backend/routes.admin.js.map +1 -0
  119. package/dist/backend/routes.customer.d.ts +22 -0
  120. package/dist/backend/routes.customer.d.ts.map +1 -0
  121. package/dist/backend/routes.customer.js +56 -0
  122. package/dist/backend/routes.customer.js.map +1 -0
  123. package/dist/backend/services/notification-context.d.ts +47 -0
  124. package/dist/backend/services/notification-context.d.ts.map +1 -0
  125. package/dist/backend/services/notification-context.js +49 -0
  126. package/dist/backend/services/notification-context.js.map +1 -0
  127. package/dist/backend/services/return-attachment-service.d.ts +20 -0
  128. package/dist/backend/services/return-attachment-service.d.ts.map +1 -0
  129. package/dist/backend/services/return-attachment-service.js +48 -0
  130. package/dist/backend/services/return-attachment-service.js.map +1 -0
  131. package/dist/backend/services/return-authorization-service.d.ts +53 -0
  132. package/dist/backend/services/return-authorization-service.d.ts.map +1 -0
  133. package/dist/backend/services/return-authorization-service.js +72 -0
  134. package/dist/backend/services/return-authorization-service.js.map +1 -0
  135. package/dist/backend/services/return-case-service.d.ts +44 -0
  136. package/dist/backend/services/return-case-service.d.ts.map +1 -0
  137. package/dist/backend/services/return-case-service.js +260 -0
  138. package/dist/backend/services/return-case-service.js.map +1 -0
  139. package/dist/backend/services/return-comment-service.d.ts +43 -0
  140. package/dist/backend/services/return-comment-service.d.ts.map +1 -0
  141. package/dist/backend/services/return-comment-service.js +109 -0
  142. package/dist/backend/services/return-comment-service.js.map +1 -0
  143. package/dist/backend/services/return-delivery-method-service.d.ts +44 -0
  144. package/dist/backend/services/return-delivery-method-service.d.ts.map +1 -0
  145. package/dist/backend/services/return-delivery-method-service.js +114 -0
  146. package/dist/backend/services/return-delivery-method-service.js.map +1 -0
  147. package/dist/backend/services/return-email-notifier.d.ts +89 -0
  148. package/dist/backend/services/return-email-notifier.d.ts.map +1 -0
  149. package/dist/backend/services/return-email-notifier.js +128 -0
  150. package/dist/backend/services/return-email-notifier.js.map +1 -0
  151. package/dist/backend/services/return-export-service.d.ts +16 -0
  152. package/dist/backend/services/return-export-service.d.ts.map +1 -0
  153. package/dist/backend/services/return-export-service.js +29 -0
  154. package/dist/backend/services/return-export-service.js.map +1 -0
  155. package/dist/backend/services/return-list-service.d.ts +27 -0
  156. package/dist/backend/services/return-list-service.d.ts.map +1 -0
  157. package/dist/backend/services/return-list-service.js +114 -0
  158. package/dist/backend/services/return-list-service.js.map +1 -0
  159. package/dist/backend/services/return-list-view-service.d.ts +36 -0
  160. package/dist/backend/services/return-list-view-service.d.ts.map +1 -0
  161. package/dist/backend/services/return-list-view-service.js +82 -0
  162. package/dist/backend/services/return-list-view-service.js.map +1 -0
  163. package/dist/backend/services/return-reason-service.d.ts +33 -0
  164. package/dist/backend/services/return-reason-service.d.ts.map +1 -0
  165. package/dist/backend/services/return-reason-service.js +90 -0
  166. package/dist/backend/services/return-reason-service.js.map +1 -0
  167. package/dist/backend/services/return-settlement-service.d.ts +67 -0
  168. package/dist/backend/services/return-settlement-service.d.ts.map +1 -0
  169. package/dist/backend/services/return-settlement-service.js +295 -0
  170. package/dist/backend/services/return-settlement-service.js.map +1 -0
  171. package/dist/backend/services/return-shipment-service.d.ts +40 -0
  172. package/dist/backend/services/return-shipment-service.d.ts.map +1 -0
  173. package/dist/backend/services/return-shipment-service.js +113 -0
  174. package/dist/backend/services/return-shipment-service.js.map +1 -0
  175. package/dist/backend/services/return-status-graph-service.d.ts +59 -0
  176. package/dist/backend/services/return-status-graph-service.d.ts.map +1 -0
  177. package/dist/backend/services/return-status-graph-service.js +197 -0
  178. package/dist/backend/services/return-status-graph-service.js.map +1 -0
  179. package/dist/backend/services/return-transition-service.d.ts +48 -0
  180. package/dist/backend/services/return-transition-service.d.ts.map +1 -0
  181. package/dist/backend/services/return-transition-service.js +116 -0
  182. package/dist/backend/services/return-transition-service.js.map +1 -0
  183. package/dist/backend/services/returns-seeder.d.ts +18 -0
  184. package/dist/backend/services/returns-seeder.d.ts.map +1 -0
  185. package/dist/backend/services/returns-seeder.js +63 -0
  186. package/dist/backend/services/returns-seeder.js.map +1 -0
  187. package/dist/backend/services/rma-number-generator.d.ts +35 -0
  188. package/dist/backend/services/rma-number-generator.d.ts.map +1 -0
  189. package/dist/backend/services/rma-number-generator.js +45 -0
  190. package/dist/backend/services/rma-number-generator.js.map +1 -0
  191. package/dist/manifest.d.ts +182 -0
  192. package/dist/manifest.d.ts.map +1 -0
  193. package/dist/manifest.js +216 -0
  194. package/dist/manifest.js.map +1 -0
  195. package/dist/migrations/20260625T144227_returns_init.d.ts +15 -0
  196. package/dist/migrations/20260625T144227_returns_init.d.ts.map +1 -0
  197. package/dist/migrations/20260625T144227_returns_init.js +241 -0
  198. package/dist/migrations/20260625T144227_returns_init.js.map +1 -0
  199. package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.d.ts +25 -0
  200. package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.d.ts.map +1 -0
  201. package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.js +46 -0
  202. package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.js.map +1 -0
  203. package/dist/migrations/index.d.ts +28 -0
  204. package/dist/migrations/index.d.ts.map +1 -0
  205. package/dist/migrations/index.js +31 -0
  206. package/dist/migrations/index.js.map +1 -0
  207. package/docs/returns.md +103 -0
  208. package/i18n/en.json +28 -0
  209. package/i18n/pl.json +28 -0
  210. package/package.json +101 -0
  211. package/tailwind.css +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReturnReasonsPage.js","sourceRoot":"","sources":["../../../src/admin/pages/ReturnReasonsPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type ReactNode } from 'react';
2
+ /** Configurable return/complaint workflow (feature 046, US3). */
3
+ export declare function ReturnStatusesConfigPage(): ReactNode;
4
+ export default ReturnStatusesConfigPage;
5
+ //# sourceMappingURL=ReturnStatusesConfigPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReturnStatusesConfigPage.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/ReturnStatusesConfigPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAezE,iEAAiE;AACjE,wBAAgB,wBAAwB,IAAI,SAAS,CA+IpD;AACD,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { Trash2 } from 'lucide-react';
4
+ import { ApiError } from '@endora-commerce/admin-kit/lib';
5
+ import { Alert, AlertDescription, Badge, Button, Card, CardContent, CardHeader, CardTitle, Label, PageHeader, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@endora-commerce/admin-kit/ui';
6
+ import { StatusTransitionGraph } from '@endora-commerce/admin-kit/components';
7
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
8
+ import { returnsClient } from '../api/returns-client.js';
9
+ /** Resolve the admin-facing label: default name → English → first → code. */
10
+ function statusLabel(s) {
11
+ return s.defaultName || s.name['en'] || Object.values(s.name)[0] || s.code;
12
+ }
13
+ /** Configurable return/complaint workflow (feature 046, US3). */
14
+ export function ReturnStatusesConfigPage() {
15
+ const t = useTranslation('core');
16
+ const [statuses, setStatuses] = useState([]);
17
+ const [transitions, setTransitions] = useState([]);
18
+ const [error, setError] = useState(null);
19
+ const [code, setCode] = useState('');
20
+ const [name, setName] = useState('');
21
+ const refresh = useCallback(async () => {
22
+ setError(null);
23
+ try {
24
+ const graph = await returnsClient.statuses();
25
+ setStatuses(graph.statuses);
26
+ setTransitions(graph.transitions);
27
+ }
28
+ catch (err) {
29
+ setError(err instanceof ApiError ? err.envelope.error.message : 'Failed to load.');
30
+ }
31
+ }, []);
32
+ useEffect(() => {
33
+ void refresh();
34
+ }, [refresh]);
35
+ const run = useCallback(async (fn) => {
36
+ setError(null);
37
+ try {
38
+ await fn();
39
+ await refresh();
40
+ }
41
+ catch (err) {
42
+ setError(err instanceof ApiError ? err.envelope.error.message : 'Action failed.');
43
+ }
44
+ }, [refresh]);
45
+ // The returns transitions endpoint is a full-list replace, so we derive the
46
+ // next set from the current one for the graph's add/remove callbacks.
47
+ const addTransition = (fromCode, toCode) => {
48
+ if (!fromCode || !toCode || fromCode === toCode)
49
+ return;
50
+ if (transitions.some((x) => x.fromStatusCode === fromCode && x.toStatusCode === toCode))
51
+ return;
52
+ const next = [
53
+ ...transitions.map((x) => ({ fromStatusCode: x.fromStatusCode, toStatusCode: x.toStatusCode })),
54
+ { fromStatusCode: fromCode, toStatusCode: toCode },
55
+ ];
56
+ void run(() => returnsClient.setTransitions(next));
57
+ };
58
+ const removeTransition = (fromCode, toCode) => {
59
+ const next = transitions
60
+ .filter((x) => !(x.fromStatusCode === fromCode && x.toStatusCode === toCode))
61
+ .map((x) => ({ fromStatusCode: x.fromStatusCode, toStatusCode: x.toStatusCode }));
62
+ void run(() => returnsClient.setTransitions(next));
63
+ };
64
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx(PageHeader, { title: t('returns.statuses.title'), description: t('returns.statuses.description') }), error && (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: error }) })), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Statuses" }) }), _jsxs(CardContent, { className: "space-y-3", children: [_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Code" }), _jsx(TableHead, { children: "Name" }), _jsx(TableHead, { children: "Flags" }), _jsx(TableHead, { children: "In use" }), _jsx(TableHead, {})] }) }), _jsx(TableBody, { children: statuses.map((s) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "font-mono text-xs", children: s.code }), _jsx(TableCell, { children: s.defaultName }), _jsxs(TableCell, { className: "flex gap-1", children: [s.isInitial && _jsx(Badge, { variant: "outline", children: "initial" }), s.isTerminal && _jsx(Badge, { variant: "outline", children: "terminal" }), s.isSystem && _jsx(Badge, { variant: "secondary", children: "system" })] }), _jsx(TableCell, { children: s.inUseCount }), _jsx(TableCell, { children: !s.isInitial && !s.isSystem && (_jsx(Button, { variant: "ghost", size: "sm", onClick: () => void run(() => returnsClient.deleteStatus(s.code)), children: _jsx(Trash2, { className: "size-4" }) })) })] }, s.code))) })] }), _jsxs("div", { className: "flex flex-wrap items-end gap-2", children: [_jsxs("div", { className: "space-y-1", children: [_jsx(Label, { htmlFor: "code", children: "New status code" }), _jsx("input", { id: "code", className: "h-9 rounded-md border border-input bg-background px-3 text-sm", value: code, onChange: (e) => setCode(e.target.value), placeholder: "inspecting" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { htmlFor: "name", children: "Name (EN)" }), _jsx("input", { id: "name", className: "h-9 rounded-md border border-input bg-background px-3 text-sm", value: name, onChange: (e) => setName(e.target.value), placeholder: "Inspecting" })] }), _jsx(Button, { size: "sm", disabled: !code.trim() || !name.trim(), onClick: () => void run(async () => {
65
+ await returnsClient.createStatus({ code: code.trim(), name: { en: name.trim() }, defaultName: name.trim() });
66
+ setCode('');
67
+ setName('');
68
+ }), children: "Add status" })] })] })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('orderStatusConfig.transitions') }) }), _jsx(CardContent, { children: _jsx(StatusTransitionGraph, { statuses: statuses, transitions: transitions, statusLabel: statusLabel, onAdd: addTransition, onRemove: removeTransition }) })] })] }));
69
+ }
70
+ export default ReturnStatusesConfigPage;
71
+ //# sourceMappingURL=ReturnStatusesConfigPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReturnStatusesConfigPage.js","sourceRoot":"","sources":["../../../src/admin/pages/ReturnStatusesConfigPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type ReactNode } from 'react';
2
+ /** Returns / RMA admin list (feature 046, US8). */
3
+ export declare function ReturnsList(): ReactNode;
4
+ export default ReturnsList;
5
+ //# sourceMappingURL=ReturnsList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReturnsList.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/ReturnsList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAwBlF,mDAAmD;AACnD,wBAAgB,WAAW,IAAI,SAAS,CA6XvC;AACD,eAAe,WAAW,CAAC"}
@@ -0,0 +1,189 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useState } from 'react';
3
+ import { Link } from 'react-router-dom';
4
+ import { ArrowRight, Download, ListChecks, Search, Settings, X } from 'lucide-react';
5
+ import { ApiError, apiBaseUrl, formatDateTime, formatMoney, statusBadgeStyle, usePageSizePreference, } from '@endora-commerce/admin-kit/lib';
6
+ import { Alert, AlertDescription, Badge, Button, Card, CardContent, Select, MultiSelect, PageHeader } from '@endora-commerce/admin-kit/ui';
7
+ import { ResponsiveTable, PaginationFooter } from '@endora-commerce/admin-kit/components';
8
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
9
+ import { returnsClient } from '../api/returns-client.js';
10
+ /** Resolve the admin-facing label for a status: default name → English → first → code. */
11
+ function statusName(s) {
12
+ return s.defaultName || s.name['en'] || Object.values(s.name)[0] || s.code;
13
+ }
14
+ /** Returns / RMA admin list (feature 046, US8). */
15
+ export function ReturnsList() {
16
+ const t = useTranslation('core');
17
+ const { pageSize, setPageSize } = usePageSizePreference('returns');
18
+ const [rows, setRows] = useState([]);
19
+ const [total, setTotal] = useState(0);
20
+ const [counts, setCounts] = useState({});
21
+ const [statuses, setStatuses] = useState([]);
22
+ const [page, setPage] = useState(0);
23
+ const [loading, setLoading] = useState(true);
24
+ const [error, setError] = useState(null);
25
+ const [info, setInfo] = useState(null);
26
+ // Filters.
27
+ const [statusCodes, setStatusCodes] = useState([]);
28
+ const [kindFilter, setKindFilter] = useState('');
29
+ const [rma, setRma] = useState('');
30
+ const [debouncedRma, setDebouncedRma] = useState('');
31
+ const [sort, setSort] = useState('submittedAt:desc');
32
+ const [selected, setSelected] = useState(new Set());
33
+ // Debounce the RMA free-text filter.
34
+ useEffect(() => {
35
+ const id = window.setTimeout(() => setDebouncedRma(rma), 300);
36
+ return () => window.clearTimeout(id);
37
+ }, [rma]);
38
+ // Load the configured status graph once for labels + badge colours.
39
+ useEffect(() => {
40
+ void returnsClient
41
+ .statuses()
42
+ .then((graph) => setStatuses(graph.statuses))
43
+ .catch(() => setStatuses([]));
44
+ }, []);
45
+ const queryString = useMemo(() => {
46
+ const p = new URLSearchParams();
47
+ p.set('page', String(page + 1));
48
+ p.set('pageSize', String(Math.min(pageSize, 200)));
49
+ p.set('sort', sort);
50
+ if (statusCodes.length)
51
+ p.set('status', statusCodes.join(','));
52
+ if (kindFilter)
53
+ p.set('kind', kindFilter);
54
+ if (debouncedRma.trim())
55
+ p.set('rmaNumber', debouncedRma.trim());
56
+ return `?${p.toString()}`;
57
+ }, [page, pageSize, sort, statusCodes, kindFilter, debouncedRma]);
58
+ const refresh = useCallback(async () => {
59
+ setLoading(true);
60
+ setError(null);
61
+ try {
62
+ const res = await returnsClient.list(queryString);
63
+ setRows(res.rows);
64
+ setTotal(res.total);
65
+ setCounts(res.counts);
66
+ setSelected(new Set());
67
+ }
68
+ catch (err) {
69
+ setError(err instanceof ApiError ? err.envelope.error.message : t('returns.error.load'));
70
+ }
71
+ finally {
72
+ setLoading(false);
73
+ }
74
+ }, [queryString, t]);
75
+ useEffect(() => {
76
+ void refresh();
77
+ }, [refresh]);
78
+ // Reset to the first page whenever a filter narrows the result set.
79
+ useEffect(() => {
80
+ setPage(0);
81
+ }, [statusCodes, kindFilter, debouncedRma, sort, pageSize]);
82
+ const statusLabel = useCallback((code) => {
83
+ const s = statuses.find((x) => x.code === code);
84
+ return s ? statusName(s) : code;
85
+ }, [statuses]);
86
+ const statusColor = useCallback((code) => statuses.find((x) => x.code === code)?.color ?? '#64748b', [statuses]);
87
+ const toggleOne = (id) => setSelected((prev) => {
88
+ const next = new Set(prev);
89
+ if (next.has(id))
90
+ next.delete(id);
91
+ else
92
+ next.add(id);
93
+ return next;
94
+ });
95
+ const allSelected = rows.length > 0 && rows.every((r) => selected.has(r.id));
96
+ const toggleAll = () => setSelected(allSelected ? new Set() : new Set(rows.map((r) => r.id)));
97
+ const bulkAuthorize = useCallback(async () => {
98
+ setError(null);
99
+ setInfo(null);
100
+ try {
101
+ const res = await returnsClient.bulkTransition([...selected], 'authorized');
102
+ setInfo(t('returns.bulk.result', { authorized: res.moved.length, skipped: res.skipped.length }));
103
+ setSelected(new Set());
104
+ await refresh();
105
+ }
106
+ catch (err) {
107
+ setError(err instanceof ApiError ? err.envelope.error.message : t('returns.error.bulk'));
108
+ }
109
+ }, [selected, refresh, t]);
110
+ // Status filter options carry the live per-status counts from the list payload.
111
+ const statusOptions = statuses.map((s) => ({
112
+ value: s.code,
113
+ label: `${statusName(s)}${counts[s.code] !== undefined ? ` (${counts[s.code]})` : ''}`,
114
+ }));
115
+ const filterChips = [
116
+ ...statusCodes.map((code) => ({
117
+ key: `status:${code}`,
118
+ label: `${t('returns.filter.status')}: ${statusLabel(code)}`,
119
+ onRemove: () => setStatusCodes((prev) => prev.filter((c) => c !== code)),
120
+ })),
121
+ ...(kindFilter
122
+ ? [
123
+ {
124
+ key: 'kind',
125
+ label: `${t('returns.filter.kind')}: ${t(`returns.kind.${kindFilter}`)}`,
126
+ onRemove: () => setKindFilter(''),
127
+ },
128
+ ]
129
+ : []),
130
+ ...(rma.trim()
131
+ ? [{ key: 'rma', label: `${t('returns.filter.rmaNumber')}: ${rma.trim()}`, onRemove: () => setRma('') }]
132
+ : []),
133
+ ];
134
+ const clearAllFilters = () => {
135
+ setStatusCodes([]);
136
+ setKindFilter('');
137
+ setRma('');
138
+ };
139
+ const selectColumn = {
140
+ id: 'select',
141
+ header: (_jsx("input", { type: "checkbox", "aria-label": "select-all", checked: allSelected, onChange: toggleAll })),
142
+ render: (r) => (_jsx("input", { type: "checkbox", "aria-label": `select-${r.rmaNumber ?? r.id}`, checked: selected.has(r.id), onChange: () => toggleOne(r.id) })),
143
+ };
144
+ const columns = [
145
+ selectColumn,
146
+ {
147
+ id: 'rma',
148
+ header: t('returns.col.rma'),
149
+ primary: true,
150
+ render: (r) => (_jsx(Link, { to: `/returns/${r.id}`, className: "font-mono text-xs underline underline-offset-2", children: r.rmaNumber ?? '—' })),
151
+ meta: (r) => formatDateTime(r.submittedAt),
152
+ },
153
+ {
154
+ id: 'kind',
155
+ header: t('returns.col.kind'),
156
+ render: (r) => t(`returns.kind.${r.kind}`),
157
+ },
158
+ {
159
+ id: 'status',
160
+ header: t('returns.col.status'),
161
+ render: (r) => (_jsx(Badge, { style: statusBadgeStyle(statusColor(r.statusCode)), children: r.statusLabel || statusLabel(r.statusCode) })),
162
+ },
163
+ {
164
+ id: 'refund',
165
+ header: t('returns.col.refund'),
166
+ render: (r) => (_jsx("span", { className: "tabular-nums", children: formatMoney(r.totalRefundAmount, r.currency) })),
167
+ },
168
+ {
169
+ id: 'customer',
170
+ header: t('returns.col.customer'),
171
+ render: (r) => r.customerName ?? '—',
172
+ },
173
+ {
174
+ id: 'org',
175
+ header: t('returns.col.org'),
176
+ hideOnMobile: true,
177
+ render: (r) => r.organizationName ?? '—',
178
+ },
179
+ {
180
+ id: 'submitted',
181
+ header: t('returns.col.submitted'),
182
+ hideOnMobile: true,
183
+ render: (r) => formatDateTime(r.submittedAt),
184
+ },
185
+ ];
186
+ return (_jsxs(_Fragment, { children: [_jsx(PageHeader, { title: t('returns.title'), description: t('returns.description'), actions: _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Button, { asChild: true, variant: "outline", size: "sm", children: _jsxs(Link, { to: "/returns/statuses", children: [_jsx(Settings, {}), t('returns.nav.workflow')] }) }), _jsx(Button, { asChild: true, variant: "outline", size: "sm", children: _jsx(Link, { to: "/returns/reasons", children: t('returns.nav.reasons') }) }), _jsx(Button, { asChild: true, variant: "outline", size: "sm", children: _jsx(Link, { to: "/returns/delivery-methods", children: t('returns.nav.returnMethods') }) }), _jsx(Button, { asChild: true, variant: "outline", size: "sm", children: _jsxs("a", { href: `${apiBaseUrl}/api/v1/admin/returns/export${queryString}`, children: [_jsx(Download, {}), t('returns.action.exportCsv')] }) })] }) }), error ? (_jsx(Alert, { variant: "destructive", className: "mb-4", children: _jsx(AlertDescription, { children: error }) })) : null, info ? (_jsx(Alert, { variant: "success", className: "mb-4", children: _jsx(AlertDescription, { children: info }) })) : null, _jsx(Card, { className: "mb-4", children: _jsxs(CardContent, { className: "space-y-3 pt-6", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("div", { className: "relative min-w-[220px] flex-1", children: [_jsx(Search, { className: "pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), _jsx("input", { id: "rsearch", className: "h-9 w-full rounded-md border pl-8 pr-3 text-sm", value: rma, onChange: (e) => setRma(e.target.value), placeholder: t('returns.search.placeholder'), "aria-label": t('returns.filter.rmaNumber') })] }), _jsx(MultiSelect, { className: "w-44", ariaLabel: t('returns.filter.status'), placeholder: t('returns.filter.status'), options: statusOptions, selected: statusCodes, onChange: setStatusCodes }), _jsxs(Select, { id: "kind", "aria-label": t('returns.filter.kind'), value: kindFilter, onChange: (e) => setKindFilter(e.target.value), className: "w-auto", children: [_jsx("option", { value: "", children: t('returns.filter.kind') }), _jsx("option", { value: "return", children: t('returns.kind.return') }), _jsx("option", { value: "complaint", children: t('returns.kind.complaint') })] }), _jsxs(Select, { id: "rsort", "aria-label": t('returns.field.sort'), value: sort, onChange: (e) => setSort(e.target.value), className: "w-auto", children: [_jsx("option", { value: "submittedAt:desc", children: t('returns.sort.newest') }), _jsx("option", { value: "submittedAt:asc", children: t('returns.sort.oldest') }), _jsx("option", { value: "rmaNumber:asc", children: t('returns.sort.rmaAsc') }), _jsx("option", { value: "rmaNumber:desc", children: t('returns.sort.rmaDesc') })] })] }), filterChips.length > 0 ? (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [filterChips.map((chip) => (_jsxs("button", { type: "button", onClick: chip.onRemove, className: "inline-flex items-center gap-1 rounded-full border bg-muted/40 px-2.5 py-1 text-xs hover:bg-muted", children: [_jsx("span", { children: chip.label }), _jsx(X, { className: "size-3 opacity-70" })] }, chip.key))), _jsx("button", { type: "button", onClick: clearAllFilters, className: "text-xs text-muted-foreground underline underline-offset-2 hover:text-foreground", children: t('returns.filter.clearAll') })] })) : null] }) }), selected.size > 0 ? (_jsx(Card, { className: "mb-4", children: _jsxs(CardContent, { className: "flex flex-wrap items-center gap-3 pt-6", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: t('returns.bulk.selected', { count: selected.size }) }), _jsxs(Button, { size: "sm", onClick: () => void bulkAuthorize(), children: [_jsx(ListChecks, {}), t('returns.bulk.authorize', { count: selected.size })] })] }) })) : null, _jsx(Card, { children: _jsxs(CardContent, { className: "pt-6", children: [loading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('returns.loading') })) : rows.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('returns.empty') })) : (_jsx(ResponsiveTable, { data: rows, keyExtractor: (r) => r.id, columns: columns, renderActions: (r) => (_jsx(Button, { asChild: true, variant: "outline", size: "sm", className: "min-h-11", children: _jsxs(Link, { to: `/returns/${r.id}`, children: [t('returns.action.open'), _jsx(ArrowRight, {})] }) })) })), _jsx(PaginationFooter, { page: page, pageSize: pageSize, total: total, onPageSizeChange: setPageSize, onPrev: () => setPage((p) => Math.max(0, p - 1)), onNext: () => setPage((p) => p + 1) })] }) })] }));
187
+ }
188
+ export default ReturnsList;
189
+ //# sourceMappingURL=ReturnsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReturnsList.js","sourceRoot":"","sources":["../../../src/admin/pages/ReturnsList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Default return/complaint reasons shipped on install (feature 046, US7).
3
+ *
4
+ * Single source of truth shared by the init migration and the runtime seeder
5
+ * (`ReturnsSeeder`), so a reinstall after a lifecycle uninstall restores the
6
+ * same defaults. B2B-oriented examples from the spec.
7
+ */
8
+ export interface ReturnReasonSeed {
9
+ label: Record<string, string>;
10
+ appliesTo: 'return' | 'complaint' | 'both';
11
+ weight: number;
12
+ }
13
+ export declare const DEFAULT_RETURN_REASONS: ReadonlyArray<ReturnReasonSeed>;
14
+ //# sourceMappingURL=default-reasons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-reasons.d.ts","sourceRoot":"","sources":["../../../src/backend/domain/default-reasons.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,gBAAgB,CAOlE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const DEFAULT_RETURN_REASONS = [
2
+ { label: { en: 'Overstock / surplus', pl: 'Nadwyżka magazynowa' }, appliesTo: 'return', weight: 10 },
3
+ { label: { en: 'Ordered by mistake', pl: 'Błędne zamówienie' }, appliesTo: 'return', weight: 20 },
4
+ { label: { en: 'Changed mind', pl: 'Rezygnacja' }, appliesTo: 'return', weight: 30 },
5
+ { label: { en: 'Damaged in transit', pl: 'Uszkodzone w transporcie' }, appliesTo: 'complaint', weight: 40 },
6
+ { label: { en: 'Factory defect', pl: 'Wada fabryczna' }, appliesTo: 'complaint', weight: 50 },
7
+ { label: { en: 'Wrong item delivered', pl: 'Dostarczono niewłaściwy produkt' }, appliesTo: 'both', weight: 60 },
8
+ ];
9
+ //# sourceMappingURL=default-reasons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-reasons.js","sourceRoot":"","sources":["../../../src/backend/domain/default-reasons.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,sBAAsB,GAAoC;IACrE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;IACpG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;IACjG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;IACpF,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,0BAA0B,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3G,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7F,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,iCAAiC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;CAChH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isWithinFreeWindow(now: Date, completingAt: Date | null, days: number): boolean;
2
+ //# sourceMappingURL=free-return-window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free-return-window.d.ts","sourceRoot":"","sources":["../../../src/backend/domain/free-return-window.ts"],"names":[],"mappings":"AAWA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9F"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Free-return window — pure domain (feature 046, US7 / FR-026/027).
3
+ *
4
+ * The window is counted from the moment the order entered its fulfilment-
5
+ * completing status. A `Return`-kind case qualifies as free when it is opened on
6
+ * or before the last day of the window. `days = 0` means there is no free-return
7
+ * option. The boundary is inclusive: a case opened exactly `days` days after the
8
+ * anchor still qualifies; one opened a moment later does not.
9
+ */
10
+ const MS_PER_DAY = 24 * 60 * 60 * 1000;
11
+ export function isWithinFreeWindow(now, completingAt, days) {
12
+ if (completingAt === null)
13
+ return false;
14
+ if (!Number.isFinite(days) || days <= 0)
15
+ return false;
16
+ const deadline = completingAt.getTime() + days * MS_PER_DAY;
17
+ return now.getTime() <= deadline;
18
+ }
19
+ //# sourceMappingURL=free-return-window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free-return-window.js","sourceRoot":"","sources":["../../../src/backend/domain/free-return-window.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvC,MAAM,UAAU,kBAAkB,CAAC,GAAS,EAAE,YAAyB,EAAE,IAAY;IACnF,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC;IAC5D,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC;AACnC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Refund math — pure domain (feature 046, US5 / FR-031/032).
3
+ *
4
+ * The default refund for a returned quantity is the amount paid for that
5
+ * quantity in the original order (the per-unit paid amount already includes its
6
+ * proportional tax, resolved by the OrderReturnContextPort). The approved amount
7
+ * an admin settles per line may never exceed that default; the case total is the
8
+ * sum of the approved per-line amounts.
9
+ */
10
+ /** Tolerance for floating-point comparison of money amounts (half a cent). */
11
+ export declare const REFUND_EPSILON = 0.005;
12
+ export declare function round2(n: number): number;
13
+ /** Default refund for a returned quantity = paid-per-unit (incl. tax) × quantity. */
14
+ export declare function defaultRefundForQuantity(paidUnitAmount: number, quantity: number): number;
15
+ /** True when an approved amount exceeds the line's paid cap (beyond tolerance). */
16
+ export declare function exceedsCap(approved: number, cap: number): boolean;
17
+ /** Case total = sum of the approved per-line amounts, rounded to cents. */
18
+ export declare function sumApproved(amounts: number[]): number;
19
+ //# sourceMappingURL=refund-math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund-math.d.ts","sourceRoot":"","sources":["../../../src/backend/domain/refund-math.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzF;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAErD"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Refund math — pure domain (feature 046, US5 / FR-031/032).
3
+ *
4
+ * The default refund for a returned quantity is the amount paid for that
5
+ * quantity in the original order (the per-unit paid amount already includes its
6
+ * proportional tax, resolved by the OrderReturnContextPort). The approved amount
7
+ * an admin settles per line may never exceed that default; the case total is the
8
+ * sum of the approved per-line amounts.
9
+ */
10
+ /** Tolerance for floating-point comparison of money amounts (half a cent). */
11
+ export const REFUND_EPSILON = 0.005;
12
+ export function round2(n) {
13
+ return Math.round((n + Number.EPSILON) * 100) / 100;
14
+ }
15
+ /** Default refund for a returned quantity = paid-per-unit (incl. tax) × quantity. */
16
+ export function defaultRefundForQuantity(paidUnitAmount, quantity) {
17
+ return round2(paidUnitAmount * quantity);
18
+ }
19
+ /** True when an approved amount exceeds the line's paid cap (beyond tolerance). */
20
+ export function exceedsCap(approved, cap) {
21
+ return approved > cap + REFUND_EPSILON;
22
+ }
23
+ /** Case total = sum of the approved per-line amounts, rounded to cents. */
24
+ export function sumApproved(amounts) {
25
+ return round2(amounts.reduce((acc, n) => acc + n, 0));
26
+ }
27
+ //# sourceMappingURL=refund-math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund-math.js","sourceRoot":"","sources":["../../../src/backend/domain/refund-math.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACtD,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,wBAAwB,CAAC,cAAsB,EAAE,QAAgB;IAC/E,OAAO,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,GAAW;IACtD,OAAO,QAAQ,GAAG,GAAG,GAAG,cAAc,CAAC;AACzC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,OAAiB;IAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Return/complaint status graph — pure domain (feature 046, US3).
3
+ *
4
+ * The RMA case lifecycle is admin-configurable (FR-010..FR-014): a set of
5
+ * statuses and a set of allowed directed transitions between them. This module
6
+ * holds the pure, DB-free representation and validation logic, mirroring the
7
+ * orders module's `domain/order-status-graph.ts`. The DB-backed loader
8
+ * (`ReturnStatusGraphService`) builds a `ReturnStatusGraph` from persisted rows;
9
+ * this value object answers "is this transition allowed?" and enforces the
10
+ * structural invariants (single initial status, terminal statuses have no exit).
11
+ *
12
+ * Unlike the orders graph, the returns graph has no universal `on_hold` edge —
13
+ * the default flow is linear (new → authorized → received → resolved → closed)
14
+ * with rejection and cancellation as terminal off-ramps (data-model.md).
15
+ */
16
+ export interface ReturnStatusDef {
17
+ code: string;
18
+ /** Localized labels, e.g. { en: 'New', pl: 'Nowe' }. */
19
+ name: Record<string, string>;
20
+ /** Language-independent fallback (resolution: name[lang] → defaultName → code). */
21
+ defaultName: string;
22
+ isInitial: boolean;
23
+ isTerminal: boolean;
24
+ /** System statuses are protected from deletion. */
25
+ isSystem: boolean;
26
+ weight: number;
27
+ /** Badge colour as a `#rrggbb` hex value. */
28
+ color: string;
29
+ }
30
+ /**
31
+ * Resolve a status's display label for a viewer's active language, falling back
32
+ * to the language-independent default name, then the code.
33
+ */
34
+ export declare function resolveReturnStatusName(def: {
35
+ name: Record<string, string>;
36
+ defaultName?: string | null;
37
+ code: string;
38
+ }, language: string): string;
39
+ export interface ReturnTransitionDef {
40
+ fromStatusCode: string;
41
+ toStatusCode: string;
42
+ /** Seeded default edges. */
43
+ isSystem: boolean;
44
+ }
45
+ export declare const RETURN_STATUS_INITIAL = "new";
46
+ export declare const RETURN_STATUS_AUTHORIZED = "authorized";
47
+ export declare const RETURN_STATUS_RECEIVED = "received";
48
+ export declare const RETURN_STATUS_RESOLVED = "resolved";
49
+ export declare const RETURN_STATUS_REJECTED = "rejected";
50
+ export declare const RETURN_STATUS_CLOSED = "closed";
51
+ export declare const RETURN_STATUS_CANCELLED = "cancelled";
52
+ /** The default statuses shipped on install (data-model.md). */
53
+ export declare const DEFAULT_RETURN_STATUSES: ReturnStatusDef[];
54
+ /** The default transitions (User Story 3). */
55
+ export declare const DEFAULT_EXPLICIT_TRANSITIONS: ReadonlyArray<readonly [string, string]>;
56
+ /** The full default transition set. */
57
+ export declare function computeDefaultTransitions(): ReturnTransitionDef[];
58
+ export declare class ReturnStatusConfigError extends Error {
59
+ }
60
+ /**
61
+ * Immutable, validated view of the configurable lifecycle. Build it once per
62
+ * read, then ask it questions.
63
+ */
64
+ export declare class ReturnStatusGraph {
65
+ readonly statuses: ReturnStatusDef[];
66
+ readonly transitions: ReturnTransitionDef[];
67
+ private readonly byCode;
68
+ private readonly adjacency;
69
+ constructor(statuses: ReturnStatusDef[], transitions: ReturnTransitionDef[]);
70
+ has(code: string): boolean;
71
+ get(code: string): ReturnStatusDef | undefined;
72
+ isTerminal(code: string): boolean;
73
+ isInitial(code: string): boolean;
74
+ /** The single initial status code (always `new` in the default seed). */
75
+ initialCode(): string;
76
+ /** Allowed target codes from `from`, sorted by status weight. */
77
+ allowedTargets(from: string): string[];
78
+ /**
79
+ * True iff both endpoints exist, `from` is not terminal, and a configured
80
+ * edge `from → to` exists (FR-012).
81
+ */
82
+ canTransition(from: string, to: string): boolean;
83
+ /**
84
+ * Structural validation of a candidate config (used by the admin CRUD path
85
+ * before persisting): exactly one initial status, no edge leaves a terminal
86
+ * status, every edge endpoint exists.
87
+ */
88
+ assertValid(): void;
89
+ }
90
+ export declare function buildDefaultReturnGraph(): ReturnStatusGraph;
91
+ //# sourceMappingURL=return-status-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"return-status-graph.d.ts","sourceRoot":"","sources":["../../../src/backend/domain/return-status-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAChF,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAC7C,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,EAAE,eAAe,EAQpD,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,4BAA4B,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAUjF,CAAC;AAEF,uCAAuC;AACvC,wBAAgB,yBAAyB,IAAI,mBAAmB,EAAE,CAMjE;AAED,qBAAa,uBAAwB,SAAQ,KAAK;CAAG;AAErD;;;GAGG;AACH,qBAAa,iBAAiB;aAKV,QAAQ,EAAE,eAAe,EAAE;aAC3B,WAAW,EAAE,mBAAmB,EAAE;IALpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAGnC,QAAQ,EAAE,eAAe,EAAE,EAC3B,WAAW,EAAE,mBAAmB,EAAE;IAWpD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,yEAAyE;IACzE,WAAW,IAAI,MAAM;IAMrB,iEAAiE;IACjE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAKtC;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAMhD;;;;OAIG;IACH,WAAW,IAAI,IAAI;CAmBpB;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}