import { IsEnum, IsNumber, IsOptional, IsString, MinLength, } from "class-validator"; import { Currency, TransactionDomain } from "@jorgecuadros/database"; /** * A new ledger movement. `amount` is signed: negative = cargo (charge), * positive = abono (credit) — the module's sign convention. Booked movements * are never edited; a mistake is corrected by voiding and re-capturing. */ export class CreateMovementDto { @IsString() @MinLength(1) customerId!: string; @IsEnum(TransactionDomain) domain!: TransactionDomain; @IsNumber() amount!: number; @IsString() @MinLength(1) transactionDate!: string; @IsOptional() @IsEnum(Currency) currency?: Currency; @IsOptional() @IsString() typeId?: string; @IsOptional() @IsString() period?: string; @IsOptional() @IsString() reference?: string; @IsOptional() @IsString() checkNumber?: string; @IsOptional() @IsString() message?: string; }