import {
  IsString,
  IsOptional,
  IsNumber,
  IsDateString,
  IsArray,
  ValidateNested,
} from 'class-validator';
import { Type } from 'class-transformer';

export class CreateCashReceiptItemDto {
  @IsOptional()
  @IsString()
  itemName?: string;

  @IsNumber()
  amount: number;

  @IsOptional()
  @IsNumber()
  sortOrder?: number;
}

export class CreateCashReceiptDto {
  @IsOptional()
  @IsString()
  issueType?: string;

  @IsOptional()
  @IsString()
  identityType?: string;

  @IsOptional()
  @IsString()
  identityNumber?: string;

  @IsOptional()
  @IsString()
  consumerName?: string;

  @IsDateString()
  issueDate: string;

  @IsNumber()
  supplyAmount: number;

  @IsOptional()
  @IsNumber()
  taxAmount?: number;

  @IsOptional()
  @IsString()
  remark?: string;

  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => CreateCashReceiptItemDto)
  items: CreateCashReceiptItemDto[];
}
