import { z } from "zod"
import { emailField } from "./common.schema"

export const companyFormSchema = z.object({
    name: z.string().min(2, { message: "Company name must be at least 2 characters." }),
    legalName: z.string().min(2, { message: "Legal name must be at least 2 characters." }),
    address: z.string().min(5, { message: "Address is required." }),
    city: z.string().min(1, { message: "City is required." }),
    state: z.string().min(1, { message: "State/Province is required." }),
    pincode: z.string().min(4, { message: "Postal/PIN code is required." }),
    country: z.string().min(1, { message: "Country is required." }),
    phone: z.string().min(5, { message: "Phone number is required." }),
    email: emailField(),
    website: z.string().url({ message: "Please enter a valid URL." }).optional().or(z.literal("")),
    panNumber: z.string().optional(),
    gstNumber: z.string().optional(),
    taxIdentificationNumber: z.string().optional(),
  })
  
  export const invoiceSettingsSchema = z.object({
    invoicePrefix: z.string().min(1, { message: "Invoice prefix is required." }),
    invoiceStartNumber: z.coerce.number().int().positive({ message: "Starting number must be positive." }),
    nextInvoiceNumber: z.coerce.number().int().positive({ message: "Next invoice number must be positive." }),
    defaultDueDays: z.coerce.number().int().min(0, { message: "Due days cannot be negative." }),
    defaultTaxRate: z.coerce.number().min(0, { message: "Tax rate cannot be negative." }),
    invoiceNotes: z.string().optional(),
    termsAndConditions: z.string().optional(),
  })