import { ApiPropertyOptional } from '@nestjs/swagger';
import { IsInt, IsNumber, IsOptional, IsString, Min } from 'class-validator';

/** Parámetros globales del módulo (M36). */
export class UpdatePresupuestoConfigDto {
  @ApiPropertyOptional({ example: 'PRES-{YYYY}-' })
  @IsString()
  @IsOptional()
  prefijo_numero?: string;

  @ApiPropertyOptional({ example: 30 })
  @IsInt()
  @Min(0)
  @IsOptional()
  dias_vigencia?: number;

  @ApiPropertyOptional({ example: 50000000 })
  @IsNumber()
  @Min(0)
  @IsOptional()
  monto_umbral_aprobacion?: number;

  @ApiPropertyOptional({ example: 'PYG' })
  @IsString()
  @IsOptional()
  moneda_base?: string;

  @ApiPropertyOptional({
    example: 'Contado contra entrega',
    deprecated: true,
    description:
      'DEPRECADO (solo compatibilidad): el default operativo se define en el catálogo de Condiciones de pago (es_default).',
  })
  @IsString()
  @IsOptional()
  condicion_pago_default?: string;

  @ApiPropertyOptional({ example: 'presupuestos@empresa.com' })
  @IsString()
  @IsOptional()
  email_remitente?: string;

  @ApiPropertyOptional({ example: 'Presupuesto {numero} — {empresa}' })
  @IsString()
  @IsOptional()
  asunto_email_template?: string;

  @ApiPropertyOptional({ example: 3 })
  @IsInt()
  @Min(0)
  @IsOptional()
  dias_alerta_vencimiento?: number;

  @ApiPropertyOptional({ example: 10000000 })
  @IsNumber()
  @Min(0)
  @IsOptional()
  umbral_nivel1?: number;

  @ApiPropertyOptional({ example: 50000000 })
  @IsNumber()
  @Min(0)
  @IsOptional()
  umbral_nivel2?: number;

  @ApiPropertyOptional({ example: 200000000 })
  @IsNumber()
  @Min(0)
  @IsOptional()
  umbral_nivel3?: number;

  @ApiPropertyOptional({ example: 'Documento no válido como factura.' })
  @IsString()
  @IsOptional()
  texto_legal_pdf?: string;
}
