diff --git a/src/modules/invoice/dto/create-invoice.dto.ts b/src/modules/invoice/dto/create-invoice.dto.ts index da1c96f..afc457d 100644 --- a/src/modules/invoice/dto/create-invoice.dto.ts +++ b/src/modules/invoice/dto/create-invoice.dto.ts @@ -11,6 +11,7 @@ import { } from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; +import { IAttachment } from 'src/modules/order/interface/order.interface'; export class CreateInvoiceItemDto { @IsString() @@ -65,4 +66,14 @@ export class CreateInvoiceDto { @IsDateString() @ApiPropertyOptional({ description: 'Approval deadline (ISO date string)' }) approvalDeadline?: string; + + + @ApiPropertyOptional() + @IsString() + paymentMethod?: string + + // @IsArray() + // @Type(() => IAttachment) + // @ApiProperty({ type: [IAttachment] }) + // attachments: IAttachment[]; } diff --git a/src/modules/invoice/entities/invoice-item.entity.ts b/src/modules/invoice/entities/invoice-item.entity.ts index df5f68d..38c2553 100644 --- a/src/modules/invoice/entities/invoice-item.entity.ts +++ b/src/modules/invoice/entities/invoice-item.entity.ts @@ -27,8 +27,8 @@ export class InvoiceItem extends BaseEntity { @Property({ type: 'int', - columnType: 'int GENERATED ALWAYS AS (COALESCE(unit_price, 0) * quantity) STORED', - persist: false, + // columnType: 'int GENERATED ALWAYS AS (COALESCE(unit_price, 0) * quantity) STORED', + // persist: false, nullable: true }) subTotal!: number; @@ -42,17 +42,14 @@ export class InvoiceItem extends BaseEntity { @Property({ type: 'int', nullable: true, - columnType: 'int GENERATED ALWAYS AS ((COALESCE(unit_price, 0) * quantity) - COALESCE(discount, 0)) STORED', - persist: false + // columnType: 'int GENERATED ALWAYS AS ((COALESCE(unit_price, 0) * quantity) - COALESCE(discount, 0)) STORED', + // persist: false }) total!: number; @Property({ type: 'text', nullable: true }) description?: string; - @Property({ type: 'string', nullable: true }) - paymentMethod?: string; - @Property({ nullable: true, columnType: 'timestamptz' }) confirmedAt?: Date; diff --git a/src/modules/invoice/entities/invoice.entity.ts b/src/modules/invoice/entities/invoice.entity.ts index b1b3c48..9c6af4d 100644 --- a/src/modules/invoice/entities/invoice.entity.ts +++ b/src/modules/invoice/entities/invoice.entity.ts @@ -92,4 +92,8 @@ export class Invoice extends BaseEntity { @Property({ type: 'json' }) attachments: IAttachment[] = [] + + @Property({ type: 'string', nullable: true }) + paymentMethod?: string; + } diff --git a/src/modules/invoice/invoice.service.ts b/src/modules/invoice/invoice.service.ts index 7064afd..d1d4ff3 100644 --- a/src/modules/invoice/invoice.service.ts +++ b/src/modules/invoice/invoice.service.ts @@ -58,6 +58,8 @@ export class InvoiceService { discount, paidAmount: 0, balance: 0, + attachments: [], + paymentMethod: dto.paymentMethod }); em.persist(invoice); @@ -125,7 +127,7 @@ export class InvoiceService { if (!item) { throw new NotFoundException('Invoice item not found'); } - if(item.confirmedAt){ + if (item.confirmedAt) { throw new BadRequestException('Invoice item already confirmed'); } item.confirmedAt = new Date(); diff --git a/src/modules/order/dto/create-order.dto.ts b/src/modules/order/dto/create-order.dto.ts index 5d67a5d..8ec9fc0 100644 --- a/src/modules/order/dto/create-order.dto.ts +++ b/src/modules/order/dto/create-order.dto.ts @@ -3,8 +3,10 @@ import { IsInt, IsNotEmpty, IsOptional, + IsArray, } from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { IAttachment } from '../interface/order.interface'; export class CreateOrderAsAdminDto { @@ -36,6 +38,11 @@ export class CreateOrderAsAdminDto { @IsOptional() @IsString() title?: string; + + @ApiProperty() + @IsOptional() + @IsArray() + attachments: IAttachment[]; } export class CreateOrderItemDtoAsAdmin { diff --git a/src/modules/order/providers/order.service.ts b/src/modules/order/providers/order.service.ts index 713b1f9..6aa7aa9 100644 --- a/src/modules/order/providers/order.service.ts +++ b/src/modules/order/providers/order.service.ts @@ -100,7 +100,8 @@ export class OrderService { title: dto.title, status: OrderStatusEnum.CREATED, estimatedDays: dto.estimatedDays, - invoiceItem + invoiceItem, + attachments: dto.attachments }); await this.em.persistAndFlush(order);