@molda-org/quotes-custom-orders 0.1.0-next.18 → 0.1.0-next.19
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/dist/index.d.ts +6 -0
- package/dist/index.js +20 -4
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -61,6 +61,11 @@ export declare const QuotesCustomOrdersSpecification: {
|
|
|
61
61
|
readonly collection: "quotes";
|
|
62
62
|
readonly permission: "revise.quote";
|
|
63
63
|
readonly event: "revise.quote";
|
|
64
|
+
readonly validate: ({ value, current }: {
|
|
65
|
+
readonly value: import("@molda-org/module-runtime").ModuleEntityValue;
|
|
66
|
+
readonly current: import("@molda-org/module-runtime").ModuleRecord | null;
|
|
67
|
+
readonly transaction: import("@molda-org/module-runtime").ModuleTransaction;
|
|
68
|
+
}) => void;
|
|
64
69
|
};
|
|
65
70
|
readonly acceptQuote: {
|
|
66
71
|
readonly kind: "transition";
|
|
@@ -69,6 +74,7 @@ export declare const QuotesCustomOrdersSpecification: {
|
|
|
69
74
|
readonly event: "accept.quote";
|
|
70
75
|
readonly status: "accepted";
|
|
71
76
|
readonly allowedFrom: readonly ["draft", "sent"];
|
|
77
|
+
readonly confirmation: "required";
|
|
72
78
|
};
|
|
73
79
|
readonly approveDeliverable: {
|
|
74
80
|
readonly kind: "transition";
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { createResourceModuleContribution, createResourceModuleService, defineResourceModule, } from '@molda-org/module-runtime';
|
|
2
|
+
import { createResourceModuleContribution, createResourceModuleService, defineResourceModule, ModuleConflictError, } from '@molda-org/module-runtime';
|
|
3
3
|
export const QuotesCustomOrdersActionIds = ["requestQuote", "reviseQuote", "acceptQuote", "approveDeliverable"];
|
|
4
4
|
export const QuotesCustomOrdersViewIds = ["quoteRequests", "activeCustomOrders", "awaitingApproval"];
|
|
5
5
|
export const QuotesCustomOrdersHookIds = ["useQuoteRequests", "useCustomOrders", "useAwaitingApproval"];
|
|
@@ -7,14 +7,30 @@ export const QuotesCustomOrdersSpecification = {
|
|
|
7
7
|
id: 'quotes-custom-orders',
|
|
8
8
|
version: '1.0.0',
|
|
9
9
|
collections: {
|
|
10
|
-
'quotes': z.object({ customerId: z.string().min(1).max(200), status: z.enum(['draft', 'sent', 'accepted', 'rejected']), revision: z.number().int().positive(), currency: z.string().
|
|
10
|
+
'quotes': z.object({ customerId: z.string().min(1).max(200), status: z.enum(['draft', 'sent', 'accepted', 'rejected']), revision: z.number().int().positive(), currency: z.string().regex(/^[A-Z]{3}$/), totalMinor: z.number().int().nonnegative(), transitionReason: z.string().max(1_000).optional() }).strict(),
|
|
11
11
|
'custom-orders': z.object({ quoteId: z.string().min(1).max(200), status: z.enum(['active', 'completed', 'cancelled']) }).strict(),
|
|
12
12
|
'deliverables': z.object({ orderId: z.string().min(1).max(200), status: z.enum(['awaiting-approval', 'approved', 'rejected']), revision: z.number().int().positive(), transitionReason: z.string().max(1_000).optional() }).strict(),
|
|
13
13
|
},
|
|
14
14
|
actions: {
|
|
15
15
|
requestQuote: { kind: 'create', collection: 'quotes', permission: 'request.quote', event: 'request.quote' },
|
|
16
|
-
reviseQuote: {
|
|
17
|
-
|
|
16
|
+
reviseQuote: {
|
|
17
|
+
kind: 'update', collection: 'quotes', permission: 'revise.quote', event: 'revise.quote',
|
|
18
|
+
validate: ({ value, current }) => {
|
|
19
|
+
if (!current)
|
|
20
|
+
throw new ModuleConflictError('Quote does not exist');
|
|
21
|
+
if (current.value.status !== 'draft' && current.value.status !== 'sent') {
|
|
22
|
+
throw new ModuleConflictError('Only draft or sent quotes can be revised');
|
|
23
|
+
}
|
|
24
|
+
for (const field of ['customerId', 'currency']) {
|
|
25
|
+
if (value[field] !== current.value[field])
|
|
26
|
+
throw new ModuleConflictError(`Quote ${field} is immutable`);
|
|
27
|
+
}
|
|
28
|
+
if (Number(value.revision) !== Number(current.value.revision) + 1) {
|
|
29
|
+
throw new ModuleConflictError('Quote revision must increment by exactly one');
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
acceptQuote: { kind: 'transition', collection: 'quotes', permission: 'accept.quote', event: 'accept.quote', status: 'accepted', allowedFrom: ["draft", "sent"], confirmation: 'required' },
|
|
18
34
|
approveDeliverable: { kind: 'transition', collection: 'deliverables', permission: 'approve.deliverable', event: 'approve.deliverable', status: 'approved', allowedFrom: ["awaiting-approval"], confirmation: 'required' },
|
|
19
35
|
},
|
|
20
36
|
views: {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@molda-org/quotes-custom-orders",
|
|
3
|
-
"version": "0.1.0-next.
|
|
3
|
+
"version": "0.1.0-next.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@molda-org/module-contracts": "0.1.0-next.
|
|
21
|
-
"@molda-org/module-runtime": "0.1.0-next.
|
|
20
|
+
"@molda-org/module-contracts": "0.1.0-next.19",
|
|
21
|
+
"@molda-org/module-runtime": "0.1.0-next.19",
|
|
22
22
|
"zod": "4.6.5"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|