From 6d9ce6f8ece91bbcd6cc9265807f22f141ab1b40 Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 7 Sep 2022 16:36:24 +0700 Subject: [PATCH 1/4] - fix order-prod and order-stg if suppliers have same code product --- src/product/product.service.ts | 29 ++------------------ src/transaction/dto/order-transaction.dto.ts | 4 +++ src/transaction/transaction.service.ts | 12 +++----- 3 files changed, 11 insertions(+), 34 deletions(-) diff --git a/src/product/product.service.ts b/src/product/product.service.ts index f113775..f495e99 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -505,16 +505,14 @@ export class ProductService { async findOneActive( code: string, type: string, - roles: string, - supplierId: string, + productId: string ) { - if (roles == 'Retail') { try { return await this.productRepository.findOneOrFail({ relations: ['supplier'], where: { code: code, - supplier: supplierId, + id: productId }, }); } catch (e) { @@ -530,28 +528,7 @@ export class ProductService { throw e; } } - } else { - try { - return await this.productRepository.findOneOrFail({ - relations: ['supplier'], - where: { - code: code, - }, - }); - } catch (e) { - if (e instanceof EntityNotFoundError) { - throw new HttpException( - { - statusCode: HttpStatus.NOT_FOUND, - error: 'Product not found', - }, - HttpStatus.NOT_FOUND, - ); - } else { - throw e; - } - } - } + } async findOneById(id: string) { diff --git a/src/transaction/dto/order-transaction.dto.ts b/src/transaction/dto/order-transaction.dto.ts index 8dc3d30..23d1032 100644 --- a/src/transaction/dto/order-transaction.dto.ts +++ b/src/transaction/dto/order-transaction.dto.ts @@ -1,6 +1,10 @@ import { IsNotEmpty, IsOptional } from 'class-validator'; export class OrderTransactionDto { + + @IsNotEmpty() + productId: string; + @IsNotEmpty() productCode: string; diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 5176d1b..f9ee000 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -335,14 +335,13 @@ export class TransactionService { currentUser.username, ); - const supplierData = await this.supplierService.findByCode('IRS'); + // const supplierData = await this.supplierService.findByCode('IRS'); //GET PRODUCT const product = await this.productService.findOneActive( orderTransactionDto.productCode, 'prepaid', - userData.roles.name, - supplierData.id + orderTransactionDto.productId ); const product_price = await this.productHistoryPriceService.findOne( @@ -491,16 +490,13 @@ export class TransactionService { currentUser.username, ); - const supplierData = await this.supplierService.findByCode('IRS'); - - + // const supplierData = await this.supplierService.findByCode('IRS'); //GET PRODUCT AND PRICE const product = await this.productService.findOneActive( orderTransactionDto.productCode, 'prepaid', - userData.roles.name, - supplierData.id + orderTransactionDto.productId ); const supplier = await this.supplierService.findByCode( From 799cd43983dbafb0d43d5878b4d78ef8922e0244 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 7 Sep 2022 17:07:54 +0700 Subject: [PATCH 2/4] fix: get list by categories all --- src/product/product.service.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/product/product.service.ts b/src/product/product.service.ts index f495e99..10566f4 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -309,11 +309,13 @@ export class ProductService { supplier = (await this.supplierService.findByActive()).id; } + console.log(supplier, 'asldklaksd') + const baseQuery = this.productRepository .createQueryBuilder('product') .leftJoin('product.sub_categories', 'sub_categories') - .leftJoin('product.statusHistory', 'status_history') + // .leftJoin('product.statusHistory', 'status_history') .leftJoinAndMapOne( 'product.currentPrice', @@ -321,12 +323,27 @@ export class ProductService { 'current_price', 'current_price.partner_id is NULL and current_price.end_date is NULL', ) + .innerJoinAndMapOne( + 'product.currentStatus', + 'product.statusHistory', + 'history_status', + `history_status.status = 'ACTIVE' and history_status.deleted_at is NULL`, + { + status: 'ACTIVE', + }, + ) .where( - `product.supplier_id = :supplier_id and status_history.status = 'ACTIVE' and status_history.partner_id is NULL`, + `product.supplier_id = :supplier_id`, { supplier_id: supplier, }, ) + .where( + `history_status.partner_id is NULL`, + { + partner_id: null, + }, + ) .select(['product.id']) .addSelect(['product.name', 'product.code', 'sub_categories.name']) .addSelect('(current_price.price + current_price.mark_up_price) as price') From dd86a863733d57550d9e95f0655215d8468ad107 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 7 Sep 2022 17:50:50 +0700 Subject: [PATCH 3/4] fix: get list by categories all where supplier status is true --- src/product/product.service.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/product/product.service.ts b/src/product/product.service.ts index 10566f4..c84baac 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -314,8 +314,9 @@ export class ProductService { const baseQuery = this.productRepository .createQueryBuilder('product') .leftJoin('product.sub_categories', 'sub_categories') + .leftJoin('product.supplier', 'supplier') - // .leftJoin('product.statusHistory', 'status_history') + // .leftJoin('product.statusHistory', 'status_history') .leftJoinAndMapOne( 'product.currentPrice', @@ -344,10 +345,18 @@ export class ProductService { partner_id: null, }, ) + .where( + 'supplier.status = TRUE', + { + status: true, + }, + ) .select(['product.id']) .addSelect(['product.name', 'product.code', 'sub_categories.name']) .addSelect('(current_price.price + current_price.mark_up_price) as price') - .orderBy('price', 'ASC') + .addSelect('product.supplier_id', 'supplier') + .addSelect('supplier.status', 'status') + .orderBy('price', 'ASC') .distinct(); if (subCategories != 'null' && subCategories) { From a0078085355b82d5f57650dac4996d22cbbdf341 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 7 Sep 2022 19:19:55 +0700 Subject: [PATCH 4/4] fix: get list by categories all where partner is null --- src/product/product.service.ts | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/product/product.service.ts b/src/product/product.service.ts index c84baac..0d328f1 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -333,19 +333,19 @@ export class ProductService { status: 'ACTIVE', }, ) - .where( - `product.supplier_id = :supplier_id`, - { - supplier_id: supplier, - }, - ) + // .where( + // `product.supplier_id = :supplier_id`, + // { + // supplier_id: supplier, + // }, + // ) .where( `history_status.partner_id is NULL`, { partner_id: null, }, ) - .where( + .andWhere( 'supplier.status = TRUE', { status: true, @@ -356,6 +356,7 @@ export class ProductService { .addSelect('(current_price.price + current_price.mark_up_price) as price') .addSelect('product.supplier_id', 'supplier') .addSelect('supplier.status', 'status') + .addSelect('history_status.partner_id', 'partner') .orderBy('price', 'ASC') .distinct(); @@ -406,11 +407,16 @@ export class ProductService { const baseQuery = await this.productRepository .createQueryBuilder('product') .leftJoin('product.sub_categories', 'sub_categories') - .leftJoinAndSelect( - 'product.supplier', - 'supplier', - 'supplier.status = true', - ) + .leftJoin('product.supplier', 'supplier') + // .leftJoinAndSelect( + // 'product.supplier', + // 'supplier', + // 'supplier.status = true', + // { + // status: true + // } + // + // ) .innerJoinAndMapOne( 'product.currentPrice', 'product.priceHistory', @@ -435,11 +441,15 @@ export class ProductService { .where(`history_status.status = 'ACTIVE'`, { status: 'ACTIVE', }) + .andWhere('supplier.status = TRUE', { + status: true + }) .select(['product.id']) .addSelect([ 'product.name', 'product.code', 'product.type', + 'product.supplier_id', 'sub_categories.name', 'current_price.admin_price as admin_price', 'current_price.mark_up_price as markup_price',