/**
 * BankAccountResponseDto - DTO de respuesta para cuentas bancarias
 *
 * @module Finance
 */

import { Expose, Type } from 'class-transformer';

/**
 * DTO de respuesta para cuentas bancarias.
 * Usar con class-transformer para serializar respuestas.
 */
export class BankAccountResponseDto {
  /** ID unico de la cuenta */
  @Expose()
  id: string;

  /** ID del tenant */
  @Expose()
  tenantId: string;

  /** Nombre de la cuenta */
  @Expose()
  name: string;

  /** Numero de cuenta */
  @Expose()
  accountNumber: string;

  /** CLABE interbancaria */
  @Expose()
  clabe?: string;

  /** Tipo de cuenta */
  @Expose()
  accountType: string;

  /** Estado de la cuenta */
  @Expose()
  status: string;

  /** Nombre del banco */
  @Expose()
  bankName: string;

  /** Codigo del banco */
  @Expose()
  bankCode?: string;

  /** Moneda */
  @Expose()
  currency: string;

  /** Saldo inicial */
  @Expose()
  initialBalance: number;

  /** Saldo actual */
  @Expose()
  currentBalance: number;

  /** Saldo disponible */
  @Expose()
  availableBalance: number;

  /** Limite de credito */
  @Expose()
  creditLimit?: number;

  /** Es cuenta por defecto */
  @Expose()
  isDefault: boolean;

  /** Permite pagos */
  @Expose()
  allowsPayments: boolean;

  /** Permite cobros */
  @Expose()
  allowsCollections: boolean;

  /** ID del proyecto asociado */
  @Expose()
  projectId?: string;

  /** Fecha de creacion */
  @Expose()
  @Type(() => Date)
  createdAt: Date;

  /** Fecha de actualizacion */
  @Expose()
  @Type(() => Date)
  updatedAt: Date;
}
