import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsEnum, IsInt, IsOptional, IsUUID, Max, Min } from 'class-validator';

export enum ComprasModoRedondeoDto {
  HALF_UP = 'HALF_UP',
  HALF_EVEN = 'HALF_EVEN',
  DOWN = 'DOWN',
  UP = 'UP',
}

export class UpsertConfigComprasMonedaDto {
  @ApiProperty({ description: 'Moneda a configurar' })
  @IsUUID()
  moneda_id: string;

  @ApiPropertyOptional({
    description:
      'Decimales para montos en compras. null = usar fallback (empresa_monedas / estándar de la moneda).',
  })
  @IsOptional()
  @IsInt()
  @Min(0)
  @Max(2)
  decimales_monto?: number | null;

  @ApiPropertyOptional({ description: 'Decimales para el porcentaje de descuento', default: 4 })
  @IsOptional()
  @IsInt()
  @Min(0)
  @Max(6)
  decimales_porcentaje?: number;

  @ApiPropertyOptional({ enum: ComprasModoRedondeoDto, default: ComprasModoRedondeoDto.HALF_UP })
  @IsOptional()
  @IsEnum(ComprasModoRedondeoDto)
  modo_redondeo?: ComprasModoRedondeoDto;
}
