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

export class UpdateConfigComprasDto {
  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  habilitar_requisicion_compra?: boolean;

  @ApiPropertyOptional({
    enum: ['directo', 'requisicion_opcional', 'requisicion_obligatoria'],
  })
  @IsOptional()
  @IsString()
  @IsIn(['directo', 'requisicion_opcional', 'requisicion_obligatoria'])
  modo_flujo_compra?: 'directo' | 'requisicion_opcional' | 'requisicion_obligatoria';

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  afectar_stock_en_compra_directa?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  habilitar_orden_compra?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  habilitar_recepcion_compra?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  habilitar_matching_3_vias?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  habilitar_orden_pago?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  requiere_aprobacion?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  permite_pago_sin_aprobacion?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  generar_cxp_automatico?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  permitir_edicion_cxp?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  permitir_pago_parcial?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  usar_workflow?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  workflow_obligatorio?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsBoolean()
  aplicar_pago_al_guardar?: boolean;

  @ApiPropertyOptional({
    description: 'Si true, compras/gastos de contado no se auto-pagan: quedan como CxP pendiente para pagarse vía orden de pago',
  })
  @IsOptional()
  @IsBoolean()
  incluir_contado_en_orden_pago?: boolean;

  @IsOptional()
  @IsBoolean()
  permitir_editar_gasto_pagado?: boolean;
}
