78 lines
1.4 KiB
TypeScript
78 lines
1.4 KiB
TypeScript
import { IsNumber, IsOptional, IsString, IsBoolean, IsArray, ValidateNested, IsIn, Min, MaxLength } from 'class-validator';
|
|
import { Type } from 'class-transformer';
|
|
|
|
export class SaveReceiptItemDto {
|
|
@IsString()
|
|
@MaxLength(191)
|
|
rawName!: string;
|
|
|
|
@IsNumber()
|
|
@Min(0)
|
|
quantity!: number;
|
|
|
|
@IsString()
|
|
unit!: string;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
price?: number | null;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(100)
|
|
brand?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(100)
|
|
origin?: string | null;
|
|
|
|
@IsIn(['inventory', 'pantry'])
|
|
destination!: 'inventory' | 'pantry';
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
productId?: number;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(191)
|
|
createProductName?: string;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
categoryId?: number | null;
|
|
|
|
// Paketfält (kan editeras i UI)
|
|
@IsOptional()
|
|
@IsNumber()
|
|
packQuantity?: number | null;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
packUnit?: string | null;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
packageCount?: number;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
learnAlias?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
learnAliasGlobally?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
learnUnitMapping?: boolean;
|
|
}
|
|
|
|
export class SaveReceiptDto {
|
|
@IsArray()
|
|
@ValidateNested({ each: true })
|
|
@Type(() => SaveReceiptItemDto)
|
|
items!: SaveReceiptItemDto[];
|
|
}
|