diff --git a/src/product/history-price/history-price.service.ts b/src/product/history-price/history-price.service.ts index 1e7ccac..efee989 100644 --- a/src/product/history-price/history-price.service.ts +++ b/src/product/history-price/history-price.service.ts @@ -19,6 +19,17 @@ export class ProductHistoryPriceService { return result; } + async getAllActivePriceByProduct(productId: string) { + const result = await this.productHistoryPriceRepository + .createQueryBuilder('product_history_price') + .leftJoin('product_history_price.product', 'product') + .where({ product: productId }) + .andWhere('product_history_price.endDate IS NULL') + .getMany(); + + return result; + } + async updateEndDate(idProduct: string) { try { const dataPrice = await this.productHistoryPriceRepository diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 07aa5ad..6a8a8fd 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -520,18 +520,25 @@ export class TransactionService { if (hitSupplier.harga > product_price.price) { product_price.endDate = new Date(); - let newProductPrice = new ProductHistoryPrice(); - - newProductPrice.id = uuid.v4(); - newProductPrice.type = product_price.type; - newProductPrice.price = hitSupplier.harga; - newProductPrice.mark_up_price = product_price.mark_up_price; - newProductPrice.startDate = new Date(); - newProductPrice.product = product; - newProductPrice.partner = product_price.partner; + const listActivePrice = + await this.productHistoryPriceService.getAllActivePriceByProduct( + product.id, + ); await this.productHistoryPriceService.updateEndDate(product.id); - await this.productHistoryPriceService.create(newProductPrice); + + listActivePrice.map(async (x) => { + let newProductPrice = new ProductHistoryPrice(); + + newProductPrice.id = uuid.v4(); + newProductPrice.type = x.type; + newProductPrice.price = hitSupplier.harga; + newProductPrice.mark_up_price = x.mark_up_price; + newProductPrice.startDate = new Date(); + newProductPrice.product = product; + newProductPrice.partner = x.partner; + await this.productHistoryPriceService.create(newProductPrice); + }); } return { @@ -1021,9 +1028,6 @@ export class TransactionService { createdAt: 'DESC', }, }); - - - return baseQuery; }