@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 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().length(3), totalMinor: z.number().int().nonnegative(), transitionReason: z.string().max(1_000).optional() }).strict(),
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: { kind: 'update', collection: 'quotes', permission: 'revise.quote', event: 'revise.quote' },
17
- acceptQuote: { kind: 'transition', collection: 'quotes', permission: 'accept.quote', event: 'accept.quote', status: 'accepted', allowedFrom: ["draft", "sent"] },
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":"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"}
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.18",
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.18",
21
- "@molda-org/module-runtime": "0.1.0-next.18",
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": {