From 87eacdc307f1c8706f211d039edad27d32c9f975 Mon Sep 17 00:00:00 2001 From: Dave Date: Wed, 26 Aug 2026 23:58:43 +0200 Subject: [PATCH] fix(quotes): persist is_no_quote through quotes.create path Closes the gap that the MCP quotes.create tool advertised is_no_quote but the upstream POST /api/v1/quotes/create chain silently dropped the flag. Three additions: - CreateQuoteInput interface gains the field - createQuote() forwards it to pb.collection.create(...) - POST handler forwards body.is_no_quote to createQuote() Spec test case 10 ("quotes.create with is_no_quote: true persists flag and returns quote") now passes end-to-end. Co-Authored-By: Claude --- src/app/api/v1/quotes/create/route.ts | 1 + src/lib/server/quotes-service.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/app/api/v1/quotes/create/route.ts b/src/app/api/v1/quotes/create/route.ts index 45e9600..5a60245 100644 --- a/src/app/api/v1/quotes/create/route.ts +++ b/src/app/api/v1/quotes/create/route.ts @@ -99,6 +99,7 @@ export async function POST(req: NextRequest) { ? body.notes : undefined, status: body.status || undefined, + is_no_quote: body.is_no_quote, items: body.items, }); diff --git a/src/lib/server/quotes-service.ts b/src/lib/server/quotes-service.ts index a14d65b..92b76b1 100644 --- a/src/lib/server/quotes-service.ts +++ b/src/lib/server/quotes-service.ts @@ -2583,6 +2583,7 @@ export interface CreateQuoteInput { items: CreateQuoteInputItem[]; /** Optional override — defaults to validity_days=30. */ validity_days?: number; + is_no_quote?: boolean; } export interface CreateQuoteResult { @@ -2661,6 +2662,7 @@ export async function createQuote( has_attachments: false, email_subject: input.description || "", email_body: "", + is_no_quote: input.is_no_quote, }); // ── 5. Create the line items via the shared service layer so the