57 lines
2.3 KiB
TypeScript
57 lines
2.3 KiB
TypeScript
import { z } from "zod";
|
|
import {
|
|
nonNegativeNumberFromForm,
|
|
numberInRange,
|
|
emailOrEmpty,
|
|
} from "./common";
|
|
|
|
export const UpdateCompanySettingsSchema = z.object({
|
|
company_name: z.string().nullish(),
|
|
street: z.string().nullish(),
|
|
city: z.string().nullish(),
|
|
postal_code: z.string().nullish(),
|
|
country: z.string().nullish(),
|
|
company_id: z.string().nullish(),
|
|
vat_id: z.string().nullish(),
|
|
quotation_prefix: z.string().nullish(),
|
|
default_currency: z.string().nullish(),
|
|
order_type_code: z.string().nullish(),
|
|
invoice_type_code: z.string().nullish(),
|
|
default_vat_rate: numberInRange(0, 100).optional(),
|
|
require_2fa: z
|
|
.preprocess((v) => v === true || v === 1 || v === "1", z.boolean())
|
|
.optional(),
|
|
break_threshold_hours: nonNegativeNumberFromForm.optional(),
|
|
break_duration_short: nonNegativeNumberFromForm.optional(),
|
|
break_duration_long: nonNegativeNumberFromForm.optional(),
|
|
clock_rounding_minutes: numberInRange(0, 1440).optional(),
|
|
invoice_alert_email: emailOrEmpty.nullish(),
|
|
leave_notify_email: emailOrEmpty.nullish(),
|
|
smtp_from: emailOrEmpty.nullish(),
|
|
smtp_from_name: z.string().nullish(),
|
|
offer_number_pattern: z.string().nullish(),
|
|
order_number_pattern: z.string().nullish(),
|
|
invoice_number_pattern: z.string().nullish(),
|
|
issued_order_number_pattern: z.string().nullish(),
|
|
issued_order_type_code: z.string().nullish(),
|
|
project_number_pattern: z.string().nullish(),
|
|
project_type_code: z.string().nullish(),
|
|
warehouse_receipt_prefix: z.string().nullish(),
|
|
warehouse_receipt_number_pattern: z.string().nullish(),
|
|
warehouse_issue_prefix: z.string().nullish(),
|
|
warehouse_issue_number_pattern: z.string().nullish(),
|
|
warehouse_inventory_prefix: z.string().nullish(),
|
|
warehouse_inventory_number_pattern: z.string().nullish(),
|
|
max_login_attempts: numberInRange(1, 100).optional(),
|
|
lockout_minutes: numberInRange(1, 1440).optional(),
|
|
max_requests_per_minute: numberInRange(1, 100000).optional(),
|
|
available_vat_rates: z.array(numberInRange(0, 100)).max(50).optional(),
|
|
available_currencies: z.array(z.string()).optional(),
|
|
custom_fields: z.array(z.unknown()).max(200).optional(),
|
|
supplier_field_order: z.array(z.unknown()).max(200).optional(),
|
|
});
|
|
|
|
export type UpdateCompanySettingsInput = z.infer<
|
|
typeof UpdateCompanySettingsSchema
|
|
>;
|