import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import {
  IsBoolean,
  IsIn,
  IsOptional,
  IsString,
  IsUUID,
  MaxLength,
} from 'class-validator';

export class CreateTipoGastoDto {
  @ApiProperty({ description: 'Descripción del tipo de gasto', maxLength: 150 })
  @IsString()
  @MaxLength(150)
  descripcion: string;

  @ApiPropertyOptional({ description: 'Indica si aplica IVA', default: true })
  @IsOptional()
  @IsBoolean()
  aplica_iva?: boolean;

  @ApiPropertyOptional({
    description: 'Porcentaje de IVA permitido',
    enum: [0, 5, 10],
    default: 10,
  })
  @IsOptional()
  @IsIn([0, 5, 10])
  porcentaje_iva?: number;

  @ApiPropertyOptional({ description: 'Indica si es deducible', default: true })
  @IsOptional()
  @IsBoolean()
  deducible?: boolean;

  @ApiPropertyOptional({ description: 'Cuenta contable asociada', nullable: true })
  @IsOptional()
  @IsUUID()
  cuenta_contable_id?: string;
}
