style: run prettier on entire codebase
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const AttendanceNotesSchema = z.object({
|
||||
notes: z.string().nullish(),
|
||||
@@ -6,44 +6,73 @@ export const AttendanceNotesSchema = z.object({
|
||||
|
||||
export const AttendanceUpdateAddressSchema = z.object({
|
||||
address: z.string().max(500).nullish(),
|
||||
punch_action: z.string().optional().default('arrival'),
|
||||
punch_action: z.string().optional().default("arrival"),
|
||||
});
|
||||
|
||||
export const AttendanceSwitchProjectSchema = z.object({
|
||||
project_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
project_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
});
|
||||
|
||||
export const AttendanceBalancesSchema = z.object({
|
||||
user_id: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
year: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
user_id: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
year: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
action_type: z.string(),
|
||||
vacation_total: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vacation_used: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
sick_used: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vacation_total: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
vacation_used: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
sick_used: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export const AttendanceBulkSchema = z.object({
|
||||
month: z.string().regex(/^\d{4}-\d{2}$/, 'Měsíc je povinný (formát YYYY-MM)'),
|
||||
user_ids: z.array(z.number()).min(1, 'Vyberte alespoň jednoho zaměstnance'),
|
||||
arrival_time: z.string().optional().default('08:00'),
|
||||
departure_time: z.string().optional().default('16:30'),
|
||||
break_start_time: z.string().optional().default('12:00'),
|
||||
break_end_time: z.string().optional().default('12:30'),
|
||||
month: z.string().regex(/^\d{4}-\d{2}$/, "Měsíc je povinný (formát YYYY-MM)"),
|
||||
user_ids: z.array(z.number()).min(1, "Vyberte alespoň jednoho zaměstnance"),
|
||||
arrival_time: z.string().optional().default("08:00"),
|
||||
departure_time: z.string().optional().default("16:30"),
|
||||
break_start_time: z.string().optional().default("12:00"),
|
||||
break_end_time: z.string().optional().default("12:30"),
|
||||
});
|
||||
|
||||
export const AttendanceLeaveSchema = z.object({
|
||||
user_id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
date_from: z.string().min(1, 'Datum je povinné'),
|
||||
user_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
date_from: z.string().min(1, "Datum je povinné"),
|
||||
date_to: z.string().optional(),
|
||||
leave_type: z.string().optional().default('vacation'),
|
||||
leave_hours: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
leave_type: z.string().optional().default("vacation"),
|
||||
leave_hours: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
notes: z.string().nullish(),
|
||||
});
|
||||
|
||||
const ProjectLogSchema = z.object({
|
||||
project_id: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
hours: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
|
||||
minutes: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
|
||||
project_id: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
hours: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v) || 0)
|
||||
.optional()
|
||||
.default(0),
|
||||
minutes: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v) || 0)
|
||||
.optional()
|
||||
.default(0),
|
||||
});
|
||||
|
||||
export const AttendancePunchSchema = z.object({
|
||||
@@ -55,22 +84,49 @@ export const AttendancePunchSchema = z.object({
|
||||
});
|
||||
|
||||
export const CreateAttendanceSchema = z.object({
|
||||
user_id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
user_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
shift_date: z.string(),
|
||||
arrival_time: z.string().nullish(),
|
||||
arrival_lat: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
arrival_lng: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
arrival_accuracy: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
arrival_lat: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
arrival_lng: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
arrival_accuracy: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
arrival_address: z.string().nullish(),
|
||||
departure_time: z.string().nullish(),
|
||||
departure_lat: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
departure_lng: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
departure_accuracy: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
departure_lat: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
departure_lng: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
departure_accuracy: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
departure_address: z.string().nullish(),
|
||||
notes: z.string().nullish(),
|
||||
project_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
leave_type: z.string().optional().default('work'),
|
||||
leave_hours: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
project_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
leave_type: z.string().optional().default("work"),
|
||||
leave_hours: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
project_logs: z.array(ProjectLogSchema).optional(),
|
||||
});
|
||||
|
||||
@@ -87,8 +143,12 @@ export const UpdateAttendanceSchema = z.object({
|
||||
});
|
||||
|
||||
export type AttendanceNotesInput = z.infer<typeof AttendanceNotesSchema>;
|
||||
export type AttendanceUpdateAddressInput = z.infer<typeof AttendanceUpdateAddressSchema>;
|
||||
export type AttendanceSwitchProjectInput = z.infer<typeof AttendanceSwitchProjectSchema>;
|
||||
export type AttendanceUpdateAddressInput = z.infer<
|
||||
typeof AttendanceUpdateAddressSchema
|
||||
>;
|
||||
export type AttendanceSwitchProjectInput = z.infer<
|
||||
typeof AttendanceSwitchProjectSchema
|
||||
>;
|
||||
export type AttendanceBalancesInput = z.infer<typeof AttendanceBalancesSchema>;
|
||||
export type AttendanceBulkInput = z.infer<typeof AttendanceBulkSchema>;
|
||||
export type AttendanceLeaveInput = z.infer<typeof AttendanceLeaveSchema>;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const LoginSchema = z.object({
|
||||
username: z.string().min(1, 'Uživatelské jméno je povinné'),
|
||||
password: z.string().min(1, 'Heslo je povinné'),
|
||||
username: z.string().min(1, "Uživatelské jméno je povinné"),
|
||||
password: z.string().min(1, "Heslo je povinné"),
|
||||
remember_me: z.boolean().optional().default(false),
|
||||
});
|
||||
|
||||
export const TotpVerifySchema = z.object({
|
||||
login_token: z.string().min(1, 'Token je povinný'),
|
||||
totp_code: z.string().length(6, 'Kód musí mít 6 číslic'),
|
||||
login_token: z.string().min(1, "Token je povinný"),
|
||||
totp_code: z.string().length(6, "Kód musí mít 6 číslic"),
|
||||
});
|
||||
|
||||
export const TotpBackupSchema = z.object({
|
||||
login_token: z.string().min(1, 'Token je povinný'),
|
||||
backup_code: z.string().min(1, 'Záložní kód je povinný'),
|
||||
login_token: z.string().min(1, "Token je povinný"),
|
||||
backup_code: z.string().min(1, "Záložní kód je povinný"),
|
||||
});
|
||||
|
||||
export type LoginInput = z.infer<typeof LoginSchema>;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateBankAccountSchema = z.object({
|
||||
account_name: z.string().nullish(),
|
||||
@@ -6,9 +6,13 @@ export const CreateBankAccountSchema = z.object({
|
||||
account_number: z.string().nullish(),
|
||||
iban: z.string().nullish(),
|
||||
bic: z.string().nullish(),
|
||||
currency: z.string().optional().default('CZK'),
|
||||
currency: z.string().optional().default("CZK"),
|
||||
is_default: z.any().optional().default(false),
|
||||
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
|
||||
position: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(0),
|
||||
});
|
||||
|
||||
export const UpdateBankAccountSchema = z.object({
|
||||
@@ -19,7 +23,10 @@ export const UpdateBankAccountSchema = z.object({
|
||||
bic: z.string().nullish(),
|
||||
currency: z.string().optional(),
|
||||
is_default: z.any().optional(),
|
||||
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
position: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export type CreateBankAccountInput = z.infer<typeof CreateBankAccountSchema>;
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
import { ZodSchema, z } from 'zod';
|
||||
import { ZodSchema, z } from "zod";
|
||||
|
||||
export function parseBody<T>(schema: ZodSchema<T>, body: unknown): { data: T } | { error: string } {
|
||||
export function parseBody<T>(
|
||||
schema: ZodSchema<T>,
|
||||
body: unknown,
|
||||
): { data: T } | { error: string } {
|
||||
try {
|
||||
return { data: schema.parse(body) };
|
||||
} catch (e) {
|
||||
if (e instanceof z.ZodError) {
|
||||
return { error: e.issues.map((err: z.ZodIssue) => err.message).join(', ') };
|
||||
return {
|
||||
error: e.issues.map((err: z.ZodIssue) => err.message).join(", "),
|
||||
};
|
||||
}
|
||||
return { error: 'Neplatný požadavek' };
|
||||
return { error: "Neplatný požadavek" };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const UpdateCompanySettingsSchema = z.object({
|
||||
company_name: z.string().nullish(),
|
||||
@@ -12,10 +12,15 @@ export const UpdateCompanySettingsSchema = z.object({
|
||||
default_currency: z.string().nullish(),
|
||||
order_type_code: z.string().nullish(),
|
||||
invoice_type_code: z.string().nullish(),
|
||||
default_vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
default_vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
require_2fa: z.any().optional(),
|
||||
custom_fields: z.array(z.any()).optional(),
|
||||
supplier_field_order: z.array(z.any()).optional(),
|
||||
});
|
||||
|
||||
export type UpdateCompanySettingsInput = z.infer<typeof UpdateCompanySettingsSchema>;
|
||||
export type UpdateCompanySettingsInput = z.infer<
|
||||
typeof UpdateCompanySettingsSchema
|
||||
>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateCustomerSchema = z.object({
|
||||
name: z.string().min(1, 'Název zákazníka je povinný'),
|
||||
name: z.string().min(1, "Název zákazníka je povinný"),
|
||||
street: z.string().nullish(),
|
||||
city: z.string().nullish(),
|
||||
postal_code: z.string().nullish(),
|
||||
|
||||
@@ -1,21 +1,46 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
const InvoiceItemSchema = z.object({
|
||||
description: z.string().nullish(),
|
||||
quantity: z.union([z.number(), z.string()]).transform(v => Number(v) || 1).optional().default(1),
|
||||
quantity: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v) || 1)
|
||||
.optional()
|
||||
.default(1),
|
||||
unit: z.string().nullish(),
|
||||
unit_price: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21.0),
|
||||
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
unit_price: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v) || 0)
|
||||
.optional()
|
||||
.default(0),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(21.0),
|
||||
position: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export const CreateInvoiceSchema = z.object({
|
||||
invoice_number: z.string().nullish(),
|
||||
order_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
status: z.string().optional().default('issued'),
|
||||
currency: z.string().optional().default('CZK'),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21.0),
|
||||
order_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
customer_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
status: z.string().optional().default("issued"),
|
||||
currency: z.string().optional().default("CZK"),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(21.0),
|
||||
apply_vat: z.any().optional().default(true),
|
||||
payment_method: z.string().nullish(),
|
||||
constant_symbol: z.string().nullish(),
|
||||
@@ -44,7 +69,10 @@ export const UpdateInvoiceSchema = z.object({
|
||||
bank_account: z.string().nullish(),
|
||||
issued_by: z.string().nullish(),
|
||||
customer_id: z.union([z.number(), z.string(), z.null()]).optional(),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
apply_vat: z.any().optional(),
|
||||
issue_date: z.union([z.string(), z.null()]).optional(),
|
||||
due_date: z.union([z.string(), z.null()]).optional(),
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateLeaveRequestSchema = z.object({
|
||||
leave_type: z.string().min(1, 'Typ nepřítomnosti je povinný'),
|
||||
date_from: z.string().min(1, 'Datum od je povinné'),
|
||||
date_to: z.string().min(1, 'Datum do je povinné'),
|
||||
leave_type: z.string().min(1, "Typ nepřítomnosti je povinný"),
|
||||
date_from: z.string().min(1, "Datum od je povinné"),
|
||||
date_to: z.string().min(1, "Datum do je povinné"),
|
||||
notes: z.string().nullish(),
|
||||
});
|
||||
|
||||
export const ReviewLeaveRequestSchema = z.object({
|
||||
status: z.string().min(1, 'Stav je povinný'),
|
||||
status: z.string().min(1, "Stav je povinný"),
|
||||
reviewer_note: z.string().nullish(),
|
||||
});
|
||||
|
||||
|
||||
@@ -1,33 +1,58 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
const QuotationItemSchema = z.object({
|
||||
description: z.string().nullish(),
|
||||
item_description: z.string().nullish(),
|
||||
quantity: z.union([z.number(), z.string()]).transform(v => Number(v) || 1).optional().default(1),
|
||||
quantity: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v) || 1)
|
||||
.optional()
|
||||
.default(1),
|
||||
unit: z.string().nullish(),
|
||||
unit_price: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
|
||||
unit_price: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v) || 0)
|
||||
.optional()
|
||||
.default(0),
|
||||
is_included_in_total: z.any().optional().default(true),
|
||||
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
position: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
const ScopeSectionSchema = z.object({
|
||||
title: z.string().nullish(),
|
||||
title_cz: z.string().nullish(),
|
||||
content: z.string().nullish(),
|
||||
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
position: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export const CreateQuotationSchema = z.object({
|
||||
quotation_number: z.string().nullish(),
|
||||
project_code: z.string().nullish(),
|
||||
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
customer_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
valid_until: z.string().nullish(),
|
||||
currency: z.string().optional().default('CZK'),
|
||||
language: z.string().optional().default('cs'),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21.0),
|
||||
currency: z.string().optional().default("CZK"),
|
||||
language: z.string().optional().default("cs"),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(21.0),
|
||||
apply_vat: z.any().optional().default(true),
|
||||
exchange_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(1.0),
|
||||
status: z.string().optional().default('active'),
|
||||
exchange_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(1.0),
|
||||
status: z.string().optional().default("active"),
|
||||
scope_title: z.string().nullish(),
|
||||
scope_description: z.string().nullish(),
|
||||
items: z.array(QuotationItemSchema).optional(),
|
||||
@@ -37,13 +62,22 @@ export const CreateQuotationSchema = z.object({
|
||||
export const UpdateQuotationSchema = z.object({
|
||||
quotation_number: z.string().optional(),
|
||||
project_code: z.string().nullish(),
|
||||
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
customer_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
valid_until: z.union([z.string(), z.null()]).optional(),
|
||||
currency: z.string().optional(),
|
||||
language: z.string().optional(),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
apply_vat: z.any().optional(),
|
||||
exchange_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
exchange_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
status: z.string().optional(),
|
||||
scope_title: z.string().nullish(),
|
||||
scope_description: z.string().nullish(),
|
||||
|
||||
@@ -1,38 +1,66 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
const OrderItemSchema = z.object({
|
||||
description: z.string().nullish(),
|
||||
item_description: z.string().nullish(),
|
||||
quantity: z.union([z.number(), z.string()]).transform(v => Number(v) || 1).optional().default(1),
|
||||
quantity: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v) || 1)
|
||||
.optional()
|
||||
.default(1),
|
||||
unit: z.string().nullish(),
|
||||
unit_price: z.union([z.number(), z.string()]).transform(v => Number(v) || 0).optional().default(0),
|
||||
unit_price: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v) || 0)
|
||||
.optional()
|
||||
.default(0),
|
||||
is_included_in_total: z.any().optional().default(true),
|
||||
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
position: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
const OrderSectionSchema = z.object({
|
||||
title: z.string().nullish(),
|
||||
title_cz: z.string().nullish(),
|
||||
content: z.string().nullish(),
|
||||
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
position: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export const CreateOrderFromQuotationSchema = z.object({
|
||||
quotationId: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
customerOrderNumber: z.string().optional().default(''),
|
||||
quotationId: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
customerOrderNumber: z.string().optional().default(""),
|
||||
});
|
||||
|
||||
export const CreateOrderSchema = z.object({
|
||||
order_number: z.string().nullish(),
|
||||
customer_order_number: z.string().nullish(),
|
||||
quotation_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
status: z.string().optional().default('prijata'),
|
||||
currency: z.string().optional().default('CZK'),
|
||||
language: z.string().optional().default('cs'),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21.0),
|
||||
quotation_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
customer_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
status: z.string().optional().default("prijata"),
|
||||
currency: z.string().optional().default("CZK"),
|
||||
language: z.string().optional().default("cs"),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(21.0),
|
||||
apply_vat: z.any().optional().default(true),
|
||||
exchange_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(1.0),
|
||||
exchange_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(1.0),
|
||||
scope_title: z.string().nullish(),
|
||||
scope_description: z.string().nullish(),
|
||||
notes: z.string().nullish(),
|
||||
@@ -50,12 +78,17 @@ export const UpdateOrderSchema = z.object({
|
||||
scope_description: z.string().nullish(),
|
||||
notes: z.string().nullish(),
|
||||
customer_id: z.union([z.number(), z.string(), z.null()]).optional(),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
apply_vat: z.any().optional(),
|
||||
items: z.array(OrderItemSchema).optional(),
|
||||
sections: z.array(OrderSectionSchema).optional(),
|
||||
});
|
||||
|
||||
export type CreateOrderFromQuotationInput = z.infer<typeof CreateOrderFromQuotationSchema>;
|
||||
export type CreateOrderFromQuotationInput = z.infer<
|
||||
typeof CreateOrderFromQuotationSchema
|
||||
>;
|
||||
export type CreateOrderInput = z.infer<typeof CreateOrderSchema>;
|
||||
export type UpdateOrderInput = z.infer<typeof UpdateOrderSchema>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const UpdateProfileSchema = z.object({
|
||||
email: z.string().email('Neplatný formát e-mailu').optional(),
|
||||
email: z.string().email("Neplatný formát e-mailu").optional(),
|
||||
first_name: z.string().optional(),
|
||||
last_name: z.string().optional(),
|
||||
current_password: z.string().optional(),
|
||||
|
||||
@@ -1,13 +1,25 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateProjectSchema = z.object({
|
||||
project_number: z.string().nullish(),
|
||||
name: z.string().nullish(),
|
||||
customer_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
responsible_user_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
quotation_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
order_id: z.union([z.number(), z.string()]).transform(v => Number(v)).nullish(),
|
||||
status: z.string().optional().default('aktivni'),
|
||||
customer_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
responsible_user_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
quotation_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
order_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.nullish(),
|
||||
status: z.string().optional().default("aktivni"),
|
||||
start_date: z.string().nullish(),
|
||||
end_date: z.string().nullish(),
|
||||
notes: z.string().nullish(),
|
||||
|
||||
@@ -1,18 +1,30 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateReceivedInvoiceSchema = z.object({
|
||||
supplier_name: z.string().min(1, 'Název dodavatele je povinný'),
|
||||
month: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
year: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
supplier_name: z.string().min(1, "Název dodavatele je povinný"),
|
||||
month: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
year: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
invoice_number: z.string().nullish(),
|
||||
description: z.string().nullish(),
|
||||
amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
|
||||
currency: z.string().optional().default('CZK'),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(21),
|
||||
vat_amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
|
||||
amount: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(0),
|
||||
currency: z.string().optional().default("CZK"),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(21),
|
||||
vat_amount: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(0),
|
||||
issue_date: z.string().nullish(),
|
||||
due_date: z.string().nullish(),
|
||||
status: z.string().optional().default('unpaid'),
|
||||
status: z.string().optional().default("unpaid"),
|
||||
notes: z.string().nullish(),
|
||||
});
|
||||
|
||||
@@ -20,18 +32,37 @@ export const UpdateReceivedInvoiceSchema = z.object({
|
||||
supplier_name: z.string().optional(),
|
||||
invoice_number: z.string().nullish(),
|
||||
description: z.string().nullish(),
|
||||
amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
amount: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
currency: z.string().optional(),
|
||||
vat_rate: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vat_amount: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vat_rate: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
vat_amount: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
issue_date: z.union([z.string(), z.null()]).optional(),
|
||||
due_date: z.union([z.string(), z.null()]).optional(),
|
||||
paid_date: z.union([z.string(), z.null()]).optional(),
|
||||
status: z.string().optional(),
|
||||
notes: z.string().nullish(),
|
||||
month: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
year: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
month: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
year: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export type CreateReceivedInvoiceInput = z.infer<typeof CreateReceivedInvoiceSchema>;
|
||||
export type UpdateReceivedInvoiceInput = z.infer<typeof UpdateReceivedInvoiceSchema>;
|
||||
export type CreateReceivedInvoiceInput = z.infer<
|
||||
typeof CreateReceivedInvoiceSchema
|
||||
>;
|
||||
export type UpdateReceivedInvoiceInput = z.infer<
|
||||
typeof UpdateReceivedInvoiceSchema
|
||||
>;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateRoleSchema = z.object({
|
||||
name: z.string().min(1, 'Název role je povinný'),
|
||||
display_name: z.string().min(1, 'Zobrazovaný název je povinný'),
|
||||
name: z.string().min(1, "Název role je povinný"),
|
||||
display_name: z.string().min(1, "Zobrazovaný název je povinný"),
|
||||
description: z.string().nullish(),
|
||||
permission_ids: z.array(z.number()).optional(),
|
||||
});
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
const ScopeSectionSchema = z.object({
|
||||
title: z.string().nullish(),
|
||||
title_cz: z.string().nullish(),
|
||||
content: z.string().nullish(),
|
||||
position: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
position: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export const CreateScopeTemplateSchema = z.object({
|
||||
@@ -15,10 +18,17 @@ export const CreateScopeTemplateSchema = z.object({
|
||||
});
|
||||
|
||||
export const CreateItemTemplateSchema = z.object({
|
||||
id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
name: z.string().nullish(),
|
||||
description: z.string().nullish(),
|
||||
default_price: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
|
||||
default_price: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(0),
|
||||
category: z.string().nullish(),
|
||||
});
|
||||
|
||||
@@ -29,6 +39,10 @@ export const UpdateScopeTemplateSchema = z.object({
|
||||
sections: z.array(ScopeSectionSchema).optional(),
|
||||
});
|
||||
|
||||
export type CreateScopeTemplateInput = z.infer<typeof CreateScopeTemplateSchema>;
|
||||
export type CreateScopeTemplateInput = z.infer<
|
||||
typeof CreateScopeTemplateSchema
|
||||
>;
|
||||
export type CreateItemTemplateInput = z.infer<typeof CreateItemTemplateSchema>;
|
||||
export type UpdateScopeTemplateInput = z.infer<typeof UpdateScopeTemplateSchema>;
|
||||
export type UpdateScopeTemplateInput = z.infer<
|
||||
typeof UpdateScopeTemplateSchema
|
||||
>;
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateTripSchema = z.object({
|
||||
vehicle_id: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
user_id: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
vehicle_id: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
user_id: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
trip_date: z.string(),
|
||||
start_km: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
end_km: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
start_km: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
end_km: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
route_from: z.string(),
|
||||
route_to: z.string(),
|
||||
is_business: z.any().optional().default(false),
|
||||
@@ -14,8 +17,14 @@ export const CreateTripSchema = z.object({
|
||||
|
||||
export const UpdateTripSchema = z.object({
|
||||
trip_date: z.string().optional(),
|
||||
start_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
end_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
start_km: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
end_km: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
route_from: z.string().optional(),
|
||||
route_to: z.string().optional(),
|
||||
is_business: z.any().optional(),
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateUserSchema = z.object({
|
||||
username: z.string().min(1, 'Uživatelské jméno je povinné'),
|
||||
email: z.string().email('Neplatný formát e-mailu'),
|
||||
password: z.string().min(8, 'Heslo musí mít alespoň 8 znaků'),
|
||||
first_name: z.string().min(1, 'Jméno je povinné'),
|
||||
last_name: z.string().min(1, 'Příjmení je povinné'),
|
||||
role_id: z.union([z.number(), z.string()]).transform(v => Number(v)),
|
||||
username: z.string().min(1, "Uživatelské jméno je povinné"),
|
||||
email: z.string().email("Neplatný formát e-mailu"),
|
||||
password: z.string().min(8, "Heslo musí mít alespoň 8 znaků"),
|
||||
first_name: z.string().min(1, "Jméno je povinné"),
|
||||
last_name: z.string().min(1, "Příjmení je povinné"),
|
||||
role_id: z.union([z.number(), z.string()]).transform((v) => Number(v)),
|
||||
is_active: z.any().optional().default(true),
|
||||
});
|
||||
|
||||
export const UpdateUserSchema = z.object({
|
||||
username: z.string().optional(),
|
||||
email: z.string().email('Neplatný formát e-mailu').optional(),
|
||||
password: z.string().min(8, 'Heslo musí mít alespoň 8 znaků').optional(),
|
||||
email: z.string().email("Neplatný formát e-mailu").optional(),
|
||||
password: z.string().min(8, "Heslo musí mít alespoň 8 znaků").optional(),
|
||||
first_name: z.string().optional(),
|
||||
last_name: z.string().optional(),
|
||||
role_id: z.union([z.number(), z.string(), z.null()]).optional(),
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
import { z } from 'zod';
|
||||
import { z } from "zod";
|
||||
|
||||
export const CreateVehicleSchema = z.object({
|
||||
spz: z.string().min(1, 'SPZ je povinná'),
|
||||
name: z.string().min(1, 'Název je povinný'),
|
||||
spz: z.string().min(1, "SPZ je povinná"),
|
||||
name: z.string().min(1, "Název je povinný"),
|
||||
brand: z.string().nullish(),
|
||||
model: z.string().nullish(),
|
||||
initial_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
|
||||
actual_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional().default(0),
|
||||
initial_km: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(0),
|
||||
actual_km: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional()
|
||||
.default(0),
|
||||
is_active: z.any().optional().default(true),
|
||||
});
|
||||
|
||||
@@ -15,8 +23,14 @@ export const UpdateVehicleSchema = z.object({
|
||||
name: z.string().optional(),
|
||||
brand: z.string().nullish(),
|
||||
model: z.string().nullish(),
|
||||
initial_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
actual_km: z.union([z.number(), z.string()]).transform(v => Number(v)).optional(),
|
||||
initial_km: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
actual_km: z
|
||||
.union([z.number(), z.string()])
|
||||
.transform((v) => Number(v))
|
||||
.optional(),
|
||||
is_active: z.any().optional(),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user