feat: add inventoryId to SalesInvoice and related models; implement createOrder functionality in POS service
This commit is contained in:
+33
-2
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common'
|
||||
import { ResponseMapper } from '../common/response/response-mapper'
|
||||
import { Prisma } from '../generated/prisma/client'
|
||||
import { PrismaService } from '../prisma/prisma.service'
|
||||
import { CreateOrderDto } from './dto/create-pos.dto'
|
||||
|
||||
@Injectable()
|
||||
export class PosService {
|
||||
@@ -109,8 +110,38 @@ export class PosService {
|
||||
return ResponseMapper.list(categories)
|
||||
}
|
||||
|
||||
async createSaleInvoice(data: any) {
|
||||
const item = await this.prisma.salesInvoice.create({ data })
|
||||
async createOrder(data: CreateOrderDto, inventoryId: number) {
|
||||
const { customerId, ...res } = data
|
||||
const preparedOrder = { ...res } as any
|
||||
const lastCode = await this.prisma.salesInvoice
|
||||
.findFirst({
|
||||
orderBy: { code: 'desc' },
|
||||
select: { code: true },
|
||||
})
|
||||
.then(si => si?.code || '0')
|
||||
|
||||
preparedOrder.code = String(Number(lastCode) + 1)
|
||||
|
||||
preparedOrder.totalAmount = data.items.reduce(
|
||||
(acc, item) => acc + Number(item.fee),
|
||||
0,
|
||||
)
|
||||
|
||||
preparedOrder.inventory = { connect: { id: inventoryId } }
|
||||
preparedOrder.customer = { connect: { id: customerId } }
|
||||
|
||||
if (Object.prototype.hasOwnProperty.call(preparedOrder, 'items')) {
|
||||
preparedOrder.items = {
|
||||
create: preparedOrder.items.map((item: any) => ({
|
||||
product: { connect: { id: Number(item.productId) } },
|
||||
count: item.count,
|
||||
fee: item.fee,
|
||||
total: item.count * item.fee,
|
||||
})),
|
||||
}
|
||||
}
|
||||
|
||||
const item = await this.prisma.salesInvoice.create({ data: preparedOrder })
|
||||
return ResponseMapper.create(item)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user