import {
  AmountSchema,
  MetadataSchema,
  MoneySchema,
  PercentageSchema,
  QuantitySchema,
} from "@erp/core";
import { z } from "zod/v4";

export const CreateCustomerInvoiceResponseSchema = z.object({
  id: z.uuid(),
  company_id: z.uuid(),

  invoice_number: z.string(),
  status: z.string(),
  series: z.string(),

  invoice_date: z.string(),
  operation_date: z.string(),

  notes: z.string(),

  language_code: z.string(),
  currency_code: z.string(),

  subtotal_amount: MoneySchema,
  discount_percentage: PercentageSchema,
  discount_amount: MoneySchema,
  taxable_amount: MoneySchema,
  taxes_amount: MoneySchema,
  total_amount: MoneySchema,

  items: z.array(
    z.object({
      id: z.uuid(),
      position: z.string(),
      description: z.string(),
      quantity: QuantitySchema,
      unit_amount: AmountSchema,

      taxes: z.string(),

      subtotal_amount: MoneySchema,
      discount_percentage: PercentageSchema,
      discount_amount: MoneySchema,
      taxable_amount: MoneySchema,
      taxes_amount: MoneySchema,
      total_amount: MoneySchema,
    })
  ),

  metadata: MetadataSchema.optional(),
});

export type CreateCustomerInvoiceResponseDTO = z.infer<typeof CreateCustomerInvoiceResponseSchema>;
