feat(documents): accept selected_custom_fields in document schemas
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -50,6 +50,11 @@ export const CreateInvoiceSchema = z.object({
|
|||||||
// Rich-text CZ/EN "Obsah" sections rendered after the items on the PDF
|
// Rich-text CZ/EN "Obsah" sections rendered after the items on the PDF
|
||||||
// (mirrors issued orders — shared DocumentSectionSchema, DB-aligned limits).
|
// (mirrors issued orders — shared DocumentSectionSchema, DB-aligned limits).
|
||||||
sections: z.array(DocumentSectionSchema).optional(),
|
sections: z.array(DocumentSectionSchema).optional(),
|
||||||
|
// Positional indices of company custom fields to print on this document's PDF.
|
||||||
|
selected_custom_fields: z
|
||||||
|
.array(z.number().int().nonnegative())
|
||||||
|
.max(200)
|
||||||
|
.optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const UpdateInvoiceSchema = z.object({
|
export const UpdateInvoiceSchema = z.object({
|
||||||
@@ -74,6 +79,10 @@ export const UpdateInvoiceSchema = z.object({
|
|||||||
paid_date: nullableIsoDateString,
|
paid_date: nullableIsoDateString,
|
||||||
items: z.array(InvoiceItemSchema).optional(),
|
items: z.array(InvoiceItemSchema).optional(),
|
||||||
sections: z.array(DocumentSectionSchema).optional(),
|
sections: z.array(DocumentSectionSchema).optional(),
|
||||||
|
selected_custom_fields: z
|
||||||
|
.array(z.number().int().nonnegative())
|
||||||
|
.max(200)
|
||||||
|
.optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export type CreateInvoiceInput = z.infer<typeof CreateInvoiceSchema>;
|
export type CreateInvoiceInput = z.infer<typeof CreateInvoiceSchema>;
|
||||||
|
|||||||
@@ -41,6 +41,12 @@ export const CreateIssuedOrderSchema = z.object({
|
|||||||
// Rich-text CZ/EN sections rendered on their own PDF page (mirrors offers'
|
// Rich-text CZ/EN sections rendered on their own PDF page (mirrors offers'
|
||||||
// scope_sections — shared DocumentSectionSchema, DB-aligned limits).
|
// scope_sections — shared DocumentSectionSchema, DB-aligned limits).
|
||||||
sections: z.array(DocumentSectionSchema).optional(),
|
sections: z.array(DocumentSectionSchema).optional(),
|
||||||
|
// Positional indices of company custom fields to print on this document's
|
||||||
|
// PDF. Omitted/empty ⇒ none. Update schema derives via .partial().
|
||||||
|
selected_custom_fields: z
|
||||||
|
.array(z.number().int().nonnegative())
|
||||||
|
.max(200)
|
||||||
|
.optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update = partial create MINUS the number: PO numbers are immutable
|
// Update = partial create MINUS the number: PO numbers are immutable
|
||||||
|
|||||||
@@ -48,6 +48,12 @@ export const CreateQuotationSchema = z.object({
|
|||||||
scope_description: z.string().max(8000).nullish(),
|
scope_description: z.string().max(8000).nullish(),
|
||||||
items: z.array(QuotationItemSchema).optional(),
|
items: z.array(QuotationItemSchema).optional(),
|
||||||
sections: z.array(ScopeSectionSchema).optional(),
|
sections: z.array(ScopeSectionSchema).optional(),
|
||||||
|
// Positional indices of company custom fields to print on this document's
|
||||||
|
// PDF. Omitted/empty ⇒ none. Update schema derives via .partial().
|
||||||
|
selected_custom_fields: z
|
||||||
|
.array(z.number().int().nonnegative())
|
||||||
|
.max(200)
|
||||||
|
.optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update = partial create MINUS the number: quotation numbers are immutable
|
// Update = partial create MINUS the number: quotation numbers are immutable
|
||||||
|
|||||||
Reference in New Issue
Block a user