- Remove ProjectCreate page, POST /projects endpoint, and next-number endpoint - Projects can only be created through orders (shared numbering sequence) - Remove dead CreateProjectSchema and createProject service function - Delete 'order' row from number_sequences (unused; code uses 'shared') - Smart sequence release: decrement last_number only when deleting the highest number - Fix received-invoices stats referencing non-existent is_deleted and amount_czk columns - Update deploy instructions in CLAUDE.md (npm install, prisma migrate deploy) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
import { z } from "zod";
|
|
|
|
export const UpdateProjectSchema = z.object({
|
|
name: z.string().nullish(),
|
|
status: z.string().optional(),
|
|
notes: z.string().nullish(),
|
|
customer_id: z
|
|
.union([z.number(), z.string(), z.null()])
|
|
.transform((v) => (v === null ? null : Number(v)))
|
|
.optional(),
|
|
responsible_user_id: z
|
|
.union([z.number(), z.string(), z.null()])
|
|
.transform((v) => (v === null ? null : Number(v)))
|
|
.optional(),
|
|
quotation_id: z
|
|
.union([z.number(), z.string(), z.null()])
|
|
.transform((v) => (v === null ? null : Number(v)))
|
|
.optional(),
|
|
order_id: z
|
|
.union([z.number(), z.string(), z.null()])
|
|
.transform((v) => (v === null ? null : Number(v)))
|
|
.optional(),
|
|
start_date: z.union([z.string(), z.null()]).optional(),
|
|
end_date: z.union([z.string(), z.null()]).optional(),
|
|
});
|
|
|
|
export const CreateProjectNoteSchema = z.object({
|
|
content: z.string().nullish(),
|
|
});
|
|
|
|
export type UpdateProjectInput = z.infer<typeof UpdateProjectSchema>;
|
|
export type CreateProjectNoteInput = z.infer<typeof CreateProjectNoteSchema>;
|