commit
94fcbe9b39
|
|
@ -176,6 +176,20 @@ export class SalesController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Get('product/simil/:id')
|
||||
@ApiOperation({ summary: 'Get products similar' })
|
||||
@ApiParam({ name: 'id', description: 'Product ID' })
|
||||
async getProductSimil(@Headers() headers, @Param('id') id: number) {
|
||||
try {
|
||||
const { store } = this.extractPaginationParams(headers);
|
||||
return await this.salesService.GetProductsSimil(store, id);
|
||||
} catch (e) {
|
||||
throw new HttpException(e.message, HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Get('stock/:storeid/:id')
|
||||
@ApiOperation({ summary: 'Get product stock information' })
|
||||
@ApiParam({ name: 'storeid', description: 'Store ID' })
|
||||
|
|
|
|||
|
|
@ -77,9 +77,11 @@ export class SalesService {
|
|||
esvlistaprodutos.LETRABASETINTOMETRICO as "letter",
|
||||
esvlistaprodutos.LINHATINTOMETRICO as "line",
|
||||
esvlistaprodutos.LITRAGEM as "can",
|
||||
esvlistaprodutos.QUANTIDADE_ESTOQUE_GERAL as "full_stock"
|
||||
esvlistaprodutos.QUANTIDADE_ESTOQUE_GERAL as "full_stock",
|
||||
esvlistaprodutos.TEM_PRODUTO_SIMILAR as "similar",
|
||||
NVL(esvlistaprodutos.TIPO, 'SEM') as "type_campaing"
|
||||
FROM ESVLISTAPRODUTOS
|
||||
WHERE 1 = 1`;
|
||||
WHERE 1 = 1 `;
|
||||
|
||||
if (filter && filter.text.length > 0) {
|
||||
const description = filter.text.toUpperCase();
|
||||
|
|
@ -127,6 +129,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".LINHATINTOMETRICO", "line")
|
||||
.addSelect("\"esvlistaprodutos\".LITRAGEM", "can")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("UPPER(\"esvlistaprodutos\".CODFAB) LIKE '%'||REPLACE(:description, '@', '%')||'%'", { description })
|
||||
.andWhere("(\"esvlistaprodutos\".codfilial = :codfilial OR :codfilial = '99')", { codfilial: store })
|
||||
.andWhere("(\"esvlistaprodutos\".produto_com_reducao_preco = :produtoComReducaoPreco OR :produtoComReducaoPreco = 'N')",
|
||||
|
|
@ -184,6 +188,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".LINHATINTOMETRICO", "line")
|
||||
.addSelect("\"esvlistaprodutos\".LITRAGEM", "can")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("UPPER(\"esvlistaprodutos\".descricao) LIKE '%'||REPLACE(:description, '@', '%')||'%'", { description })
|
||||
.andWhere("(\"esvlistaprodutos\".codfilial = :codfilial OR :codfilial = '99')", { codfilial: store })
|
||||
.andWhere("(\"esvlistaprodutos\".produto_com_reducao_preco = :produtoComReducaoPreco OR :produtoComReducaoPreco = 'N')",
|
||||
|
|
@ -260,6 +266,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".LINHATINTOMETRICO", "line")
|
||||
.addSelect("\"esvlistaprodutos\".LITRAGEM", "can")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("esvlistaprodutos.brand in (" + xbrands + ")")
|
||||
.andWhere("\"esvlistaprodutos\".URLCATEGORIA LIKE :urlCategoria||'%'", { urlCategoria: filter.urlCategory })
|
||||
.andWhere("(\"esvlistaprodutos\".codfilial = :codfilial OR :codfilial = '99')", { codfilial: store })
|
||||
|
|
@ -324,6 +332,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".LINHATINTOMETRICO", "line")
|
||||
.addSelect("\"esvlistaprodutos\".LITRAGEM", "can")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("(\"esvlistaprodutos\".codfilial = :codfilial OR :codfilial = '99')", { codfilial: store })
|
||||
.andWhere("(\"esvlistaprodutos\".produto_com_reducao_preco = :produtoComReducaoPreco OR :produtoComReducaoPreco = 'N')",
|
||||
{ produtoComReducaoPreco: (filter.markdown.toString() == 'true') ? 'S' : 'N' })
|
||||
|
|
@ -562,6 +572,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".PRODUTO_EM_CAMPANHA", "compaing")
|
||||
.addSelect("\"esvlistaprodutos\".BASETINTOMETRICO", "base")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("esvlistaprodutos.idProduct = :id", { id: numbers })
|
||||
.andWhere("\"esvlistaprodutos\".codfilial = :codfilial OR :codfilial = '99'", { codfilial: store })
|
||||
.limit(pageSize)
|
||||
|
|
@ -609,6 +621,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".PRODUTO_EM_CAMPANHA", "compaing")
|
||||
.addSelect("\"esvlistaprodutos\".BASETINTOMETRICO", "base")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("esvlistaprodutos.CODAUXILIAR = :id", { id: numbers })
|
||||
.andWhere("(\"esvlistaprodutos\".codfilial = :codfilial OR :codfilial = '99')", { codfilial: store })
|
||||
.limit(pageSize)
|
||||
|
|
@ -658,6 +672,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".PRODUTO_EM_CAMPANHA", "compaing")
|
||||
.addSelect("\"esvlistaprodutos\".BASETINTOMETRICO", "base")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("UPPER(esvlistaprodutos.CODFAB) like REPLACE(:description, '@', '%')", { description })
|
||||
.andWhere("\"esvlistaprodutos\".codfilial = :codfilial OR :codfilial = '99'", { codfilial: store })
|
||||
.limit(pageSize)
|
||||
|
|
@ -704,6 +720,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".PRODUTO_EM_CAMPANHA", "compaing")
|
||||
.addSelect("\"esvlistaprodutos\".BASETINTOMETRICO", "base")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("UPPER(esvlistaprodutos.DESCRICAO) like REPLACE(:description, '@', '%')", { description })
|
||||
.andWhere("\"esvlistaprodutos\".codfilial = :codfilial OR :codfilial = '99'", { codfilial: store })
|
||||
.limit(pageSize)
|
||||
|
|
@ -773,6 +791,8 @@ export class SalesService {
|
|||
.addSelect("\"esvlistaprodutos\".PRODUTO_EM_CAMPANHA", "compaing")
|
||||
.addSelect("\"esvlistaprodutos\".BASETINTOMETRICO", "base")
|
||||
.addSelect("\"esvlistaprodutos\".QUANTIDADE_ESTOQUE_GERAL", "full_stock")
|
||||
.addSelect("\"esvlistaprodutos\".TEM_PRODUTO_SIMILAR", "similar")
|
||||
.addSelect("\"esvlistaprodutos\".TIPO_CAMPANHA", "type_campaing")
|
||||
.where("esvlistaprodutos.idProduct = :id", { id: id })
|
||||
.andWhere("\"esvlistaprodutos\".codfilial = :codfilial", { codfilial: store })
|
||||
.orderBy("REPLACE(\"esvlistaprodutos\".DESCRICAO,'#', '')", "ASC")
|
||||
|
|
@ -834,6 +854,8 @@ export class SalesService {
|
|||
,esvlistaprodutos.PRODUTO_EM_CAMPANHA as "compaing"
|
||||
,esvlistaprodutos.BASETINTOMETRICO as "base"
|
||||
,esvlistaprodutos.QUANTIDADE_ESTOQUE_GERAL as "full_stock"
|
||||
,esvlistaprodutos.TEM_PRODUTO_SIMILAR as "similar"
|
||||
,esvlistaprodutos.TIPO_CAMPANHA as "type_campaing"
|
||||
FROM ESVLISTAPRODUTOS, ESTCOMPREJUNTO
|
||||
WHERE ESVLISTAPRODUTOS.CODPROD = ESTCOMPREJUNTO.CODPROD
|
||||
AND ESTCOMPREJUNTO.CODPRODVENDA = ${id}
|
||||
|
|
@ -851,6 +873,68 @@ export class SalesService {
|
|||
}
|
||||
}
|
||||
|
||||
async GetProductsSimil(store: string, id: number) {
|
||||
const connectionDb = new Connection(connectionOptions);
|
||||
await connectionDb.connect();
|
||||
const queryRunner = connectionDb.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
try {
|
||||
const sql = `SELECT esvlistaprodutos.CODPROD as "idProduct"
|
||||
,esvlistaprodutos.SEQ as "seq"
|
||||
,esvlistaprodutos.DESCRICAO as "smallDescription"
|
||||
,esvlistaprodutos.NOMEECOMMERCE as "title"
|
||||
,esvlistaprodutos.CODFAB as "idProvider"
|
||||
,esvlistaprodutos.CODAUXILIAR as "ean"
|
||||
,esvlistaprodutos.TIPOPRODUTO as "productType"
|
||||
,esvlistaprodutos.DADOSTECNICOS as "technicalData"
|
||||
,esvlistaprodutos.INFORMACOESTECNICAS as "description"
|
||||
,esvlistaprodutos.URLIMAGEM as "urlImage"
|
||||
,esvlistaprodutos.NOMEMARCA as "brand"
|
||||
,esvlistaprodutos.NOMEDEPARTAMENTO as "department"
|
||||
,esvlistaprodutos.NOMESECAO as "section"
|
||||
,esvlistaprodutos.NOMECATEGORIA as "category"
|
||||
,esvlistaprodutos.NOMEFORNECEDOR as "supplier"
|
||||
,esvlistaprodutos.CODIGOFILIAL as "store"
|
||||
,esvlistaprodutos.CLASSEVENDA as "saleAbc"
|
||||
,esvlistaprodutos.CLASSEESTOQUE as "stockAbc"
|
||||
,esvlistaprodutos.FORALINHA as "outLine"
|
||||
,esvlistaprodutos.PRECOVENDA as "listPrice"
|
||||
,esvlistaprodutos.PRECOPROMOCIONAL as "salePrice"
|
||||
,esvlistaprodutos.PRECOPROMOCIONAL as "salePromotion"
|
||||
,esvlistaprodutos.PERCENTUALDESCONTO as"offPercent"
|
||||
,esvlistaprodutos.QTESTOQUE_DISPONIVEL as "stock"
|
||||
,esvlistaprodutos.QTCAIXAS as "boxStock"
|
||||
,esvlistaprodutos.ESTOQUE_DISP_LOJA as "store_stock"
|
||||
,esvlistaprodutos.ESTOQUE_DISP_CAIXA_LOJA as "store_boxStock"
|
||||
,esvlistaprodutos.ESTOQUE_DISP_LOJA as "store_stock"
|
||||
,esvlistaprodutos.ESTOQUE_DISP_CAIXA_LOJA as "store_boxStock"
|
||||
,esvlistaprodutos.MULTIPLO as "mutiple"
|
||||
,esvlistaprodutos.UNIDADE as "unity"
|
||||
,esvlistaprodutos.URLDEPARTAMENTO as "urlDepartment"
|
||||
,esvlistaprodutos.URLSECAO as "urlSection"
|
||||
,esvlistaprodutos.PRODUTO_COM_REDUCAO_PRECO as "downPrice"
|
||||
,esvlistaprodutos.PRODUTO_EM_CAMPANHA as "compaing"
|
||||
,esvlistaprodutos.BASETINTOMETRICO as "base"
|
||||
,esvlistaprodutos.QUANTIDADE_ESTOQUE_GERAL as "full_stock"
|
||||
,esvlistaprodutos.TEM_PRODUTO_SIMILAR as "similar"
|
||||
,esvlistaprodutos.TIPO_CAMPANHA as "type_campaing"
|
||||
FROM ESVLISTAPRODUTOS, PCPRODSIMIL
|
||||
WHERE ESVLISTAPRODUTOS.CODPROD = PCPRODSIMIL.CODSIMIL
|
||||
AND PCPRODSIMIL.CODPROD = ${id}
|
||||
AND ESVLISTAPRODUTOS.CODFILIAL = '${store}'
|
||||
ORDER BY REPLACE(esvlistaprodutos.DESCRICAO,'#', '')`;
|
||||
let products: SalesProduct[] = await queryRunner.query(sql);
|
||||
|
||||
products = this.createListImages(products);
|
||||
return products;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
} finally {
|
||||
await queryRunner.release();
|
||||
await connectionDb.close();
|
||||
}
|
||||
}
|
||||
|
||||
async GetStocks(storeId: string, id: number) {
|
||||
const connectionDb = new Connection(connectionOptions);
|
||||
await connectionDb.connect();
|
||||
|
|
@ -1265,8 +1349,10 @@ export class SalesService {
|
|||
' ,esvlistaprodutos.LINHATINTOMETRICO "line" ' +
|
||||
' ,esvlistaprodutos.LITRAGEM "can" ' +
|
||||
' ,esvlistaprodutos.QUANTIDADE_ESTOQUE_GERAL "full_stock" ' +
|
||||
' ,esvlistaprodutos.TEM_PRODUTO_SIMILAR "similar" ' +
|
||||
' ,esvlistaprodutos.TIPO_CAMPANHA "type_campaing" ' +
|
||||
' FROM esvlistaprodutos ' +
|
||||
' WHERE 1 = 1';
|
||||
' WHERE 1 = 1 ';
|
||||
|
||||
let where = "";
|
||||
if (filter.text != null) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue