import { IMoneyDTO, IQuantityDTO } from "core/common/presentation";

export interface IListInvoicesResponseDTO {
  id: string;

  invoice_status: string;
  invoice_number: string;
  invoice_series: string;
  issue_date: string;
  operation_date: string;
  language_code: string;
  currency: string;

  subtotal: IMoneyDTO;
  total: IMoneyDTO;
}

export interface IGetInvoiceResponseDTO {
  id: string;

  invoice_status: string;
  invoice_number: string;
  invoice_series: string;
  issue_date: string;
  operation_date: string;
  language_code: string;
  currency: string;

  subtotal: IMoneyDTO;
  total: IMoneyDTO;

  items: {
    description: string;
    quantity: IQuantityDTO;
    unit_measure: string;
    unit_price: IMoneyDTO;
    subtotal: IMoneyDTO;
    //tax_amount: IMoneyDTO;
    total: IMoneyDTO;
  }[];

  //customer:
}

export interface ICreateInvoiceResponseDTO {
  id: string;

  invoice_status: string;
  invoice_number: string;
  invoice_series: string;
  issue_date: string;
  operation_date: string;
  language_code: string;
  currency: string;

  subtotal: IMoneyDTO;
  total: IMoneyDTO;
}

// Inferir el tipo en TypeScript desde el esquema Zod
//export type IUpdateAcccountResponseDTO = z.infer<typeof IUpdateAcccountResponseDTOSchema>;

export interface IUpdateInvoiceResponseDTO {
  id: string;

  invoice_status: string;
  invoice_number: string;
  invoice_series: string;
  issue_date: string;
  operation_date: string;
  language_code: string;
  currency: string;

  subtotal: IMoneyDTO;
  total: IMoneyDTO;
}
