@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.
- package/LICENSE +21 -0
- package/README.md +60 -0
- package/dist/admin/api/returns-client.d.ts +69 -0
- package/dist/admin/api/returns-client.d.ts.map +1 -0
- package/dist/admin/api/returns-client.js +36 -0
- package/dist/admin/api/returns-client.js.map +1 -0
- package/dist/admin/index.d.ts +37 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +57 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/pages/ReturnDeliveryMethodsPage.d.ts +5 -0
- package/dist/admin/pages/ReturnDeliveryMethodsPage.d.ts.map +1 -0
- package/dist/admin/pages/ReturnDeliveryMethodsPage.js +44 -0
- package/dist/admin/pages/ReturnDeliveryMethodsPage.js.map +1 -0
- package/dist/admin/pages/ReturnDetail.d.ts +5 -0
- package/dist/admin/pages/ReturnDetail.d.ts.map +1 -0
- package/dist/admin/pages/ReturnDetail.js +115 -0
- package/dist/admin/pages/ReturnDetail.js.map +1 -0
- package/dist/admin/pages/ReturnReasonsPage.d.ts +5 -0
- package/dist/admin/pages/ReturnReasonsPage.d.ts.map +1 -0
- package/dist/admin/pages/ReturnReasonsPage.js +44 -0
- package/dist/admin/pages/ReturnReasonsPage.js.map +1 -0
- package/dist/admin/pages/ReturnStatusesConfigPage.d.ts +5 -0
- package/dist/admin/pages/ReturnStatusesConfigPage.d.ts.map +1 -0
- package/dist/admin/pages/ReturnStatusesConfigPage.js +71 -0
- package/dist/admin/pages/ReturnStatusesConfigPage.js.map +1 -0
- package/dist/admin/pages/ReturnsList.d.ts +5 -0
- package/dist/admin/pages/ReturnsList.d.ts.map +1 -0
- package/dist/admin/pages/ReturnsList.js +189 -0
- package/dist/admin/pages/ReturnsList.js.map +1 -0
- package/dist/backend/domain/default-reasons.d.ts +14 -0
- package/dist/backend/domain/default-reasons.d.ts.map +1 -0
- package/dist/backend/domain/default-reasons.js +9 -0
- package/dist/backend/domain/default-reasons.js.map +1 -0
- package/dist/backend/domain/free-return-window.d.ts +2 -0
- package/dist/backend/domain/free-return-window.d.ts.map +1 -0
- package/dist/backend/domain/free-return-window.js +19 -0
- package/dist/backend/domain/free-return-window.js.map +1 -0
- package/dist/backend/domain/refund-math.d.ts +19 -0
- package/dist/backend/domain/refund-math.d.ts.map +1 -0
- package/dist/backend/domain/refund-math.js +27 -0
- package/dist/backend/domain/refund-math.js.map +1 -0
- package/dist/backend/domain/return-status-graph.d.ts +91 -0
- package/dist/backend/domain/return-status-graph.d.ts.map +1 -0
- package/dist/backend/domain/return-status-graph.js +143 -0
- package/dist/backend/domain/return-status-graph.js.map +1 -0
- package/dist/backend/email-templates/return-authorized.d.ts +11 -0
- package/dist/backend/email-templates/return-authorized.d.ts.map +1 -0
- package/dist/backend/email-templates/return-authorized.js +18 -0
- package/dist/backend/email-templates/return-authorized.js.map +1 -0
- package/dist/backend/email-templates/return-rejected.d.ts +11 -0
- package/dist/backend/email-templates/return-rejected.d.ts.map +1 -0
- package/dist/backend/email-templates/return-rejected.js +20 -0
- package/dist/backend/email-templates/return-rejected.js.map +1 -0
- package/dist/backend/email-templates/transactional-defaults.d.ts +11 -0
- package/dist/backend/email-templates/transactional-defaults.d.ts.map +1 -0
- package/dist/backend/email-templates/transactional-defaults.js +64 -0
- package/dist/backend/email-templates/transactional-defaults.js.map +1 -0
- package/dist/backend/entities/refund.entity.d.ts +41 -0
- package/dist/backend/entities/refund.entity.d.ts.map +1 -0
- package/dist/backend/entities/refund.entity.js +122 -0
- package/dist/backend/entities/refund.entity.js.map +1 -0
- package/dist/backend/entities/return-case-attachment.entity.d.ts +16 -0
- package/dist/backend/entities/return-case-attachment.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-case-attachment.entity.js +53 -0
- package/dist/backend/entities/return-case-attachment.entity.js.map +1 -0
- package/dist/backend/entities/return-case-comment.entity.d.ts +20 -0
- package/dist/backend/entities/return-case-comment.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-case-comment.entity.js +70 -0
- package/dist/backend/entities/return-case-comment.entity.js.map +1 -0
- package/dist/backend/entities/return-case-item.entity.d.ts +25 -0
- package/dist/backend/entities/return-case-item.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-case-item.entity.js +87 -0
- package/dist/backend/entities/return-case-item.entity.js.map +1 -0
- package/dist/backend/entities/return-case.entity.d.ts +41 -0
- package/dist/backend/entities/return-case.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-case.entity.js +155 -0
- package/dist/backend/entities/return-case.entity.js.map +1 -0
- package/dist/backend/entities/return-delivery-method.entity.d.ts +18 -0
- package/dist/backend/entities/return-delivery-method.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-delivery-method.entity.js +63 -0
- package/dist/backend/entities/return-delivery-method.entity.js.map +1 -0
- package/dist/backend/entities/return-list-saved-view.entity.d.ts +24 -0
- package/dist/backend/entities/return-list-saved-view.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-list-saved-view.entity.js +74 -0
- package/dist/backend/entities/return-list-saved-view.entity.js.map +1 -0
- package/dist/backend/entities/return-reason.entity.d.ts +21 -0
- package/dist/backend/entities/return-reason.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-reason.entity.js +65 -0
- package/dist/backend/entities/return-reason.entity.js.map +1 -0
- package/dist/backend/entities/return-shipment.entity.d.ts +22 -0
- package/dist/backend/entities/return-shipment.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-shipment.entity.js +71 -0
- package/dist/backend/entities/return-shipment.entity.js.map +1 -0
- package/dist/backend/entities/return-status-transition.entity.d.ts +17 -0
- package/dist/backend/entities/return-status-transition.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-status-transition.entity.js +55 -0
- package/dist/backend/entities/return-status-transition.entity.js.map +1 -0
- package/dist/backend/entities/return-status.entity.d.ts +29 -0
- package/dist/backend/entities/return-status.entity.d.ts.map +1 -0
- package/dist/backend/entities/return-status.entity.js +90 -0
- package/dist/backend/entities/return-status.entity.js.map +1 -0
- package/dist/backend/events/return-status-events.d.ts +44 -0
- package/dist/backend/events/return-status-events.d.ts.map +1 -0
- package/dist/backend/events/return-status-events.js +50 -0
- package/dist/backend/events/return-status-events.js.map +1 -0
- package/dist/backend/index.d.ts +106 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +116 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/plugin.d.ts +33 -0
- package/dist/backend/plugin.d.ts.map +1 -0
- package/dist/backend/plugin.js +124 -0
- package/dist/backend/plugin.js.map +1 -0
- package/dist/backend/routes.admin.d.ts +38 -0
- package/dist/backend/routes.admin.d.ts.map +1 -0
- package/dist/backend/routes.admin.js +181 -0
- package/dist/backend/routes.admin.js.map +1 -0
- package/dist/backend/routes.customer.d.ts +22 -0
- package/dist/backend/routes.customer.d.ts.map +1 -0
- package/dist/backend/routes.customer.js +56 -0
- package/dist/backend/routes.customer.js.map +1 -0
- package/dist/backend/services/notification-context.d.ts +47 -0
- package/dist/backend/services/notification-context.d.ts.map +1 -0
- package/dist/backend/services/notification-context.js +49 -0
- package/dist/backend/services/notification-context.js.map +1 -0
- package/dist/backend/services/return-attachment-service.d.ts +20 -0
- package/dist/backend/services/return-attachment-service.d.ts.map +1 -0
- package/dist/backend/services/return-attachment-service.js +48 -0
- package/dist/backend/services/return-attachment-service.js.map +1 -0
- package/dist/backend/services/return-authorization-service.d.ts +53 -0
- package/dist/backend/services/return-authorization-service.d.ts.map +1 -0
- package/dist/backend/services/return-authorization-service.js +72 -0
- package/dist/backend/services/return-authorization-service.js.map +1 -0
- package/dist/backend/services/return-case-service.d.ts +44 -0
- package/dist/backend/services/return-case-service.d.ts.map +1 -0
- package/dist/backend/services/return-case-service.js +260 -0
- package/dist/backend/services/return-case-service.js.map +1 -0
- package/dist/backend/services/return-comment-service.d.ts +43 -0
- package/dist/backend/services/return-comment-service.d.ts.map +1 -0
- package/dist/backend/services/return-comment-service.js +109 -0
- package/dist/backend/services/return-comment-service.js.map +1 -0
- package/dist/backend/services/return-delivery-method-service.d.ts +44 -0
- package/dist/backend/services/return-delivery-method-service.d.ts.map +1 -0
- package/dist/backend/services/return-delivery-method-service.js +114 -0
- package/dist/backend/services/return-delivery-method-service.js.map +1 -0
- package/dist/backend/services/return-email-notifier.d.ts +89 -0
- package/dist/backend/services/return-email-notifier.d.ts.map +1 -0
- package/dist/backend/services/return-email-notifier.js +128 -0
- package/dist/backend/services/return-email-notifier.js.map +1 -0
- package/dist/backend/services/return-export-service.d.ts +16 -0
- package/dist/backend/services/return-export-service.d.ts.map +1 -0
- package/dist/backend/services/return-export-service.js +29 -0
- package/dist/backend/services/return-export-service.js.map +1 -0
- package/dist/backend/services/return-list-service.d.ts +27 -0
- package/dist/backend/services/return-list-service.d.ts.map +1 -0
- package/dist/backend/services/return-list-service.js +114 -0
- package/dist/backend/services/return-list-service.js.map +1 -0
- package/dist/backend/services/return-list-view-service.d.ts +36 -0
- package/dist/backend/services/return-list-view-service.d.ts.map +1 -0
- package/dist/backend/services/return-list-view-service.js +82 -0
- package/dist/backend/services/return-list-view-service.js.map +1 -0
- package/dist/backend/services/return-reason-service.d.ts +33 -0
- package/dist/backend/services/return-reason-service.d.ts.map +1 -0
- package/dist/backend/services/return-reason-service.js +90 -0
- package/dist/backend/services/return-reason-service.js.map +1 -0
- package/dist/backend/services/return-settlement-service.d.ts +67 -0
- package/dist/backend/services/return-settlement-service.d.ts.map +1 -0
- package/dist/backend/services/return-settlement-service.js +295 -0
- package/dist/backend/services/return-settlement-service.js.map +1 -0
- package/dist/backend/services/return-shipment-service.d.ts +40 -0
- package/dist/backend/services/return-shipment-service.d.ts.map +1 -0
- package/dist/backend/services/return-shipment-service.js +113 -0
- package/dist/backend/services/return-shipment-service.js.map +1 -0
- package/dist/backend/services/return-status-graph-service.d.ts +59 -0
- package/dist/backend/services/return-status-graph-service.d.ts.map +1 -0
- package/dist/backend/services/return-status-graph-service.js +197 -0
- package/dist/backend/services/return-status-graph-service.js.map +1 -0
- package/dist/backend/services/return-transition-service.d.ts +48 -0
- package/dist/backend/services/return-transition-service.d.ts.map +1 -0
- package/dist/backend/services/return-transition-service.js +116 -0
- package/dist/backend/services/return-transition-service.js.map +1 -0
- package/dist/backend/services/returns-seeder.d.ts +18 -0
- package/dist/backend/services/returns-seeder.d.ts.map +1 -0
- package/dist/backend/services/returns-seeder.js +63 -0
- package/dist/backend/services/returns-seeder.js.map +1 -0
- package/dist/backend/services/rma-number-generator.d.ts +35 -0
- package/dist/backend/services/rma-number-generator.d.ts.map +1 -0
- package/dist/backend/services/rma-number-generator.js +45 -0
- package/dist/backend/services/rma-number-generator.js.map +1 -0
- package/dist/manifest.d.ts +182 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +216 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260625T144227_returns_init.d.ts +15 -0
- package/dist/migrations/20260625T144227_returns_init.d.ts.map +1 -0
- package/dist/migrations/20260625T144227_returns_init.js +241 -0
- package/dist/migrations/20260625T144227_returns_init.js.map +1 -0
- package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.d.ts +25 -0
- package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.d.ts.map +1 -0
- package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.js +46 -0
- package/dist/migrations/20260817T203206_returns_refund_corrective_invoice_outcome.js.map +1 -0
- package/dist/migrations/index.d.ts +28 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +31 -0
- package/dist/migrations/index.js.map +1 -0
- package/docs/returns.md +103 -0
- package/i18n/en.json +28 -0
- package/i18n/pl.json +28 -0
- package/package.json +101 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { lazyPort } from '@endora-commerce/platform/kernel';
|
|
2
|
+
import { returnsModule } from './plugin.js';
|
|
3
|
+
import { ReturnEmailNotifier } from './services/return-email-notifier.js';
|
|
4
|
+
import { createChannelLanguageResolver, createCustomerEmailResolver, } from './services/notification-context.js';
|
|
5
|
+
import { RETURN_AUTHORIZED_DEFAULT, RETURN_REJECTED_DEFAULT } from './email-templates/transactional-defaults.js';
|
|
6
|
+
import { Refund } from './entities/refund.entity.js';
|
|
7
|
+
import { ReturnCaseAttachment } from './entities/return-case-attachment.entity.js';
|
|
8
|
+
import { ReturnCaseComment } from './entities/return-case-comment.entity.js';
|
|
9
|
+
import { ReturnCaseItem } from './entities/return-case-item.entity.js';
|
|
10
|
+
import { ReturnCase } from './entities/return-case.entity.js';
|
|
11
|
+
import { ReturnDeliveryMethod } from './entities/return-delivery-method.entity.js';
|
|
12
|
+
import { ReturnListSavedView } from './entities/return-list-saved-view.entity.js';
|
|
13
|
+
import { ReturnReason } from './entities/return-reason.entity.js';
|
|
14
|
+
import { ReturnShipment } from './entities/return-shipment.entity.js';
|
|
15
|
+
import { ReturnStatusTransition } from './entities/return-status-transition.entity.js';
|
|
16
|
+
import { ReturnStatus } from './entities/return-status.entity.js';
|
|
17
|
+
export function registerModule(ctx) {
|
|
18
|
+
ctx.di.register({
|
|
19
|
+
returns: ctx
|
|
20
|
+
.asFunction(({ emFactory, eventBus, auditLogService }) => {
|
|
21
|
+
const cradle = () => ctx.cradle();
|
|
22
|
+
/**
|
|
23
|
+
* The customer notification, built here rather than handed in (T143c).
|
|
24
|
+
*
|
|
25
|
+
* It is this module's own class, and a root that constructs its own
|
|
26
|
+
* class builds it slightly differently in each root — which is what
|
|
27
|
+
* happened: the two spellings differed in the mailer they passed and in
|
|
28
|
+
* nothing that made the difference visible. The mailer is resolved per
|
|
29
|
+
* send, so a composition that contributes one later (the harness does)
|
|
30
|
+
* is not a race, and the sender accessor stays late-bound because
|
|
31
|
+
* `transactional_emails` announces it after this module composes.
|
|
32
|
+
*
|
|
33
|
+
* T118c — its two remaining inputs are this module's own now. The
|
|
34
|
+
* address comes from `customer_accounts`' published record and the
|
|
35
|
+
* language from the case's channel; both were `returnsBridge` closures a
|
|
36
|
+
* root wrote twice, and both live in `services/notification-context.ts`
|
|
37
|
+
* so the mapping and its fallbacks are testable with nothing composed.
|
|
38
|
+
*/
|
|
39
|
+
const notifier = new ReturnEmailNotifier(lazyPort(ctx, 'emailMailer'), createCustomerEmailResolver(lazyPort(ctx, 'customerAccountReadPort')), {
|
|
40
|
+
getTransactionalEmailSender: () => cradle().transactionalEmailSenderAccessor(),
|
|
41
|
+
resolveLanguage: createChannelLanguageResolver(emFactory),
|
|
42
|
+
});
|
|
43
|
+
return returnsModule({
|
|
44
|
+
emFactory,
|
|
45
|
+
eventBus,
|
|
46
|
+
auditLog: auditLogService,
|
|
47
|
+
settingsService: lazyPort(ctx, 'settingsReadPort'),
|
|
48
|
+
requireAdmin: (permission) => async (req, reply) => cradle().requireAdmin(permission)(req, reply),
|
|
49
|
+
requireCustomer: (req, reply) => cradle().requireCustomer(req, reply),
|
|
50
|
+
resolveCustomerAccountId: (req) => cradle().customerAccountIdResolver(req),
|
|
51
|
+
resolveAdminUserId: (req) => cradle().adminContextResolver(req).adminUserId,
|
|
52
|
+
// The four settlement adapters, resolved here since T118c. Each was a
|
|
53
|
+
// forwarder a composition root built onto the owning module's port and
|
|
54
|
+
// handed over as a `returnsBridge` member, which meant the edge into
|
|
55
|
+
// `payments`, `invoices` and `credit_limits` appeared in no manifest:
|
|
56
|
+
// a root's resolution is nobody's declared dependency, so an operator
|
|
57
|
+
// switching one of the three off was told nothing about what stops.
|
|
58
|
+
// The `lazyPort` proxy resolves per call, so the gate still answers at
|
|
59
|
+
// the settlement it is about rather than at composition.
|
|
60
|
+
orderContext: lazyPort(ctx, 'orderReturnContextPort'),
|
|
61
|
+
paymentRefund: lazyPort(ctx, 'paymentRefundPort'),
|
|
62
|
+
correctiveInvoice: lazyPort(ctx, 'correctiveInvoicePort'),
|
|
63
|
+
creditTopup: lazyPort(ctx, 'creditTopupPort'),
|
|
64
|
+
notifier,
|
|
65
|
+
});
|
|
66
|
+
})
|
|
67
|
+
.singleton(),
|
|
68
|
+
});
|
|
69
|
+
ctx.routes(async (app) => {
|
|
70
|
+
await ctx.cradle().returns(app);
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* The default subject and content for the 2 transactional emails this
|
|
74
|
+
* module declares in its manifest (T143a).
|
|
75
|
+
*
|
|
76
|
+
* These were fourteen `emailDefaultsRegistry.register(...)` calls in
|
|
77
|
+
* `composition.ts`, each importing a template constant out of the module that
|
|
78
|
+
* owns it — a root reaching into seven modules to hand their own content to
|
|
79
|
+
* an eighth. Each module registers its own now.
|
|
80
|
+
*
|
|
81
|
+
* `ctx.onBoot` rather than a registration: the registry is *read* once, by
|
|
82
|
+
* `transactional_emails`' boot reconciler inside its plugin body. Boot hooks
|
|
83
|
+
* run during composition and plugin bodies only when the Fastify app is
|
|
84
|
+
* built, so this always lands first — by construction, not by ordering luck.
|
|
85
|
+
*/
|
|
86
|
+
ctx.onBoot(async () => {
|
|
87
|
+
const defaults = lazyPort(ctx, 'emailDefaultsPort');
|
|
88
|
+
defaults.register('return_authorized', RETURN_AUTHORIZED_DEFAULT, 'returns');
|
|
89
|
+
defaults.register('return_rejected', RETURN_REJECTED_DEFAULT, 'returns');
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The module's persisted entity classes, on the `./backend` subpath, as one
|
|
94
|
+
* array and **no named class export** (D-168).
|
|
95
|
+
*
|
|
96
|
+
* This is the shape the platform reads when the package is *installed*: the
|
|
97
|
+
* boot-time loader (`src/packages/package-runtime.ts`, `exported['entities']`)
|
|
98
|
+
* and the static declaration reader (`scripts/lib/package-declarations.ts`),
|
|
99
|
+
* which is the third source of `check:module-boundary`'s `table→owner` map and
|
|
100
|
+
* the package pass of `check-entity-tenant-classification`. A missing array is
|
|
101
|
+
* answered with `[]` — zero entities registered, no error anywhere.
|
|
102
|
+
*/
|
|
103
|
+
export const entities = [
|
|
104
|
+
Refund,
|
|
105
|
+
ReturnCaseAttachment,
|
|
106
|
+
ReturnCaseComment,
|
|
107
|
+
ReturnCaseItem,
|
|
108
|
+
ReturnCase,
|
|
109
|
+
ReturnDeliveryMethod,
|
|
110
|
+
ReturnListSavedView,
|
|
111
|
+
ReturnReason,
|
|
112
|
+
ReturnShipment,
|
|
113
|
+
ReturnStatusTransition,
|
|
114
|
+
ReturnStatus,
|
|
115
|
+
];
|
|
116
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
|
|
2
|
+
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
3
|
+
import type { CorrectiveInvoicePort, CreditTopupPort, OrderReturnContextPort, PaymentRefundPort } from '@endora-commerce/contracts';
|
|
4
|
+
import type { EventBus } from '@endora-commerce/platform/events';
|
|
5
|
+
import type { SettingsReadPort } from '@endora-commerce/platform/kernel';
|
|
6
|
+
import type { AuditPort } from '@endora-commerce/platform/kernel';
|
|
7
|
+
import { type ReturnNotifier } from './services/return-authorization-service.js';
|
|
8
|
+
export interface ReturnsModuleOptions {
|
|
9
|
+
emFactory: () => EntityManager;
|
|
10
|
+
eventBus: EventBus;
|
|
11
|
+
settingsService: SettingsReadPort;
|
|
12
|
+
requireCustomer: (req: FastifyRequest, reply: unknown) => Promise<void>;
|
|
13
|
+
requireAdmin: (permission?: string) => (req: FastifyRequest, reply: FastifyReply) => Promise<void>;
|
|
14
|
+
resolveCustomerAccountId: (req: FastifyRequest) => string;
|
|
15
|
+
resolveAdminUserId: (req: FastifyRequest) => string;
|
|
16
|
+
orderContext: OrderReturnContextPort;
|
|
17
|
+
/** Settlement ports (US5). Money refunds, corrective invoices, credit top-up. */
|
|
18
|
+
paymentRefund: PaymentRefundPort;
|
|
19
|
+
correctiveInvoice: CorrectiveInvoicePort;
|
|
20
|
+
creditTopup: CreditTopupPort;
|
|
21
|
+
/** Audit-log writer (FR-041); status changes + settlement are recorded. */
|
|
22
|
+
auditLog: AuditPort;
|
|
23
|
+
/** Best-effort customer notifications on authorize/reject. */
|
|
24
|
+
notifier?: ReturnNotifier;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Composition root for the returns module (feature 046). Builds the workflow
|
|
28
|
+
* engine, RMA numbering, and the case + authorization services, then registers
|
|
29
|
+
* the customer (US1) and admin (US2/US3) routes. Returns a Fastify plugin in
|
|
30
|
+
* the `module(options) => async (app) => {}` shape used across the codebase.
|
|
31
|
+
*/
|
|
32
|
+
export declare function returnsModule(options: ReturnsModuleOptions): (app: FastifyInstance) => Promise<void>;
|
|
33
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EACV,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAelE,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,4CAA4C,CAAC;AAQpD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,aAAa,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,gBAAgB,CAAC;IAClC,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,wBAAwB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC;IAC1D,kBAAkB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC;IACpD,YAAY,EAAE,sBAAsB,CAAC;IACrC,iFAAiF;IACjF,aAAa,EAAE,iBAAiB,CAAC;IACjC,iBAAiB,EAAE,qBAAqB,CAAC;IACzC,WAAW,EAAE,eAAe,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAqHzC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { RETURNS_SETTING_CODES } from '../manifest.js';
|
|
3
|
+
import { ReturnStatusGraphService } from './services/return-status-graph-service.js';
|
|
4
|
+
import { ReturnTransitionService } from './services/return-transition-service.js';
|
|
5
|
+
import { ReturnCaseService } from './services/return-case-service.js';
|
|
6
|
+
import { ReturnCommentService } from './services/return-comment-service.js';
|
|
7
|
+
import { ReturnSettlementService } from './services/return-settlement-service.js';
|
|
8
|
+
import { ReturnDeliveryMethodService } from './services/return-delivery-method-service.js';
|
|
9
|
+
import { ReturnShipmentService } from './services/return-shipment-service.js';
|
|
10
|
+
import { ReturnReasonService } from './services/return-reason-service.js';
|
|
11
|
+
import { ReturnAttachmentService } from './services/return-attachment-service.js';
|
|
12
|
+
import { ReturnsSeeder } from './services/returns-seeder.js';
|
|
13
|
+
import { ReturnListService } from './services/return-list-service.js';
|
|
14
|
+
import { ReturnListViewService } from './services/return-list-view-service.js';
|
|
15
|
+
import { ReturnExportService } from './services/return-export-service.js';
|
|
16
|
+
import { ReturnAuthorizationService, } from './services/return-authorization-service.js';
|
|
17
|
+
import { createRmaNumberGenerator } from './services/rma-number-generator.js';
|
|
18
|
+
import { registerReturnsCustomerRoutes } from './routes.customer.js';
|
|
19
|
+
import { registerReturnsAdminRoutes } from './routes.admin.js';
|
|
20
|
+
/** Default free-return window when the setting cannot be resolved (manifest default). */
|
|
21
|
+
const DEFAULT_FREE_RETURN_DAYS = 14;
|
|
22
|
+
/**
|
|
23
|
+
* Composition root for the returns module (feature 046). Builds the workflow
|
|
24
|
+
* engine, RMA numbering, and the case + authorization services, then registers
|
|
25
|
+
* the customer (US1) and admin (US2/US3) routes. Returns a Fastify plugin in
|
|
26
|
+
* the `module(options) => async (app) => {}` shape used across the codebase.
|
|
27
|
+
*/
|
|
28
|
+
export function returnsModule(options) {
|
|
29
|
+
return async (app) => {
|
|
30
|
+
const { emFactory, eventBus, settingsService, orderContext } = options;
|
|
31
|
+
// Self-healing default seed (no-op when the migration already seeded).
|
|
32
|
+
await new ReturnsSeeder(emFactory).ensureDefaults();
|
|
33
|
+
const graphService = new ReturnStatusGraphService(emFactory, options.auditLog);
|
|
34
|
+
const transitions = new ReturnTransitionService(emFactory, eventBus, graphService, options.auditLog);
|
|
35
|
+
const rmaGenerator = createRmaNumberGenerator({
|
|
36
|
+
resolvePrefix: (sc) => settingsService.get(RETURNS_SETTING_CODES.RMA_NUMBER_PREFIX, sc, z.string()),
|
|
37
|
+
resolveSuffix: (sc) => settingsService.get(RETURNS_SETTING_CODES.RMA_NUMBER_SUFFIX, sc, z.string()),
|
|
38
|
+
});
|
|
39
|
+
const resolveFreeReturnDays = async (salesChannelId) => {
|
|
40
|
+
try {
|
|
41
|
+
return await settingsService.get(RETURNS_SETTING_CODES.FREE_RETURN_DAYS, salesChannelId, z.number());
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return DEFAULT_FREE_RETURN_DAYS;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const resolveDefaultCostBearer = async (salesChannelId) => {
|
|
48
|
+
try {
|
|
49
|
+
const value = await settingsService.get(RETURNS_SETTING_CODES.DEFAULT_COST_BEARER_OUTSIDE_WINDOW, salesChannelId, z.enum(['customer', 'shop']));
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return 'customer';
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const caseService = new ReturnCaseService({
|
|
57
|
+
emFactory,
|
|
58
|
+
graphService,
|
|
59
|
+
transitions,
|
|
60
|
+
orderContext,
|
|
61
|
+
resolveFreeReturnDays,
|
|
62
|
+
...(options.auditLog ? { auditLog: options.auditLog } : {}),
|
|
63
|
+
});
|
|
64
|
+
const deliveryMethodService = new ReturnDeliveryMethodService({
|
|
65
|
+
emFactory,
|
|
66
|
+
graphService,
|
|
67
|
+
resolveDefaultCostBearer,
|
|
68
|
+
...(options.auditLog ? { auditLog: options.auditLog } : {}),
|
|
69
|
+
});
|
|
70
|
+
const shipmentService = new ReturnShipmentService({
|
|
71
|
+
emFactory,
|
|
72
|
+
transitions,
|
|
73
|
+
...(options.auditLog ? { auditLog: options.auditLog } : {}),
|
|
74
|
+
});
|
|
75
|
+
const reasonService = new ReturnReasonService(emFactory, options.auditLog);
|
|
76
|
+
const attachmentService = new ReturnAttachmentService(emFactory);
|
|
77
|
+
const listService = new ReturnListService({ emFactory, graphService, transitions });
|
|
78
|
+
const listViewService = new ReturnListViewService(emFactory);
|
|
79
|
+
const exportService = new ReturnExportService(listService);
|
|
80
|
+
const authorizationService = new ReturnAuthorizationService({
|
|
81
|
+
emFactory,
|
|
82
|
+
transitions,
|
|
83
|
+
rmaGenerator,
|
|
84
|
+
...(options.notifier ? { notifier: options.notifier } : {}),
|
|
85
|
+
});
|
|
86
|
+
const commentService = new ReturnCommentService({ emFactory, graphService });
|
|
87
|
+
const settlementService = new ReturnSettlementService({
|
|
88
|
+
emFactory,
|
|
89
|
+
events: eventBus,
|
|
90
|
+
transitions,
|
|
91
|
+
graphService,
|
|
92
|
+
paymentRefund: options.paymentRefund,
|
|
93
|
+
correctiveInvoice: options.correctiveInvoice,
|
|
94
|
+
creditTopup: options.creditTopup,
|
|
95
|
+
...(options.auditLog ? { auditLog: options.auditLog } : {}),
|
|
96
|
+
});
|
|
97
|
+
await registerReturnsCustomerRoutes(app, {
|
|
98
|
+
caseService,
|
|
99
|
+
commentService,
|
|
100
|
+
deliveryMethodService,
|
|
101
|
+
reasonService,
|
|
102
|
+
attachmentService,
|
|
103
|
+
requireCustomer: options.requireCustomer,
|
|
104
|
+
resolveCustomerAccountId: options.resolveCustomerAccountId,
|
|
105
|
+
});
|
|
106
|
+
await registerReturnsAdminRoutes(app, {
|
|
107
|
+
caseService,
|
|
108
|
+
authorizationService,
|
|
109
|
+
commentService,
|
|
110
|
+
settlementService,
|
|
111
|
+
deliveryMethodService,
|
|
112
|
+
shipmentService,
|
|
113
|
+
reasonService,
|
|
114
|
+
listService,
|
|
115
|
+
listViewService,
|
|
116
|
+
exportService,
|
|
117
|
+
transitions,
|
|
118
|
+
graphService,
|
|
119
|
+
requireAdmin: options.requireAdmin,
|
|
120
|
+
resolveAdminUserId: options.resolveAdminUserId,
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/backend/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
|
|
2
|
+
import type { ReturnCaseService } from './services/return-case-service.js';
|
|
3
|
+
import type { ReturnAuthorizationService } from './services/return-authorization-service.js';
|
|
4
|
+
import type { ReturnCommentService } from './services/return-comment-service.js';
|
|
5
|
+
import type { ReturnSettlementService } from './services/return-settlement-service.js';
|
|
6
|
+
import type { ReturnDeliveryMethodService } from './services/return-delivery-method-service.js';
|
|
7
|
+
import type { ReturnShipmentService } from './services/return-shipment-service.js';
|
|
8
|
+
import type { ReturnReasonService } from './services/return-reason-service.js';
|
|
9
|
+
import type { ReturnListService } from './services/return-list-service.js';
|
|
10
|
+
import type { ReturnListViewService } from './services/return-list-view-service.js';
|
|
11
|
+
import type { ReturnExportService } from './services/return-export-service.js';
|
|
12
|
+
import type { ReturnTransitionService } from './services/return-transition-service.js';
|
|
13
|
+
import type { ReturnStatusGraphService } from './services/return-status-graph-service.js';
|
|
14
|
+
type RequireAdmin = (permission?: string) => (req: FastifyRequest, reply: FastifyReply) => Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Returns admin routes — feature 046 (US2 case authorization/rejection +
|
|
17
|
+
* transitions; US3 configurable workflow). Read gates on `returns:read`,
|
|
18
|
+
* mutations on `returns:write`.
|
|
19
|
+
*/
|
|
20
|
+
export interface ReturnsAdminRoutesDeps {
|
|
21
|
+
caseService: ReturnCaseService;
|
|
22
|
+
authorizationService: ReturnAuthorizationService;
|
|
23
|
+
commentService: ReturnCommentService;
|
|
24
|
+
settlementService: ReturnSettlementService;
|
|
25
|
+
deliveryMethodService: ReturnDeliveryMethodService;
|
|
26
|
+
shipmentService: ReturnShipmentService;
|
|
27
|
+
reasonService: ReturnReasonService;
|
|
28
|
+
listService: ReturnListService;
|
|
29
|
+
listViewService: ReturnListViewService;
|
|
30
|
+
exportService: ReturnExportService;
|
|
31
|
+
transitions: ReturnTransitionService;
|
|
32
|
+
graphService: ReturnStatusGraphService;
|
|
33
|
+
requireAdmin: RequireAdmin;
|
|
34
|
+
resolveAdminUserId: (req: FastifyRequest) => string;
|
|
35
|
+
}
|
|
36
|
+
export declare function registerReturnsAdminRoutes(app: FastifyInstance, deps: ReturnsAdminRoutesDeps): Promise<void>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=routes.admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.admin.d.ts","sourceRoot":"","sources":["../../src/backend/routes.admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAmB7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAE1F,KAAK,YAAY,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzG;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,oBAAoB,EAAE,0BAA0B,CAAC;IACjD,cAAc,EAAE,oBAAoB,CAAC;IACrC,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,qBAAqB,EAAE,2BAA2B,CAAC;IACnD,eAAe,EAAE,qBAAqB,CAAC;IACvC,aAAa,EAAE,mBAAmB,CAAC;IACnC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,eAAe,EAAE,qBAAqB,CAAC;IACvC,aAAa,EAAE,mBAAmB,CAAC;IACnC,WAAW,EAAE,uBAAuB,CAAC;IACrC,YAAY,EAAE,wBAAwB,CAAC;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC;CACrD;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiVf"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { adminAddCommentRequestSchema, adminRejectRequestSchema, adminTransitionRequestSchema, adminReturnsListQuerySchema, bulkTransitionRequestSchema, createReturnShipmentRequestSchema, returnDeliveryMethodCreateSchema, returnDeliveryMethodUpdateSchema, returnReasonCreateSchema, returnReasonUpdateSchema, returnSavedViewCreateSchema, returnSavedViewUpdateSchema, returnStatusCreateSchema, returnStatusUpdateSchema, returnTransitionsSetSchema, settlementRequestSchema, } from '@endora-commerce/contracts';
|
|
2
|
+
export async function registerReturnsAdminRoutes(app, deps) {
|
|
3
|
+
const { caseService, authorizationService, commentService, settlementService, deliveryMethodService, shipmentService, reasonService, listService, listViewService, exportService, transitions, graphService, requireAdmin, resolveAdminUserId, } = deps;
|
|
4
|
+
// --- List, bulk actions, saved views, export (US8) ----------------------
|
|
5
|
+
app.get('/api/v1/admin/returns', { preHandler: requireAdmin('returns:read'), schema: { querystring: adminReturnsListQuerySchema } }, async (request) => {
|
|
6
|
+
const query = adminReturnsListQuerySchema.parse(request.query);
|
|
7
|
+
return { data: await listService.list(query) };
|
|
8
|
+
});
|
|
9
|
+
app.get('/api/v1/admin/returns/export', {
|
|
10
|
+
preHandler: requireAdmin('returns:read'),
|
|
11
|
+
schema: { querystring: adminReturnsListQuerySchema },
|
|
12
|
+
config: { streamingResponse: true },
|
|
13
|
+
}, async (request, reply) => {
|
|
14
|
+
const query = adminReturnsListQuerySchema.parse(request.query);
|
|
15
|
+
const { csv, rowCount, truncated } = await exportService.exportCsv(query);
|
|
16
|
+
reply.header('content-type', 'text/csv; charset=utf-8');
|
|
17
|
+
reply.header('x-export-row-count', String(rowCount));
|
|
18
|
+
reply.header('x-export-truncated', String(truncated));
|
|
19
|
+
return csv;
|
|
20
|
+
});
|
|
21
|
+
app.post('/api/v1/admin/returns/bulk-transition', { preHandler: requireAdmin('returns:write'), schema: { body: bulkTransitionRequestSchema } }, async (request) => {
|
|
22
|
+
const adminUserId = resolveAdminUserId(request);
|
|
23
|
+
const body = bulkTransitionRequestSchema.parse(request.body);
|
|
24
|
+
const data = await listService.bulkTransition(body.ids, body.to, adminUserId, body.reason);
|
|
25
|
+
return { data };
|
|
26
|
+
});
|
|
27
|
+
app.get('/api/v1/admin/returns/list-views', { preHandler: requireAdmin('returns:read') }, async (request) => {
|
|
28
|
+
const adminUserId = resolveAdminUserId(request);
|
|
29
|
+
return { data: await listViewService.listFor(adminUserId) };
|
|
30
|
+
});
|
|
31
|
+
app.post('/api/v1/admin/returns/list-views', { preHandler: requireAdmin('returns:read'), schema: { body: returnSavedViewCreateSchema } }, async (request, reply) => {
|
|
32
|
+
const adminUserId = resolveAdminUserId(request);
|
|
33
|
+
const body = returnSavedViewCreateSchema.parse(request.body);
|
|
34
|
+
const data = await listViewService.create(adminUserId, body);
|
|
35
|
+
reply.status(201);
|
|
36
|
+
return { data };
|
|
37
|
+
});
|
|
38
|
+
app.patch('/api/v1/admin/returns/list-views/:id', { preHandler: requireAdmin('returns:read'), schema: { body: returnSavedViewUpdateSchema } }, async (request) => {
|
|
39
|
+
const adminUserId = resolveAdminUserId(request);
|
|
40
|
+
const body = returnSavedViewUpdateSchema.parse(request.body);
|
|
41
|
+
const data = await listViewService.update(request.params.id, adminUserId, body);
|
|
42
|
+
return { data };
|
|
43
|
+
});
|
|
44
|
+
app.delete('/api/v1/admin/returns/list-views/:id', { preHandler: requireAdmin('returns:read') }, async (request) => {
|
|
45
|
+
const adminUserId = resolveAdminUserId(request);
|
|
46
|
+
await listViewService.remove(request.params.id, adminUserId);
|
|
47
|
+
return { data: { ok: true } };
|
|
48
|
+
});
|
|
49
|
+
// --- Workflow configuration (US3) ---------------------------------------
|
|
50
|
+
// Registered before `/:id` so the static `statuses` segment is unambiguous.
|
|
51
|
+
app.get('/api/v1/admin/returns/statuses', { preHandler: requireAdmin('returns:read') }, async () => {
|
|
52
|
+
const data = await graphService.listGraph();
|
|
53
|
+
return { data };
|
|
54
|
+
});
|
|
55
|
+
app.post('/api/v1/admin/returns/statuses', { preHandler: requireAdmin('returns:write'), schema: { body: returnStatusCreateSchema } }, async (request, reply) => {
|
|
56
|
+
const body = returnStatusCreateSchema.parse(request.body);
|
|
57
|
+
await graphService.createStatus({
|
|
58
|
+
code: body.code,
|
|
59
|
+
name: body.name,
|
|
60
|
+
defaultName: body.defaultName,
|
|
61
|
+
isTerminal: body.isTerminal,
|
|
62
|
+
weight: body.weight,
|
|
63
|
+
color: body.color,
|
|
64
|
+
});
|
|
65
|
+
reply.status(201);
|
|
66
|
+
return { data: await graphService.listGraph() };
|
|
67
|
+
});
|
|
68
|
+
app.patch('/api/v1/admin/returns/statuses/:code', { preHandler: requireAdmin('returns:write'), schema: { body: returnStatusUpdateSchema } }, async (request) => {
|
|
69
|
+
const body = returnStatusUpdateSchema.parse(request.body);
|
|
70
|
+
await graphService.updateStatus(request.params.code, body);
|
|
71
|
+
return { data: await graphService.listGraph() };
|
|
72
|
+
});
|
|
73
|
+
app.delete('/api/v1/admin/returns/statuses/:code', { preHandler: requireAdmin('returns:write') }, async (request) => {
|
|
74
|
+
await graphService.deleteStatus(request.params.code);
|
|
75
|
+
return { data: await graphService.listGraph() };
|
|
76
|
+
});
|
|
77
|
+
app.put('/api/v1/admin/returns/transitions', { preHandler: requireAdmin('returns:write'), schema: { body: returnTransitionsSetSchema } }, async (request) => {
|
|
78
|
+
const body = returnTransitionsSetSchema.parse(request.body);
|
|
79
|
+
await graphService.replaceTransitions(body.transitions);
|
|
80
|
+
return { data: await graphService.listGraph() };
|
|
81
|
+
});
|
|
82
|
+
// --- Return delivery methods (US6) --------------------------------------
|
|
83
|
+
app.get('/api/v1/admin/returns/delivery-methods', { preHandler: requireAdmin('returns:read') }, async () => {
|
|
84
|
+
return { data: await deliveryMethodService.list() };
|
|
85
|
+
});
|
|
86
|
+
app.post('/api/v1/admin/returns/delivery-methods', { preHandler: requireAdmin('returns:write'), schema: { body: returnDeliveryMethodCreateSchema } }, async (request, reply) => {
|
|
87
|
+
const body = returnDeliveryMethodCreateSchema.parse(request.body);
|
|
88
|
+
const data = await deliveryMethodService.create(body);
|
|
89
|
+
reply.status(201);
|
|
90
|
+
return { data };
|
|
91
|
+
});
|
|
92
|
+
app.patch('/api/v1/admin/returns/delivery-methods/:id', { preHandler: requireAdmin('returns:write'), schema: { body: returnDeliveryMethodUpdateSchema } }, async (request) => {
|
|
93
|
+
const body = returnDeliveryMethodUpdateSchema.parse(request.body);
|
|
94
|
+
const data = await deliveryMethodService.update(request.params.id, body);
|
|
95
|
+
return { data };
|
|
96
|
+
});
|
|
97
|
+
app.delete('/api/v1/admin/returns/delivery-methods/:id', { preHandler: requireAdmin('returns:write') }, async (request) => {
|
|
98
|
+
await deliveryMethodService.remove(request.params.id);
|
|
99
|
+
return { data: { ok: true } };
|
|
100
|
+
});
|
|
101
|
+
// --- Case detail + transitions (US2) ------------------------------------
|
|
102
|
+
app.get('/api/v1/admin/returns/:id', { preHandler: requireAdmin('returns:read') }, async (request) => {
|
|
103
|
+
const data = await caseService.getByIdForAdmin(request.params.id);
|
|
104
|
+
return { data };
|
|
105
|
+
});
|
|
106
|
+
app.post('/api/v1/admin/returns/:id/authorize', { preHandler: requireAdmin('returns:write') }, async (request) => {
|
|
107
|
+
const adminUserId = resolveAdminUserId(request);
|
|
108
|
+
const data = await authorizationService.authorize(request.params.id, adminUserId);
|
|
109
|
+
return { data };
|
|
110
|
+
});
|
|
111
|
+
app.post('/api/v1/admin/returns/:id/reject', { preHandler: requireAdmin('returns:write'), schema: { body: adminRejectRequestSchema } }, async (request) => {
|
|
112
|
+
const adminUserId = resolveAdminUserId(request);
|
|
113
|
+
const body = adminRejectRequestSchema.parse(request.body);
|
|
114
|
+
await authorizationService.reject(request.params.id, adminUserId, body.reason);
|
|
115
|
+
return { data: await caseService.getByIdForAdmin(request.params.id) };
|
|
116
|
+
});
|
|
117
|
+
app.post('/api/v1/admin/returns/:id/transition', { preHandler: requireAdmin('returns:write'), schema: { body: adminTransitionRequestSchema } }, async (request) => {
|
|
118
|
+
const adminUserId = resolveAdminUserId(request);
|
|
119
|
+
const body = adminTransitionRequestSchema.parse(request.body);
|
|
120
|
+
await transitions.apply(request.params.id, body.to, { kind: 'admin', adminUserId }, body.reason !== undefined ? { reason: body.reason } : undefined);
|
|
121
|
+
return { data: await caseService.getByIdForAdmin(request.params.id) };
|
|
122
|
+
});
|
|
123
|
+
// --- Settlement (US5) ----------------------------------------------------
|
|
124
|
+
app.get('/api/v1/admin/returns/:id/settlement', { preHandler: requireAdmin('returns:read') }, async (request) => {
|
|
125
|
+
const data = await settlementService.getPrefill(request.params.id);
|
|
126
|
+
return { data };
|
|
127
|
+
});
|
|
128
|
+
app.post('/api/v1/admin/returns/:id/settlement', { preHandler: requireAdmin('returns:write'), schema: { body: settlementRequestSchema } }, async (request) => {
|
|
129
|
+
const adminUserId = resolveAdminUserId(request);
|
|
130
|
+
const body = settlementRequestSchema.parse(request.body);
|
|
131
|
+
const data = await settlementService.settle(request.params.id, adminUserId, body);
|
|
132
|
+
return { data };
|
|
133
|
+
});
|
|
134
|
+
// --- Reasons (US7) -------------------------------------------------------
|
|
135
|
+
app.get('/api/v1/admin/returns/reasons', { preHandler: requireAdmin('returns:read') }, async () => {
|
|
136
|
+
return { data: await reasonService.listAll() };
|
|
137
|
+
});
|
|
138
|
+
app.post('/api/v1/admin/returns/reasons', { preHandler: requireAdmin('returns:write'), schema: { body: returnReasonCreateSchema } }, async (request, reply) => {
|
|
139
|
+
const body = returnReasonCreateSchema.parse(request.body);
|
|
140
|
+
const data = await reasonService.create(body);
|
|
141
|
+
reply.status(201);
|
|
142
|
+
return { data };
|
|
143
|
+
});
|
|
144
|
+
app.patch('/api/v1/admin/returns/reasons/:id', { preHandler: requireAdmin('returns:write'), schema: { body: returnReasonUpdateSchema } }, async (request) => {
|
|
145
|
+
const body = returnReasonUpdateSchema.parse(request.body);
|
|
146
|
+
const data = await reasonService.update(request.params.id, body);
|
|
147
|
+
return { data };
|
|
148
|
+
});
|
|
149
|
+
app.delete('/api/v1/admin/returns/reasons/:id', { preHandler: requireAdmin('returns:write') }, async (request) => {
|
|
150
|
+
await reasonService.remove(request.params.id);
|
|
151
|
+
return { data: { ok: true } };
|
|
152
|
+
});
|
|
153
|
+
// --- Return shipments (US6) ---------------------------------------------
|
|
154
|
+
app.get('/api/v1/admin/returns/:id/shipments', { preHandler: requireAdmin('returns:read') }, async (request) => {
|
|
155
|
+
return { data: await shipmentService.listForCase(request.params.id) };
|
|
156
|
+
});
|
|
157
|
+
app.post('/api/v1/admin/returns/:id/shipments', { preHandler: requireAdmin('returns:write'), schema: { body: createReturnShipmentRequestSchema } }, async (request, reply) => {
|
|
158
|
+
const body = createReturnShipmentRequestSchema.parse(request.body);
|
|
159
|
+
const data = await shipmentService.create(request.params.id, body);
|
|
160
|
+
reply.status(201);
|
|
161
|
+
return { data };
|
|
162
|
+
});
|
|
163
|
+
app.post('/api/v1/admin/returns/:id/shipments/:shipmentId/receive', { preHandler: requireAdmin('returns:write') }, async (request) => {
|
|
164
|
+
const adminUserId = resolveAdminUserId(request);
|
|
165
|
+
const data = await shipmentService.receive(request.params.id, request.params.shipmentId, adminUserId);
|
|
166
|
+
return { data };
|
|
167
|
+
});
|
|
168
|
+
// --- Comments (US4) ------------------------------------------------------
|
|
169
|
+
app.get('/api/v1/admin/returns/:id/comments', { preHandler: requireAdmin('returns:read') }, async (request) => {
|
|
170
|
+
const data = await commentService.listForAdmin(request.params.id);
|
|
171
|
+
return { data };
|
|
172
|
+
});
|
|
173
|
+
app.post('/api/v1/admin/returns/:id/comments', { preHandler: requireAdmin('returns:write'), schema: { body: adminAddCommentRequestSchema } }, async (request, reply) => {
|
|
174
|
+
const adminUserId = resolveAdminUserId(request);
|
|
175
|
+
const body = adminAddCommentRequestSchema.parse(request.body);
|
|
176
|
+
const data = await commentService.addByAdmin(request.params.id, adminUserId, body);
|
|
177
|
+
reply.status(201);
|
|
178
|
+
return { data };
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=routes.admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.admin.js","sourceRoot":"","sources":["../../src/backend/routes.admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FastifyInstance, FastifyRequest } from 'fastify';
|
|
2
|
+
import type { ReturnCaseService } from './services/return-case-service.js';
|
|
3
|
+
import type { ReturnCommentService } from './services/return-comment-service.js';
|
|
4
|
+
import type { ReturnDeliveryMethodService } from './services/return-delivery-method-service.js';
|
|
5
|
+
import type { ReturnReasonService } from './services/return-reason-service.js';
|
|
6
|
+
import type { ReturnAttachmentService } from './services/return-attachment-service.js';
|
|
7
|
+
/**
|
|
8
|
+
* Returns customer (storefront) routes — feature 046 (US1, US4, US6). All
|
|
9
|
+
* endpoints require an authenticated customer; ownership is enforced in the
|
|
10
|
+
* service against `customer_account_id`.
|
|
11
|
+
*/
|
|
12
|
+
export interface ReturnsCustomerRoutesDeps {
|
|
13
|
+
caseService: ReturnCaseService;
|
|
14
|
+
commentService: ReturnCommentService;
|
|
15
|
+
deliveryMethodService: ReturnDeliveryMethodService;
|
|
16
|
+
reasonService: ReturnReasonService;
|
|
17
|
+
attachmentService: ReturnAttachmentService;
|
|
18
|
+
requireCustomer: (req: FastifyRequest, reply: unknown) => Promise<void>;
|
|
19
|
+
resolveCustomerAccountId: (req: FastifyRequest) => string;
|
|
20
|
+
}
|
|
21
|
+
export declare function registerReturnsCustomerRoutes(app: FastifyInstance, deps: ReturnsCustomerRoutesDeps): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=routes.customer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.customer.d.ts","sourceRoot":"","sources":["../../src/backend/routes.customer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAO/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAEvF;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,cAAc,EAAE,oBAAoB,CAAC;IACrC,qBAAqB,EAAE,2BAA2B,CAAC;IACnD,aAAa,EAAE,mBAAmB,CAAC;IACnC,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,wBAAwB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC;CAC3D;AAED,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Gf"}
|