From 7d15179fc810976c34c1c15ea45e39e0f07f8171 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 12 Mar 2026 20:13:40 -0300 Subject: [PATCH 01/41] fix detalhe product sql --- src/products/products.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 6a9b8bf..c1b23b3 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -528,7 +528,7 @@ where 1=1 --and pemp.nroempresa = 202 and md.nrodivisao in (2,4) and (${args.codproduto} is null or pemp.seqproduto = ${args.codproduto}) -and (${args.ctx_user_companies} is null or me.nroempresa in ${args.ctx_user_companies}) +and (me.nroempresa in (${args.ctx_user_companies})) and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) from mrl_prodempseg pes3 From d8c592bb7092bc8271a252f61e627775c20755d3 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 18 Mar 2026 11:20:55 -0300 Subject: [PATCH 02/41] change filter from product search --- src/products/products.module.ts | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index c1b23b3..4df0d22 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -288,18 +288,25 @@ export default moduleFactory DIN_ABASTECIMENTO_PRODUTOS p WHERE 1 = 1 - AND p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' + AND ( + ( + ${args.filtro} IS NOT NULL + AND ( + p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') - OR EXISTS ( - SELECT - 1 - FROM - CONSINCO.MAP_PRODCODIGO A - WHERE - A.SEQPRODUTO = p.SEQPRODUTO + ) + ) + OR ( + ${args.ean} IS NOT NULL + AND EXISTS ( + SELECT 1 + FROM CONSINCO.MAP_PRODCODIGO A + WHERE A.SEQPRODUTO = p.SEQPRODUTO AND ISNUMERIC(A.CODACESSO) = 'S' AND A.CODACESSO = ${args.ean} ) + ) + ) ORDER BY 2 `, From 662d44c1378c4babbf9140fd3769736cdcf1f327 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 18 Mar 2026 11:29:27 -0300 Subject: [PATCH 03/41] fix error --- src/products/products.module.ts | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 4df0d22..c1b23b3 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -288,25 +288,18 @@ export default moduleFactory DIN_ABASTECIMENTO_PRODUTOS p WHERE 1 = 1 - AND ( - ( - ${args.filtro} IS NOT NULL - AND ( - p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' + AND p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') - ) - ) - OR ( - ${args.ean} IS NOT NULL - AND EXISTS ( - SELECT 1 - FROM CONSINCO.MAP_PRODCODIGO A - WHERE A.SEQPRODUTO = p.SEQPRODUTO + OR EXISTS ( + SELECT + 1 + FROM + CONSINCO.MAP_PRODCODIGO A + WHERE + A.SEQPRODUTO = p.SEQPRODUTO AND ISNUMERIC(A.CODACESSO) = 'S' AND A.CODACESSO = ${args.ean} ) - ) - ) ORDER BY 2 `, From 24a40126dec7cb45f0563a52b41ab26855a84ac7 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 18 Mar 2026 11:38:44 -0300 Subject: [PATCH 04/41] change filter product search --- src/products/products.module.ts | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index c1b23b3..e49a3f9 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -288,18 +288,29 @@ export default moduleFactory DIN_ABASTECIMENTO_PRODUTOS p WHERE 1 = 1 - AND p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' + AND ( + ( + ${args.filtro} IS NOT NULL + AND ( + p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') - OR EXISTS ( - SELECT - 1 - FROM - CONSINCO.MAP_PRODCODIGO A - WHERE - A.SEQPRODUTO = p.SEQPRODUTO + ) + ) + OR ( + ${args.ean} IS NOT NULL + AND EXISTS ( + SELECT 1 + FROM CONSINCO.MAP_PRODCODIGO A + WHERE A.SEQPRODUTO = p.SEQPRODUTO AND ISNUMERIC(A.CODACESSO) = 'S' AND A.CODACESSO = ${args.ean} ) + ) + OR ( + ${args.filtro} IS NULL + AND ${args.ean} IS NULL + ) + ) ORDER BY 2 `, From 0b9d03dffbb28cdc7934738807f4d82dacf6d735 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 24 Mar 2026 09:22:33 -0300 Subject: [PATCH 05/41] added details queries --- src/products/products.module.ts | 376 +++++++++++++++++++++++++++++++- 1 file changed, 370 insertions(+), 6 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index e49a3f9..c0b818f 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -74,7 +74,7 @@ export default moduleFactory label: "Quantidade Embalagem", column: "quantidadeembalagem", format: "number", - entrypoint: "detalhe_preco_embalagem" + entrypoint: "detalhe_preco_embalagem", }, { label: "Estoque Disponível", @@ -232,7 +232,7 @@ export default moduleFactory }, params: ["codproduto"], }, - detalhe_preco_embalagem: { + detalhe_preco: { name: "Detalhe Preço Embalagem", display: { type: "table", @@ -273,6 +273,204 @@ export default moduleFactory }, params: ["nrempresa", "codproduto"], }, + detalhe_mdv: { + name: "Detalhe Vendas Dia", + display: { + type: "table", + table: { + header: [ + { + label: "Data", + }, + { + label: "Qtd.", + }, + { + label: "Qtd. ini.", + }, + ], + cell: [ + { + field: "data", + format: "date", + }, + { + field: "qtd", + format: "currency", + }, + { + field: "qtd_inicial", + format: "currency", + }, + ], + }, + }, + params: ["nrempresa", "codproduto"], + }, + detalhe_situacao_vigente: { + name: "Detalhe Histórico Venda", + display: { + type: "table", + table: { + header: [ + { + label: "Data Início", + }, + { + label: "Data Fim", + }, + { + label: "Embalagem", + }, + { + label: "Preço", + }, + ], + cell: [ + { + field: "data_inicio", + format: "date", + }, + { + field: "data_fim", + format: "date", + }, + { + field: "embalagem", + format: "string", + }, + { + field: "preco", + format: "currency", + }, + ], + }, + }, + params: ["nrempresa", "codproduto"], + }, + detalhe_custo_liquido: { + name: "Detalhe Custo Médio", + display: { + type: "table", + table: { + header: [ + { + label: "Data", + }, + { + label: "Est. ini.", + }, + { + label: "Est. fin.", + }, + { + label: "Custo", + }, + ], + cell: [ + { + field: "data", + format: "date", + }, + { + field: "estoqinicial", + format: "date", + }, + { + field: "estoqfinal", + format: "string", + }, + { + field: "custo", + format: "currency", + }, + ], + }, + }, + params: ["nrempresa", "codproduto"], + }, + detalhe_estoque_disponivel: { + name: "Detalhe Estoque Disponível", + display: { + type: "table", + table: { + header: [ + { + label: "Data", + }, + { + label: "Qtd. ent.", + }, + { + label: "Qtd. sai.", + }, + { + label: "Saldo", + }, + ], + cell: [ + { + field: "data", + format: "date", + }, + { + field: "qtdentrada", + format: "date", + }, + { + field: "qtdsaida", + format: "string", + }, + { + field: "qtdsaldo", + format: "currency", + }, + ], + }, + }, + params: ["nrempresa", "codproduto"], + }, + detalhe_estoque_transito: { + name: "Detalhe Estoque Trânsito", + display: { + type: "table", + table: { + header: [ + { + label: "NF", + }, + { + label: "Serie", + }, + { + label: "Data", + }, + { + label: "Qtd.", + }, + ], + cell: [ + { + field: "NUMERONF", + format: "number", + }, + { + field: "SERIENF", + format: "number", + }, + { + field: "DTAEMISSAO", + format: "date", + }, + { + field: "QUANTIDADE", + format: "number", + }, + ], + }, + }, + params: ["nrempresa", "codproduto"], + }, }, entrypoint: "consulta", }) @@ -550,7 +748,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) `, }; }, - detalhe_preco_embalagem: (args) => { + detalhe_preco: (args) => { return { sql: /*sql*/ ` select ora_hash(mgmp.SEQPRODUTO||mgmp.NROEMPRESA||mgmp.QTDEMBALAGEM||mgmp.NROSEGMENTO) chave, @@ -574,8 +772,174 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) and mgmp.nroempresa = ${args.nrempresa} AND mgmp.NROSEGMENTO NOT IN (22,23,26) and mgmp.STATUSVENDA = 'A' - ` - } - } + `, + }; + }, + detalhe_mdv: (args) => { + return { + sql: /*sql*/ ` + select mcdia.dtaentradasaida data, + mcdia.nroempresa, + mcdia.seqproduto, + Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Ter�a',4,'Quarta',5,'Quinta',6,'Sexta',7,'S�bado') diasemana, + mcdia.qtdvda qtd, + mcdia.qtdestqinicial qtd_inicial + from mrl_custodia mcdia + inner join max_empresa me + on mcdia.nroempresa = me.nroempresa + where 1=1 + and mcdia.qtdvda > 0 + and mcdia.dtaentradasaida >= trunc(sysdate)-365 + AND mcdia.nroempresa = ${args.nrempresa} + AND mcdia.seqproduto = ${args.codproduto} + order by dtaentradasaida desc; + `, + }; + }, + detalhe_situacao_vigente: (args) => { + return { + sql: /*sql*/ ` + select mrl_prodempseg.nroempresa, + mrl_prodempseg.seqproduto, + mrl_promocao.dtainicio, + mrl_promocao.dtafim, + mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, + mrl_promocaoitem.precopromocional preco + from mrl_promocaoitem, mrl_promocao, mrl_prodempseg, + map_produto mp, map_famembalagem mfe, max_empresa me + where 1=1 + and me.nroempresa = mrl_promocao.nroempresa + and me.status = 'A' + and me.nrodivisao = 2 + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa + and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao + and mrl_promocao.centralloja = mrl_promocaoitem.centralloja + and mrl_promocao.nrosegmento = mrl_promocaoitem.nrosegmento + and mrl_promocaoitem.seqproduto = mrl_prodempseg.seqproduto + and mrl_promocao.nrosegmento = mrl_prodempseg.nrosegmento + and mrl_promocao.nroempresa = mrl_prodempseg.nroempresa + and mrl_promocaoitem.qtdembalagem = mrl_prodempseg.qtdembalagem + and mp.seqproduto = mrl_prodempseg.seqproduto + and mfe.seqfamilia = mp.seqfamilia + and mfe.qtdembalagem = mrl_prodempseg.qtdembalagem + and nvl(mrl_promocao.tipopromoc, 'N') in ('N', 'F', 'A', 'S') + and mrl_promocao.dtainicio >= trunc(sysdate)-90--365 + AND mrl_prodempseg.nroempresa = ${args.nrempresa} + AND mrl_prodempseg.seqproduto = ${args.codproduto} + order by mrl_promocao.dtainicio desc + `, + }; + }, + detalhe_custo_liquido: (args) => { + return { + sql: /*sql*/ ` + select mcdiafam.dtaentradasaida, + mcdiafam.nroempresa, + PROD.SEQPRODUTO, + mcdiafam.seqfamilia, + mcdiafam.qtdestqinicial estqinicial, + qtdestqinicial + qtdentrada - qtdsaida estqfinal, + --trunc(cmdiavlrnf,2) custo + cmdiavlrnf custo + from mrl_custodiafam mcdiafam + INNER JOIN MAP_PRODUTO PROD + ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA + inner join max_empresa me + on me.nroempresa = mcdiafam.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and me.nrodivisao in (2,4) + where 1=1 + and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 + AND mcdiafam.nroempresa = ${args.nrempresa} + AND PROD.SEQPRODUTO = ${args.codproduto} + order by mcdiafam.dtaentradasaida desc + `, + }; + }, + detalhe_estoque_disponivel: (args) => { + return { + sql: /*sql*/ ` + select + cdia.dtaentradasaida, + cdia.nroempresa, + cdia.seqproduto, + cdia.qtdentrada, + cdia.qtdsaida, + cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo + from mrl_custodia cdia + join max_empresa me + on me.nroempresa = cdia.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque < trunc(sysdate) + and me.nrodivisao = 2 + where cdia.dtaentradasaida >= sysdate - 365 + and cdia.seqproduto = ${args.codproduto} + and cdia.nroempresa = ${args.nrempresa} + union all + select + mle.dtaentradasaida, + mle.nroempresa, + mle.seqproduto, + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) qtdentrada, + sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaida, + cdia.qtdestqinicial + + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) + - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo + from mrl_lanctoestoque mle + join max_empresa me + on me.nroempresa = mle.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque < trunc(sysdate) + and me.nrodivisao = 4 + join mrl_custodia cdia + on cdia.dtaentradasaida = mle.dtaentradasaida + and cdia.nroempresa = mle.nroempresa + and cdia.seqproduto = mle.seqproduto + where mle.dtaentradasaida >= sysdate - 365 + and mle.codgeraloper not in (301,302) + and mle.seqproduto = ${args.codproduto} + and mle.nroempresa = ${args.nrempresa} + group by + mle.dtaentradasaida, + mle.nroempresa, + mle.seqproduto, + cdia.qtdestqinicial + order by dtaentradasaida desc; + `, + }; + }, + detalhe_estoque_transito: (args) => { + return { + sql: /*sql*/ ` + select + cdia.dtaentradasaida, + cdia.nroempresa, + cdia.seqproduto, + cdia.qtdentrada, + cdia.qtdsaida, + cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo + SELECT a.nroempresa, + b.seqproduto, + INITCAP(C.NOMERAZAO) FORNECEDOR, + A.NUMERONF, + A.SERIENF, + A.DTAEMISSAO, + A.DTAENTRADA, + B.QUANTIDADE, + B.VLRITEM VALOR + from MLF_AUXNOTAFISCAL A, MLF_AUXNFITEM B, GE_PESSOA C, MAP_PRODUTO D + WHERE 1=1 + and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL + AND C.SEQPESSOA = A.SEQPESSOA + AND D.SEQPRODUTO = B.SEQPRODUTO + AND A.DTAEMISSAO >= SYSDATE-365 + AND a.nroempresa = ${args.nrempresa} + AND b.seqproduto = ${args.codproduto} + order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF; + `, + }; + }, }, }); From 9aff600d757b11d681fc7c84d51c327097281681 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 24 Mar 2026 10:07:54 -0300 Subject: [PATCH 06/41] removed semicolon from queries --- src/products/products.module.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index c0b818f..f0b3eca 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -792,7 +792,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) and mcdia.dtaentradasaida >= trunc(sysdate)-365 AND mcdia.nroempresa = ${args.nrempresa} AND mcdia.seqproduto = ${args.codproduto} - order by dtaentradasaida desc; + order by dtaentradasaida desc `, }; }, @@ -906,7 +906,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) mle.nroempresa, mle.seqproduto, cdia.qtdestqinicial - order by dtaentradasaida desc; + order by dtaentradasaida desc `, }; }, @@ -937,7 +937,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) AND A.DTAEMISSAO >= SYSDATE-365 AND a.nroempresa = ${args.nrempresa} AND b.seqproduto = ${args.codproduto} - order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF; + order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF `, }; }, From d6414c9219a5e9893dc81ad3a05d9913127d66f0 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 24 Mar 2026 10:22:42 -0300 Subject: [PATCH 07/41] fix detail stock move --- src/products/products.module.ts | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index f0b3eca..e119478 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -781,7 +781,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) select mcdia.dtaentradasaida data, mcdia.nroempresa, mcdia.seqproduto, - Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Ter�a',4,'Quarta',5,'Quinta',6,'Sexta',7,'S�bado') diasemana, + Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, mcdia.qtdvda qtd, mcdia.qtdestqinicial qtd_inicial from mrl_custodia mcdia @@ -912,15 +912,9 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) }, detalhe_estoque_transito: (args) => { return { - sql: /*sql*/ ` - select - cdia.dtaentradasaida, - cdia.nroempresa, - cdia.seqproduto, - cdia.qtdentrada, - cdia.qtdsaida, - cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo - SELECT a.nroempresa, + sql: /*sql*/ ` + SELECT + a.nroempresa, b.seqproduto, INITCAP(C.NOMERAZAO) FORNECEDOR, A.NUMERONF, From 088f13d9a1e734d00e132199befbcbc45b8cc4c6 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 25 Mar 2026 15:34:18 -0300 Subject: [PATCH 08/41] added companie filter in flash querie --- src/flash/flash.module.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index c042f82..9936520 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -99,6 +99,7 @@ inner join mboard.tb_empresa_segmento tes where 1=1 and tvf.vlrvendaacumulada > 0 and tvf.dtavda = TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + and (tvf.nroempresa in (${args.ctx_user_companies})) group by rollup(canalapp, nomeempresaapp) order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, }; From 96caf544745b263023d083bf75b747d622d7b147 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 26 Mar 2026 08:51:55 -0300 Subject: [PATCH 09/41] change query detalhe --- src/products/products.module.ts | 124 +++++++++++++++++++++++--------- 1 file changed, 90 insertions(+), 34 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index e119478..dd2fef7 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -517,13 +517,15 @@ export default moduleFactory detalhe: (args) => { return { sql: /*sql*/ ` - select pemp.nroempresa, +select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ + pemp.nroempresa, tcomp.comprador, nvl(mff.fornecedor, 'N/A') fornecedor, consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, pro.seqproduto, initcap(pro.desccompleta) Descricao, nvl(mapi.urlecommerceimg,'') ImagemUrl, + case when trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) @@ -559,18 +561,21 @@ export default moduleFactory else nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) end MargemAtacado, + nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, emb.embalagem DescricaoEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, + case when pemp.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito - pemp.qtdreservadavda,0),3) - else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) + else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, NVL(pemp.qtdpedrectransito,0) EstoqueTransito, pemp.qtdpendpedcompra EstoqueFuturo, - NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Inclu�do estqoutro para n�o ser necess�rio utilizar MADV_COMPOSICAORESERVASELINV + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, + ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) @@ -578,8 +583,10 @@ export default moduleFactory nvl(pemp.estqminimodv,0) DDVMinimo, nvl(pemp.estqmaximodv, 0) DDVMaximo, + + -- FIX 2: subquery de mlo_prodembwm substituido por LEFT JOIN (wm_fr) case - WHEN (select count(1) from mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' + WHEN wm_fr.seqproduto IS NOT NULL THEN 'FRACIONADO' when pemp.formaabastecimento = 'I' then 'ARMAZENAGEM' when pemp.formaabastecimento = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' @@ -591,21 +598,27 @@ export default moduleFactory when pes.precovalidpromoc > 0.00 then 'PROMOCAO' when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, + pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, pempcd.qtdpendpedcompra EstoqueFuturoCD, consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, - CASE WHEN (select count(*) from mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, - --case when (pemp.statuscompra='A') then 1 else 0 end STATUSCOMPRA, + + -- FIX 2: subquery de statusvenda substituido por LEFT JOIN (pest_chk) + CASE WHEN pest_chk.seqproduto IS NOT NULL THEN 'A' ELSE 'I' END STATUSVENDA, + pemp.statuscompra, - nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa=me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, + + -- FIX 2: subquery de qtdeAtacado substituido por LEFT JOIN (atac) + nvl(atac.qtdemb_min, 1) QtdeAtacado, + nvl(pro.seqprodutobase,0) IdBase, + case when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' ELSE - case when mff.indindenizavaria = 'S' then case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then 'SEM TROCA' @@ -618,6 +631,7 @@ export default moduleFactory 'SEM TROCA' end END TIPOTROCA, + mfdv.padraoembcompra QUANTIDADECOMPRA, pemp.qtdreservadavda RESERVA, NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, @@ -625,11 +639,13 @@ export default moduleFactory nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, + case when pes3.precovalidpromoc > 0 then nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) else 0 end MargemMeuMambo, + nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, @@ -638,20 +654,20 @@ export default moduleFactory from max_divisao md inner join max_empresa me - on me.nrodivisao = md.nrodivisao +on me.nrodivisao = md.nrodivisao and me.nroempresa not in (104,200,291,298,910,911,920,930,931,940,980) and me.dtainiciomovestoque <= trunc(sysdate) and me.status = 'A' inner join mad_segmento seg - on md.nrodivisao = me.nrodivisao +on md.nrodivisao = me.nrodivisao and me.nrosegmentoprinc = seg.nrosegmento inner join mrl_produtoempresa pemp - on pemp.nroempresa = me.nroempresa +on pemp.nroempresa = me.nroempresa left join mrl_produtoempresa pempcd - on pempcd.seqproduto = pemp.seqproduto +on pempcd.seqproduto = pemp.seqproduto and pempcd.nroempresa in (979) left join map_classeabastec mcab @@ -660,43 +676,92 @@ and mcab.nroempresa = pemp.nroempresa and mcab.classeabastvlr = pemp.classeabastvlr inner join map_produto pro - on pro.seqproduto = pemp.seqproduto +on pro.seqproduto = pemp.seqproduto inner join map_famdivisao mfdv - on mfdv.seqfamilia = pro.seqfamilia +on mfdv.seqfamilia = pro.seqfamilia and mfdv.nrodivisao = me.nrodivisao inner join max_comprador mco - on mco.seqcomprador = mfdv.seqcomprador +on mco.seqcomprador = mfdv.seqcomprador left join tb_comprador tcomp - on tcomp.COMPRADOR = mco.comprador +on tcomp.COMPRADOR = mco.comprador left join map_produtoimagem mapi - on mapi.seqproduto = pro.seqproduto +on mapi.seqproduto = pro.seqproduto and mapi.indpricipal = 'S' inner join mrl_prodempseg pes - on pes.seqproduto = pemp.seqproduto +on pes.seqproduto = pemp.seqproduto and pes.nroempresa = pemp.nroempresa and pes.nrosegmento = seg.nrosegmento and pes.qtdembalagem = 1 -inner join mrl_prodempseg pes2 - on pes2.nroempresa = pes.nroempresa -and pes2.seqproduto = pes.seqproduto +-- FIX 1: pes2 materializado em inline view (elimina subquery correlacionado no WHERE) +inner join ( + select a.nroempresa, + a.seqproduto, + a.nrosegmento, + a.qtdembalagem, + a.precovalidpromoc, + a.precovalidnormal + from mrl_prodempseg a + where a.qtdembalagem = ( + select nvl(max(b.qtdembalagem), 1) + from mrl_prodempseg b + where b.nroempresa = a.nroempresa + and b.seqproduto = a.seqproduto + and b.nrosegmento = a.nrosegmento + and b.statusvenda = 'A' + ) +) pes2 +on pes2.nroempresa = pes.nroempresa +and pes2.seqproduto = pes.seqproduto and pes2.nrosegmento = pes.nrosegmento left join mrl_prodempseg pes3 - on pes3.seqproduto = pemp.seqproduto +on pes3.seqproduto = pemp.seqproduto and pes3.nroempresa = pemp.nroempresa and pes3.nrosegmento = 15 and pes3.qtdembalagem = 1 inner join map_famembalagem emb - on emb.seqfamilia = pro.seqfamilia +on emb.seqfamilia = pro.seqfamilia and emb.qtdembalagem = 1 +-- FIX 2a: substituir subquery correlacionado de mlo_prodembwm por LEFT JOIN +left join ( + select distinct seqproduto + from mlo_prodembwm + where nroempresa = 979 + and codlinhasepar = 'FR' +) wm_fr +on wm_fr.seqproduto = pemp.seqproduto + +-- FIX 2b: substituir subquery correlacionado de statusvenda por LEFT JOIN +left join ( + select distinct seqproduto, nroempresa, nrosegmento + from mrl_prodempseg + where statusvenda = 'A' +) pest_chk +on pest_chk.seqproduto = pemp.seqproduto +and pest_chk.nroempresa = pemp.nroempresa +and pest_chk.nrosegmento = seg.nrosegmento + +-- FIX 2c: substituir subquery correlacionado de qtdeAtacado por LEFT JOIN +left join ( + select nroempresa, nrosegmento, seqproduto, + min(qtdembalagem) qtdemb_min + from mrl_prodempseg + where statusvenda = 'A' + and qtdembalagem > 1 + group by nroempresa, nrosegmento, seqproduto +) atac +on atac.nroempresa = me.nroempresa +and atac.nrosegmento = me.nrosegmentoprinc +and atac.seqproduto = pro.seqproduto + left join (select mffTemp.Seqfamilia, mfdvTemp.Nrodivisao, mffTemp.indindenizavaria, @@ -715,7 +780,7 @@ left join (select mffTemp.Seqfamilia, and mffTemp.Principal = 'S' ) mff - on mff.seqfamilia = pro.seqfamilia +on mff.seqfamilia = pro.seqfamilia and mff.nrodivisao = md.nrodivisao left join (select pvencto.nroempresa, @@ -729,22 +794,13 @@ left join (select pvencto.nroempresa, group by pvencto.nroempresa, pvencto.seqproduto ) vncto - ON vncto.nroempresa = pemp.nroempresa +ON vncto.nroempresa = pemp.nroempresa and vncto.seqproduto = pemp.seqproduto where 1=1 ---and pemp.SEQPRODUTO = 136011 ---and pemp.nroempresa = 202 and md.nrodivisao in (2,4) and (${args.codproduto} is null or pemp.seqproduto = ${args.codproduto}) and (me.nroempresa in (${args.ctx_user_companies})) - -and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) - from mrl_prodempseg pes3 - where pes3.nroempresa = pes.nroempresa - and pes3.seqproduto = pes.seqproduto - and pes3.nrosegmento = pes.nrosegmento - and pes3.statusvenda = 'A') `, }; }, From 26f673f4e9d54b531124cf410f3257d0454e52c8 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 26 Mar 2026 10:38:33 -0300 Subject: [PATCH 10/41] return original detail query --- src/products/products.module.ts | 124 +++++++++----------------------- 1 file changed, 34 insertions(+), 90 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index dd2fef7..e119478 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -517,15 +517,13 @@ export default moduleFactory detalhe: (args) => { return { sql: /*sql*/ ` -select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ - pemp.nroempresa, + select pemp.nroempresa, tcomp.comprador, nvl(mff.fornecedor, 'N/A') fornecedor, consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, pro.seqproduto, initcap(pro.desccompleta) Descricao, nvl(mapi.urlecommerceimg,'') ImagemUrl, - case when trunc(case when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) @@ -561,21 +559,18 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ else nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) end MargemAtacado, - nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, emb.embalagem DescricaoEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, - case when pemp.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito - pemp.qtdreservadavda,0),3) - else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) + else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, NVL(pemp.qtdpedrectransito,0) EstoqueTransito, pemp.qtdpendpedcompra EstoqueFuturo, - NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, - + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Inclu�do estqoutro para n�o ser necess�rio utilizar MADV_COMPOSICAORESERVASELINV ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) @@ -583,10 +578,8 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ nvl(pemp.estqminimodv,0) DDVMinimo, nvl(pemp.estqmaximodv, 0) DDVMaximo, - - -- FIX 2: subquery de mlo_prodembwm substituido por LEFT JOIN (wm_fr) case - WHEN wm_fr.seqproduto IS NOT NULL THEN 'FRACIONADO' + WHEN (select count(1) from mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' when pemp.formaabastecimento = 'I' then 'ARMAZENAGEM' when pemp.formaabastecimento = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' @@ -598,27 +591,21 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ when pes.precovalidpromoc > 0.00 then 'PROMOCAO' when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, - pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, pempcd.qtdpendpedcompra EstoqueFuturoCD, consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, - - -- FIX 2: subquery de statusvenda substituido por LEFT JOIN (pest_chk) - CASE WHEN pest_chk.seqproduto IS NOT NULL THEN 'A' ELSE 'I' END STATUSVENDA, - + CASE WHEN (select count(*) from mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, + --case when (pemp.statuscompra='A') then 1 else 0 end STATUSCOMPRA, pemp.statuscompra, - - -- FIX 2: subquery de qtdeAtacado substituido por LEFT JOIN (atac) - nvl(atac.qtdemb_min, 1) QtdeAtacado, - + nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa=me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, nvl(pro.seqprodutobase,0) IdBase, - case when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' ELSE + case when mff.indindenizavaria = 'S' then case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then 'SEM TROCA' @@ -631,7 +618,6 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ 'SEM TROCA' end END TIPOTROCA, - mfdv.padraoembcompra QUANTIDADECOMPRA, pemp.qtdreservadavda RESERVA, NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, @@ -639,13 +625,11 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, - case when pes3.precovalidpromoc > 0 then nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) else 0 end MargemMeuMambo, - nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, @@ -654,20 +638,20 @@ select /*+ OPT_PARAM('_optim_peek_user_binds','FALSE') */ from max_divisao md inner join max_empresa me -on me.nrodivisao = md.nrodivisao + on me.nrodivisao = md.nrodivisao and me.nroempresa not in (104,200,291,298,910,911,920,930,931,940,980) and me.dtainiciomovestoque <= trunc(sysdate) and me.status = 'A' inner join mad_segmento seg -on md.nrodivisao = me.nrodivisao + on md.nrodivisao = me.nrodivisao and me.nrosegmentoprinc = seg.nrosegmento inner join mrl_produtoempresa pemp -on pemp.nroempresa = me.nroempresa + on pemp.nroempresa = me.nroempresa left join mrl_produtoempresa pempcd -on pempcd.seqproduto = pemp.seqproduto + on pempcd.seqproduto = pemp.seqproduto and pempcd.nroempresa in (979) left join map_classeabastec mcab @@ -676,92 +660,43 @@ and mcab.nroempresa = pemp.nroempresa and mcab.classeabastvlr = pemp.classeabastvlr inner join map_produto pro -on pro.seqproduto = pemp.seqproduto + on pro.seqproduto = pemp.seqproduto inner join map_famdivisao mfdv -on mfdv.seqfamilia = pro.seqfamilia + on mfdv.seqfamilia = pro.seqfamilia and mfdv.nrodivisao = me.nrodivisao inner join max_comprador mco -on mco.seqcomprador = mfdv.seqcomprador + on mco.seqcomprador = mfdv.seqcomprador left join tb_comprador tcomp -on tcomp.COMPRADOR = mco.comprador + on tcomp.COMPRADOR = mco.comprador left join map_produtoimagem mapi -on mapi.seqproduto = pro.seqproduto + on mapi.seqproduto = pro.seqproduto and mapi.indpricipal = 'S' inner join mrl_prodempseg pes -on pes.seqproduto = pemp.seqproduto + on pes.seqproduto = pemp.seqproduto and pes.nroempresa = pemp.nroempresa and pes.nrosegmento = seg.nrosegmento and pes.qtdembalagem = 1 --- FIX 1: pes2 materializado em inline view (elimina subquery correlacionado no WHERE) -inner join ( - select a.nroempresa, - a.seqproduto, - a.nrosegmento, - a.qtdembalagem, - a.precovalidpromoc, - a.precovalidnormal - from mrl_prodempseg a - where a.qtdembalagem = ( - select nvl(max(b.qtdembalagem), 1) - from mrl_prodempseg b - where b.nroempresa = a.nroempresa - and b.seqproduto = a.seqproduto - and b.nrosegmento = a.nrosegmento - and b.statusvenda = 'A' - ) -) pes2 -on pes2.nroempresa = pes.nroempresa -and pes2.seqproduto = pes.seqproduto +inner join mrl_prodempseg pes2 + on pes2.nroempresa = pes.nroempresa +and pes2.seqproduto = pes.seqproduto and pes2.nrosegmento = pes.nrosegmento left join mrl_prodempseg pes3 -on pes3.seqproduto = pemp.seqproduto + on pes3.seqproduto = pemp.seqproduto and pes3.nroempresa = pemp.nroempresa and pes3.nrosegmento = 15 and pes3.qtdembalagem = 1 inner join map_famembalagem emb -on emb.seqfamilia = pro.seqfamilia + on emb.seqfamilia = pro.seqfamilia and emb.qtdembalagem = 1 --- FIX 2a: substituir subquery correlacionado de mlo_prodembwm por LEFT JOIN -left join ( - select distinct seqproduto - from mlo_prodembwm - where nroempresa = 979 - and codlinhasepar = 'FR' -) wm_fr -on wm_fr.seqproduto = pemp.seqproduto - --- FIX 2b: substituir subquery correlacionado de statusvenda por LEFT JOIN -left join ( - select distinct seqproduto, nroempresa, nrosegmento - from mrl_prodempseg - where statusvenda = 'A' -) pest_chk -on pest_chk.seqproduto = pemp.seqproduto -and pest_chk.nroempresa = pemp.nroempresa -and pest_chk.nrosegmento = seg.nrosegmento - --- FIX 2c: substituir subquery correlacionado de qtdeAtacado por LEFT JOIN -left join ( - select nroempresa, nrosegmento, seqproduto, - min(qtdembalagem) qtdemb_min - from mrl_prodempseg - where statusvenda = 'A' - and qtdembalagem > 1 - group by nroempresa, nrosegmento, seqproduto -) atac -on atac.nroempresa = me.nroempresa -and atac.nrosegmento = me.nrosegmentoprinc -and atac.seqproduto = pro.seqproduto - left join (select mffTemp.Seqfamilia, mfdvTemp.Nrodivisao, mffTemp.indindenizavaria, @@ -780,7 +715,7 @@ left join (select mffTemp.Seqfamilia, and mffTemp.Principal = 'S' ) mff -on mff.seqfamilia = pro.seqfamilia + on mff.seqfamilia = pro.seqfamilia and mff.nrodivisao = md.nrodivisao left join (select pvencto.nroempresa, @@ -794,13 +729,22 @@ left join (select pvencto.nroempresa, group by pvencto.nroempresa, pvencto.seqproduto ) vncto -ON vncto.nroempresa = pemp.nroempresa + ON vncto.nroempresa = pemp.nroempresa and vncto.seqproduto = pemp.seqproduto where 1=1 +--and pemp.SEQPRODUTO = 136011 +--and pemp.nroempresa = 202 and md.nrodivisao in (2,4) and (${args.codproduto} is null or pemp.seqproduto = ${args.codproduto}) and (me.nroempresa in (${args.ctx_user_companies})) + +and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) + from mrl_prodempseg pes3 + where pes3.nroempresa = pes.nroempresa + and pes3.seqproduto = pes.seqproduto + and pes3.nrosegmento = pes.nrosegmento + and pes3.statusvenda = 'A') `, }; }, From 005be96d2bce6960a99d88e21e929075b76197d1 Mon Sep 17 00:00:00 2001 From: tkinaba Date: Thu, 26 Mar 2026 14:58:37 -0300 Subject: [PATCH 11/41] =?UTF-8?q?fix:=20tentativa=20de=20arrumar=20a=20len?= =?UTF-8?q?tid=C3=A3o=20com=20optimizer=20hints?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/products/products.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index e119478..286a244 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -517,7 +517,7 @@ export default moduleFactory detalhe: (args) => { return { sql: /*sql*/ ` - select pemp.nroempresa, + select /*+ FIRST_ROWS(10) */ pemp.nroempresa, tcomp.comprador, nvl(mff.fornecedor, 'N/A') fornecedor, consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, From 02ce1fdf01a3f976dd7dc0e0dfc991fd1e7e543b Mon Sep 17 00:00:00 2001 From: tkinaba Date: Thu, 26 Mar 2026 17:43:50 -0300 Subject: [PATCH 12/41] =?UTF-8?q?fix:=20tentativa=20de=20resolver=20a=20le?= =?UTF-8?q?ntid=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit removendo o is null --- src/products/products.module.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 286a244..9db34ed 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -736,9 +736,8 @@ where 1=1 --and pemp.SEQPRODUTO = 136011 --and pemp.nroempresa = 202 and md.nrodivisao in (2,4) -and (${args.codproduto} is null or pemp.seqproduto = ${args.codproduto}) -and (me.nroempresa in (${args.ctx_user_companies})) - +and pemp.seqproduto = ${args.codproduto} +and me.nroempresa in (${args.ctx_user_companies}) and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) from mrl_prodempseg pes3 where pes3.nroempresa = pes.nroempresa From f3497dbff3a5f00523ef9439a0d56e842bdd54b7 Mon Sep 17 00:00:00 2001 From: tkinaba Date: Fri, 27 Mar 2026 17:09:12 -0300 Subject: [PATCH 13/41] doc: migrations --- migrations/README.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/migrations/README.md b/migrations/README.md index 663e81e..83a264b 100644 --- a/migrations/README.md +++ b/migrations/README.md @@ -1,3 +1,37 @@ # Migrations +Este projeto utiliza [pressly/goose](https://github.com/pressly/goose) para +gerenciamento de migrações de banco de dados. Cada ERP possui seu próprio set de +migrations. Por exemplo, `migrations/C5/*.sql`, `migrations/SENIOR/*.sql`... +## Instalação + +```bash +go install github.com/pressly/goose/v3/cmd/goose@latest +``` + +## Criando uma migração + +```bash +goose -dir migrations/ create nome_da_migracao sql +``` + +Isso gera um arquivo com timestamp no formato +`YYYYMMDDHHMMSS_nome_da_migracao.sql` contendo seções `-- +goose Up` e `-- ++goose Down`. + +## Boas práticas + +- **Sempre escreva a migração `Down`**: garante que a migração possa ser + revertida com segurança. +- **Uma mudança por migração**: mantenha cada arquivo focado em uma única + alteração (criar tabela, adicionar coluna, etc.). +- **Migrações devem ser idempotentes quando possível**: use `IF NOT EXISTS` / + `IF EXISTS` para evitar falhas em re-execução. +- **Nunca altere uma migração já aplicada**: se algo precisa ser corrigido, crie + uma nova migração. +- **Evite migrações destrutivas em produção**: prefira adicionar colunas + nullable e remover as antigas em uma migração posterior, em vez de renomear ou + deletar diretamente. +- **Teste localmente antes de aplicar**: rode `up` e `down` no ambiente local + para verificar que ambas as direções funcionam. From bbc52c8cd163b6c5a373130ccc73cfeebbbff2ae Mon Sep 17 00:00:00 2001 From: tkinaba Date: Wed, 1 Apr 2026 10:19:40 -0300 Subject: [PATCH 14/41] =?UTF-8?q?fix(consulta-de-produto):=20usar=20a=20va?= =?UTF-8?q?ri=C3=A1vel=20`ctx=5Fuser=5Fcompanies=5Ffor=5Fmodule`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 6 +++--- package.json | 2 +- src/products/products.module.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7c165e0..95272c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,15 +9,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.7" + "@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.8" }, "devDependencies": { "tsx": "^4.21.0" } }, "node_modules/@davinti/jeff": { - "version": "1.0.7", - "resolved": "git+https://git.davinti.com.br/davinTI/jeff.git#07860417cc408cbc691f3d52a169dc6daf1b21bc", + "version": "1.0.8", + "resolved": "git+https://git.davinti.com.br/davinTI/jeff.git#aa32d9bc6e5ab4b6a4c5f2748fa68e4bfdd2b4e2", "license": "ISC", "dependencies": { "@types/glob": "^8.1.0", diff --git a/package.json b/package.json index 9026756..fba3969 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "license": "ISC", "description": "", "dependencies": { - "@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.7" + "@davinti/jeff": "git+https://git.davinti.com.br/davinTI/jeff.git#v1.0.8" }, "devDependencies": { "tsx": "^4.21.0" diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 9db34ed..73edcc9 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -737,7 +737,7 @@ where 1=1 --and pemp.nroempresa = 202 and md.nrodivisao in (2,4) and pemp.seqproduto = ${args.codproduto} -and me.nroempresa in (${args.ctx_user_companies}) +and me.nroempresa in (${args.ctx_user_companies_for_module}) and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) from mrl_prodempseg pes3 where pes3.nroempresa = pes.nroempresa From 137ebdece27efffd9a9f412389faa6bb8db4a683 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 1 Apr 2026 16:51:08 -0300 Subject: [PATCH 15/41] fix flash companies modules filter --- src/flash/flash.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 9936520..fc22804 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -99,7 +99,7 @@ inner join mboard.tb_empresa_segmento tes where 1=1 and tvf.vlrvendaacumulada > 0 and tvf.dtavda = TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - and (tvf.nroempresa in (${args.ctx_user_companies})) + and (tvf.nroempresa in (${args.ctx_user_companies_for_module})) group by rollup(canalapp, nomeempresaapp) order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, }; From 32bcd815e952e16d7f6b2c0df8e326386837f408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Wed, 22 Apr 2026 14:46:56 -0300 Subject: [PATCH 16/41] Adicionando sistema C5_mambo --- src/products/products.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 73edcc9..1182344 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1,6 +1,6 @@ import { createModuleFactory } from "@davinti/jeff"; -const moduleFactory = createModuleFactory(["C5"]); +const moduleFactory = createModuleFactory(["C5", "C5_mambo"]); export default moduleFactory .createModule({ From 505629adf091583939addb991e3f4ac2158595df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Wed, 22 Apr 2026 16:14:48 -0300 Subject: [PATCH 17/41] Adicionando sistema C5_big --- src/products/products.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 1182344..9bde270 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1,6 +1,6 @@ import { createModuleFactory } from "@davinti/jeff"; -const moduleFactory = createModuleFactory(["C5", "C5_mambo"]); +const moduleFactory = createModuleFactory(["C5_big", "C5_mambo"]); export default moduleFactory .createModule({ From bb9acc8b49f7792c4ec5893180c57316e44c1553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Wed, 22 Apr 2026 16:16:09 -0300 Subject: [PATCH 18/41] Adicionando sistema C5_big --- src/flash/flash.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index fc22804..6c4e232 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -1,6 +1,6 @@ import { createModuleFactory } from "@davinti/jeff"; -const moduleFactory = createModuleFactory(["C5"]); +const moduleFactory = createModuleFactory(["C5", "C5_big", "C5_mambo"]); export default moduleFactory .createModule({ From e9d38490ba0ced36951eccd6f056c6134dd034dc Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Wed, 22 Apr 2026 16:35:58 -0300 Subject: [PATCH 19/41] =?UTF-8?q?Altera=C3=A7=C3=A3o=20para=20criar=20M?= =?UTF-8?q?=C3=B3dulos=20novos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 6c4e232..35ce184 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -105,4 +105,14 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, }; }, }, + C5_big: {flash: (args) => { + return { + sql: /*sql*/ ``,}; + }, + }, + C5_mambo: {flash: (args) => { + return { + sql: /*sql*/ ``,}; + }, + }, }); From cf1840bc9ef714013047025b31d10ad0a2f60c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Wed, 22 Apr 2026 16:46:46 -0300 Subject: [PATCH 20/41] Adicionando sistema C5_big --- src/products/products.module.ts | 922 +++++++++++++++++++++++++++++++- 1 file changed, 921 insertions(+), 1 deletion(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 9bde270..9fb019d 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1,6 +1,6 @@ import { createModuleFactory } from "@davinti/jeff"; -const moduleFactory = createModuleFactory(["C5_big", "C5_mambo"]); +const moduleFactory = createModuleFactory(["C5", "C5_big", "C5_mambo"]); export default moduleFactory .createModule({ @@ -935,4 +935,924 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) }; }, }, + C5_mambo: { + consulta: (args) => { + return { + sql: /*sql*/ ` + SELECT + CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, + p.DESCCOMPLETA AS title + FROM + DIN_ABASTECIMENTO_PRODUTOS p + WHERE + 1 = 1 + AND ( + ( + ${args.filtro} IS NOT NULL + AND ( + p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' + OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') + ) + ) + OR ( + ${args.ean} IS NOT NULL + AND EXISTS ( + SELECT 1 + FROM CONSINCO.MAP_PRODCODIGO A + WHERE A.SEQPRODUTO = p.SEQPRODUTO + AND ISNUMERIC(A.CODACESSO) = 'S' + AND A.CODACESSO = ${args.ean} + ) + ) + OR ( + ${args.filtro} IS NULL + AND ${args.ean} IS NULL + ) + ) + ORDER BY + 2 + `, + }; + }, + detalhe: (args) => { + return { + sql: /*sql*/ ` + select /*+ FIRST_ROWS(10) */ pemp.nroempresa, + tcomp.comprador, + nvl(mff.fornecedor, 'N/A') fornecedor, + consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, + pro.seqproduto, + initcap(pro.desccompleta) Descricao, + nvl(mapi.urlecommerceimg,'') ImagemUrl, + case when trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2) = 0 then + trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) + else + trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2) + end PrecoAtacado, + + trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) PrecoVarejo, + + trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, + nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) Margem, + + case + when trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) = trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2 + ) then nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) + else + nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) + end MargemAtacado, + nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, + emb.embalagem DescricaoEmbalagem, + trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, + case + when pemp.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito - pemp.qtdreservadavda,0),3) + else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) + end EstoqueDisponivel, + + NVL(pemp.estqtroca,0) EstoqueTroca, + NVL(pemp.qtdpedrectransito,0) EstoqueTransito, + pemp.qtdpendpedcompra EstoqueFuturo, + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Inclu�do estqoutro para n�o ser necess�rio utilizar MADV_COMPOSICAORESERVASELINV + ROUND(nvl(case + when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 + when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) + end, 0), 3) DDV, + + nvl(pemp.estqminimodv,0) DDVMinimo, + nvl(pemp.estqmaximodv, 0) DDVMaximo, + case + WHEN (select count(1) from mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' + when pemp.formaabastecimento = 'I' then 'ARMAZENAGEM' + when pemp.formaabastecimento = 'C' then 'CROSS' + when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' + when pemp.formaabastecimento = 'E' then 'LOJA-EDL' + when pemp.formaabastecimento is null then gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao) + end FormaAbastecimento, + + case + when pes.precovalidpromoc > 0.00 then 'PROMOCAO' + when pes.precovalidpromoc = 0.00 then 'NORMAL' + end Situacao, + pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, + pempcd.qtdpendpedcompra EstoqueFuturoCD, + + consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, + pemp.dtaultvenda DATAULTIMAVENDA, + consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, + CASE WHEN (select count(*) from mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, + --case when (pemp.statuscompra='A') then 1 else 0 end STATUSCOMPRA, + pemp.statuscompra, + nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa=me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, + nvl(pro.seqprodutobase,0) IdBase, + case + when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' + ELSE + + case when mff.indindenizavaria = 'S' then + case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then + 'SEM TROCA' + else + 'TROCA FINANC' + end + when mff.indindenizavaria = 'N' then + 'NF DEVOL' + else + 'SEM TROCA' + end + END TIPOTROCA, + mfdv.padraoembcompra QUANTIDADECOMPRA, + pemp.qtdreservadavda RESERVA, + NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, + mfdv.margemlucrodivisao, + nvl(pes.precovalidpromoc,0) PrecoPromoc, + nvl(pes.precovalidnormal,0) PrecoNormal, + nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, + case when pes3.precovalidpromoc > 0 then + nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) + else + 0 + end MargemMeuMambo, + nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, + trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, + NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, + vncto.dtavalidade + +from max_divisao md + +inner join max_empresa me + on me.nrodivisao = md.nrodivisao +and me.nroempresa not in (104,200,291,298,910,911,920,930,931,940,980) +and me.dtainiciomovestoque <= trunc(sysdate) +and me.status = 'A' + +inner join mad_segmento seg + on md.nrodivisao = me.nrodivisao +and me.nrosegmentoprinc = seg.nrosegmento + +inner join mrl_produtoempresa pemp + on pemp.nroempresa = me.nroempresa + +left join mrl_produtoempresa pempcd + on pempcd.seqproduto = pemp.seqproduto +and pempcd.nroempresa in (979) + +left join map_classeabastec mcab +on mcab.classeabastqtd = pemp.classeabastqtd +and mcab.nroempresa = pemp.nroempresa +and mcab.classeabastvlr = pemp.classeabastvlr + +inner join map_produto pro + on pro.seqproduto = pemp.seqproduto + +inner join map_famdivisao mfdv + on mfdv.seqfamilia = pro.seqfamilia +and mfdv.nrodivisao = me.nrodivisao + +inner join max_comprador mco + on mco.seqcomprador = mfdv.seqcomprador + +left join tb_comprador tcomp + on tcomp.COMPRADOR = mco.comprador + +left join map_produtoimagem mapi + on mapi.seqproduto = pro.seqproduto +and mapi.indpricipal = 'S' + +inner join mrl_prodempseg pes + on pes.seqproduto = pemp.seqproduto +and pes.nroempresa = pemp.nroempresa +and pes.nrosegmento = seg.nrosegmento +and pes.qtdembalagem = 1 + +inner join mrl_prodempseg pes2 + on pes2.nroempresa = pes.nroempresa +and pes2.seqproduto = pes.seqproduto +and pes2.nrosegmento = pes.nrosegmento + +left join mrl_prodempseg pes3 + on pes3.seqproduto = pemp.seqproduto +and pes3.nroempresa = pemp.nroempresa +and pes3.nrosegmento = 15 +and pes3.qtdembalagem = 1 + +inner join map_famembalagem emb + on emb.seqfamilia = pro.seqfamilia +and emb.qtdembalagem = 1 + +left join (select mffTemp.Seqfamilia, + mfdvTemp.Nrodivisao, + mffTemp.indindenizavaria, + mfdvTemp.pzomedvisitarep, + mfdvTemp.pzomedentrega, + mfdvTemp.pzomedatraso, + gp.fantasia fornecedor + + from map_famfornec mffTemp + + inner join ge_pessoa gp + on gp.seqpessoa = mffTemp.Seqfornecedor + + left join maf_fornecdivisao mfdvTemp + on mfdvTemp.Seqfornecedor = mffTemp.Seqfornecedor + and mffTemp.Principal = 'S' + + ) mff + on mff.seqfamilia = pro.seqfamilia +and mff.nrodivisao = md.nrodivisao + +left join (select pvencto.nroempresa, + pvencto.seqproduto, + min(pvencto.vlrpreco) vlrprecovenctoprox, + min(pvencto.dtavalidade) dtavalidade + from consinco.mrl_prodempvencimento pvencto + where 1=1 + and pvencto.dtavalidade >= trunc(sysdate) + and pvencto.qtdembalagem = 1 + group by pvencto.nroempresa, + pvencto.seqproduto + ) vncto + ON vncto.nroempresa = pemp.nroempresa +and vncto.seqproduto = pemp.seqproduto + +where 1=1 +--and pemp.SEQPRODUTO = 136011 +--and pemp.nroempresa = 202 +and md.nrodivisao in (2,4) +and pemp.seqproduto = ${args.codproduto} +and me.nroempresa in (${args.ctx_user_companies_for_module}) +and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) + from mrl_prodempseg pes3 + where pes3.nroempresa = pes.nroempresa + and pes3.seqproduto = pes.seqproduto + and pes3.nrosegmento = pes.nrosegmento + and pes3.statusvenda = 'A') + `, + }; + }, + detalhe_preco: (args) => { + return { + sql: /*sql*/ ` + select ora_hash(mgmp.SEQPRODUTO||mgmp.NROEMPRESA||mgmp.QTDEMBALAGEM||mgmp.NROSEGMENTO) chave, + mgmp.SEQPRODUTO, + mgmp.NROEMPRESA, + mgmp.NROSEGMENTO, + mgmp.QTDEMBALAGEM || ' ' || mgmp.EMBVENDA embalagem, + mgmp.PRECOVALIDNORMAL preco_embalagem, + mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, + trunc(mgmp.MGMPRECOVALIDO,2) margem + from maxv_mgmbaseprodseg mgmp + inner join max_empresa me + on me.nroempresa = mgmp.NROEMPRESA + and me.status = 'A' + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and me.nrodivisao in (2,4) + and me.nroempresa not in (291,298,910,911,920,930,931,940,980) + AND mgmp.NROSEGMENTO IN (2,7) + where 1=1 + and mgmp.seqproduto = ${args.codproduto} + and mgmp.nroempresa = ${args.nrempresa} + AND mgmp.NROSEGMENTO NOT IN (22,23,26) + and mgmp.STATUSVENDA = 'A' + `, + }; + }, + detalhe_mdv: (args) => { + return { + sql: /*sql*/ ` + select mcdia.dtaentradasaida data, + mcdia.nroempresa, + mcdia.seqproduto, + Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, + mcdia.qtdvda qtd, + mcdia.qtdestqinicial qtd_inicial + from mrl_custodia mcdia + inner join max_empresa me + on mcdia.nroempresa = me.nroempresa + where 1=1 + and mcdia.qtdvda > 0 + and mcdia.dtaentradasaida >= trunc(sysdate)-365 + AND mcdia.nroempresa = ${args.nrempresa} + AND mcdia.seqproduto = ${args.codproduto} + order by dtaentradasaida desc + `, + }; + }, + detalhe_situacao_vigente: (args) => { + return { + sql: /*sql*/ ` + select mrl_prodempseg.nroempresa, + mrl_prodempseg.seqproduto, + mrl_promocao.dtainicio, + mrl_promocao.dtafim, + mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, + mrl_promocaoitem.precopromocional preco + from mrl_promocaoitem, mrl_promocao, mrl_prodempseg, + map_produto mp, map_famembalagem mfe, max_empresa me + where 1=1 + and me.nroempresa = mrl_promocao.nroempresa + and me.status = 'A' + and me.nrodivisao = 2 + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa + and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao + and mrl_promocao.centralloja = mrl_promocaoitem.centralloja + and mrl_promocao.nrosegmento = mrl_promocaoitem.nrosegmento + and mrl_promocaoitem.seqproduto = mrl_prodempseg.seqproduto + and mrl_promocao.nrosegmento = mrl_prodempseg.nrosegmento + and mrl_promocao.nroempresa = mrl_prodempseg.nroempresa + and mrl_promocaoitem.qtdembalagem = mrl_prodempseg.qtdembalagem + and mp.seqproduto = mrl_prodempseg.seqproduto + and mfe.seqfamilia = mp.seqfamilia + and mfe.qtdembalagem = mrl_prodempseg.qtdembalagem + and nvl(mrl_promocao.tipopromoc, 'N') in ('N', 'F', 'A', 'S') + and mrl_promocao.dtainicio >= trunc(sysdate)-90--365 + AND mrl_prodempseg.nroempresa = ${args.nrempresa} + AND mrl_prodempseg.seqproduto = ${args.codproduto} + order by mrl_promocao.dtainicio desc + `, + }; + }, + detalhe_custo_liquido: (args) => { + return { + sql: /*sql*/ ` + select mcdiafam.dtaentradasaida, + mcdiafam.nroempresa, + PROD.SEQPRODUTO, + mcdiafam.seqfamilia, + mcdiafam.qtdestqinicial estqinicial, + qtdestqinicial + qtdentrada - qtdsaida estqfinal, + --trunc(cmdiavlrnf,2) custo + cmdiavlrnf custo + from mrl_custodiafam mcdiafam + INNER JOIN MAP_PRODUTO PROD + ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA + inner join max_empresa me + on me.nroempresa = mcdiafam.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and me.nrodivisao in (2,4) + where 1=1 + and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 + AND mcdiafam.nroempresa = ${args.nrempresa} + AND PROD.SEQPRODUTO = ${args.codproduto} + order by mcdiafam.dtaentradasaida desc + `, + }; + }, + detalhe_estoque_disponivel: (args) => { + return { + sql: /*sql*/ ` + select + cdia.dtaentradasaida, + cdia.nroempresa, + cdia.seqproduto, + cdia.qtdentrada, + cdia.qtdsaida, + cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo + from mrl_custodia cdia + join max_empresa me + on me.nroempresa = cdia.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque < trunc(sysdate) + and me.nrodivisao = 2 + where cdia.dtaentradasaida >= sysdate - 365 + and cdia.seqproduto = ${args.codproduto} + and cdia.nroempresa = ${args.nrempresa} + union all + select + mle.dtaentradasaida, + mle.nroempresa, + mle.seqproduto, + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) qtdentrada, + sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaida, + cdia.qtdestqinicial + + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) + - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo + from mrl_lanctoestoque mle + join max_empresa me + on me.nroempresa = mle.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque < trunc(sysdate) + and me.nrodivisao = 4 + join mrl_custodia cdia + on cdia.dtaentradasaida = mle.dtaentradasaida + and cdia.nroempresa = mle.nroempresa + and cdia.seqproduto = mle.seqproduto + where mle.dtaentradasaida >= sysdate - 365 + and mle.codgeraloper not in (301,302) + and mle.seqproduto = ${args.codproduto} + and mle.nroempresa = ${args.nrempresa} + group by + mle.dtaentradasaida, + mle.nroempresa, + mle.seqproduto, + cdia.qtdestqinicial + order by dtaentradasaida desc + `, + }; + }, + detalhe_estoque_transito: (args) => { + return { + sql: /*sql*/ ` + SELECT + a.nroempresa, + b.seqproduto, + INITCAP(C.NOMERAZAO) FORNECEDOR, + A.NUMERONF, + A.SERIENF, + A.DTAEMISSAO, + A.DTAENTRADA, + B.QUANTIDADE, + B.VLRITEM VALOR + from MLF_AUXNOTAFISCAL A, MLF_AUXNFITEM B, GE_PESSOA C, MAP_PRODUTO D + WHERE 1=1 + and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL + AND C.SEQPESSOA = A.SEQPESSOA + AND D.SEQPRODUTO = B.SEQPRODUTO + AND A.DTAEMISSAO >= SYSDATE-365 + AND a.nroempresa = ${args.nrempresa} + AND b.seqproduto = ${args.codproduto} + order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF + `, + }; + }, + }, + C5_big: { + consulta: (args) => { + return { + sql: /*sql*/ ` + SELECT + CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, + p.DESCCOMPLETA AS title + FROM + DIN_ABASTECIMENTO_PRODUTOS p + WHERE + 1 = 1 + AND ( + ( + ${args.filtro} IS NOT NULL + AND ( + p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' + OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') + ) + ) + OR ( + ${args.ean} IS NOT NULL + AND EXISTS ( + SELECT 1 + FROM CONSINCO.MAP_PRODCODIGO A + WHERE A.SEQPRODUTO = p.SEQPRODUTO + AND ISNUMERIC(A.CODACESSO) = 'S' + AND A.CODACESSO = ${args.ean} + ) + ) + OR ( + ${args.filtro} IS NULL + AND ${args.ean} IS NULL + ) + ) + ORDER BY + 2 + `, + }; + }, + detalhe: (args) => { + return { + sql: /*sql*/ ` + select /*+ FIRST_ROWS(10) */ pemp.nroempresa, + tcomp.comprador, + nvl(mff.fornecedor, 'N/A') fornecedor, + consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, + pro.seqproduto, + initcap(pro.desccompleta) Descricao, + nvl(mapi.urlecommerceimg,'') ImagemUrl, + case when trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2) = 0 then + trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) + else + trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2) + end PrecoAtacado, + + trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) PrecoVarejo, + + trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, + nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) Margem, + + case + when trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) = trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2 + ) then nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) + else + nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) + end MargemAtacado, + nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, + emb.embalagem DescricaoEmbalagem, + trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, + case + when pemp.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito - pemp.qtdreservadavda,0),3) + else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) + end EstoqueDisponivel, + + NVL(pemp.estqtroca,0) EstoqueTroca, + NVL(pemp.qtdpedrectransito,0) EstoqueTransito, + pemp.qtdpendpedcompra EstoqueFuturo, + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Inclu�do estqoutro para n�o ser necess�rio utilizar MADV_COMPOSICAORESERVASELINV + ROUND(nvl(case + when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 + when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) + end, 0), 3) DDV, + + nvl(pemp.estqminimodv,0) DDVMinimo, + nvl(pemp.estqmaximodv, 0) DDVMaximo, + case + WHEN (select count(1) from mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' + when pemp.formaabastecimento = 'I' then 'ARMAZENAGEM' + when pemp.formaabastecimento = 'C' then 'CROSS' + when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' + when pemp.formaabastecimento = 'E' then 'LOJA-EDL' + when pemp.formaabastecimento is null then gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao) + end FormaAbastecimento, + + case + when pes.precovalidpromoc > 0.00 then 'PROMOCAO' + when pes.precovalidpromoc = 0.00 then 'NORMAL' + end Situacao, + pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, + pempcd.qtdpendpedcompra EstoqueFuturoCD, + + consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, + pemp.dtaultvenda DATAULTIMAVENDA, + consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, + CASE WHEN (select count(*) from mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, + --case when (pemp.statuscompra='A') then 1 else 0 end STATUSCOMPRA, + pemp.statuscompra, + nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa=me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, + nvl(pro.seqprodutobase,0) IdBase, + case + when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' + ELSE + + case when mff.indindenizavaria = 'S' then + case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then + 'SEM TROCA' + else + 'TROCA FINANC' + end + when mff.indindenizavaria = 'N' then + 'NF DEVOL' + else + 'SEM TROCA' + end + END TIPOTROCA, + mfdv.padraoembcompra QUANTIDADECOMPRA, + pemp.qtdreservadavda RESERVA, + NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, + mfdv.margemlucrodivisao, + nvl(pes.precovalidpromoc,0) PrecoPromoc, + nvl(pes.precovalidnormal,0) PrecoNormal, + nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, + case when pes3.precovalidpromoc > 0 then + nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) + else + 0 + end MargemMeuMambo, + nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, + trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, + NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, + vncto.dtavalidade + +from max_divisao md + +inner join max_empresa me + on me.nrodivisao = md.nrodivisao +and me.nroempresa not in (104,200,291,298,910,911,920,930,931,940,980) +and me.dtainiciomovestoque <= trunc(sysdate) +and me.status = 'A' + +inner join mad_segmento seg + on md.nrodivisao = me.nrodivisao +and me.nrosegmentoprinc = seg.nrosegmento + +inner join mrl_produtoempresa pemp + on pemp.nroempresa = me.nroempresa + +left join mrl_produtoempresa pempcd + on pempcd.seqproduto = pemp.seqproduto +and pempcd.nroempresa in (979) + +left join map_classeabastec mcab +on mcab.classeabastqtd = pemp.classeabastqtd +and mcab.nroempresa = pemp.nroempresa +and mcab.classeabastvlr = pemp.classeabastvlr + +inner join map_produto pro + on pro.seqproduto = pemp.seqproduto + +inner join map_famdivisao mfdv + on mfdv.seqfamilia = pro.seqfamilia +and mfdv.nrodivisao = me.nrodivisao + +inner join max_comprador mco + on mco.seqcomprador = mfdv.seqcomprador + +left join tb_comprador tcomp + on tcomp.COMPRADOR = mco.comprador + +left join map_produtoimagem mapi + on mapi.seqproduto = pro.seqproduto +and mapi.indpricipal = 'S' + +inner join mrl_prodempseg pes + on pes.seqproduto = pemp.seqproduto +and pes.nroempresa = pemp.nroempresa +and pes.nrosegmento = seg.nrosegmento +and pes.qtdembalagem = 1 + +inner join mrl_prodempseg pes2 + on pes2.nroempresa = pes.nroempresa +and pes2.seqproduto = pes.seqproduto +and pes2.nrosegmento = pes.nrosegmento + +left join mrl_prodempseg pes3 + on pes3.seqproduto = pemp.seqproduto +and pes3.nroempresa = pemp.nroempresa +and pes3.nrosegmento = 15 +and pes3.qtdembalagem = 1 + +inner join map_famembalagem emb + on emb.seqfamilia = pro.seqfamilia +and emb.qtdembalagem = 1 + +left join (select mffTemp.Seqfamilia, + mfdvTemp.Nrodivisao, + mffTemp.indindenizavaria, + mfdvTemp.pzomedvisitarep, + mfdvTemp.pzomedentrega, + mfdvTemp.pzomedatraso, + gp.fantasia fornecedor + + from map_famfornec mffTemp + + inner join ge_pessoa gp + on gp.seqpessoa = mffTemp.Seqfornecedor + + left join maf_fornecdivisao mfdvTemp + on mfdvTemp.Seqfornecedor = mffTemp.Seqfornecedor + and mffTemp.Principal = 'S' + + ) mff + on mff.seqfamilia = pro.seqfamilia +and mff.nrodivisao = md.nrodivisao + +left join (select pvencto.nroempresa, + pvencto.seqproduto, + min(pvencto.vlrpreco) vlrprecovenctoprox, + min(pvencto.dtavalidade) dtavalidade + from consinco.mrl_prodempvencimento pvencto + where 1=1 + and pvencto.dtavalidade >= trunc(sysdate) + and pvencto.qtdembalagem = 1 + group by pvencto.nroempresa, + pvencto.seqproduto + ) vncto + ON vncto.nroempresa = pemp.nroempresa +and vncto.seqproduto = pemp.seqproduto + +where 1=1 +--and pemp.SEQPRODUTO = 136011 +--and pemp.nroempresa = 202 +and md.nrodivisao in (2,4) +and pemp.seqproduto = ${args.codproduto} +and me.nroempresa in (${args.ctx_user_companies_for_module}) +and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) + from mrl_prodempseg pes3 + where pes3.nroempresa = pes.nroempresa + and pes3.seqproduto = pes.seqproduto + and pes3.nrosegmento = pes.nrosegmento + and pes3.statusvenda = 'A') + `, + }; + }, + detalhe_preco: (args) => { + return { + sql: /*sql*/ ` + select ora_hash(mgmp.SEQPRODUTO||mgmp.NROEMPRESA||mgmp.QTDEMBALAGEM||mgmp.NROSEGMENTO) chave, + mgmp.SEQPRODUTO, + mgmp.NROEMPRESA, + mgmp.NROSEGMENTO, + mgmp.QTDEMBALAGEM || ' ' || mgmp.EMBVENDA embalagem, + mgmp.PRECOVALIDNORMAL preco_embalagem, + mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, + trunc(mgmp.MGMPRECOVALIDO,2) margem + from maxv_mgmbaseprodseg mgmp + inner join max_empresa me + on me.nroempresa = mgmp.NROEMPRESA + and me.status = 'A' + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and me.nrodivisao in (2,4) + and me.nroempresa not in (291,298,910,911,920,930,931,940,980) + AND mgmp.NROSEGMENTO IN (2,7) + where 1=1 + and mgmp.seqproduto = ${args.codproduto} + and mgmp.nroempresa = ${args.nrempresa} + AND mgmp.NROSEGMENTO NOT IN (22,23,26) + and mgmp.STATUSVENDA = 'A' + `, + }; + }, + detalhe_mdv: (args) => { + return { + sql: /*sql*/ ` + select mcdia.dtaentradasaida data, + mcdia.nroempresa, + mcdia.seqproduto, + Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, + mcdia.qtdvda qtd, + mcdia.qtdestqinicial qtd_inicial + from mrl_custodia mcdia + inner join max_empresa me + on mcdia.nroempresa = me.nroempresa + where 1=1 + and mcdia.qtdvda > 0 + and mcdia.dtaentradasaida >= trunc(sysdate)-365 + AND mcdia.nroempresa = ${args.nrempresa} + AND mcdia.seqproduto = ${args.codproduto} + order by dtaentradasaida desc + `, + }; + }, + detalhe_situacao_vigente: (args) => { + return { + sql: /*sql*/ ` + select mrl_prodempseg.nroempresa, + mrl_prodempseg.seqproduto, + mrl_promocao.dtainicio, + mrl_promocao.dtafim, + mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, + mrl_promocaoitem.precopromocional preco + from mrl_promocaoitem, mrl_promocao, mrl_prodempseg, + map_produto mp, map_famembalagem mfe, max_empresa me + where 1=1 + and me.nroempresa = mrl_promocao.nroempresa + and me.status = 'A' + and me.nrodivisao = 2 + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa + and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao + and mrl_promocao.centralloja = mrl_promocaoitem.centralloja + and mrl_promocao.nrosegmento = mrl_promocaoitem.nrosegmento + and mrl_promocaoitem.seqproduto = mrl_prodempseg.seqproduto + and mrl_promocao.nrosegmento = mrl_prodempseg.nrosegmento + and mrl_promocao.nroempresa = mrl_prodempseg.nroempresa + and mrl_promocaoitem.qtdembalagem = mrl_prodempseg.qtdembalagem + and mp.seqproduto = mrl_prodempseg.seqproduto + and mfe.seqfamilia = mp.seqfamilia + and mfe.qtdembalagem = mrl_prodempseg.qtdembalagem + and nvl(mrl_promocao.tipopromoc, 'N') in ('N', 'F', 'A', 'S') + and mrl_promocao.dtainicio >= trunc(sysdate)-90--365 + AND mrl_prodempseg.nroempresa = ${args.nrempresa} + AND mrl_prodempseg.seqproduto = ${args.codproduto} + order by mrl_promocao.dtainicio desc + `, + }; + }, + detalhe_custo_liquido: (args) => { + return { + sql: /*sql*/ ` + select mcdiafam.dtaentradasaida, + mcdiafam.nroempresa, + PROD.SEQPRODUTO, + mcdiafam.seqfamilia, + mcdiafam.qtdestqinicial estqinicial, + qtdestqinicial + qtdentrada - qtdsaida estqfinal, + --trunc(cmdiavlrnf,2) custo + cmdiavlrnf custo + from mrl_custodiafam mcdiafam + INNER JOIN MAP_PRODUTO PROD + ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA + inner join max_empresa me + on me.nroempresa = mcdiafam.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and me.nrodivisao in (2,4) + where 1=1 + and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 + AND mcdiafam.nroempresa = ${args.nrempresa} + AND PROD.SEQPRODUTO = ${args.codproduto} + order by mcdiafam.dtaentradasaida desc + `, + }; + }, + detalhe_estoque_disponivel: (args) => { + return { + sql: /*sql*/ ` + select + cdia.dtaentradasaida, + cdia.nroempresa, + cdia.seqproduto, + cdia.qtdentrada, + cdia.qtdsaida, + cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo + from mrl_custodia cdia + join max_empresa me + on me.nroempresa = cdia.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque < trunc(sysdate) + and me.nrodivisao = 2 + where cdia.dtaentradasaida >= sysdate - 365 + and cdia.seqproduto = ${args.codproduto} + and cdia.nroempresa = ${args.nrempresa} + union all + select + mle.dtaentradasaida, + mle.nroempresa, + mle.seqproduto, + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) qtdentrada, + sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaida, + cdia.qtdestqinicial + + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) + - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo + from mrl_lanctoestoque mle + join max_empresa me + on me.nroempresa = mle.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque < trunc(sysdate) + and me.nrodivisao = 4 + join mrl_custodia cdia + on cdia.dtaentradasaida = mle.dtaentradasaida + and cdia.nroempresa = mle.nroempresa + and cdia.seqproduto = mle.seqproduto + where mle.dtaentradasaida >= sysdate - 365 + and mle.codgeraloper not in (301,302) + and mle.seqproduto = ${args.codproduto} + and mle.nroempresa = ${args.nrempresa} + group by + mle.dtaentradasaida, + mle.nroempresa, + mle.seqproduto, + cdia.qtdestqinicial + order by dtaentradasaida desc + `, + }; + }, + detalhe_estoque_transito: (args) => { + return { + sql: /*sql*/ ` + SELECT + a.nroempresa, + b.seqproduto, + INITCAP(C.NOMERAZAO) FORNECEDOR, + A.NUMERONF, + A.SERIENF, + A.DTAEMISSAO, + A.DTAENTRADA, + B.QUANTIDADE, + B.VLRITEM VALOR + from MLF_AUXNOTAFISCAL A, MLF_AUXNFITEM B, GE_PESSOA C, MAP_PRODUTO D + WHERE 1=1 + and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL + AND C.SEQPESSOA = A.SEQPESSOA + AND D.SEQPRODUTO = B.SEQPRODUTO + AND A.DTAEMISSAO >= SYSDATE-365 + AND a.nroempresa = ${args.nrempresa} + AND b.seqproduto = ${args.codproduto} + order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF + `, + }; + }, + }, }); From 823dd858689a05a82ea6ff877dff4f94db5ad372 Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Mon, 27 Apr 2026 11:11:00 -0300 Subject: [PATCH 21/41] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20do=20Flash=20do?= =?UTF-8?q?=20Big?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 88 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 35ce184..5e74d2b 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -107,7 +107,93 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, }, C5_big: {flash: (args) => { return { - sql: /*sql*/ ``,}; + sql: /*sql*/ ` + SELECT + CASE + WHEN GROUPING(x.canalapp) = 1 THEN 'TOTAL' + ELSE x.canalapp + END AS canalapp, + + CASE + WHEN GROUPING(x.canalapp) = 1 THEN 1 + ELSE 0 + END AS is_total, + + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, + + CASE + WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_atual, + + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_anterior, + + CASE + WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_mes_anterior, + + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_ano_anterior, + + CASE + WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_ano_anterior + + FROM ( + SELECT + n.codigo, + n.nome AS canalapp, + r.valor_meta_efetiva, + r.valor_venda, + CASE + WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + THEN 'ATUAL' + + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + THEN 'MES_ANTERIOR' + + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + THEN 'ANO_ANTERIOR' + END AS periodo + + FROM tb_flash_nodo_resumo_venda r + JOIN tb_flash_nodo n + ON n.id_nodo = r.id_nodo + WHERE n.tipo_nodo = 'EMPRESA' + AND ( + r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + ) + ) x + + GROUP BY ROLLUP(x.codigo, x.canalapp) + + -- evita subtotal por código (caso não queira) + HAVING GROUPING(x.codigo) = 0 OR GROUPING(x.canalapp) = 1 + + ORDER BY is_total, canalapp + `,}; }, }, C5_mambo: {flash: (args) => { From 55e37816f562bb80cfb59d34b35b05572cf30713 Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Mon, 27 Apr 2026 11:16:55 -0300 Subject: [PATCH 22/41] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20remo=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20coment=C3=A1rio.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 5e74d2b..82cfbd1 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -189,7 +189,6 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, GROUP BY ROLLUP(x.codigo, x.canalapp) - -- evita subtotal por código (caso não queira) HAVING GROUPING(x.codigo) = 0 OR GROUPING(x.canalapp) = 1 ORDER BY is_total, canalapp From 645cc9129c46ba70faabd49ef613c62a9ad0cc8d Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Mon, 27 Apr 2026 14:18:35 -0300 Subject: [PATCH 23/41] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20na=20query=20do?= =?UTF-8?q?=20Flash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 82cfbd1..f8f1685 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -189,8 +189,6 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, GROUP BY ROLLUP(x.codigo, x.canalapp) - HAVING GROUPING(x.codigo) = 0 OR GROUPING(x.canalapp) = 1 - ORDER BY is_total, canalapp `,}; }, From 5cdcb503b08495cbaa5ff67730ca82267748f766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Tue, 28 Apr 2026 07:53:45 -0300 Subject: [PATCH 24/41] Ajustes na consulta de produtos --- src/products/products.module.ts | 422 ++++++++++++++++++++++++++++++-- 1 file changed, 395 insertions(+), 27 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 9fb019d..5585bd1 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1403,7 +1403,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, p.DESCCOMPLETA AS title FROM - DIN_ABASTECIMENTO_PRODUTOS p + CONSINCO.MAP_PRODUTO p WHERE 1 = 1 AND ( @@ -1440,7 +1440,17 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) select /*+ FIRST_ROWS(10) */ pemp.nroempresa, tcomp.comprador, nvl(mff.fornecedor, 'N/A') fornecedor, - consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, + -- [inline: consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1)] + (select max(b_cat.caminhocompleto) + from map_famdivcateg a_cat, map_categoria b_cat + where a_cat.seqcategoria = b_cat.seqcategoria + and a_cat.nrodivisao = b_cat.nrodivisao + and a_cat.seqfamilia = pro.seqfamilia + and a_cat.nrodivisao = me.nrodivisao + and b_cat.statuscategor = 'A' + and a_cat.status = 'A' + and b_cat.nivelhierarquia = 1 + and b_cat.tipcategoria = nvl('M', 'M')) categoria, pro.seqproduto, initcap(pro.desccompleta) Descricao, nvl(mapi.urlecommerceimg,'') ImagemUrl, @@ -1465,7 +1475,34 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) end, 2) PrecoVarejo, trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, - nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) Margem, + + -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] + nvl((select round(max(fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg.nrosegmentoprinc, seg_mg.qtdembalagem, + (round( ( pe_mg.CMULTVLRNF + pe_mg.CMULTIPI - + decode( 'L', 'L', pe_mg.CMULTCREDICMS + + decode(nvl(fam_mg.indmonopiscofins, 'N')|| nvl(emp_mg.indfaturaipi, 'N')||nvl(emp_mg.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mg.cmultcredpis, 0) + nvl(pe_mg.cmultcredcofins, 0)), 0) + + pe_mg.CMULTICMSST + pe_mg.CMULTDESPNF + pe_mg.CMULTDESPFORANF - pe_mg.CMULTDCTOFORANF + - nvl( fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA ), 0 ) + + nvl( fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg.qtdembalagem, 4 ) + * case + when (pr_mg.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mg.precovalidpromoc,0,seg_mg.precovalidnormal,seg_mg.precovalidpromoc))),2) + from max_Empresa emp_mg + join mrl_prodempseg seg_mg + on seg_mg.nroempresa = emp_mg.nroempresa + and seg_mg.nrosegmento = emp_mg.nrosegmentoprinc + and seg_mg.qtdembalagem = 1 + and seg_mg.seqproduto = pemp.seqproduto + join map_produto pr_mg + on pr_mg.seqproduto = seg_mg.seqproduto + join mrl_produtoempresa pe_mg + on pe_mg.nroempresa = emp_mg.nroempresa + and pe_mg.seqproduto = nvl(pr_mg.seqprodutobase, pr_mg.seqproduto) + join map_familia fam_mg + on fam_mg.seqfamilia = pr_mg.seqfamilia + where emp_mg.nroempresa = pemp.nroempresa),0) Margem, case when trunc(case @@ -1475,11 +1512,272 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2 - ) then nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) + ) + -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] + then nvl((select round(max(fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg2.nrosegmentoprinc, seg_mg2.qtdembalagem, + (round( ( pe_mg2.CMULTVLRNF + pe_mg2.CMULTIPI - + decode( 'L', 'L', pe_mg2.CMULTCREDICMS + + decode(nvl(fam_mg2.indmonopiscofins, 'N')|| nvl(emp_mg2.indfaturaipi, 'N')||nvl(emp_mg2.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mg2.cmultcredpis, 0) + nvl(pe_mg2.cmultcredcofins, 0)), 0) + + pe_mg2.CMULTICMSST + pe_mg2.CMULTDESPNF + pe_mg2.CMULTDESPFORANF - pe_mg2.CMULTDCTOFORANF + - nvl( fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA ), 0 ) + + nvl( fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg2.qtdembalagem, 4 ) + * case + when (pr_mg2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg2.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mg2.precovalidpromoc,0,seg_mg2.precovalidnormal,seg_mg2.precovalidpromoc))),2) + from max_Empresa emp_mg2 + join mrl_prodempseg seg_mg2 + on seg_mg2.nroempresa = emp_mg2.nroempresa + and seg_mg2.nrosegmento = emp_mg2.nrosegmentoprinc + and seg_mg2.qtdembalagem = 1 + and seg_mg2.seqproduto = pemp.seqproduto + join map_produto pr_mg2 + on pr_mg2.seqproduto = seg_mg2.seqproduto + join mrl_produtoempresa pe_mg2 + on pe_mg2.nroempresa = emp_mg2.nroempresa + and pe_mg2.seqproduto = nvl(pr_mg2.seqprodutobase, pr_mg2.seqproduto) + join map_familia fam_mg2 + on fam_mg2.seqfamilia = pr_mg2.seqfamilia + where emp_mg2.nroempresa = pemp.nroempresa),0) else - nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) + -- [inline: CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa, pemp.seqproduto)] + nvl((select case when at2_q.precovalidpromoc > 0 then round(at2_q.mgmprecovdapromoc,2) + when at2_q.precovalidnormal > 0 then round(at2_q.mgmprecominvdaempresa,2) + end + from ( + SELECT x_at2.precovalidnormal, + x_at2.precovalidpromoc, + decode ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem), 0, 0, + (((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) - ( + ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) * + (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else decode(m_at2.metodoprecificacao, 'B', 0, 'I', 0, decode(h_at2.pericmsestimativa, 0, + f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end / 100)) + + + (((b_at2.cmultvlrnf + b_at2.cmultipi - + decode(m_at2.metodoprecificacao, 'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), + 'I', DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf + - nvl(fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + + nvl(fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' + then nvl((fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) + * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa, 0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) + else 0 + end) + * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + + + ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) * + (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)) + + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + + decode(m_at2.metodoprecificacao,'B', 0, + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / + ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) + - decode(m_at2.metodocalcrentab,'L', ( + ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) * + (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else decode(m_at2.metodoprecificacao,'B',0,'I',0, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end / 100)) + + ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) * + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) + )) * 100) as mgmprecominvdaempresa, + + decode(round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2), 0, 0, + ((round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - ( + (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(m_at2.metodoprecificacao,'B',0,'I',0, + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), + 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, + decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end) / 100)) + + + (((b_at2.cmultvlrnf + b_at2.cmultipi - + decode(m_at2.metodoprecificacao,'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), + 'I', DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf + - nvl(fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + + nvl(fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' + then nvl((fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) + * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) + else 0 + end) + * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + + + (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaopromfs, nvl(n_at2.percomissaopromoc,0)), nvl(n_at2.percomissaopromoc,0)) + + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / + (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) + - decode(m_at2.metodocalcrentab,'L', ( + (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(m_at2.metodoprecificacao,'B',0,'I',0, + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), + 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, + decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end) / 100)) + + (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) + )) * 100) as mgmprecovdapromoc + + from max_empresa h_at2, + map_produto a_at2, + mrl_produtoempresa b_at2, + map_famdivisao c_at2, + map_famdivcateg d_at2, + map_categoria e_at2, + map_famembalagem i_at2, + map_famembalagem j_at2, + map_famembalagem k_at2, + map_famembalagem tr_at2, + map_tributacaouf f_at2, + map_familia l_at2, + mrl_prodempseg x_at2, + max_divisao m_at2, + mad_famsegmento o_at2, + map_classifabc n_at2, + mad_segmento p_at2, + mad_parametro q_at2, + map_famfornec r_at2, + map_regimetributacao t_at2, + max_parametro pd_at2 + where 1=1 + and b_at2.nroempresa = h_at2.nroempresa + and a_at2.seqproduto = b_at2.seqproduto + and c_at2.seqfamilia = a_at2.seqfamilia + and c_at2.nrodivisao = h_at2.nrodivisao + and d_at2.seqfamilia = a_at2.seqfamilia + and d_at2.nrodivisao = h_at2.nrodivisao + and d_at2.status = 'A' + and e_at2.seqcategoria = d_at2.seqcategoria + and e_at2.tipcategoria = 'M' + and e_at2.actfamilia = 'S' + and e_at2.nrodivisao = h_at2.nrodivisao + and f_at2.nrotributacao = c_at2.nrotributacao + and f_at2.ufempresa = nvl(h_at2.ufformacaopreco, h_at2.uf) + and f_at2.ufclientefornec = h_at2.uf + and f_at2.nroregtributacao = nvl(h_at2.nroregtributacao, 0) + and f_at2.tiptributacao = decode(m_at2.tipdivisao,'A','SC','SN') + and i_at2.seqfamilia = a_at2.seqfamilia + and i_at2.qtdembalagem = nvl(r_at2.padraoembcomprafornec, c_at2.padraoembcompra) + and j_at2.seqfamilia = o_at2.seqfamilia + and j_at2.qtdembalagem = o_at2.padraoembvenda + and k_at2.seqfamilia = a_at2.seqfamilia + and k_at2.qtdembalagem = x_at2.qtdembalagem + and tr_at2.seqfamilia = a_at2.seqfamilia + and tr_at2.qtdembalagem = nvl(c_at2.padraoembtransf, o_at2.padraoembvenda) + and l_at2.seqfamilia = a_at2.seqfamilia + and x_at2.seqproduto = a_at2.seqproduto + and x_at2.nroempresa = h_at2.nroempresa + and m_at2.nrodivisao = h_at2.nrodivisao + and o_at2.seqfamilia = a_at2.seqfamilia + and o_at2.nrosegmento = x_at2.nrosegmento + and n_at2.nrosegmento = o_at2.nrosegmento + and n_at2.classifcomercabc = o_at2.classifcomercabc + and x_at2.nrosegmento = p_at2.nrosegmento + and q_at2.nroempresa = h_at2.nroempresa + and r_at2.seqfamilia = a_at2.seqfamilia + and t_at2.nroregtributacao = f_at2.nroregtributacao + and h_at2.nrosegmentoprinc = o_at2.nrosegmento + and pd_at2.grupo = 'PRODUTO' + and pd_at2.parametro = 'UTIL_FORMA_ABASTEC_PROD' + and pd_at2.nroempresa = 0 + and x_at2.statusvenda = 'A' + and x_at2.qtdembalagem = 1 + and b_at2.nroempresa = pemp.nroempresa + and b_at2.seqproduto = pemp.seqproduto + and r_at2.rowid = decode((select min(id) from maxx_selecrowid + where maxx_selecrowid.sequencia = 4 + and maxx_selecrowid.seqfamilia = r_at2.seqfamilia), null, + (select min(mfr2.rowid) from map_famfornec mfr2 where mfr2.seqfamilia = r_at2.seqfamilia and mfr2.principal = 'S'), + (select min(id) from maxx_selecrowid where maxx_selecrowid.sequencia = 4 and maxx_selecrowid.seqfamilia = r_at2.seqfamilia)) + ) at2_q),0) end MargemAtacado, - nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, + + nvl(mcab.codclassifpreco,'Sem valor') ClasseAbastecimento, emb.embalagem DescricaoEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, case @@ -1490,7 +1788,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) NVL(pemp.estqtroca,0) EstoqueTroca, NVL(pemp.qtdpedrectransito,0) EstoqueTransito, pemp.qtdpendpedcompra EstoqueFuturo, - NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Inclu�do estqoutro para n�o ser necess�rio utilizar MADV_COMPOSICAORESERVASELINV + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Incluído estqoutro para não ser necessário utilizar MADV_COMPOSICAORESERVASELINV ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) @@ -1504,7 +1802,18 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) when pemp.formaabastecimento = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' when pemp.formaabastecimento = 'E' then 'LOJA-EDL' - when pemp.formaabastecimento is null then gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao) + -- [inline: gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao)] + when pemp.formaabastecimento is null then ( + select case + when mfd_fa.formaabastecimento = 'I' then 'ARMAZENAGEM' + when mfd_fa.formaabastecimento = 'C' then 'CROSS' + when mfd_fa.formaabastecimento = 'N' then 'CENTRAL-EDL' + when mfd_fa.formaabastecimento = 'E' then 'LOJA-EDL' + when mfd_fa.formaabastecimento = 'F' then 'FRACIONADO' + end + from map_famdivisao mfd_fa + where mfd_fa.seqfamilia = pro.seqfamilia + and mfd_fa.nrodivisao = md.nrodivisao) end FormaAbastecimento, case @@ -1514,28 +1823,37 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, pempcd.qtdpendpedcompra EstoqueFuturoCD, - consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, + -- [inline: consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa, pemp.seqproduto)] + (select max(mnf_de.Dtaentrada) + from mlf_notafiscal mnf_de + inner join mlf_nfitem mnfi_de + on mnfi_de.NUMERONF = mnf_de.NUMERONF + and mnfi_de.SEQPESSOA = mnf_de.SEQPESSOA + and mnfi_de.SERIENF = mnf_de.SERIENF + and mnfi_de.TIPNOTAFISCAL = mnf_de.TIPNOTAFISCAL + and mnfi_de.NROEMPRESA = mnf_de.NROEMPRESA + inner join max_parametro mp_de + on mp_de.nroempresa = mnf_de.nroempresa + and mp_de.parametro = 'CGO_ENTR_BONIF_NFCOMPRA' + where mnf_de.tipnotafiscal = 'E' + and mnf_de.statusnf <> 'C' + and mnfi_de.tipitem = 'R' + and mnf_de.dtaentrada >= trunc(sysdate - 365) + and mnf_de.dtaentrada <= trunc(sysdate - 1) + and mnf_de.nroempresa = pemp.nroempresa + and mnfi_de.seqproduto = pemp.seqproduto) DATAULTIMAENTRADA, + pemp.dtaultvenda DATAULTIMAVENDA, consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, CASE WHEN (select count(*) from mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, - --case when (pemp.statuscompra='A') then 1 else 0 end STATUSCOMPRA, pemp.statuscompra, - nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa=me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, + nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa = me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, nvl(pro.seqprodutobase,0) IdBase, case when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' ELSE - - case when mff.indindenizavaria = 'S' then - case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then - 'SEM TROCA' - else - 'TROCA FINANC' - end - when mff.indindenizavaria = 'N' then - 'NF DEVOL' - else - 'SEM TROCA' + case when mff.indindenizavaria = 'N' then 'NF DEVOL' + else 'SEM TROCA' end END TIPOTROCA, mfdv.padraoembcompra QUANTIDADECOMPRA, @@ -1545,12 +1863,64 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, + -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 15)] case when pes3.precovalidpromoc > 0 then - nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) + nvl((select round(max(fc5margempreco(pemp.seqproduto, pemp.nroempresa, 15, seg_mbo1.qtdembalagem, + (round( ( pe_mbo1.CMULTVLRNF + pe_mbo1.CMULTIPI - + decode( 'L', 'L', pe_mbo1.CMULTCREDICMS + + decode(nvl(fam_mbo1.indmonopiscofins, 'N')|| nvl(emp_mbo1.indfaturaipi, 'N')||nvl(emp_mbo1.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mbo1.cmultcredpis, 0) + nvl(pe_mbo1.cmultcredcofins, 0)), 0) + + pe_mbo1.CMULTICMSST + pe_mbo1.CMULTDESPNF + pe_mbo1.CMULTDESPFORANF - pe_mbo1.CMULTDCTOFORANF + - nvl( fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA ), 0 ) + + nvl( fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo1.qtdembalagem, 4 ) + * case + when (pr_mbo1.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo1.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mbo1.precovalidpromoc,0,seg_mbo1.precovalidnormal,seg_mbo1.precovalidpromoc))),2) + from max_Empresa emp_mbo1 + join mrl_prodempseg seg_mbo1 + on seg_mbo1.nroempresa = emp_mbo1.nroempresa + and seg_mbo1.qtdembalagem = 1 + and seg_mbo1.nrosegmento = 15 + and seg_mbo1.seqproduto = pemp.seqproduto + join map_produto pr_mbo1 + on pr_mbo1.seqproduto = seg_mbo1.seqproduto + join mrl_produtoempresa pe_mbo1 + on pe_mbo1.nroempresa = emp_mbo1.nroempresa + and pe_mbo1.seqproduto = nvl(pr_mbo1.seqprodutobase, pr_mbo1.seqproduto) + join map_familia fam_mbo1 + on fam_mbo1.seqfamilia = pr_mbo1.seqfamilia + where emp_mbo1.nroempresa = pemp.nroempresa),0) else 0 end MargemMeuMambo, - nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, + -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 2, 'S')] + nvl((select round(max(fc5margempreco(pemp.seqproduto, pemp.nroempresa, 2, seg_mbo2.qtdembalagem, + (round( ( pe_mbo2.CMULTVLRNF + pe_mbo2.CMULTIPI - + decode( 'L', 'L', pe_mbo2.CMULTCREDICMS + + decode(nvl(fam_mbo2.indmonopiscofins, 'N')|| nvl(emp_mbo2.indfaturaipi, 'N')||nvl(emp_mbo2.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mbo2.cmultcredpis, 0) + nvl(pe_mbo2.cmultcredcofins, 0)), 0) + + pe_mbo2.CMULTICMSST + pe_mbo2.CMULTDESPNF + pe_mbo2.CMULTDESPFORANF - pe_mbo2.CMULTDCTOFORANF + - nvl( fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA ), 0 ) + + nvl( fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo2.qtdembalagem, 4 ) + * case + when (pr_mbo2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo2.percacresccustorelacvig,1) + else 1 end + ),seg_mbo2.precovalidnormal)),2) + from max_Empresa emp_mbo2 + join mrl_prodempseg seg_mbo2 + on seg_mbo2.nroempresa = emp_mbo2.nroempresa + and seg_mbo2.qtdembalagem = 1 + and seg_mbo2.nrosegmento = 2 + and seg_mbo2.seqproduto = pemp.seqproduto + join map_produto pr_mbo2 + on pr_mbo2.seqproduto = seg_mbo2.seqproduto + join mrl_produtoempresa pe_mbo2 + on pe_mbo2.nroempresa = emp_mbo2.nroempresa + and pe_mbo2.seqproduto = nvl(pr_mbo2.seqprodutobase, pr_mbo2.seqproduto) + join map_familia fam_mbo2 + on fam_mbo2.seqfamilia = pr_mbo2.seqfamilia + where emp_mbo2.nroempresa = pemp.nroempresa),0) MargemNormal, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, vncto.dtavalidade @@ -1559,7 +1929,6 @@ from max_divisao md inner join max_empresa me on me.nrodivisao = md.nrodivisao -and me.nroempresa not in (104,200,291,298,910,911,920,930,931,940,980) and me.dtainiciomovestoque <= trunc(sysdate) and me.status = 'A' @@ -1572,7 +1941,6 @@ inner join mrl_produtoempresa pemp left join mrl_produtoempresa pempcd on pempcd.seqproduto = pemp.seqproduto -and pempcd.nroempresa in (979) left join map_classeabastec mcab on mcab.classeabastqtd = pemp.classeabastqtd @@ -1610,7 +1978,7 @@ and pes2.nrosegmento = pes.nrosegmento left join mrl_prodempseg pes3 on pes3.seqproduto = pemp.seqproduto and pes3.nroempresa = pemp.nroempresa -and pes3.nrosegmento = 15 +--and pes3.nrosegmento = 15 and pes3.qtdembalagem = 1 inner join map_famembalagem emb From acc03f9b85dd228233731d9a3aebdfd433be9b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Tue, 28 Apr 2026 09:24:09 -0300 Subject: [PATCH 25/41] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20da=20query=20de?= =?UTF-8?q?=20detalhes=20para=20consinco?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/worktrees/admiring-goldberg-781876 | 1 + src/products/products.module.ts | 1402 +++++++------------- 2 files changed, 495 insertions(+), 908 deletions(-) create mode 160000 .claude/worktrees/admiring-goldberg-781876 diff --git a/.claude/worktrees/admiring-goldberg-781876 b/.claude/worktrees/admiring-goldberg-781876 new file mode 160000 index 0000000..5cdcb50 --- /dev/null +++ b/.claude/worktrees/admiring-goldberg-781876 @@ -0,0 +1 @@ +Subproject commit 5cdcb503b08495cbaa5ff67730ca82267748f766 diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 5585bd1..df90581 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1,6 +1,6 @@ import { createModuleFactory } from "@davinti/jeff"; -const moduleFactory = createModuleFactory(["C5", "C5_big", "C5_mambo"]); +const moduleFactory = createModuleFactory(["C5", "C5_mambo"]); export default moduleFactory .createModule({ @@ -483,7 +483,7 @@ export default moduleFactory CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, p.DESCCOMPLETA AS title FROM - DIN_ABASTECIMENTO_PRODUTOS p + CONSINCO.MAP_PRODUTO p WHERE 1 = 1 AND ( @@ -517,10 +517,21 @@ export default moduleFactory detalhe: (args) => { return { sql: /*sql*/ ` - select /*+ FIRST_ROWS(10) */ pemp.nroempresa, - tcomp.comprador, + select /*+ FIRST_ROWS(10) */ DISTINCT pemp.nroempresa, + --(SELECT COMPRADOR FROM tb_comprador tcomp WHERE tcomp.COMPRADOR = mco.comprador) AS comprador, + 'BIG' AS comprador, nvl(mff.fornecedor, 'N/A') fornecedor, - consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1) categoria, + -- [inline: consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1)] + (select max(b_cat.caminhocompleto) + from consinco.map_famdivcateg a_cat, consinco.map_categoria b_cat + where a_cat.seqcategoria = b_cat.seqcategoria + and a_cat.nrodivisao = b_cat.nrodivisao + and a_cat.seqfamilia = pro.seqfamilia + and a_cat.nrodivisao = me.nrodivisao + and b_cat.statuscategor = 'A' + and a_cat.status = 'A' + and b_cat.nivelhierarquia = 1 + and b_cat.tipcategoria = nvl('M', 'M')) categoria, pro.seqproduto, initcap(pro.desccompleta) Descricao, nvl(mapi.urlecommerceimg,'') ImagemUrl, @@ -545,7 +556,34 @@ export default moduleFactory end, 2) PrecoVarejo, trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, - nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) Margem, + + -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] + nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg.nrosegmentoprinc, seg_mg.qtdembalagem, + (round( ( pe_mg.CMULTVLRNF + pe_mg.CMULTIPI - + decode( 'L', 'L', pe_mg.CMULTCREDICMS + + decode(nvl(fam_mg.indmonopiscofins, 'N')|| nvl(emp_mg.indfaturaipi, 'N')||nvl(emp_mg.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mg.cmultcredpis, 0) + nvl(pe_mg.cmultcredcofins, 0)), 0) + + pe_mg.CMULTICMSST + pe_mg.CMULTDESPNF + pe_mg.CMULTDESPFORANF - pe_mg.CMULTDCTOFORANF + - nvl( consinco.fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA ), 0 ) + + nvl( consinco.fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg.qtdembalagem, 4 ) + * case + when (pr_mg.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mg.precovalidpromoc,0,seg_mg.precovalidnormal,seg_mg.precovalidpromoc))),2) + from consinco.max_Empresa emp_mg + join consinco.mrl_prodempseg seg_mg + on seg_mg.nroempresa = emp_mg.nroempresa + and seg_mg.nrosegmento = emp_mg.nrosegmentoprinc + and seg_mg.qtdembalagem = 1 + and seg_mg.seqproduto = pemp.seqproduto + join consinco.map_produto pr_mg + on pr_mg.seqproduto = seg_mg.seqproduto + join consinco.mrl_produtoempresa pe_mg + on pe_mg.nroempresa = emp_mg.nroempresa + and pe_mg.seqproduto = nvl(pr_mg.seqprodutobase, pr_mg.seqproduto) + join consinco.map_familia fam_mg + on fam_mg.seqfamilia = pr_mg.seqfamilia + where emp_mg.nroempresa = pemp.nroempresa),0) Margem, case when trunc(case @@ -555,10 +593,313 @@ export default moduleFactory when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2 - ) then nvl(gmgb_fn_buscamargemproduto(pemp.nroempresa,pemp.seqproduto),0) + ) + -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] + then nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg2.nrosegmentoprinc, seg_mg2.qtdembalagem, + (round( ( pe_mg2.CMULTVLRNF + pe_mg2.CMULTIPI - + decode( 'L', 'L', pe_mg2.CMULTCREDICMS + + decode(nvl(fam_mg2.indmonopiscofins, 'N')|| nvl(emp_mg2.indfaturaipi, 'N')||nvl(emp_mg2.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mg2.cmultcredpis, 0) + nvl(pe_mg2.cmultcredcofins, 0)), 0) + + pe_mg2.CMULTICMSST + pe_mg2.CMULTDESPNF + pe_mg2.CMULTDESPFORANF - pe_mg2.CMULTDCTOFORANF + - nvl( consinco.fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA ), 0 ) + + nvl( consinco.fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg2.qtdembalagem, 4 ) + * case + when (pr_mg2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg2.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mg2.precovalidpromoc,0,seg_mg2.precovalidnormal,seg_mg2.precovalidpromoc))),2) + from consinco.max_Empresa emp_mg2 + join consinco.mrl_prodempseg seg_mg2 + on seg_mg2.nroempresa = emp_mg2.nroempresa + and seg_mg2.nrosegmento = emp_mg2.nrosegmentoprinc + and seg_mg2.qtdembalagem = 1 + and seg_mg2.seqproduto = pemp.seqproduto + join consinco.map_produto pr_mg2 + on pr_mg2.seqproduto = seg_mg2.seqproduto + join consinco.mrl_produtoempresa pe_mg2 + on pe_mg2.nroempresa = emp_mg2.nroempresa + and pe_mg2.seqproduto = nvl(pr_mg2.seqprodutobase, pr_mg2.seqproduto) + join consinco.map_familia fam_mg2 + on fam_mg2.seqfamilia = pr_mg2.seqfamilia + where emp_mg2.nroempresa = pemp.nroempresa),0) else - nvl(CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa,pemp.seqproduto),0) + -- [inline: CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa, pemp.seqproduto)] + nvl((select case when at2_q.precovalidpromoc > 0 then round(at2_q.mgmprecovdapromoc,2) + when at2_q.precovalidnormal > 0 then round(at2_q.mgmprecominvdaempresa,2) + end + from ( + SELECT x_at2.precovalidnormal, + x_at2.precovalidpromoc, + decode (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem), 0, 0, + ((((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) - ( + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * + (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else decode(m_at2.metodoprecificacao, 'B', 0, 'I', 0, decode(h_at2.pericmsestimativa, 0, + f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end / 100)) + + + (((b_at2.cmultvlrnf + b_at2.cmultipi - + decode(m_at2.metodoprecificacao, 'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), + 'I', DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf + - nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + + nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' + then nvl((consinco.fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) + * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa, 0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) + else 0 + end) + * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + + + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * + (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)) + + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + + decode(m_at2.metodoprecificacao,'B', 0, + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) + - decode(m_at2.metodocalcrentab,'L', ( + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * + (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else decode(m_at2.metodoprecificacao,'B',0,'I',0, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end / 100)) + + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) + )) * 100) as mgmprecominvdaempresa, + + decode(round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2), 0, 0, + ((round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - ( + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(m_at2.metodoprecificacao,'B',0,'I',0, + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), + 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, + decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end) / 100)) + + + (((b_at2.cmultvlrnf + b_at2.cmultipi - + decode(m_at2.metodoprecificacao,'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), + 'I', DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf + - nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + + nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' + then nvl((consinco.fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) + * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) + else 0 + end) + * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + + + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaopromfs, nvl(n_at2.percomissaopromoc,0)), nvl(n_at2.percomissaopromoc,0)) + + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) + - decode(m_at2.metodocalcrentab,'L', ( + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(m_at2.metodoprecificacao,'B',0,'I',0, + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), + 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, + decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end) / 100)) + + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) + )) * 100) as mgmprecovdapromoc + + from consinco.max_empresa h_at2, + consinco.map_produto a_at2, + consinco.mrl_produtoempresa b_at2, + consinco.map_famdivisao c_at2, + consinco.map_famdivcateg d_at2, + consinco.map_categoria e_at2, + consinco.map_famembalagem i_at2, + consinco.map_famembalagem j_at2, + consinco.map_famembalagem k_at2, + consinco.map_famembalagem tr_at2, + consinco.map_tributacaouf f_at2, + consinco.map_familia l_at2, + consinco.mrl_prodempseg x_at2, + consinco.max_divisao m_at2, + consinco.mad_famsegmento o_at2, + consinco.map_classifabc n_at2, + consinco.mad_segmento p_at2, + consinco.mad_parametro q_at2, + consinco.map_famfornec r_at2, + consinco.map_regimetributacao t_at2, + consinco.max_parametro pd_at2 + where 1=1 + and b_at2.nroempresa = h_at2.nroempresa + and a_at2.seqproduto = b_at2.seqproduto + and c_at2.seqfamilia = a_at2.seqfamilia + and c_at2.nrodivisao = h_at2.nrodivisao + and d_at2.seqfamilia = a_at2.seqfamilia + and d_at2.nrodivisao = h_at2.nrodivisao + and d_at2.status = 'A' + and e_at2.seqcategoria = d_at2.seqcategoria + and e_at2.tipcategoria = 'M' + and e_at2.actfamilia = 'S' + and e_at2.nrodivisao = h_at2.nrodivisao + and f_at2.nrotributacao = c_at2.nrotributacao + and f_at2.ufempresa = nvl(h_at2.ufformacaopreco, h_at2.uf) + and f_at2.ufclientefornec = h_at2.uf + and f_at2.nroregtributacao = nvl(h_at2.nroregtributacao, 0) + and f_at2.tiptributacao = decode(m_at2.tipdivisao,'A','SC','SN') + and i_at2.seqfamilia = a_at2.seqfamilia + and i_at2.qtdembalagem = nvl(r_at2.padraoembcomprafornec, c_at2.padraoembcompra) + and j_at2.seqfamilia = o_at2.seqfamilia + and j_at2.qtdembalagem = o_at2.padraoembvenda + and k_at2.seqfamilia = a_at2.seqfamilia + and k_at2.qtdembalagem = x_at2.qtdembalagem + and tr_at2.seqfamilia = a_at2.seqfamilia + and tr_at2.qtdembalagem = nvl(c_at2.padraoembtransf, o_at2.padraoembvenda) + and l_at2.seqfamilia = a_at2.seqfamilia + and x_at2.seqproduto = a_at2.seqproduto + and x_at2.nroempresa = h_at2.nroempresa + and m_at2.nrodivisao = h_at2.nrodivisao + and o_at2.seqfamilia = a_at2.seqfamilia + and o_at2.nrosegmento = x_at2.nrosegmento + and n_at2.nrosegmento = o_at2.nrosegmento + and n_at2.classifcomercabc = o_at2.classifcomercabc + and x_at2.nrosegmento = p_at2.nrosegmento + and q_at2.nroempresa = h_at2.nroempresa + and r_at2.seqfamilia = a_at2.seqfamilia + and t_at2.nroregtributacao = f_at2.nroregtributacao + and h_at2.nrosegmentoprinc = o_at2.nrosegmento + and pd_at2.grupo = 'PRODUTO' + and pd_at2.parametro = 'UTIL_FORMA_ABASTEC_PROD' + and pd_at2.nroempresa = 0 + and x_at2.statusvenda = 'A' + and x_at2.qtdembalagem = 1 + and b_at2.nroempresa = pemp.nroempresa + and b_at2.seqproduto = pemp.seqproduto + and r_at2.rowid = decode((select min(id) from maxx_selecrowid + where maxx_selecrowid.sequencia = 4 + and maxx_selecrowid.seqfamilia = r_at2.seqfamilia), null, + (select min(mfr2.rowid) from consinco.map_famfornec mfr2 where mfr2.seqfamilia = r_at2.seqfamilia and mfr2.principal = 'S'), + (select min(id) from maxx_selecrowid where maxx_selecrowid.sequencia = 4 and maxx_selecrowid.seqfamilia = r_at2.seqfamilia)) + ) at2_q),0) end MargemAtacado, + nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, emb.embalagem DescricaoEmbalagem, trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, @@ -568,9 +909,10 @@ export default moduleFactory end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, - NVL(pemp.qtdpedrectransito,0) EstoqueTransito, - pemp.qtdpendpedcompra EstoqueFuturo, - NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Inclu�do estqoutro para n�o ser necess�rio utilizar MADV_COMPOSICAORESERVASELINV + NVL(pemp.qtdpedrectransito_depreciada,0) EstoqueTransito, + --pemp.qtdpendpedcompra_depreciada EstoqueFuturo, + NULL EstoqueFuturo, -- NAO TEM NO BIG + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Incluído estqoutro para não ser necessário utilizar MADV_COMPOSICAORESERVASELINV ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) @@ -584,7 +926,18 @@ export default moduleFactory when pemp.formaabastecimento = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' when pemp.formaabastecimento = 'E' then 'LOJA-EDL' - when pemp.formaabastecimento is null then gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao) + -- [inline: gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao)] + when pemp.formaabastecimento is null then ( + select case + when mfd_fa.formaabastecimento = 'I' then 'ARMAZENAGEM' + when mfd_fa.formaabastecimento = 'C' then 'CROSS' + when mfd_fa.formaabastecimento = 'N' then 'CENTRAL-EDL' + when mfd_fa.formaabastecimento = 'E' then 'LOJA-EDL' + when mfd_fa.formaabastecimento = 'F' then 'FRACIONADO' + end + from consinco.map_famdivisao mfd_fa + where mfd_fa.seqfamilia = pro.seqfamilia + and mfd_fa.nrodivisao = md.nrodivisao) end FormaAbastecimento, case @@ -592,30 +945,40 @@ export default moduleFactory when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, - pempcd.qtdpendpedcompra EstoqueFuturoCD, + --pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, + NULL EstoqueFuturoCD, -- NAO TEM NO BIG + + -- [inline: consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa, pemp.seqproduto)] + (select max(mnf_de.Dtaentrada) + from mlf_notafiscal mnf_de + inner join mlf_nfitem mnfi_de + on mnfi_de.NUMERONF = mnf_de.NUMERONF + and mnfi_de.SEQPESSOA = mnf_de.SEQPESSOA + and mnfi_de.SERIENF = mnf_de.SERIENF + and mnfi_de.TIPNOTAFISCAL = mnf_de.TIPNOTAFISCAL + and mnfi_de.NROEMPRESA = mnf_de.NROEMPRESA + inner join consinco.max_parametro mp_de + on mp_de.nroempresa = mnf_de.nroempresa + and mp_de.parametro = 'CGO_ENTR_BONIF_NFCOMPRA' + where mnf_de.tipnotafiscal = 'E' + and mnf_de.statusnf <> 'C' + and mnfi_de.tipitem = 'R' + and mnf_de.dtaentrada >= trunc(sysdate - 365) + and mnf_de.dtaentrada <= trunc(sysdate - 1) + and mnf_de.nroempresa = pemp.nroempresa + and mnfi_de.seqproduto = pemp.seqproduto) DATAULTIMAENTRADA, - consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, - CASE WHEN (select count(*) from mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, - --case when (pemp.statuscompra='A') then 1 else 0 end STATUSCOMPRA, + CASE WHEN (select count(*) from consinco.mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, pemp.statuscompra, - nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa=me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, + nvl((select min(qtdembalagem) from consinco.mrl_prodempseg where nroempresa = me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, nvl(pro.seqprodutobase,0) IdBase, case when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' ELSE - - case when mff.indindenizavaria = 'S' then - case when (me.nroempresa >= 400 and me.nroempresa <=499) or (me.nroempresa >= 600 and me.nroempresa <= 699) then - 'SEM TROCA' - else - 'TROCA FINANC' - end - when mff.indindenizavaria = 'N' then - 'NF DEVOL' - else - 'SEM TROCA' + case when mff.indindenizavaria = 'N' then 'NF DEVOL' + else 'SEM TROCA' end END TIPOTROCA, mfdv.padraoembcompra QUANTIDADECOMPRA, @@ -625,75 +988,122 @@ export default moduleFactory nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, + -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 15)] case when pes3.precovalidpromoc > 0 then - nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,15),0) + nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 15, seg_mbo1.qtdembalagem, + (round( ( pe_mbo1.CMULTVLRNF + pe_mbo1.CMULTIPI - + decode( 'L', 'L', pe_mbo1.CMULTCREDICMS + + decode(nvl(fam_mbo1.indmonopiscofins, 'N')|| nvl(emp_mbo1.indfaturaipi, 'N')||nvl(emp_mbo1.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mbo1.cmultcredpis, 0) + nvl(pe_mbo1.cmultcredcofins, 0)), 0) + + pe_mbo1.CMULTICMSST + pe_mbo1.CMULTDESPNF + pe_mbo1.CMULTDESPFORANF - pe_mbo1.CMULTDCTOFORANF + - nvl( consinco.fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA ), 0 ) + + nvl( consinco.fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo1.qtdembalagem, 4 ) + * case + when (pr_mbo1.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo1.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mbo1.precovalidpromoc,0,seg_mbo1.precovalidnormal,seg_mbo1.precovalidpromoc))),2) + from consinco.max_Empresa emp_mbo1 + join consinco.mrl_prodempseg seg_mbo1 + on seg_mbo1.nroempresa = emp_mbo1.nroempresa + and seg_mbo1.qtdembalagem = 1 + and seg_mbo1.nrosegmento = 15 + and seg_mbo1.seqproduto = pemp.seqproduto + join consinco.map_produto pr_mbo1 + on pr_mbo1.seqproduto = seg_mbo1.seqproduto + join consinco.mrl_produtoempresa pe_mbo1 + on pe_mbo1.nroempresa = emp_mbo1.nroempresa + and pe_mbo1.seqproduto = nvl(pr_mbo1.seqprodutobase, pr_mbo1.seqproduto) + join consinco.map_familia fam_mbo1 + on fam_mbo1.seqfamilia = pr_mbo1.seqfamilia + where emp_mbo1.nroempresa = pemp.nroempresa),0) else 0 end MargemMeuMambo, - nvl(consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa,pemp.seqproduto,2,'S'),0) MargemNormal, + -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 2, 'S')] + nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 2, seg_mbo2.qtdembalagem, + (round( ( pe_mbo2.CMULTVLRNF + pe_mbo2.CMULTIPI - + decode( 'L', 'L', pe_mbo2.CMULTCREDICMS + + decode(nvl(fam_mbo2.indmonopiscofins, 'N')|| nvl(emp_mbo2.indfaturaipi, 'N')||nvl(emp_mbo2.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mbo2.cmultcredpis, 0) + nvl(pe_mbo2.cmultcredcofins, 0)), 0) + + pe_mbo2.CMULTICMSST + pe_mbo2.CMULTDESPNF + pe_mbo2.CMULTDESPFORANF - pe_mbo2.CMULTDCTOFORANF + - nvl( consinco.fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA ), 0 ) + + nvl( consinco.fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo2.qtdembalagem, 4 ) + * case + when (pr_mbo2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo2.percacresccustorelacvig,1) + else 1 end + ),seg_mbo2.precovalidnormal)),2) + from consinco.max_Empresa emp_mbo2 + join consinco.mrl_prodempseg seg_mbo2 + on seg_mbo2.nroempresa = emp_mbo2.nroempresa + and seg_mbo2.qtdembalagem = 1 + and seg_mbo2.nrosegmento = 2 + and seg_mbo2.seqproduto = pemp.seqproduto + join consinco.map_produto pr_mbo2 + on pr_mbo2.seqproduto = seg_mbo2.seqproduto + join consinco.mrl_produtoempresa pe_mbo2 + on pe_mbo2.nroempresa = emp_mbo2.nroempresa + and pe_mbo2.seqproduto = nvl(pr_mbo2.seqprodutobase, pr_mbo2.seqproduto) + join consinco.map_familia fam_mbo2 + on fam_mbo2.seqfamilia = pr_mbo2.seqfamilia + where emp_mbo2.nroempresa = pemp.nroempresa),0) MargemNormal, trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, vncto.dtavalidade -from max_divisao md +from consinco.max_divisao md -inner join max_empresa me +inner join consinco.max_empresa me on me.nrodivisao = md.nrodivisao -and me.nroempresa not in (104,200,291,298,910,911,920,930,931,940,980) and me.dtainiciomovestoque <= trunc(sysdate) and me.status = 'A' -inner join mad_segmento seg +inner join consinco.mad_segmento seg on md.nrodivisao = me.nrodivisao and me.nrosegmentoprinc = seg.nrosegmento -inner join mrl_produtoempresa pemp +inner join consinco.mrl_produtoempresa pemp on pemp.nroempresa = me.nroempresa -left join mrl_produtoempresa pempcd +left join consinco.mrl_produtoempresa pempcd on pempcd.seqproduto = pemp.seqproduto -and pempcd.nroempresa in (979) -left join map_classeabastec mcab +left join consinco.map_classeabastec mcab on mcab.classeabastqtd = pemp.classeabastqtd and mcab.nroempresa = pemp.nroempresa and mcab.classeabastvlr = pemp.classeabastvlr -inner join map_produto pro +inner join consinco.map_produto pro on pro.seqproduto = pemp.seqproduto -inner join map_famdivisao mfdv +inner join consinco.map_famdivisao mfdv on mfdv.seqfamilia = pro.seqfamilia and mfdv.nrodivisao = me.nrodivisao -inner join max_comprador mco +inner join consinco.max_comprador mco on mco.seqcomprador = mfdv.seqcomprador -left join tb_comprador tcomp - on tcomp.COMPRADOR = mco.comprador - -left join map_produtoimagem mapi +left join consinco.map_produtoimagem mapi on mapi.seqproduto = pro.seqproduto and mapi.indpricipal = 'S' -inner join mrl_prodempseg pes +inner join consinco.mrl_prodempseg pes on pes.seqproduto = pemp.seqproduto and pes.nroempresa = pemp.nroempresa and pes.nrosegmento = seg.nrosegmento and pes.qtdembalagem = 1 -inner join mrl_prodempseg pes2 +inner join consinco.mrl_prodempseg pes2 on pes2.nroempresa = pes.nroempresa and pes2.seqproduto = pes.seqproduto and pes2.nrosegmento = pes.nrosegmento -left join mrl_prodempseg pes3 +left join consinco.mrl_prodempseg pes3 on pes3.seqproduto = pemp.seqproduto and pes3.nroempresa = pemp.nroempresa -and pes3.nrosegmento = 15 +--and pes3.nrosegmento = 15 and pes3.qtdembalagem = 1 -inner join map_famembalagem emb +inner join consinco.map_famembalagem emb on emb.seqfamilia = pro.seqfamilia and emb.qtdembalagem = 1 @@ -705,7 +1115,7 @@ left join (select mffTemp.Seqfamilia, mfdvTemp.pzomedatraso, gp.fantasia fornecedor - from map_famfornec mffTemp + from consinco.map_famfornec mffTemp inner join ge_pessoa gp on gp.seqpessoa = mffTemp.Seqfornecedor @@ -735,11 +1145,11 @@ and vncto.seqproduto = pemp.seqproduto where 1=1 --and pemp.SEQPRODUTO = 136011 --and pemp.nroempresa = 202 -and md.nrodivisao in (2,4) +and md.nrodivisao in (1) and pemp.seqproduto = ${args.codproduto} and me.nroempresa in (${args.ctx_user_companies_for_module}) and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) - from mrl_prodempseg pes3 + from consinco.mrl_prodempseg pes3 where pes3.nroempresa = pes.nroempresa and pes3.seqproduto = pes.seqproduto and pes3.nrosegmento = pes.nrosegmento @@ -758,22 +1168,23 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) mgmp.PRECOVALIDNORMAL preco_embalagem, mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, trunc(mgmp.MGMPRECOVALIDO,2) margem - from maxv_mgmbaseprodseg mgmp - inner join max_empresa me + from consinco.maxv_mgmbaseprodseg mgmp + inner join consinco.max_empresa me on me.nroempresa = mgmp.NROEMPRESA and me.status = 'A' and me.dtainiciomovestoque <= trunc(sysdate)-1 - and me.nrodivisao in (2,4) - and me.nroempresa not in (291,298,910,911,920,930,931,940,980) - AND mgmp.NROSEGMENTO IN (2,7) + --and me.nrodivisao in (2,4) + --and me.nroempresa not in (291,298,910,911,920,930,931,940,980) + --AND mgmp.NROSEGMENTO IN (2,7) where 1=1 and mgmp.seqproduto = ${args.codproduto} and mgmp.nroempresa = ${args.nrempresa} - AND mgmp.NROSEGMENTO NOT IN (22,23,26) + --AND mgmp.NROSEGMENTO NOT IN (22,23,26) and mgmp.STATUSVENDA = 'A' `, }; }, + /** SEM RETORNO DE INFORMAÇÕES */ detalhe_mdv: (args) => { return { sql: /*sql*/ ` @@ -783,8 +1194,8 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, mcdia.qtdvda qtd, mcdia.qtdestqinicial qtd_inicial - from mrl_custodia mcdia - inner join max_empresa me + from consinco.mrl_custodia mcdia + inner join consinco.max_empresa me on mcdia.nroempresa = me.nroempresa where 1=1 and mcdia.qtdvda > 0 @@ -804,12 +1215,12 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) mrl_promocao.dtafim, mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, mrl_promocaoitem.precopromocional preco - from mrl_promocaoitem, mrl_promocao, mrl_prodempseg, - map_produto mp, map_famembalagem mfe, max_empresa me + from consinco.mrl_promocaoitem, consinco.mrl_promocao, consinco.mrl_prodempseg, + consinco.map_produto mp, consinco.map_famembalagem mfe, consinco.max_empresa me where 1=1 and me.nroempresa = mrl_promocao.nroempresa and me.status = 'A' - and me.nrodivisao = 2 + --and me.nrodivisao = 2 and me.dtainiciomovestoque <= trunc(sysdate)-1 and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao @@ -830,6 +1241,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) `, }; }, + /** SEM RETORNO DE INFORMAÇÕES */ detalhe_custo_liquido: (args) => { return { sql: /*sql*/ ` @@ -841,14 +1253,14 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) qtdestqinicial + qtdentrada - qtdsaida estqfinal, --trunc(cmdiavlrnf,2) custo cmdiavlrnf custo - from mrl_custodiafam mcdiafam - INNER JOIN MAP_PRODUTO PROD + from consinco.mrl_custodiafam mcdiafam + INNER JOIN consinco.MAP_PRODUTO PROD ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA inner join max_empresa me on me.nroempresa = mcdiafam.nroempresa and me.status = 'A' and me.dtainiciomovestoque <= trunc(sysdate)-1 - and me.nrodivisao in (2,4) + --and me.nrodivisao in (2,4) where 1=1 and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 AND mcdiafam.nroempresa = ${args.nrempresa} @@ -857,6 +1269,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) `, }; }, + /** SEM RETORNO DE INFORMAÇÕES */ detalhe_estoque_disponivel: (args) => { return { sql: /*sql*/ ` @@ -867,8 +1280,8 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) cdia.qtdentrada, cdia.qtdsaida, cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo - from mrl_custodia cdia - join max_empresa me + from consinco.mrl_custodia cdia + join consinco.max_empresa me on me.nroempresa = cdia.nroempresa and me.status = 'A' and me.dtainiciomovestoque < trunc(sysdate) @@ -886,18 +1299,18 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) cdia.qtdestqinicial + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo - from mrl_lanctoestoque mle - join max_empresa me + from consinco.mrl_lanctoestoque mle + join consinco.max_empresa me on me.nroempresa = mle.nroempresa and me.status = 'A' and me.dtainiciomovestoque < trunc(sysdate) - and me.nrodivisao = 4 - join mrl_custodia cdia + --and me.nrodivisao = 4 + join consinco.mrl_custodia cdia on cdia.dtaentradasaida = mle.dtaentradasaida and cdia.nroempresa = mle.nroempresa and cdia.seqproduto = mle.seqproduto where mle.dtaentradasaida >= sysdate - 365 - and mle.codgeraloper not in (301,302) + --and mle.codgeraloper not in (301,302) and mle.seqproduto = ${args.codproduto} and mle.nroempresa = ${args.nrempresa} group by @@ -909,6 +1322,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) `, }; }, + /** SEM RETORNO DE INFORMAÇÕES */ detalhe_estoque_transito: (args) => { return { sql: /*sql*/ ` @@ -922,7 +1336,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) A.DTAENTRADA, B.QUANTIDADE, B.VLRITEM VALOR - from MLF_AUXNOTAFISCAL A, MLF_AUXNFITEM B, GE_PESSOA C, MAP_PRODUTO D + from consinco.MLF_AUXNOTAFISCAL A, consinco.MLF_AUXNFITEM B, consinco.GE_PESSOA C, consinco.MAP_PRODUTO D WHERE 1=1 and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL AND C.SEQPESSOA = A.SEQPESSOA @@ -1028,9 +1442,9 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, - NVL(pemp.qtdpedrectransito,0) EstoqueTransito, - pemp.qtdpendpedcompra EstoqueFuturo, - NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Inclu�do estqoutro para n�o ser necess�rio utilizar MADV_COMPOSICAORESERVASELINV + NVL(pemp.qtdpedrectransito_depreciada,0) EstoqueTransito, + pemp.qtdpendpedcompra_depreciada EstoqueFuturo, + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) @@ -1039,7 +1453,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) nvl(pemp.estqminimodv,0) DDVMinimo, nvl(pemp.estqmaximodv, 0) DDVMaximo, case - WHEN (select count(1) from mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' + WHEN (select count(1) from consinco.mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' when pemp.formaabastecimento = 'I' then 'ARMAZENAGEM' when pemp.formaabastecimento = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' @@ -1052,7 +1466,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, - pempcd.qtdpendpedcompra EstoqueFuturoCD, + pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, @@ -1395,832 +1809,4 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) }; }, }, - C5_big: { - consulta: (args) => { - return { - sql: /*sql*/ ` - SELECT - CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, - p.DESCCOMPLETA AS title - FROM - CONSINCO.MAP_PRODUTO p - WHERE - 1 = 1 - AND ( - ( - ${args.filtro} IS NOT NULL - AND ( - p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' - OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') - ) - ) - OR ( - ${args.ean} IS NOT NULL - AND EXISTS ( - SELECT 1 - FROM CONSINCO.MAP_PRODCODIGO A - WHERE A.SEQPRODUTO = p.SEQPRODUTO - AND ISNUMERIC(A.CODACESSO) = 'S' - AND A.CODACESSO = ${args.ean} - ) - ) - OR ( - ${args.filtro} IS NULL - AND ${args.ean} IS NULL - ) - ) - ORDER BY - 2 - `, - }; - }, - detalhe: (args) => { - return { - sql: /*sql*/ ` - select /*+ FIRST_ROWS(10) */ pemp.nroempresa, - tcomp.comprador, - nvl(mff.fornecedor, 'N/A') fornecedor, - -- [inline: consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1)] - (select max(b_cat.caminhocompleto) - from map_famdivcateg a_cat, map_categoria b_cat - where a_cat.seqcategoria = b_cat.seqcategoria - and a_cat.nrodivisao = b_cat.nrodivisao - and a_cat.seqfamilia = pro.seqfamilia - and a_cat.nrodivisao = me.nrodivisao - and b_cat.statuscategor = 'A' - and a_cat.status = 'A' - and b_cat.nivelhierarquia = 1 - and b_cat.tipcategoria = nvl('M', 'M')) categoria, - pro.seqproduto, - initcap(pro.desccompleta) Descricao, - nvl(mapi.urlecommerceimg,'') ImagemUrl, - case when trunc(case - when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) - when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) - end / pes2.qtdembalagem,2) = 0 then - trunc(case - when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) - when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) - end, 2) - else - trunc(case - when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) - when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) - end / pes2.qtdembalagem,2) - end PrecoAtacado, - - trunc(case - when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) - when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) - end, 2) PrecoVarejo, - - trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, - - -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] - nvl((select round(max(fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg.nrosegmentoprinc, seg_mg.qtdembalagem, - (round( ( pe_mg.CMULTVLRNF + pe_mg.CMULTIPI - - decode( 'L', 'L', pe_mg.CMULTCREDICMS + - decode(nvl(fam_mg.indmonopiscofins, 'N')|| nvl(emp_mg.indfaturaipi, 'N')||nvl(emp_mg.indimportadora, 'N'), - 'SNN', 0, nvl(pe_mg.cmultcredpis, 0) + nvl(pe_mg.cmultcredcofins, 0)), 0) - + pe_mg.CMULTICMSST + pe_mg.CMULTDESPNF + pe_mg.CMULTDESPFORANF - pe_mg.CMULTDCTOFORANF - - nvl( fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA ), 0 ) - + nvl( fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg.qtdembalagem, 4 ) - * case - when (pr_mg.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg.percacresccustorelacvig,1) - else 1 end - ),decode(seg_mg.precovalidpromoc,0,seg_mg.precovalidnormal,seg_mg.precovalidpromoc))),2) - from max_Empresa emp_mg - join mrl_prodempseg seg_mg - on seg_mg.nroempresa = emp_mg.nroempresa - and seg_mg.nrosegmento = emp_mg.nrosegmentoprinc - and seg_mg.qtdembalagem = 1 - and seg_mg.seqproduto = pemp.seqproduto - join map_produto pr_mg - on pr_mg.seqproduto = seg_mg.seqproduto - join mrl_produtoempresa pe_mg - on pe_mg.nroempresa = emp_mg.nroempresa - and pe_mg.seqproduto = nvl(pr_mg.seqprodutobase, pr_mg.seqproduto) - join map_familia fam_mg - on fam_mg.seqfamilia = pr_mg.seqfamilia - where emp_mg.nroempresa = pemp.nroempresa),0) Margem, - - case - when trunc(case - when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) - when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) - end, 2) = trunc(case - when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) - when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) - end / pes2.qtdembalagem,2 - ) - -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] - then nvl((select round(max(fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg2.nrosegmentoprinc, seg_mg2.qtdembalagem, - (round( ( pe_mg2.CMULTVLRNF + pe_mg2.CMULTIPI - - decode( 'L', 'L', pe_mg2.CMULTCREDICMS + - decode(nvl(fam_mg2.indmonopiscofins, 'N')|| nvl(emp_mg2.indfaturaipi, 'N')||nvl(emp_mg2.indimportadora, 'N'), - 'SNN', 0, nvl(pe_mg2.cmultcredpis, 0) + nvl(pe_mg2.cmultcredcofins, 0)), 0) - + pe_mg2.CMULTICMSST + pe_mg2.CMULTDESPNF + pe_mg2.CMULTDESPFORANF - pe_mg2.CMULTDCTOFORANF - - nvl( fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA ), 0 ) - + nvl( fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg2.qtdembalagem, 4 ) - * case - when (pr_mg2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg2.percacresccustorelacvig,1) - else 1 end - ),decode(seg_mg2.precovalidpromoc,0,seg_mg2.precovalidnormal,seg_mg2.precovalidpromoc))),2) - from max_Empresa emp_mg2 - join mrl_prodempseg seg_mg2 - on seg_mg2.nroempresa = emp_mg2.nroempresa - and seg_mg2.nrosegmento = emp_mg2.nrosegmentoprinc - and seg_mg2.qtdembalagem = 1 - and seg_mg2.seqproduto = pemp.seqproduto - join map_produto pr_mg2 - on pr_mg2.seqproduto = seg_mg2.seqproduto - join mrl_produtoempresa pe_mg2 - on pe_mg2.nroempresa = emp_mg2.nroempresa - and pe_mg2.seqproduto = nvl(pr_mg2.seqprodutobase, pr_mg2.seqproduto) - join map_familia fam_mg2 - on fam_mg2.seqfamilia = pr_mg2.seqfamilia - where emp_mg2.nroempresa = pemp.nroempresa),0) - else - -- [inline: CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa, pemp.seqproduto)] - nvl((select case when at2_q.precovalidpromoc > 0 then round(at2_q.mgmprecovdapromoc,2) - when at2_q.precovalidnormal > 0 then round(at2_q.mgmprecominvdaempresa,2) - end - from ( - SELECT x_at2.precovalidnormal, - x_at2.precovalidpromoc, - decode ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem), 0, 0, - (((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) - ( - ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) * - (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 - else decode(m_at2.metodoprecificacao, 'B', 0, 'I', 0, decode(h_at2.pericmsestimativa, 0, - f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) - end / 100)) - + - (((b_at2.cmultvlrnf + b_at2.cmultipi - - decode(m_at2.metodoprecificacao, 'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) - + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) - || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) - + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) - || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), - 'I', DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) - || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) - + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) - || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) - + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf - - nvl(fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) - + nvl(fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) - + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' - then nvl((fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) - * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa, 0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) - else 0 - end) - * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end - + - ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) * - (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)) - + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) - + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) - + decode(m_at2.metodoprecificacao,'B', 0, - nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), - fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), - decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, - decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), - 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), - decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * - ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) - + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), - fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), - decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, - decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), - 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), - decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * - ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) - + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto - + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / - ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) - - decode(m_at2.metodocalcrentab,'L', ( - ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) * - (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 - else decode(m_at2.metodoprecificacao,'B',0,'I',0, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) - end / 100)) - + ((fminprecoprodemp2(x_at2.seqproduto, x_at2.nroempresa, o_at2.nrosegmento) * x_at2.qtdembalagem) * - decode(m_at2.metodoprecificacao,'B',0, - nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), - fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), - decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, - decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), - 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), - decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * - ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) - + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), - fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), - decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, - decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), - 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), - decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * - ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) - + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto - + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) - )) * 100) as mgmprecominvdaempresa, - - decode(round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2), 0, 0, - ((round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - ( - (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * - (decode(m_at2.metodoprecificacao,'B',0,'I',0, - case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 - else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), - 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, - decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) - end) / 100)) - + - (((b_at2.cmultvlrnf + b_at2.cmultipi - - decode(m_at2.metodoprecificacao,'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) - + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) - || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) - + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) - || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), - 'I', DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) - || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) - + DECODE(nvl(decode(nvl(fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) - || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) - + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf - - nvl(fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) - + nvl(fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) - + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' - then nvl((fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) - * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) - else 0 - end) - * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end - + - (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * - (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaopromfs, nvl(n_at2.percomissaopromoc,0)), nvl(n_at2.percomissaopromoc,0)) - + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) - + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) - + decode(m_at2.metodoprecificacao,'B',0, - nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), - fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N')), - decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, - decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), - 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), - decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * - ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) - + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), - fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N')), - decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, - decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), - 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), - decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * - ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) - + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto - + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / - (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - - decode(m_at2.metodocalcrentab,'L', ( - (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * - (decode(m_at2.metodoprecificacao,'B',0,'I',0, - case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 - else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), - 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, - decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) - end) / 100)) - + (round(fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * - decode(m_at2.metodoprecificacao,'B',0, - nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), - fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N')), - decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, - decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), - 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), - decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * - ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) - + nvl(coalesce(fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), - fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N')), - decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, - decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), - 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), - decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * - ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) - + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto - + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) - )) * 100) as mgmprecovdapromoc - - from max_empresa h_at2, - map_produto a_at2, - mrl_produtoempresa b_at2, - map_famdivisao c_at2, - map_famdivcateg d_at2, - map_categoria e_at2, - map_famembalagem i_at2, - map_famembalagem j_at2, - map_famembalagem k_at2, - map_famembalagem tr_at2, - map_tributacaouf f_at2, - map_familia l_at2, - mrl_prodempseg x_at2, - max_divisao m_at2, - mad_famsegmento o_at2, - map_classifabc n_at2, - mad_segmento p_at2, - mad_parametro q_at2, - map_famfornec r_at2, - map_regimetributacao t_at2, - max_parametro pd_at2 - where 1=1 - and b_at2.nroempresa = h_at2.nroempresa - and a_at2.seqproduto = b_at2.seqproduto - and c_at2.seqfamilia = a_at2.seqfamilia - and c_at2.nrodivisao = h_at2.nrodivisao - and d_at2.seqfamilia = a_at2.seqfamilia - and d_at2.nrodivisao = h_at2.nrodivisao - and d_at2.status = 'A' - and e_at2.seqcategoria = d_at2.seqcategoria - and e_at2.tipcategoria = 'M' - and e_at2.actfamilia = 'S' - and e_at2.nrodivisao = h_at2.nrodivisao - and f_at2.nrotributacao = c_at2.nrotributacao - and f_at2.ufempresa = nvl(h_at2.ufformacaopreco, h_at2.uf) - and f_at2.ufclientefornec = h_at2.uf - and f_at2.nroregtributacao = nvl(h_at2.nroregtributacao, 0) - and f_at2.tiptributacao = decode(m_at2.tipdivisao,'A','SC','SN') - and i_at2.seqfamilia = a_at2.seqfamilia - and i_at2.qtdembalagem = nvl(r_at2.padraoembcomprafornec, c_at2.padraoembcompra) - and j_at2.seqfamilia = o_at2.seqfamilia - and j_at2.qtdembalagem = o_at2.padraoembvenda - and k_at2.seqfamilia = a_at2.seqfamilia - and k_at2.qtdembalagem = x_at2.qtdembalagem - and tr_at2.seqfamilia = a_at2.seqfamilia - and tr_at2.qtdembalagem = nvl(c_at2.padraoembtransf, o_at2.padraoembvenda) - and l_at2.seqfamilia = a_at2.seqfamilia - and x_at2.seqproduto = a_at2.seqproduto - and x_at2.nroempresa = h_at2.nroempresa - and m_at2.nrodivisao = h_at2.nrodivisao - and o_at2.seqfamilia = a_at2.seqfamilia - and o_at2.nrosegmento = x_at2.nrosegmento - and n_at2.nrosegmento = o_at2.nrosegmento - and n_at2.classifcomercabc = o_at2.classifcomercabc - and x_at2.nrosegmento = p_at2.nrosegmento - and q_at2.nroempresa = h_at2.nroempresa - and r_at2.seqfamilia = a_at2.seqfamilia - and t_at2.nroregtributacao = f_at2.nroregtributacao - and h_at2.nrosegmentoprinc = o_at2.nrosegmento - and pd_at2.grupo = 'PRODUTO' - and pd_at2.parametro = 'UTIL_FORMA_ABASTEC_PROD' - and pd_at2.nroempresa = 0 - and x_at2.statusvenda = 'A' - and x_at2.qtdembalagem = 1 - and b_at2.nroempresa = pemp.nroempresa - and b_at2.seqproduto = pemp.seqproduto - and r_at2.rowid = decode((select min(id) from maxx_selecrowid - where maxx_selecrowid.sequencia = 4 - and maxx_selecrowid.seqfamilia = r_at2.seqfamilia), null, - (select min(mfr2.rowid) from map_famfornec mfr2 where mfr2.seqfamilia = r_at2.seqfamilia and mfr2.principal = 'S'), - (select min(id) from maxx_selecrowid where maxx_selecrowid.sequencia = 4 and maxx_selecrowid.seqfamilia = r_at2.seqfamilia)) - ) at2_q),0) - end MargemAtacado, - - nvl(mcab.codclassifpreco,'Sem valor') ClasseAbastecimento, - emb.embalagem DescricaoEmbalagem, - trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, - case - when pemp.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito - pemp.qtdreservadavda,0),3) - else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) - end EstoqueDisponivel, - - NVL(pemp.estqtroca,0) EstoqueTroca, - NVL(pemp.qtdpedrectransito,0) EstoqueTransito, - pemp.qtdpendpedcompra EstoqueFuturo, - NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Incluído estqoutro para não ser necessário utilizar MADV_COMPOSICAORESERVASELINV - ROUND(nvl(case - when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 - when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) - end, 0), 3) DDV, - - nvl(pemp.estqminimodv,0) DDVMinimo, - nvl(pemp.estqmaximodv, 0) DDVMaximo, - case - WHEN (select count(1) from mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' - when pemp.formaabastecimento = 'I' then 'ARMAZENAGEM' - when pemp.formaabastecimento = 'C' then 'CROSS' - when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' - when pemp.formaabastecimento = 'E' then 'LOJA-EDL' - -- [inline: gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao)] - when pemp.formaabastecimento is null then ( - select case - when mfd_fa.formaabastecimento = 'I' then 'ARMAZENAGEM' - when mfd_fa.formaabastecimento = 'C' then 'CROSS' - when mfd_fa.formaabastecimento = 'N' then 'CENTRAL-EDL' - when mfd_fa.formaabastecimento = 'E' then 'LOJA-EDL' - when mfd_fa.formaabastecimento = 'F' then 'FRACIONADO' - end - from map_famdivisao mfd_fa - where mfd_fa.seqfamilia = pro.seqfamilia - and mfd_fa.nrodivisao = md.nrodivisao) - end FormaAbastecimento, - - case - when pes.precovalidpromoc > 0.00 then 'PROMOCAO' - when pes.precovalidpromoc = 0.00 then 'NORMAL' - end Situacao, - pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, - pempcd.qtdpendpedcompra EstoqueFuturoCD, - - -- [inline: consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa, pemp.seqproduto)] - (select max(mnf_de.Dtaentrada) - from mlf_notafiscal mnf_de - inner join mlf_nfitem mnfi_de - on mnfi_de.NUMERONF = mnf_de.NUMERONF - and mnfi_de.SEQPESSOA = mnf_de.SEQPESSOA - and mnfi_de.SERIENF = mnf_de.SERIENF - and mnfi_de.TIPNOTAFISCAL = mnf_de.TIPNOTAFISCAL - and mnfi_de.NROEMPRESA = mnf_de.NROEMPRESA - inner join max_parametro mp_de - on mp_de.nroempresa = mnf_de.nroempresa - and mp_de.parametro = 'CGO_ENTR_BONIF_NFCOMPRA' - where mnf_de.tipnotafiscal = 'E' - and mnf_de.statusnf <> 'C' - and mnfi_de.tipitem = 'R' - and mnf_de.dtaentrada >= trunc(sysdate - 365) - and mnf_de.dtaentrada <= trunc(sysdate - 1) - and mnf_de.nroempresa = pemp.nroempresa - and mnfi_de.seqproduto = pemp.seqproduto) DATAULTIMAENTRADA, - - pemp.dtaultvenda DATAULTIMAVENDA, - consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, - CASE WHEN (select count(*) from mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, - pemp.statuscompra, - nvl((select min(qtdembalagem) from mrl_prodempseg where nroempresa = me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, - nvl(pro.seqprodutobase,0) IdBase, - case - when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' - ELSE - case when mff.indindenizavaria = 'N' then 'NF DEVOL' - else 'SEM TROCA' - end - END TIPOTROCA, - mfdv.padraoembcompra QUANTIDADECOMPRA, - pemp.qtdreservadavda RESERVA, - NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, - mfdv.margemlucrodivisao, - nvl(pes.precovalidpromoc,0) PrecoPromoc, - nvl(pes.precovalidnormal,0) PrecoNormal, - nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, - -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 15)] - case when pes3.precovalidpromoc > 0 then - nvl((select round(max(fc5margempreco(pemp.seqproduto, pemp.nroempresa, 15, seg_mbo1.qtdembalagem, - (round( ( pe_mbo1.CMULTVLRNF + pe_mbo1.CMULTIPI - - decode( 'L', 'L', pe_mbo1.CMULTCREDICMS + - decode(nvl(fam_mbo1.indmonopiscofins, 'N')|| nvl(emp_mbo1.indfaturaipi, 'N')||nvl(emp_mbo1.indimportadora, 'N'), - 'SNN', 0, nvl(pe_mbo1.cmultcredpis, 0) + nvl(pe_mbo1.cmultcredcofins, 0)), 0) - + pe_mbo1.CMULTICMSST + pe_mbo1.CMULTDESPNF + pe_mbo1.CMULTDESPFORANF - pe_mbo1.CMULTDCTOFORANF - - nvl( fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA ), 0 ) - + nvl( fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo1.qtdembalagem, 4 ) - * case - when (pr_mbo1.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo1.percacresccustorelacvig,1) - else 1 end - ),decode(seg_mbo1.precovalidpromoc,0,seg_mbo1.precovalidnormal,seg_mbo1.precovalidpromoc))),2) - from max_Empresa emp_mbo1 - join mrl_prodempseg seg_mbo1 - on seg_mbo1.nroempresa = emp_mbo1.nroempresa - and seg_mbo1.qtdembalagem = 1 - and seg_mbo1.nrosegmento = 15 - and seg_mbo1.seqproduto = pemp.seqproduto - join map_produto pr_mbo1 - on pr_mbo1.seqproduto = seg_mbo1.seqproduto - join mrl_produtoempresa pe_mbo1 - on pe_mbo1.nroempresa = emp_mbo1.nroempresa - and pe_mbo1.seqproduto = nvl(pr_mbo1.seqprodutobase, pr_mbo1.seqproduto) - join map_familia fam_mbo1 - on fam_mbo1.seqfamilia = pr_mbo1.seqfamilia - where emp_mbo1.nroempresa = pemp.nroempresa),0) - else - 0 - end MargemMeuMambo, - -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 2, 'S')] - nvl((select round(max(fc5margempreco(pemp.seqproduto, pemp.nroempresa, 2, seg_mbo2.qtdembalagem, - (round( ( pe_mbo2.CMULTVLRNF + pe_mbo2.CMULTIPI - - decode( 'L', 'L', pe_mbo2.CMULTCREDICMS + - decode(nvl(fam_mbo2.indmonopiscofins, 'N')|| nvl(emp_mbo2.indfaturaipi, 'N')||nvl(emp_mbo2.indimportadora, 'N'), - 'SNN', 0, nvl(pe_mbo2.cmultcredpis, 0) + nvl(pe_mbo2.cmultcredcofins, 0)), 0) - + pe_mbo2.CMULTICMSST + pe_mbo2.CMULTDESPNF + pe_mbo2.CMULTDESPFORANF - pe_mbo2.CMULTDCTOFORANF - - nvl( fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA ), 0 ) - + nvl( fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo2.qtdembalagem, 4 ) - * case - when (pr_mbo2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo2.percacresccustorelacvig,1) - else 1 end - ),seg_mbo2.precovalidnormal)),2) - from max_Empresa emp_mbo2 - join mrl_prodempseg seg_mbo2 - on seg_mbo2.nroempresa = emp_mbo2.nroempresa - and seg_mbo2.qtdembalagem = 1 - and seg_mbo2.nrosegmento = 2 - and seg_mbo2.seqproduto = pemp.seqproduto - join map_produto pr_mbo2 - on pr_mbo2.seqproduto = seg_mbo2.seqproduto - join mrl_produtoempresa pe_mbo2 - on pe_mbo2.nroempresa = emp_mbo2.nroempresa - and pe_mbo2.seqproduto = nvl(pr_mbo2.seqprodutobase, pr_mbo2.seqproduto) - join map_familia fam_mbo2 - on fam_mbo2.seqfamilia = pr_mbo2.seqfamilia - where emp_mbo2.nroempresa = pemp.nroempresa),0) MargemNormal, - trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, - NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, - vncto.dtavalidade - -from max_divisao md - -inner join max_empresa me - on me.nrodivisao = md.nrodivisao -and me.dtainiciomovestoque <= trunc(sysdate) -and me.status = 'A' - -inner join mad_segmento seg - on md.nrodivisao = me.nrodivisao -and me.nrosegmentoprinc = seg.nrosegmento - -inner join mrl_produtoempresa pemp - on pemp.nroempresa = me.nroempresa - -left join mrl_produtoempresa pempcd - on pempcd.seqproduto = pemp.seqproduto - -left join map_classeabastec mcab -on mcab.classeabastqtd = pemp.classeabastqtd -and mcab.nroempresa = pemp.nroempresa -and mcab.classeabastvlr = pemp.classeabastvlr - -inner join map_produto pro - on pro.seqproduto = pemp.seqproduto - -inner join map_famdivisao mfdv - on mfdv.seqfamilia = pro.seqfamilia -and mfdv.nrodivisao = me.nrodivisao - -inner join max_comprador mco - on mco.seqcomprador = mfdv.seqcomprador - -left join tb_comprador tcomp - on tcomp.COMPRADOR = mco.comprador - -left join map_produtoimagem mapi - on mapi.seqproduto = pro.seqproduto -and mapi.indpricipal = 'S' - -inner join mrl_prodempseg pes - on pes.seqproduto = pemp.seqproduto -and pes.nroempresa = pemp.nroempresa -and pes.nrosegmento = seg.nrosegmento -and pes.qtdembalagem = 1 - -inner join mrl_prodempseg pes2 - on pes2.nroempresa = pes.nroempresa -and pes2.seqproduto = pes.seqproduto -and pes2.nrosegmento = pes.nrosegmento - -left join mrl_prodempseg pes3 - on pes3.seqproduto = pemp.seqproduto -and pes3.nroempresa = pemp.nroempresa ---and pes3.nrosegmento = 15 -and pes3.qtdembalagem = 1 - -inner join map_famembalagem emb - on emb.seqfamilia = pro.seqfamilia -and emb.qtdembalagem = 1 - -left join (select mffTemp.Seqfamilia, - mfdvTemp.Nrodivisao, - mffTemp.indindenizavaria, - mfdvTemp.pzomedvisitarep, - mfdvTemp.pzomedentrega, - mfdvTemp.pzomedatraso, - gp.fantasia fornecedor - - from map_famfornec mffTemp - - inner join ge_pessoa gp - on gp.seqpessoa = mffTemp.Seqfornecedor - - left join maf_fornecdivisao mfdvTemp - on mfdvTemp.Seqfornecedor = mffTemp.Seqfornecedor - and mffTemp.Principal = 'S' - - ) mff - on mff.seqfamilia = pro.seqfamilia -and mff.nrodivisao = md.nrodivisao - -left join (select pvencto.nroempresa, - pvencto.seqproduto, - min(pvencto.vlrpreco) vlrprecovenctoprox, - min(pvencto.dtavalidade) dtavalidade - from consinco.mrl_prodempvencimento pvencto - where 1=1 - and pvencto.dtavalidade >= trunc(sysdate) - and pvencto.qtdembalagem = 1 - group by pvencto.nroempresa, - pvencto.seqproduto - ) vncto - ON vncto.nroempresa = pemp.nroempresa -and vncto.seqproduto = pemp.seqproduto - -where 1=1 ---and pemp.SEQPRODUTO = 136011 ---and pemp.nroempresa = 202 -and md.nrodivisao in (2,4) -and pemp.seqproduto = ${args.codproduto} -and me.nroempresa in (${args.ctx_user_companies_for_module}) -and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) - from mrl_prodempseg pes3 - where pes3.nroempresa = pes.nroempresa - and pes3.seqproduto = pes.seqproduto - and pes3.nrosegmento = pes.nrosegmento - and pes3.statusvenda = 'A') - `, - }; - }, - detalhe_preco: (args) => { - return { - sql: /*sql*/ ` - select ora_hash(mgmp.SEQPRODUTO||mgmp.NROEMPRESA||mgmp.QTDEMBALAGEM||mgmp.NROSEGMENTO) chave, - mgmp.SEQPRODUTO, - mgmp.NROEMPRESA, - mgmp.NROSEGMENTO, - mgmp.QTDEMBALAGEM || ' ' || mgmp.EMBVENDA embalagem, - mgmp.PRECOVALIDNORMAL preco_embalagem, - mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, - trunc(mgmp.MGMPRECOVALIDO,2) margem - from maxv_mgmbaseprodseg mgmp - inner join max_empresa me - on me.nroempresa = mgmp.NROEMPRESA - and me.status = 'A' - and me.dtainiciomovestoque <= trunc(sysdate)-1 - and me.nrodivisao in (2,4) - and me.nroempresa not in (291,298,910,911,920,930,931,940,980) - AND mgmp.NROSEGMENTO IN (2,7) - where 1=1 - and mgmp.seqproduto = ${args.codproduto} - and mgmp.nroempresa = ${args.nrempresa} - AND mgmp.NROSEGMENTO NOT IN (22,23,26) - and mgmp.STATUSVENDA = 'A' - `, - }; - }, - detalhe_mdv: (args) => { - return { - sql: /*sql*/ ` - select mcdia.dtaentradasaida data, - mcdia.nroempresa, - mcdia.seqproduto, - Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, - mcdia.qtdvda qtd, - mcdia.qtdestqinicial qtd_inicial - from mrl_custodia mcdia - inner join max_empresa me - on mcdia.nroempresa = me.nroempresa - where 1=1 - and mcdia.qtdvda > 0 - and mcdia.dtaentradasaida >= trunc(sysdate)-365 - AND mcdia.nroempresa = ${args.nrempresa} - AND mcdia.seqproduto = ${args.codproduto} - order by dtaentradasaida desc - `, - }; - }, - detalhe_situacao_vigente: (args) => { - return { - sql: /*sql*/ ` - select mrl_prodempseg.nroempresa, - mrl_prodempseg.seqproduto, - mrl_promocao.dtainicio, - mrl_promocao.dtafim, - mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, - mrl_promocaoitem.precopromocional preco - from mrl_promocaoitem, mrl_promocao, mrl_prodempseg, - map_produto mp, map_famembalagem mfe, max_empresa me - where 1=1 - and me.nroempresa = mrl_promocao.nroempresa - and me.status = 'A' - and me.nrodivisao = 2 - and me.dtainiciomovestoque <= trunc(sysdate)-1 - and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa - and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao - and mrl_promocao.centralloja = mrl_promocaoitem.centralloja - and mrl_promocao.nrosegmento = mrl_promocaoitem.nrosegmento - and mrl_promocaoitem.seqproduto = mrl_prodempseg.seqproduto - and mrl_promocao.nrosegmento = mrl_prodempseg.nrosegmento - and mrl_promocao.nroempresa = mrl_prodempseg.nroempresa - and mrl_promocaoitem.qtdembalagem = mrl_prodempseg.qtdembalagem - and mp.seqproduto = mrl_prodempseg.seqproduto - and mfe.seqfamilia = mp.seqfamilia - and mfe.qtdembalagem = mrl_prodempseg.qtdembalagem - and nvl(mrl_promocao.tipopromoc, 'N') in ('N', 'F', 'A', 'S') - and mrl_promocao.dtainicio >= trunc(sysdate)-90--365 - AND mrl_prodempseg.nroempresa = ${args.nrempresa} - AND mrl_prodempseg.seqproduto = ${args.codproduto} - order by mrl_promocao.dtainicio desc - `, - }; - }, - detalhe_custo_liquido: (args) => { - return { - sql: /*sql*/ ` - select mcdiafam.dtaentradasaida, - mcdiafam.nroempresa, - PROD.SEQPRODUTO, - mcdiafam.seqfamilia, - mcdiafam.qtdestqinicial estqinicial, - qtdestqinicial + qtdentrada - qtdsaida estqfinal, - --trunc(cmdiavlrnf,2) custo - cmdiavlrnf custo - from mrl_custodiafam mcdiafam - INNER JOIN MAP_PRODUTO PROD - ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA - inner join max_empresa me - on me.nroempresa = mcdiafam.nroempresa - and me.status = 'A' - and me.dtainiciomovestoque <= trunc(sysdate)-1 - and me.nrodivisao in (2,4) - where 1=1 - and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 - AND mcdiafam.nroempresa = ${args.nrempresa} - AND PROD.SEQPRODUTO = ${args.codproduto} - order by mcdiafam.dtaentradasaida desc - `, - }; - }, - detalhe_estoque_disponivel: (args) => { - return { - sql: /*sql*/ ` - select - cdia.dtaentradasaida, - cdia.nroempresa, - cdia.seqproduto, - cdia.qtdentrada, - cdia.qtdsaida, - cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo - from mrl_custodia cdia - join max_empresa me - on me.nroempresa = cdia.nroempresa - and me.status = 'A' - and me.dtainiciomovestoque < trunc(sysdate) - and me.nrodivisao = 2 - where cdia.dtaentradasaida >= sysdate - 365 - and cdia.seqproduto = ${args.codproduto} - and cdia.nroempresa = ${args.nrempresa} - union all - select - mle.dtaentradasaida, - mle.nroempresa, - mle.seqproduto, - sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) qtdentrada, - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaida, - cdia.qtdestqinicial - + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) - - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo - from mrl_lanctoestoque mle - join max_empresa me - on me.nroempresa = mle.nroempresa - and me.status = 'A' - and me.dtainiciomovestoque < trunc(sysdate) - and me.nrodivisao = 4 - join mrl_custodia cdia - on cdia.dtaentradasaida = mle.dtaentradasaida - and cdia.nroempresa = mle.nroempresa - and cdia.seqproduto = mle.seqproduto - where mle.dtaentradasaida >= sysdate - 365 - and mle.codgeraloper not in (301,302) - and mle.seqproduto = ${args.codproduto} - and mle.nroempresa = ${args.nrempresa} - group by - mle.dtaentradasaida, - mle.nroempresa, - mle.seqproduto, - cdia.qtdestqinicial - order by dtaentradasaida desc - `, - }; - }, - detalhe_estoque_transito: (args) => { - return { - sql: /*sql*/ ` - SELECT - a.nroempresa, - b.seqproduto, - INITCAP(C.NOMERAZAO) FORNECEDOR, - A.NUMERONF, - A.SERIENF, - A.DTAEMISSAO, - A.DTAENTRADA, - B.QUANTIDADE, - B.VLRITEM VALOR - from MLF_AUXNOTAFISCAL A, MLF_AUXNFITEM B, GE_PESSOA C, MAP_PRODUTO D - WHERE 1=1 - and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL - AND C.SEQPESSOA = A.SEQPESSOA - AND D.SEQPRODUTO = B.SEQPRODUTO - AND A.DTAEMISSAO >= SYSDATE-365 - AND a.nroempresa = ${args.nrempresa} - AND b.seqproduto = ${args.codproduto} - order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF - `, - }; - }, - }, }); From e369a60c4768f039f67440fe0e5fd92f1428a1cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Tue, 28 Apr 2026 09:48:33 -0300 Subject: [PATCH 26/41] Ajuste do modulo --- src/products/products.module.ts | 876 +++++++++++++++++++++++++++++++- 1 file changed, 875 insertions(+), 1 deletion(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index df90581..031fbfe 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1,6 +1,6 @@ import { createModuleFactory } from "@davinti/jeff"; -const moduleFactory = createModuleFactory(["C5", "C5_mambo"]); +const moduleFactory = createModuleFactory(["C5", "C5_mambo", "C5_big"]); export default moduleFactory .createModule({ @@ -1809,4 +1809,878 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) }; }, }, + C5_big: { + consulta: (args) => { + return { + sql: /*sql*/ ` + SELECT + CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, + p.DESCCOMPLETA AS title + FROM + CONSINCO.MAP_PRODUTO p + WHERE + 1 = 1 + AND ( + ( + ${args.filtro} IS NOT NULL + AND ( + p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' + OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') + ) + ) + OR ( + ${args.ean} IS NOT NULL + AND EXISTS ( + SELECT 1 + FROM CONSINCO.MAP_PRODCODIGO A + WHERE A.SEQPRODUTO = p.SEQPRODUTO + AND ISNUMERIC(A.CODACESSO) = 'S' + AND A.CODACESSO = ${args.ean} + ) + ) + OR ( + ${args.filtro} IS NULL + AND ${args.ean} IS NULL + ) + ) + ORDER BY + 2 + `, + }; + }, + detalhe: (args) => { + return { + sql: /*sql*/ ` + select /*+ FIRST_ROWS(10) */ DISTINCT pemp.nroempresa, + --(SELECT COMPRADOR FROM tb_comprador tcomp WHERE tcomp.COMPRADOR = mco.comprador) AS comprador, + 'BIG' AS comprador, + nvl(mff.fornecedor, 'N/A') fornecedor, + -- [inline: consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1)] + (select max(b_cat.caminhocompleto) + from consinco.map_famdivcateg a_cat, consinco.map_categoria b_cat + where a_cat.seqcategoria = b_cat.seqcategoria + and a_cat.nrodivisao = b_cat.nrodivisao + and a_cat.seqfamilia = pro.seqfamilia + and a_cat.nrodivisao = me.nrodivisao + and b_cat.statuscategor = 'A' + and a_cat.status = 'A' + and b_cat.nivelhierarquia = 1 + and b_cat.tipcategoria = nvl('M', 'M')) categoria, + pro.seqproduto, + initcap(pro.desccompleta) Descricao, + nvl(mapi.urlecommerceimg,'') ImagemUrl, + case when trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2) = 0 then + trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) + else + trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2) + end PrecoAtacado, + + trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) PrecoVarejo, + + trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, + + -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] + nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg.nrosegmentoprinc, seg_mg.qtdembalagem, + (round( ( pe_mg.CMULTVLRNF + pe_mg.CMULTIPI - + decode( 'L', 'L', pe_mg.CMULTCREDICMS + + decode(nvl(fam_mg.indmonopiscofins, 'N')|| nvl(emp_mg.indfaturaipi, 'N')||nvl(emp_mg.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mg.cmultcredpis, 0) + nvl(pe_mg.cmultcredcofins, 0)), 0) + + pe_mg.CMULTICMSST + pe_mg.CMULTDESPNF + pe_mg.CMULTDESPFORANF - pe_mg.CMULTDCTOFORANF + - nvl( consinco.fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA ), 0 ) + + nvl( consinco.fc5VlrVerba( seg_mg.SEQPRODUTO, seg_mg.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg.qtdembalagem, 4 ) + * case + when (pr_mg.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mg.precovalidpromoc,0,seg_mg.precovalidnormal,seg_mg.precovalidpromoc))),2) + from consinco.max_Empresa emp_mg + join consinco.mrl_prodempseg seg_mg + on seg_mg.nroempresa = emp_mg.nroempresa + and seg_mg.nrosegmento = emp_mg.nrosegmentoprinc + and seg_mg.qtdembalagem = 1 + and seg_mg.seqproduto = pemp.seqproduto + join consinco.map_produto pr_mg + on pr_mg.seqproduto = seg_mg.seqproduto + join consinco.mrl_produtoempresa pe_mg + on pe_mg.nroempresa = emp_mg.nroempresa + and pe_mg.seqproduto = nvl(pr_mg.seqprodutobase, pr_mg.seqproduto) + join consinco.map_familia fam_mg + on fam_mg.seqfamilia = pr_mg.seqfamilia + where emp_mg.nroempresa = pemp.nroempresa),0) Margem, + + case + when trunc(case + when pes.precovalidpromoc > 0.00 then nvl(pes.precovalidpromoc,0) + when pes.precovalidpromoc = 0.00 then nvl(pes.precovalidnormal,0) + end, 2) = trunc(case + when pes2.precovalidpromoc > 0.00 then nvl(pes2.precovalidpromoc,0) + when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) + end / pes2.qtdembalagem,2 + ) + -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] + then nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg2.nrosegmentoprinc, seg_mg2.qtdembalagem, + (round( ( pe_mg2.CMULTVLRNF + pe_mg2.CMULTIPI - + decode( 'L', 'L', pe_mg2.CMULTCREDICMS + + decode(nvl(fam_mg2.indmonopiscofins, 'N')|| nvl(emp_mg2.indfaturaipi, 'N')||nvl(emp_mg2.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mg2.cmultcredpis, 0) + nvl(pe_mg2.cmultcredcofins, 0)), 0) + + pe_mg2.CMULTICMSST + pe_mg2.CMULTDESPNF + pe_mg2.CMULTDESPFORANF - pe_mg2.CMULTDCTOFORANF + - nvl( consinco.fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA ), 0 ) + + nvl( consinco.fc5VlrVerba( seg_mg2.SEQPRODUTO, seg_mg2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mg2.qtdembalagem, 4 ) + * case + when (pr_mg2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mg2.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mg2.precovalidpromoc,0,seg_mg2.precovalidnormal,seg_mg2.precovalidpromoc))),2) + from consinco.max_Empresa emp_mg2 + join consinco.mrl_prodempseg seg_mg2 + on seg_mg2.nroempresa = emp_mg2.nroempresa + and seg_mg2.nrosegmento = emp_mg2.nrosegmentoprinc + and seg_mg2.qtdembalagem = 1 + and seg_mg2.seqproduto = pemp.seqproduto + join consinco.map_produto pr_mg2 + on pr_mg2.seqproduto = seg_mg2.seqproduto + join consinco.mrl_produtoempresa pe_mg2 + on pe_mg2.nroempresa = emp_mg2.nroempresa + and pe_mg2.seqproduto = nvl(pr_mg2.seqprodutobase, pr_mg2.seqproduto) + join consinco.map_familia fam_mg2 + on fam_mg2.seqfamilia = pr_mg2.seqfamilia + where emp_mg2.nroempresa = pemp.nroempresa),0) + else + -- [inline: CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa, pemp.seqproduto)] + nvl((select case when at2_q.precovalidpromoc > 0 then round(at2_q.mgmprecovdapromoc,2) + when at2_q.precovalidnormal > 0 then round(at2_q.mgmprecominvdaempresa,2) + end + from ( + SELECT x_at2.precovalidnormal, + x_at2.precovalidpromoc, + decode (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem), 0, 0, + ((((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) - ( + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * + (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else decode(m_at2.metodoprecificacao, 'B', 0, 'I', 0, decode(h_at2.pericmsestimativa, 0, + f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end / 100)) + + + (((b_at2.cmultvlrnf + b_at2.cmultipi - + decode(m_at2.metodoprecificacao, 'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), + 'I', DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf + - nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + + nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' + then nvl((consinco.fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) + * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa, 0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) + else 0 + end) + * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + + + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * + (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)) + + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + + decode(m_at2.metodoprecificacao,'B', 0, + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) + - decode(m_at2.metodocalcrentab,'L', ( + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * + (case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else decode(m_at2.metodoprecificacao,'B',0,'I',0, decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end / 100)) + + (((select min(a_fp.precovalidnormal / a_fp.qtdembalagem) + from mrl_prodempseg a_fp + where a_fp.seqproduto = x_at2.seqproduto + and a_fp.nroempresa = x_at2.nroempresa + and a_fp.nrosegmento = o_at2.nrosegmento + and a_fp.precovalidnormal > 0 + and a_fp.statusvenda = 'A') * x_at2.qtdembalagem) * + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N','S')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N','S')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) + )) * 100) as mgmprecominvdaempresa, + + decode(round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2), 0, 0, + ((round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) - ( + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(m_at2.metodoprecificacao,'B',0,'I',0, + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), + 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, + decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end) / 100)) + + + (((b_at2.cmultvlrnf + b_at2.cmultipi - + decode(m_at2.metodoprecificacao,'L', b_at2.cmultcredicms + nvl(b_at2.cmultcredipi,0) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), + 'I', DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'P', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfpissai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredpis,0)) + + DECODE(nvl(decode(nvl(consinco.fBuscaSituacaoPisCofins(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao,'C', h_at2.nroempresa, h_at2.seqpessoaemp, a_at2.seqfamilia, trunc(sysdate),'S','C'), l_at2.situacaonfcofinssai),'04','S',NULL,NULL,'N'), nvl(l_at2.indmonopiscofins,'N')) + || nvl(h_at2.indfaturaipi,'N') || nvl(h_at2.indimportadora,'N'), 'SNN', 0, nvl(b_at2.cmultcredcofins,0)), 0) + + b_at2.cmulticmsst + b_at2.cmultdespnf + b_at2.cmultdespforanf - b_at2.cmultdctoforanf + - nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa), 0) + + nvl(consinco.fc5VlrVerba(a_at2.seqproduto, b_at2.nroempresa, null, null, 'S'), 0)) * x_at2.qtdembalagem) + + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' + then nvl((consinco.fCustoPonderadoBaseICMS(trunc(sysdate), a_at2.seqproduto, b_at2.nroempresa, f_at2.nrotributacao, f_at2.nroregtributacao,'C') * x_at2.qtdembalagem), 0) + * (decode(m_at2.metodoprecificacao,'L', decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa), 0) / 100) + else 0 + end) + * case when (a_at2.seqprodutobase is not null and m_at2.utilacresccustprodrelac = 'S') then nvl(a_at2.percacresccustorelacvig,1) else 1 end + + + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaopromfs, nvl(n_at2.percomissaopromoc,0)), nvl(n_at2.percomissaopromoc,0)) + + decode(q_at2.Ger1_12AvosComPreco,'S', ((decode(decode(p_at2.TIPOCALCCOMISSAOSEG,'E', h_at2.tipocalccomissao, NVL(p_at2.TIPOCALCCOMISSAOSEG, h_at2.tipocalccomissao)),'F', nvl(o_at2.percomissaonormalfs, nvl(n_at2.percomissaonormal,0)), nvl(n_at2.percomissaonormal,0)))) / 12, 0) + + (decode(nvl(m_at2.tipcalcmargem, m_at2.tipdivisao),'A', n_at2.perdespclassifabc, nvl(o_at2.perdespesasegmento, nvl(c_at2.perdespesadivisao, nvl(h_at2.perdespoperacional,0)))) + + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)))) / 100))) / + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) + - decode(m_at2.metodocalcrentab,'L', ( + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + (decode(m_at2.metodoprecificacao,'B',0,'I',0, + case when f_at2.indutilcustomesbase = 'S' and t_at2.utiloficiocstbrutobasest = 'S' then 0 + else DECODE(NVL(t_at2.GERADEBRECICMSANTECIP,'N'), + 'S', nvl(f_at2.PERALIQICMSCALCPRECO, f_at2.PERALIQUOTA) * decode(f_at2.peraliqicmscalcpreco, null, f_at2.pertributado, decode(f_at2.perisento,100,0,100)) / 100, + decode(h_at2.pericmsestimativa,0, f_at2.pertributado * nvl(f_at2.peraliqicmscalcpreco, f_at2.peraliquota) / 100, h_at2.pericmsestimativa)) + end) / 100)) + + (round(consinco.fminprecopromocprodemp(x_at2.seqproduto, x_at2.nroempresa) * x_at2.qtdembalagem, 2) * + decode(m_at2.metodoprecificacao,'B',0, + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'P','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'P','N')), + decode(nvl(f_at2.situacaonfpis, l_at2.situacaonfpissai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.perpisdif, h_at2.perpis)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.perpis))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfpis,'01',f_at2.perbasepis,null), decode(l_at2.situacaonfpissai,'01',l_at2.perbasepis,null)),0),0)) / 100) + + nvl(coalesce(consinco.fmap_piscofinstribut(f_at2.nrotributacao, f_at2.ufempresa, f_at2.ufclientefornec, decode(m_at2.tipdivisao,'A','SC','SN'), f_at2.nroregtributacao, h_at2.nroempresa, h_at2.NRODIVISAO, h_at2.seqpessoaemp,'C','S','NP', a_at2.seqfamilia), + consinco.fmap_piscofinsfamilia(h_at2.nroempresa, h_at2.nrodivisao, NULL, a_at2.seqfamilia,'C','N')), + decode(nvl(f_at2.situacaonfcofins, l_at2.situacaonfcofinssai),'00',0,'08',0, + decode(l_at2.indisentopis,'S',0, decode(nvl(l_at2.indmonopiscofins,'N'), + 'S', decode(nvl(h_at2.indfaturaipi,'N')||nvl(h_at2.indimportadora,'N'),'NN',0, nvl(f_at2.percofinsdif, h_at2.percofins)), + decode(l_at2.indisentodebpiscofins,'S',0, h_at2.percofins))))) * + ((100 - decode(substr(f_at2.tiptributacao,1,1),'E', nvl(nvl(decode(f_at2.situacaonfcofins,'01',f_at2.perbasecofins,null), decode(l_at2.situacaonfcofinssai,'01',l_at2.perbasecofins,null)),0),0)) / 100) + + h_at2.percpmf + h_at2.perir + h_at2.peroutroimposto + + nvl(decode(nvl(f_at2.indcalcstembutprod,'N'),'S', f_at2.peraliquotast + (f_at2.peraliquotast * f_at2.peracrescst / 100),0),0)) / 100)), 0) + )) * 100) as mgmprecovdapromoc + + from consinco.max_empresa h_at2, + consinco.map_produto a_at2, + consinco.mrl_produtoempresa b_at2, + consinco.map_famdivisao c_at2, + consinco.map_famdivcateg d_at2, + consinco.map_categoria e_at2, + consinco.map_famembalagem i_at2, + consinco.map_famembalagem j_at2, + consinco.map_famembalagem k_at2, + consinco.map_famembalagem tr_at2, + consinco.map_tributacaouf f_at2, + consinco.map_familia l_at2, + consinco.mrl_prodempseg x_at2, + consinco.max_divisao m_at2, + consinco.mad_famsegmento o_at2, + consinco.map_classifabc n_at2, + consinco.mad_segmento p_at2, + consinco.mad_parametro q_at2, + consinco.map_famfornec r_at2, + consinco.map_regimetributacao t_at2, + consinco.max_parametro pd_at2 + where 1=1 + and b_at2.nroempresa = h_at2.nroempresa + and a_at2.seqproduto = b_at2.seqproduto + and c_at2.seqfamilia = a_at2.seqfamilia + and c_at2.nrodivisao = h_at2.nrodivisao + and d_at2.seqfamilia = a_at2.seqfamilia + and d_at2.nrodivisao = h_at2.nrodivisao + and d_at2.status = 'A' + and e_at2.seqcategoria = d_at2.seqcategoria + and e_at2.tipcategoria = 'M' + and e_at2.actfamilia = 'S' + and e_at2.nrodivisao = h_at2.nrodivisao + and f_at2.nrotributacao = c_at2.nrotributacao + and f_at2.ufempresa = nvl(h_at2.ufformacaopreco, h_at2.uf) + and f_at2.ufclientefornec = h_at2.uf + and f_at2.nroregtributacao = nvl(h_at2.nroregtributacao, 0) + and f_at2.tiptributacao = decode(m_at2.tipdivisao,'A','SC','SN') + and i_at2.seqfamilia = a_at2.seqfamilia + and i_at2.qtdembalagem = nvl(r_at2.padraoembcomprafornec, c_at2.padraoembcompra) + and j_at2.seqfamilia = o_at2.seqfamilia + and j_at2.qtdembalagem = o_at2.padraoembvenda + and k_at2.seqfamilia = a_at2.seqfamilia + and k_at2.qtdembalagem = x_at2.qtdembalagem + and tr_at2.seqfamilia = a_at2.seqfamilia + and tr_at2.qtdembalagem = nvl(c_at2.padraoembtransf, o_at2.padraoembvenda) + and l_at2.seqfamilia = a_at2.seqfamilia + and x_at2.seqproduto = a_at2.seqproduto + and x_at2.nroempresa = h_at2.nroempresa + and m_at2.nrodivisao = h_at2.nrodivisao + and o_at2.seqfamilia = a_at2.seqfamilia + and o_at2.nrosegmento = x_at2.nrosegmento + and n_at2.nrosegmento = o_at2.nrosegmento + and n_at2.classifcomercabc = o_at2.classifcomercabc + and x_at2.nrosegmento = p_at2.nrosegmento + and q_at2.nroempresa = h_at2.nroempresa + and r_at2.seqfamilia = a_at2.seqfamilia + and t_at2.nroregtributacao = f_at2.nroregtributacao + and h_at2.nrosegmentoprinc = o_at2.nrosegmento + and pd_at2.grupo = 'PRODUTO' + and pd_at2.parametro = 'UTIL_FORMA_ABASTEC_PROD' + and pd_at2.nroempresa = 0 + and x_at2.statusvenda = 'A' + and x_at2.qtdembalagem = 1 + and b_at2.nroempresa = pemp.nroempresa + and b_at2.seqproduto = pemp.seqproduto + and r_at2.rowid = decode((select min(id) from maxx_selecrowid + where maxx_selecrowid.sequencia = 4 + and maxx_selecrowid.seqfamilia = r_at2.seqfamilia), null, + (select min(mfr2.rowid) from consinco.map_famfornec mfr2 where mfr2.seqfamilia = r_at2.seqfamilia and mfr2.principal = 'S'), + (select min(id) from maxx_selecrowid where maxx_selecrowid.sequencia = 4 and maxx_selecrowid.seqfamilia = r_at2.seqfamilia)) + ) at2_q),0) + end MargemAtacado, + + nvl(pemp.codclassifpreco,'Sem valor') ClasseAbastecimento, + emb.embalagem DescricaoEmbalagem, + trunc(nvl(emb.qtdembalagem,0)) QuantidadeEmbalagem, + case + when pemp.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito - pemp.qtdreservadavda,0),3) + else trunc(nvl(pemp.estqloja,0), 3) - (NVL(pemp.qtdreservadavda,0)) + end EstoqueDisponivel, + + NVL(pemp.estqtroca,0) EstoqueTroca, + NVL(pemp.qtdpedrectransito_depreciada,0) EstoqueTransito, + --pemp.qtdpendpedcompra_depreciada EstoqueFuturo, + NULL EstoqueFuturo, -- NAO TEM NO BIG + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Incluído estqoutro para não ser necessário utilizar MADV_COMPOSICAORESERVASELINV + ROUND(nvl(case + when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 + when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) + end, 0), 3) DDV, + + nvl(pemp.estqminimodv,0) DDVMinimo, + nvl(pemp.estqmaximodv, 0) DDVMaximo, + case + WHEN (select count(1) from mlo_prodembwm w where w.nroempresa = 979 and w.seqproduto = pemp.seqproduto and w.codlinhasepar = 'FR') > 0 THEN 'FRACIONADO' + when pemp.formaabastecimento = 'I' then 'ARMAZENAGEM' + when pemp.formaabastecimento = 'C' then 'CROSS' + when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' + when pemp.formaabastecimento = 'E' then 'LOJA-EDL' + -- [inline: gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao)] + when pemp.formaabastecimento is null then ( + select case + when mfd_fa.formaabastecimento = 'I' then 'ARMAZENAGEM' + when mfd_fa.formaabastecimento = 'C' then 'CROSS' + when mfd_fa.formaabastecimento = 'N' then 'CENTRAL-EDL' + when mfd_fa.formaabastecimento = 'E' then 'LOJA-EDL' + when mfd_fa.formaabastecimento = 'F' then 'FRACIONADO' + end + from consinco.map_famdivisao mfd_fa + where mfd_fa.seqfamilia = pro.seqfamilia + and mfd_fa.nrodivisao = md.nrodivisao) + end FormaAbastecimento, + + case + when pes.precovalidpromoc > 0.00 then 'PROMOCAO' + when pes.precovalidpromoc = 0.00 then 'NORMAL' + end Situacao, + pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, + --pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, + NULL EstoqueFuturoCD, -- NAO TEM NO BIG + + -- [inline: consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa, pemp.seqproduto)] + (select max(mnf_de.Dtaentrada) + from mlf_notafiscal mnf_de + inner join mlf_nfitem mnfi_de + on mnfi_de.NUMERONF = mnf_de.NUMERONF + and mnfi_de.SEQPESSOA = mnf_de.SEQPESSOA + and mnfi_de.SERIENF = mnf_de.SERIENF + and mnfi_de.TIPNOTAFISCAL = mnf_de.TIPNOTAFISCAL + and mnfi_de.NROEMPRESA = mnf_de.NROEMPRESA + inner join consinco.max_parametro mp_de + on mp_de.nroempresa = mnf_de.nroempresa + and mp_de.parametro = 'CGO_ENTR_BONIF_NFCOMPRA' + where mnf_de.tipnotafiscal = 'E' + and mnf_de.statusnf <> 'C' + and mnfi_de.tipitem = 'R' + and mnf_de.dtaentrada >= trunc(sysdate - 365) + and mnf_de.dtaentrada <= trunc(sysdate - 1) + and mnf_de.nroempresa = pemp.nroempresa + and mnfi_de.seqproduto = pemp.seqproduto) DATAULTIMAENTRADA, + + pemp.dtaultvenda DATAULTIMAVENDA, + consinco.fmrl_custoprodempatual(pro.seqproduto, pemp.nroempresa, 'L') custoliquido, + CASE WHEN (select count(*) from consinco.mrl_prodempseg pest where pest.seqproduto = pemp.seqproduto and pest.nroempresa = pemp.nroempresa and pest.nrosegmento = seg.nrosegmento and pest.statusvenda = 'A' ) > 0 then 'A' ELSE 'I' end STATUSVENDA, + pemp.statuscompra, + nvl((select min(qtdembalagem) from consinco.mrl_prodempseg where nroempresa = me.nroempresa and nrosegmento=me.nrosegmentoprinc and seqproduto=pro.seqproduto and statusvenda='A' and qtdembalagem>1), 1) QtdeAtacado, + nvl(pro.seqprodutobase,0) IdBase, + case + when mfdv.indnegavariacentral = 'S' THEN 'TROCA FISICA' + ELSE + case when mff.indindenizavaria = 'N' then 'NF DEVOL' + else 'SEM TROCA' + end + END TIPOTROCA, + mfdv.padraoembcompra QUANTIDADECOMPRA, + pemp.qtdreservadavda RESERVA, + NVL(pro.pzovalidadedia, 0) VALIDADEDIAS, + mfdv.margemlucrodivisao, + nvl(pes.precovalidpromoc,0) PrecoPromoc, + nvl(pes.precovalidnormal,0) PrecoNormal, + nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, + -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 15)] + case when pes3.precovalidpromoc > 0 then + nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 15, seg_mbo1.qtdembalagem, + (round( ( pe_mbo1.CMULTVLRNF + pe_mbo1.CMULTIPI - + decode( 'L', 'L', pe_mbo1.CMULTCREDICMS + + decode(nvl(fam_mbo1.indmonopiscofins, 'N')|| nvl(emp_mbo1.indfaturaipi, 'N')||nvl(emp_mbo1.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mbo1.cmultcredpis, 0) + nvl(pe_mbo1.cmultcredcofins, 0)), 0) + + pe_mbo1.CMULTICMSST + pe_mbo1.CMULTDESPNF + pe_mbo1.CMULTDESPFORANF - pe_mbo1.CMULTDCTOFORANF + - nvl( consinco.fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA ), 0 ) + + nvl( consinco.fc5VlrVerba( seg_mbo1.SEQPRODUTO, seg_mbo1.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo1.qtdembalagem, 4 ) + * case + when (pr_mbo1.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo1.percacresccustorelacvig,1) + else 1 end + ),decode(seg_mbo1.precovalidpromoc,0,seg_mbo1.precovalidnormal,seg_mbo1.precovalidpromoc))),2) + from consinco.max_Empresa emp_mbo1 + join consinco.mrl_prodempseg seg_mbo1 + on seg_mbo1.nroempresa = emp_mbo1.nroempresa + and seg_mbo1.qtdembalagem = 1 + and seg_mbo1.nrosegmento = 15 + and seg_mbo1.seqproduto = pemp.seqproduto + join consinco.map_produto pr_mbo1 + on pr_mbo1.seqproduto = seg_mbo1.seqproduto + join consinco.mrl_produtoempresa pe_mbo1 + on pe_mbo1.nroempresa = emp_mbo1.nroempresa + and pe_mbo1.seqproduto = nvl(pr_mbo1.seqprodutobase, pr_mbo1.seqproduto) + join consinco.map_familia fam_mbo1 + on fam_mbo1.seqfamilia = pr_mbo1.seqfamilia + where emp_mbo1.nroempresa = pemp.nroempresa),0) + else + 0 + end MargemMeuMambo, + -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 2, 'S')] + nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 2, seg_mbo2.qtdembalagem, + (round( ( pe_mbo2.CMULTVLRNF + pe_mbo2.CMULTIPI - + decode( 'L', 'L', pe_mbo2.CMULTCREDICMS + + decode(nvl(fam_mbo2.indmonopiscofins, 'N')|| nvl(emp_mbo2.indfaturaipi, 'N')||nvl(emp_mbo2.indimportadora, 'N'), + 'SNN', 0, nvl(pe_mbo2.cmultcredpis, 0) + nvl(pe_mbo2.cmultcredcofins, 0)), 0) + + pe_mbo2.CMULTICMSST + pe_mbo2.CMULTDESPNF + pe_mbo2.CMULTDESPFORANF - pe_mbo2.CMULTDCTOFORANF + - nvl( consinco.fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA ), 0 ) + + nvl( consinco.fc5VlrVerba( seg_mbo2.SEQPRODUTO, seg_mbo2.NROEMPRESA, NULL, NULL, 'S' ), 0 ) ) * seg_mbo2.qtdembalagem, 4 ) + * case + when (pr_mbo2.seqprodutobase is not null and 'S' = 'S') then nvl(pr_mbo2.percacresccustorelacvig,1) + else 1 end + ),seg_mbo2.precovalidnormal)),2) + from consinco.max_Empresa emp_mbo2 + join consinco.mrl_prodempseg seg_mbo2 + on seg_mbo2.nroempresa = emp_mbo2.nroempresa + and seg_mbo2.qtdembalagem = 1 + and seg_mbo2.nrosegmento = 2 + and seg_mbo2.seqproduto = pemp.seqproduto + join consinco.map_produto pr_mbo2 + on pr_mbo2.seqproduto = seg_mbo2.seqproduto + join consinco.mrl_produtoempresa pe_mbo2 + on pe_mbo2.nroempresa = emp_mbo2.nroempresa + and pe_mbo2.seqproduto = nvl(pr_mbo2.seqprodutobase, pr_mbo2.seqproduto) + join consinco.map_familia fam_mbo2 + on fam_mbo2.seqfamilia = pr_mbo2.seqfamilia + where emp_mbo2.nroempresa = pemp.nroempresa),0) MargemNormal, + trunc(nvl(pemp.medvdiapromoc,0),4) MdvPromoc, + NVL(vncto.vlrprecovenctoprox,0) VLRPRECOVENCTOPROX, + vncto.dtavalidade + +from consinco.max_divisao md + +inner join consinco.max_empresa me + on me.nrodivisao = md.nrodivisao +and me.dtainiciomovestoque <= trunc(sysdate) +and me.status = 'A' + +inner join consinco.mad_segmento seg + on md.nrodivisao = me.nrodivisao +and me.nrosegmentoprinc = seg.nrosegmento + +inner join consinco.mrl_produtoempresa pemp + on pemp.nroempresa = me.nroempresa + +left join consinco.mrl_produtoempresa pempcd + on pempcd.seqproduto = pemp.seqproduto + +left join consinco.map_classeabastec mcab +on mcab.classeabastqtd = pemp.classeabastqtd +and mcab.nroempresa = pemp.nroempresa +and mcab.classeabastvlr = pemp.classeabastvlr + +inner join consinco.map_produto pro + on pro.seqproduto = pemp.seqproduto + +inner join consinco.map_famdivisao mfdv + on mfdv.seqfamilia = pro.seqfamilia +and mfdv.nrodivisao = me.nrodivisao + +inner join consinco.max_comprador mco + on mco.seqcomprador = mfdv.seqcomprador + +left join consinco.map_produtoimagem mapi + on mapi.seqproduto = pro.seqproduto +and mapi.indpricipal = 'S' + +inner join consinco.mrl_prodempseg pes + on pes.seqproduto = pemp.seqproduto +and pes.nroempresa = pemp.nroempresa +and pes.nrosegmento = seg.nrosegmento +and pes.qtdembalagem = 1 + +inner join consinco.mrl_prodempseg pes2 + on pes2.nroempresa = pes.nroempresa +and pes2.seqproduto = pes.seqproduto +and pes2.nrosegmento = pes.nrosegmento + +left join consinco.mrl_prodempseg pes3 + on pes3.seqproduto = pemp.seqproduto +and pes3.nroempresa = pemp.nroempresa +--and pes3.nrosegmento = 15 +and pes3.qtdembalagem = 1 + +inner join consinco.map_famembalagem emb + on emb.seqfamilia = pro.seqfamilia +and emb.qtdembalagem = 1 + +left join (select mffTemp.Seqfamilia, + mfdvTemp.Nrodivisao, + mffTemp.indindenizavaria, + mfdvTemp.pzomedvisitarep, + mfdvTemp.pzomedentrega, + mfdvTemp.pzomedatraso, + gp.fantasia fornecedor + + from consinco.map_famfornec mffTemp + + inner join ge_pessoa gp + on gp.seqpessoa = mffTemp.Seqfornecedor + + left join maf_fornecdivisao mfdvTemp + on mfdvTemp.Seqfornecedor = mffTemp.Seqfornecedor + and mffTemp.Principal = 'S' + + ) mff + on mff.seqfamilia = pro.seqfamilia +and mff.nrodivisao = md.nrodivisao + +left join (select pvencto.nroempresa, + pvencto.seqproduto, + min(pvencto.vlrpreco) vlrprecovenctoprox, + min(pvencto.dtavalidade) dtavalidade + from consinco.mrl_prodempvencimento pvencto + where 1=1 + and pvencto.dtavalidade >= trunc(sysdate) + and pvencto.qtdembalagem = 1 + group by pvencto.nroempresa, + pvencto.seqproduto + ) vncto + ON vncto.nroempresa = pemp.nroempresa +and vncto.seqproduto = pemp.seqproduto + +where 1=1 +--and pemp.SEQPRODUTO = 136011 +--and pemp.nroempresa = 202 +and md.nrodivisao in (1) +and pemp.seqproduto = ${args.codproduto} +and me.nroempresa in (${args.ctx_user_companies_for_module}) +and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) + from consinco.mrl_prodempseg pes3 + where pes3.nroempresa = pes.nroempresa + and pes3.seqproduto = pes.seqproduto + and pes3.nrosegmento = pes.nrosegmento + and pes3.statusvenda = 'A') + `, + }; + }, + detalhe_preco: (args) => { + return { + sql: /*sql*/ ` + select ora_hash(mgmp.SEQPRODUTO||mgmp.NROEMPRESA||mgmp.QTDEMBALAGEM||mgmp.NROSEGMENTO) chave, + mgmp.SEQPRODUTO, + mgmp.NROEMPRESA, + mgmp.NROSEGMENTO, + mgmp.QTDEMBALAGEM || ' ' || mgmp.EMBVENDA embalagem, + mgmp.PRECOVALIDNORMAL preco_embalagem, + mgmp.PRECOVALIDNORMAL / mgmp.QTDEMBALAGEM preco_unidade, + trunc(mgmp.MGMPRECOVALIDO,2) margem + from consinco.maxv_mgmbaseprodseg mgmp + inner join consinco.max_empresa me + on me.nroempresa = mgmp.NROEMPRESA + and me.status = 'A' + and me.dtainiciomovestoque <= trunc(sysdate)-1 + --and me.nrodivisao in (2,4) + --and me.nroempresa not in (291,298,910,911,920,930,931,940,980) + --AND mgmp.NROSEGMENTO IN (2,7) + where 1=1 + and mgmp.seqproduto = ${args.codproduto} + and mgmp.nroempresa = ${args.nrempresa} + --AND mgmp.NROSEGMENTO NOT IN (22,23,26) + and mgmp.STATUSVENDA = 'A' + `, + }; + }, + /** SEM RETORNO DE INFORMAÇÕES */ + detalhe_mdv: (args) => { + return { + sql: /*sql*/ ` + select mcdia.dtaentradasaida data, + mcdia.nroempresa, + mcdia.seqproduto, + Decode(to_char(mcdia.dtaentradasaida,'d'),1,'Domingo',2,'Segunda',3,'Terça',4,'Quarta',5,'Quinta',6,'Sexta',7,'Sábado') diasemana, + mcdia.qtdvda qtd, + mcdia.qtdestqinicial qtd_inicial + from consinco.mrl_custodia mcdia + inner join consinco.max_empresa me + on mcdia.nroempresa = me.nroempresa + where 1=1 + and mcdia.qtdvda > 0 + and mcdia.dtaentradasaida >= trunc(sysdate)-365 + AND mcdia.nroempresa = ${args.nrempresa} + AND mcdia.seqproduto = ${args.codproduto} + order by dtaentradasaida desc + `, + }; + }, + detalhe_situacao_vigente: (args) => { + return { + sql: /*sql*/ ` + select mrl_prodempseg.nroempresa, + mrl_prodempseg.seqproduto, + mrl_promocao.dtainicio, + mrl_promocao.dtafim, + mfe.qtdembalagem || ' ' || mfe.embalagem embalagem, + mrl_promocaoitem.precopromocional preco + from consinco.mrl_promocaoitem, consinco.mrl_promocao, consinco.mrl_prodempseg, + consinco.map_produto mp, consinco.map_famembalagem mfe, consinco.max_empresa me + where 1=1 + and me.nroempresa = mrl_promocao.nroempresa + and me.status = 'A' + --and me.nrodivisao = 2 + and me.dtainiciomovestoque <= trunc(sysdate)-1 + and mrl_promocao.nroempresa = mrl_promocaoitem.nroempresa + and mrl_promocao.seqpromocao = mrl_promocaoitem.seqpromocao + and mrl_promocao.centralloja = mrl_promocaoitem.centralloja + and mrl_promocao.nrosegmento = mrl_promocaoitem.nrosegmento + and mrl_promocaoitem.seqproduto = mrl_prodempseg.seqproduto + and mrl_promocao.nrosegmento = mrl_prodempseg.nrosegmento + and mrl_promocao.nroempresa = mrl_prodempseg.nroempresa + and mrl_promocaoitem.qtdembalagem = mrl_prodempseg.qtdembalagem + and mp.seqproduto = mrl_prodempseg.seqproduto + and mfe.seqfamilia = mp.seqfamilia + and mfe.qtdembalagem = mrl_prodempseg.qtdembalagem + and nvl(mrl_promocao.tipopromoc, 'N') in ('N', 'F', 'A', 'S') + and mrl_promocao.dtainicio >= trunc(sysdate)-90--365 + AND mrl_prodempseg.nroempresa = ${args.nrempresa} + AND mrl_prodempseg.seqproduto = ${args.codproduto} + order by mrl_promocao.dtainicio desc + `, + }; + }, + /** SEM RETORNO DE INFORMAÇÕES */ + detalhe_custo_liquido: (args) => { + return { + sql: /*sql*/ ` + select mcdiafam.dtaentradasaida, + mcdiafam.nroempresa, + PROD.SEQPRODUTO, + mcdiafam.seqfamilia, + mcdiafam.qtdestqinicial estqinicial, + qtdestqinicial + qtdentrada - qtdsaida estqfinal, + --trunc(cmdiavlrnf,2) custo + cmdiavlrnf custo + from consinco.mrl_custodiafam mcdiafam + INNER JOIN consinco.MAP_PRODUTO PROD + ON PROD.SEQFAMILIA = MCDIAFAM.SEQFAMILIA + inner join max_empresa me + on me.nroempresa = mcdiafam.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque <= trunc(sysdate)-1 + --and me.nrodivisao in (2,4) + where 1=1 + and mcdiafam.dtaentradasaida >= trunc(sysdate)-365 + AND mcdiafam.nroempresa = ${args.nrempresa} + AND PROD.SEQPRODUTO = ${args.codproduto} + order by mcdiafam.dtaentradasaida desc + `, + }; + }, + /** SEM RETORNO DE INFORMAÇÕES */ + detalhe_estoque_disponivel: (args) => { + return { + sql: /*sql*/ ` + select + cdia.dtaentradasaida, + cdia.nroempresa, + cdia.seqproduto, + cdia.qtdentrada, + cdia.qtdsaida, + cdia.qtdestqinicial + cdia.qtdentrada - cdia.qtdsaida qtdsaldo + from consinco.mrl_custodia cdia + join consinco.max_empresa me + on me.nroempresa = cdia.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque < trunc(sysdate) + and me.nrodivisao = 2 + where cdia.dtaentradasaida >= sysdate - 365 + and cdia.seqproduto = ${args.codproduto} + and cdia.nroempresa = ${args.nrempresa} + union all + select + mle.dtaentradasaida, + mle.nroempresa, + mle.seqproduto, + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) qtdentrada, + sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaida, + cdia.qtdestqinicial + + sum(case when mle.tiplancto = 'E' then mle.qtdlancto else 0 end) + - sum(case when mle.tiplancto = 'S' then mle.qtdlancto else 0 end) qtdsaldo + from consinco.mrl_lanctoestoque mle + join consinco.max_empresa me + on me.nroempresa = mle.nroempresa + and me.status = 'A' + and me.dtainiciomovestoque < trunc(sysdate) + --and me.nrodivisao = 4 + join consinco.mrl_custodia cdia + on cdia.dtaentradasaida = mle.dtaentradasaida + and cdia.nroempresa = mle.nroempresa + and cdia.seqproduto = mle.seqproduto + where mle.dtaentradasaida >= sysdate - 365 + --and mle.codgeraloper not in (301,302) + and mle.seqproduto = ${args.codproduto} + and mle.nroempresa = ${args.nrempresa} + group by + mle.dtaentradasaida, + mle.nroempresa, + mle.seqproduto, + cdia.qtdestqinicial + order by dtaentradasaida desc + `, + }; + }, + /** SEM RETORNO DE INFORMAÇÕES */ + detalhe_estoque_transito: (args) => { + return { + sql: /*sql*/ ` + SELECT + a.nroempresa, + b.seqproduto, + INITCAP(C.NOMERAZAO) FORNECEDOR, + A.NUMERONF, + A.SERIENF, + A.DTAEMISSAO, + A.DTAENTRADA, + B.QUANTIDADE, + B.VLRITEM VALOR + from consinco.MLF_AUXNOTAFISCAL A, consinco.MLF_AUXNFITEM B, consinco.GE_PESSOA C, consinco.MAP_PRODUTO D + WHERE 1=1 + and B.SEQAUXNOTAFISCAL = A.SEQAUXNOTAFISCAL + AND C.SEQPESSOA = A.SEQPESSOA + AND D.SEQPRODUTO = B.SEQPRODUTO + AND A.DTAEMISSAO >= SYSDATE-365 + AND a.nroempresa = ${args.nrempresa} + AND b.seqproduto = ${args.codproduto} + order by A.DTAEMISSAO, A.NUMERONF, A.SERIENF + `, + }; + }, + }, }); From 761cd48cf0425aaf6e336e734d8cdce1d8776431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Tue, 28 Apr 2026 10:25:08 -0300 Subject: [PATCH 27/41] =?UTF-8?q?Corre=C3=A7=C3=A3o=20da=20query=20de=20co?= =?UTF-8?q?nsulta=20"ISNUMERIC"=20para=20REGEX,=20verificando=20se=20?= =?UTF-8?q?=C3=A9=20um=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/products/products.module.ts | 65 +++++++++++++++++---------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 031fbfe..370ad27 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1813,38 +1813,39 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) consulta: (args) => { return { sql: /*sql*/ ` - SELECT - CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, - p.DESCCOMPLETA AS title - FROM - CONSINCO.MAP_PRODUTO p - WHERE - 1 = 1 - AND ( - ( - ${args.filtro} IS NOT NULL - AND ( - p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' - OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') - ) - ) - OR ( - ${args.ean} IS NOT NULL - AND EXISTS ( - SELECT 1 - FROM CONSINCO.MAP_PRODCODIGO A - WHERE A.SEQPRODUTO = p.SEQPRODUTO - AND ISNUMERIC(A.CODACESSO) = 'S' - AND A.CODACESSO = ${args.ean} - ) - ) - OR ( - ${args.filtro} IS NULL - AND ${args.ean} IS NULL - ) - ) - ORDER BY - 2 +SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, + p.DESCCOMPLETA AS title + FROM CONSINCO.MAP_PRODUTO p + WHERE 1 = 1 + AND ( + -- Bloco 1: Filtro por Código Interno ou Descrição + ( + ${args.filtro} IS NOT NULL + AND ( + p.SEQPRODUTO LIKE '%' || ${args.filtro} || '%' + OR UPPER(p.DESCCOMPLETA) LIKE UPPER('%' || ${args.filtro} || '%') + ) + ) + OR + -- Bloco 2: Filtro por EAN (Código de Barras) + ( + ${args.ean} IS NOT NULL + AND EXISTS ( + SELECT 1 + FROM CONSINCO.MAP_PRODCODIGO A + WHERE A.SEQPRODUTO = p.SEQPRODUTO + AND REGEXP_LIKE(A.CODACESSO, '^[0-9]+$') + AND A.CODACESSO = ${args.ean} + ) + ) + OR + -- Bloco 3: Caso ambos os filtros estejam nulos (Traz tudo) + ( + ${args.filtro} IS NULL + AND ${args.ean} IS NULL + ) + ) + ORDER BY 2 `, }; }, From 37f375e6950563e939d55af13d4f95466c01934d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Tue, 28 Apr 2026 11:09:25 -0300 Subject: [PATCH 28/41] Ajuste na query --- src/products/products.module.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 370ad27..c589697 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -911,7 +911,6 @@ export default moduleFactory NVL(pemp.estqtroca,0) EstoqueTroca, NVL(pemp.qtdpedrectransito_depreciada,0) EstoqueTransito, --pemp.qtdpendpedcompra_depreciada EstoqueFuturo, - NULL EstoqueFuturo, -- NAO TEM NO BIG NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Incluído estqoutro para não ser necessário utilizar MADV_COMPOSICAORESERVASELINV ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 @@ -946,7 +945,6 @@ export default moduleFactory end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, --pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, - NULL EstoqueFuturoCD, -- NAO TEM NO BIG -- [inline: consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa, pemp.seqproduto)] (select max(mnf_de.Dtaentrada) @@ -2246,7 +2244,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, NVL(pemp.estqtroca,0) EstoqueTroca, NVL(pemp.qtdpedrectransito_depreciada,0) EstoqueTransito, --pemp.qtdpendpedcompra_depreciada EstoqueFuturo, - NULL EstoqueFuturo, -- NAO TEM NO BIG NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Incluído estqoutro para não ser necessário utilizar MADV_COMPOSICAORESERVASELINV ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 @@ -2281,7 +2278,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, --pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, - NULL EstoqueFuturoCD, -- NAO TEM NO BIG -- [inline: consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa, pemp.seqproduto)] (select max(mnf_de.Dtaentrada) From e501f2f310b6446f61eaec718028335415f8db46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Tue, 28 Apr 2026 11:24:30 -0300 Subject: [PATCH 29/41] Ajuste na query --- src/products/products.module.ts | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index c589697..6e7c2fe 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -944,9 +944,7 @@ export default moduleFactory when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, - --pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, - - -- [inline: consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa, pemp.seqproduto)] + pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, (select max(mnf_de.Dtaentrada) from mlf_notafiscal mnf_de inner join mlf_nfitem mnfi_de @@ -1816,7 +1814,7 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, FROM CONSINCO.MAP_PRODUTO p WHERE 1 = 1 AND ( - -- Bloco 1: Filtro por Código Interno ou Descrição + -- Bloco 1 - Filtro por Código Interno ou Descrição ( ${args.filtro} IS NOT NULL AND ( @@ -1825,7 +1823,7 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, ) ) OR - -- Bloco 2: Filtro por EAN (Código de Barras) + -- Bloco 2 - Filtro por EAN (Código de Barras) ( ${args.ean} IS NOT NULL AND EXISTS ( @@ -1837,7 +1835,7 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, ) ) OR - -- Bloco 3: Caso ambos os filtros estejam nulos (Traz tudo) + -- Bloco 3 - Caso ambos os filtros estejam nulos (Traz tudo) ( ${args.filtro} IS NULL AND ${args.ean} IS NULL @@ -1854,7 +1852,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, --(SELECT COMPRADOR FROM tb_comprador tcomp WHERE tcomp.COMPRADOR = mco.comprador) AS comprador, 'BIG' AS comprador, nvl(mff.fornecedor, 'N/A') fornecedor, - -- [inline: consinco.gmgbfcategoriafamilian1(pro.seqfamilia, me.nrodivisao, 1)] (select max(b_cat.caminhocompleto) from consinco.map_famdivcateg a_cat, consinco.map_categoria b_cat where a_cat.seqcategoria = b_cat.seqcategoria @@ -1889,8 +1886,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, end, 2) PrecoVarejo, trunc(nvl(pemp.medvdiaforapromoc,0),4) MDV, - - -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg.nrosegmentoprinc, seg_mg.qtdembalagem, (round( ( pe_mg.CMULTVLRNF + pe_mg.CMULTIPI - decode( 'L', 'L', pe_mg.CMULTCREDICMS + @@ -1927,7 +1922,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, when pes2.precovalidpromoc = 0.00 then nvl(pes2.precovalidnormal,0) end / pes2.qtdembalagem,2 ) - -- [inline: gmgb_fn_buscamargemproduto(pemp.nroempresa, pemp.seqproduto)] then nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, emp_mg2.nrosegmentoprinc, seg_mg2.qtdembalagem, (round( ( pe_mg2.CMULTVLRNF + pe_mg2.CMULTIPI - decode( 'L', 'L', pe_mg2.CMULTCREDICMS + @@ -1955,7 +1949,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, on fam_mg2.seqfamilia = pr_mg2.seqfamilia where emp_mg2.nroempresa = pemp.nroempresa),0) else - -- [inline: CONSINCO.GMGB_FN_BUSCAMARGEMPRODUTO_AT2(pemp.nroempresa, pemp.seqproduto)] nvl((select case when at2_q.precovalidpromoc > 0 then round(at2_q.mgmprecovdapromoc,2) when at2_q.precovalidnormal > 0 then round(at2_q.mgmprecominvdaempresa,2) end @@ -2243,8 +2236,8 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, NVL(pemp.estqtroca,0) EstoqueTroca, NVL(pemp.qtdpedrectransito_depreciada,0) EstoqueTransito, - --pemp.qtdpendpedcompra_depreciada EstoqueFuturo, - NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, --24/05/2024 - cfreitas - Incluído estqoutro para não ser necessário utilizar MADV_COMPOSICAORESERVASELINV + pemp.qtdpendpedcompra_depreciada EstoqueFuturo, + NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 when NVL(pemp.medvdiaforapromoc,0) > 0 then (nvl(case when me.nroempresa in (979, 980, 981) then trunc(nvl(pemp.estqdeposito,0), 3) else trunc(nvl(pemp.estqloja,0), 3) end,0) - NVL(pemp.qtdreservadavda,0) ) / trunc(nvl(pemp.medvdiaforapromoc,1),4) @@ -2258,7 +2251,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, when pemp.formaabastecimento = 'C' then 'CROSS' when pemp.formaabastecimento = 'N' then 'CENTRAL-EDL' when pemp.formaabastecimento = 'E' then 'LOJA-EDL' - -- [inline: gmgb_fn_busca_forma_abastecfam(pro.seqfamilia, md.nrodivisao)] when pemp.formaabastecimento is null then ( select case when mfd_fa.formaabastecimento = 'I' then 'ARMAZENAGEM' @@ -2277,9 +2269,7 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, - --pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, - - -- [inline: consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa, pemp.seqproduto)] + pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, (select max(mnf_de.Dtaentrada) from mlf_notafiscal mnf_de inner join mlf_nfitem mnfi_de @@ -2319,7 +2309,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, nvl(pes.precovalidpromoc,0) PrecoPromoc, nvl(pes.precovalidnormal,0) PrecoNormal, nvl(pes3.precovalidpromoc,0) PrecoMeuMambo, - -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 15)] case when pes3.precovalidpromoc > 0 then nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 15, seg_mbo1.qtdembalagem, (round( ( pe_mbo1.CMULTVLRNF + pe_mbo1.CMULTIPI - @@ -2350,7 +2339,6 @@ SELECT CAST(p.SEQPRODUTO AS NUMERIC(15)) AS code, else 0 end MargemMeuMambo, - -- [inline: consinco.mbo_fn_buscamargemprodutoseg(pemp.nroempresa, pemp.seqproduto, 2, 'S')] nvl((select round(max(consinco.fc5margempreco(pemp.seqproduto, pemp.nroempresa, 2, seg_mbo2.qtdembalagem, (round( ( pe_mbo2.CMULTVLRNF + pe_mbo2.CMULTIPI - decode( 'L', 'L', pe_mbo2.CMULTCREDICMS + From 25d4ed2f1534075ae960e840521b7cbf4c0dd37e Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Tue, 28 Apr 2026 14:17:10 -0300 Subject: [PATCH 30/41] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20de=20campos=20e?= =?UTF-8?q?=20Queries?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 207 ++++++++++++++++++++------------------ 1 file changed, 111 insertions(+), 96 deletions(-) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index f8f1685..35600a7 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -30,40 +30,49 @@ export default moduleFactory format: "currency_short", }, { - label: "VDA", - column: "vda", + label: "Mês Atual", + column: "mes_atual", format: "currency_short", }, { - label: "DMA", - column: "dma", + label: "Dif ($)", + column: "dif_mes_atual", format: "currency_short", }, { - label: "Meta Dia", - column: "meta_dia", - format: "currency_short", - }, - { - label: "Meta Margem Dia", - column: "meta_margem_dia", + label: "% Variação", + column: "variacao_atual", format: "percentage", }, { - label: "Qtd Clientes", - column: "qtd_clientes", - format: "integer", + label: "Mês Anterior", + column: "mes_anterior", + format: "currency_short", }, { - label: "Ticket Médio", - column: "ticket_medio", - format: "currency", + label: "Dif ($)", + column: "dif_mes_anterior", + format: "currency_short", }, { - label: "Margem", - column: "margem", + label: "% Variação", + column: "variacao_mes_anterior", + format: "percentage", + }, + { + label: "Ano Anterior", + column: "ano_anterior", + format: "currency_short", + }, + { + label: "Dif ($)", + column: "dif_ano_anterior", + format: "currency_short", + }, + { + label: "% Variação", + column: "variacao_ano_anterior", format: "percentage", - accent: true, }, ], }, @@ -108,88 +117,94 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, C5_big: {flash: (args) => { return { sql: /*sql*/ ` - SELECT - CASE - WHEN GROUPING(x.canalapp) = 1 THEN 'TOTAL' - ELSE x.canalapp - END AS canalapp, - - CASE - WHEN GROUPING(x.canalapp) = 1 THEN 1 - ELSE 0 - END AS is_total, - - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, - - CASE - WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_atual, - - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_anterior, - - CASE - WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_mes_anterior, - - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_ano_anterior, - - CASE - WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_ano_anterior - - FROM ( SELECT - n.codigo, - n.nome AS canalapp, - r.valor_meta_efetiva, - r.valor_venda, - CASE - WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - THEN 'ATUAL' + CASE + WHEN GROUPING(x.canalapp) = 1 THEN null + ELSE x.canalapp + END AS canalapp, - WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) - THEN 'MES_ANTERIOR' + x.canalapp AS nomeempresaapp, - WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) - THEN 'ANO_ANTERIOR' - END AS periodo + CASE + WHEN GROUPING(x.canalapp) = 1 THEN 1 + ELSE 0 + END AS is_total, - FROM tb_flash_nodo_resumo_venda r - JOIN tb_flash_nodo n - ON n.id_nodo = r.id_nodo - WHERE n.tipo_nodo = 'EMPRESA' - AND ( - r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) - OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) - ) - ) x + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, - GROUP BY ROLLUP(x.codigo, x.canalapp) + CASE + WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_atual, - ORDER BY is_total, canalapp + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_anterior, + + CASE + WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_mes_anterior, + + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_ano_anterior, + + CASE + WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_ano_anterior + + FROM ( + SELECT + n.codigo, + n.nome AS canalapp, + r.valor_meta_efetiva, + r.valor_venda, + CASE + WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + THEN 'ATUAL' + + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + THEN 'MES_ANTERIOR' + + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + THEN 'ANO_ANTERIOR' + END AS periodo + + FROM tb_flash_nodo_resumo_venda r + JOIN tb_flash_nodo n + ON n.id_nodo = r.id_nodo + WHERE n.tipo_nodo = 'EMPRESA' + AND ( + r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + ) + ) x + + GROUP BY GROUPING SETS ( + (x.codigo, x.canalapp), + () + ) + ORDER BY + CASE WHEN GROUPING(x.canalapp) = 1 THEN 1 ELSE 0 END, + x.canalapp `,}; }, }, From dbbf964dff5335bece9d4ceabec452ef67f0fcc5 Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Tue, 28 Apr 2026 15:07:12 -0300 Subject: [PATCH 31/41] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20de=20Query?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 145 ++++++++++++++++++-------------------- 1 file changed, 70 insertions(+), 75 deletions(-) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 35600a7..38371f0 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -118,93 +118,88 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, return { sql: /*sql*/ ` SELECT - CASE - WHEN GROUPING(x.canalapp) = 1 THEN null - ELSE x.canalapp - END AS canalapp, + 'Lojas' AS canalapp, + + x.nomeempresaapp AS nomeempresaapp, - x.canalapp AS nomeempresaapp, + CASE + WHEN GROUPING(x.nomeempresaapp) = 1 THEN 1 + ELSE 0 + END AS is_total, - CASE - WHEN GROUPING(x.canalapp) = 1 THEN 1 - ELSE 0 - END AS is_total, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, + CASE + WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_atual, - CASE - WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_atual, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_anterior, - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_anterior, + CASE + WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_mes_anterior, - CASE - WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_mes_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_ano_anterior, - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_ano_anterior, + CASE + WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_ano_anterior - CASE - WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_ano_anterior + FROM ( + SELECT + n.codigo, + n.nome AS nomeempresaapp, + r.valor_meta_efetiva, + r.valor_venda, + CASE + WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + THEN 'ATUAL' - FROM ( - SELECT - n.codigo, - n.nome AS canalapp, - r.valor_meta_efetiva, - r.valor_venda, - CASE - WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - THEN 'ATUAL' + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + THEN 'MES_ANTERIOR' - WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) - THEN 'MES_ANTERIOR' + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + THEN 'ANO_ANTERIOR' + END AS periodo - WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) - THEN 'ANO_ANTERIOR' - END AS periodo + FROM tb_flash_nodo_resumo_venda r + JOIN tb_flash_nodo n + ON n.id_nodo = r.id_nodo + WHERE n.tipo_nodo = 'EMPRESA' + AND ( + r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + ) + ) x - FROM tb_flash_nodo_resumo_venda r - JOIN tb_flash_nodo n - ON n.id_nodo = r.id_nodo - WHERE n.tipo_nodo = 'EMPRESA' - AND ( - r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) - OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) - ) - ) x - - GROUP BY GROUPING SETS ( - (x.codigo, x.canalapp), - () - ) - ORDER BY - CASE WHEN GROUPING(x.canalapp) = 1 THEN 1 ELSE 0 END, - x.canalapp + /*GROUP BY GROUPING SETS ( + (x.codigo, x.canalapp), + () + )*/ + group by rollup(x.nomeempresaapp) `,}; }, }, From 57919f367ca6887576a09829edcc583adcc89b2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Tue, 28 Apr 2026 15:20:29 -0300 Subject: [PATCH 32/41] Ajuste na query do mambo --- src/products/products.module.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/products/products.module.ts b/src/products/products.module.ts index 6e7c2fe..5a2c2e2 100644 --- a/src/products/products.module.ts +++ b/src/products/products.module.ts @@ -1438,8 +1438,8 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) end EstoqueDisponivel, NVL(pemp.estqtroca,0) EstoqueTroca, - NVL(pemp.qtdpedrectransito_depreciada,0) EstoqueTransito, - pemp.qtdpendpedcompra_depreciada EstoqueFuturo, + NVL(pemp.qtdpedrectransito,0) EstoqueTransito, + pemp.qtdpendpedcompra EstoqueFuturo, NVL(pemp.qtdreservadavda,0) + nvl(pemp.estqoutro,0) EstoqueReservado, ROUND(nvl(case when NVL(pemp.medvdiaforapromoc, 0) = 0 then 0 @@ -1462,7 +1462,7 @@ and pes2.qtdembalagem = (select nvl(max(pes3.qtdembalagem), 1) when pes.precovalidpromoc = 0.00 then 'NORMAL' end Situacao, pempcd.estqdeposito - nvl(pempcd.qtdreservadavda,0) EstoqueDisponivelCD, - pempcd.qtdpendpedcompra_depreciada EstoqueFuturoCD, + pempcd.qtdpendpedcompra EstoqueFuturoCD, consinco.gmgb_fn_busca_dtult_entrada(pemp.nroempresa,pemp.seqproduto) DATAULTIMAENTRADA, pemp.dtaultvenda DATAULTIMAVENDA, From 65045147089d77fdbd6376ff35907db6843cac02 Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Wed, 29 Apr 2026 15:32:27 -0300 Subject: [PATCH 33/41] =?UTF-8?q?Altera=C3=A7=C3=A3o=20em=20query=20Flash?= =?UTF-8?q?=20Vendas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 148 ++++++++++++++++++-------------------- 1 file changed, 69 insertions(+), 79 deletions(-) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 38371f0..1212172 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -117,89 +117,79 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, C5_big: {flash: (args) => { return { sql: /*sql*/ ` - SELECT - 'Lojas' AS canalapp, - - x.nomeempresaapp AS nomeempresaapp, - - CASE - WHEN GROUPING(x.nomeempresaapp) = 1 THEN 1 - ELSE 0 - END AS is_total, - - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, - - CASE - WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_atual, - - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_anterior, - - CASE - WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_mes_anterior, - - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_ano_anterior, - - CASE - WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 - ELSE ROUND( - ((SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) / - SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 - , 2) - END AS variacao_ano_anterior - - FROM ( - SELECT - n.codigo, - n.nome AS nomeempresaapp, - r.valor_meta_efetiva, - r.valor_venda, + SELECT + 'Lojas' AS canalapp, + x.nomeempresaapp AS nomeempresaapp, CASE + WHEN GROUPING(x.nomeempresaapp) = 1 THEN 1 + ELSE 0 + END AS is_total, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, + CASE + WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_atual, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) - + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_mes_anterior, + CASE + WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_mes_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) - + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_ano_anterior, + CASE + WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_ano_anterior + FROM + ( + SELECT + n.codigo, + n.nome AS nomeempresaapp, + r.valor_meta_efetiva, + r.valor_venda, + CASE WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - THEN 'ATUAL' - + THEN 'ATUAL' WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) - THEN 'MES_ANTERIOR' - + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + THEN 'MES_ANTERIOR' WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) - THEN 'ANO_ANTERIOR' - END AS periodo - - FROM tb_flash_nodo_resumo_venda r - JOIN tb_flash_nodo n - ON n.id_nodo = r.id_nodo - WHERE n.tipo_nodo = 'EMPRESA' - AND ( - r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') - OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) - OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) - AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) - ) - ) x - - /*GROUP BY GROUPING SETS ( - (x.codigo, x.canalapp), - () - )*/ - group by rollup(x.nomeempresaapp) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + THEN 'ANO_ANTERIOR' + END AS periodo + FROM + tb_flash_nodo_resumo_venda r + JOIN tb_flash_nodo n + ON + n.id_nodo = r.id_nodo + WHERE + n.tipo_nodo = 'EMPRESA' + AND ( + r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_venda}, 'YYYY-MM-DD') + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -1) + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_venda}, 'YYYY-MM-DD'), -12) + ) + ) x + GROUP BY + ROLLUP(x.nomeempresaapp) `,}; }, }, From 0ea459efbe7982d5655fd6f4fcf20e327f48b0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Wed, 29 Apr 2026 17:46:00 -0300 Subject: [PATCH 34/41] feat: Ajuste no gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index f06235c..93cae28 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules dist +.claude/ \ No newline at end of file From 91b888d22c02630ed780ea3f67efa17cd219316e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonath=C3=A3=20Correa?= Date: Wed, 29 Apr 2026 17:47:00 -0300 Subject: [PATCH 35/41] feat: batman --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 93cae28..2654dc2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules dist -.claude/ \ No newline at end of file +.claude/ +.claude/worktrees/admiring-goldberg-781876 From 575cb79c7443506e1bd91399fc419c4022164d5f Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Thu, 30 Apr 2026 10:16:40 -0300 Subject: [PATCH 36/41] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20do=20Flash=20de?= =?UTF-8?q?=20Vendas=20para=20realizar=20o=20agendamento=20das=20atualiza?= =?UTF-8?q?=C3=A7=C3=B5es.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 1212172..783d010 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -198,4 +198,20 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, sql: /*sql*/ ``,}; }, }, + }).withSchedules({ + C5_big: [ + { + name: "Procedure que atualiza os dados do flash", + command: /*sql*/ `BEGIN + PRC_FLASH_ATUALIZA_VENDA( + p_data_inicial => TRUNC(SYSDATE) - 30, + p_data_final => TRUNC(SYSDATE), + p_empresa_ini => 1, + p_empresa_fim => 10 + ); + END`, + cron: "0 * * * *", + timeout_seconds: 2400, + }, + ], }); From 529a57a13be566541430704a2bb23e29440cbf3a Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Thu, 30 Apr 2026 10:33:13 -0300 Subject: [PATCH 37/41] =?UTF-8?q?Cria=C3=A7=C3=A3o=20de=20migrations=20par?= =?UTF-8?q?a=20criar=20tabelas=20do=20flash=20de=20vendas.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20260430000001_seq_tb_flash_nodo.sql | 23 ++ .../C5_big/20260430000002_tb_flash_nodo.sql | 93 +++++++ ...20260430000003_seq_tb_flash_fato_venda.sql | 23 ++ .../20260430000004_tb_flash_fato_venda.sql | 111 +++++++++ ...20260430000005_seq_tb_flash_meta_venda.sql | 23 ++ .../20260430000006_tb_flash_meta_venda.sql | 80 ++++++ ...20260430000007_tb_flash_meta_venda_stg.sql | 73 ++++++ ...20260430000008_vw_flash_meta_venda_stg.sql | 33 +++ ...0000009_seq_tb_flash_nodo_resumo_venda.sql | 23 ++ ...60430000010_tb_flash_nodo_resumo_venda.sql | 85 +++++++ ...0000011_prc_flash_carga_meta_venda_stg.sql | 36 +++ ...60430000012_prc_flash_carga_meta_venda.sql | 109 +++++++++ ...430000013_prc_flash_carga_resumo_venda.sql | 107 +++++++++ ...0260430000014_prc_flash_atualiza_venda.sql | 81 +++++++ ...0430000015_prc_flash_carga_dados_venda.sql | 227 ++++++++++++++++++ 15 files changed, 1127 insertions(+) create mode 100644 migrations/C5_big/20260430000001_seq_tb_flash_nodo.sql create mode 100644 migrations/C5_big/20260430000002_tb_flash_nodo.sql create mode 100644 migrations/C5_big/20260430000003_seq_tb_flash_fato_venda.sql create mode 100644 migrations/C5_big/20260430000004_tb_flash_fato_venda.sql create mode 100644 migrations/C5_big/20260430000005_seq_tb_flash_meta_venda.sql create mode 100644 migrations/C5_big/20260430000006_tb_flash_meta_venda.sql create mode 100644 migrations/C5_big/20260430000007_tb_flash_meta_venda_stg.sql create mode 100644 migrations/C5_big/20260430000008_vw_flash_meta_venda_stg.sql create mode 100644 migrations/C5_big/20260430000009_seq_tb_flash_nodo_resumo_venda.sql create mode 100644 migrations/C5_big/20260430000010_tb_flash_nodo_resumo_venda.sql create mode 100644 migrations/C5_big/20260430000011_prc_flash_carga_meta_venda_stg.sql create mode 100644 migrations/C5_big/20260430000012_prc_flash_carga_meta_venda.sql create mode 100644 migrations/C5_big/20260430000013_prc_flash_carga_resumo_venda.sql create mode 100644 migrations/C5_big/20260430000014_prc_flash_atualiza_venda.sql create mode 100644 migrations/C5_big/20260430000015_prc_flash_carga_dados_venda.sql diff --git a/migrations/C5_big/20260430000001_seq_tb_flash_nodo.sql b/migrations/C5_big/20260430000001_seq_tb_flash_nodo.sql new file mode 100644 index 0000000..de6517f --- /dev/null +++ b/migrations/C5_big/20260430000001_seq_tb_flash_nodo.sql @@ -0,0 +1,23 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_NODO START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_NODO'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000002_tb_flash_nodo.sql b/migrations/C5_big/20260430000002_tb_flash_nodo.sql new file mode 100644 index 0000000..0bd5ea7 --- /dev/null +++ b/migrations/C5_big/20260430000002_tb_flash_nodo.sql @@ -0,0 +1,93 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE ' + CREATE TABLE TB_FLASH_NODO ( + ID_NODO NUMBER NOT NULL, + ID_NODO_PAI NUMBER, + TIPO_NODO VARCHAR2(30) NOT NULL, + CODIGO VARCHAR2(60) NOT NULL, + NOME VARCHAR2(300) NOT NULL, + NIVEL NUMBER NOT NULL, + ORDEM_EXIBICAO NUMBER, + ATIVO CHAR(1) DEFAULT ''S'' NOT NULL, + COD_EMPRESA NUMBER, + COD_PRODUTO NUMBER, + SEQPRODUTOBASE NUMBER, + DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL, + DATA_ATUALIZACAO DATE, + CONSTRAINT PK_TB_FLASH_NODO PRIMARY KEY (ID_NODO), + CONSTRAINT FK_TB_FLASH_NODO_PAI FOREIGN KEY (ID_NODO_PAI) REFERENCES TB_FLASH_NODO (ID_NODO), + CONSTRAINT CK_TB_FLASH_NODO_TIPO CHECK (TIPO_NODO IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'')), + CONSTRAINT CK_TB_FLASH_NODO_ATIVO CHECK (ATIVO IN (''S'', ''N'')), + CONSTRAINT CK_TB_FLASH_NODO_NIVEL CHECK (NIVEL >= 1) + )'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_PAI'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_PAI ON TB_FLASH_NODO (ID_NODO_PAI)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_TIPO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_TIPO ON TB_FLASH_NODO (TIPO_NODO)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_EMPRESA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_EMPRESA ON TB_FLASH_NODO (COD_EMPRESA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_PRODUTO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_PRODUTO ON TB_FLASH_NODO (COD_PRODUTO)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_NODO_PAI_TIPO_COD'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO ADD CONSTRAINT UK_TB_FLASH_NODO_PAI_TIPO_COD UNIQUE (ID_NODO_PAI, TIPO_NODO, CODIGO)'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_NODO CASCADE CONSTRAINTS PURGE'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000003_seq_tb_flash_fato_venda.sql b/migrations/C5_big/20260430000003_seq_tb_flash_fato_venda.sql new file mode 100644 index 0000000..ff001e9 --- /dev/null +++ b/migrations/C5_big/20260430000003_seq_tb_flash_fato_venda.sql @@ -0,0 +1,23 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_FATO_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_FATO_VENDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_FATO_VENDA'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_FATO_VENDA'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000004_tb_flash_fato_venda.sql b/migrations/C5_big/20260430000004_tb_flash_fato_venda.sql new file mode 100644 index 0000000..6027f81 --- /dev/null +++ b/migrations/C5_big/20260430000004_tb_flash_fato_venda.sql @@ -0,0 +1,111 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE ' + CREATE TABLE TB_FLASH_FATO_VENDA ( + ID_FATO NUMBER NOT NULL, + DATA_REFERENCIA DATE NOT NULL, + ANO_REFERENCIA NUMBER(4) NOT NULL, + MES_REFERENCIA NUMBER(2) NOT NULL, + DIA_REFERENCIA NUMBER(2), + DIA_SEMANA NUMBER(2), + ID_NODO NUMBER NOT NULL, + ID_NODO_EMPRESA NUMBER NOT NULL, + COD_EMPRESA NUMBER NOT NULL, + NOME_EMPRESA VARCHAR2(200), + COD_PRODUTO NUMBER NOT NULL, + DESCRICAO_PRODUTO VARCHAR2(300), + SEQPRODUTOBASE NUMBER, + NRODIVISAO NUMBER, + NROSEGMENTO NUMBER, + NRO_TICKETS NUMBER(18,6), + VLR_IMP_VENDA NUMBER(18,6), + QTDE_VENDA NUMBER(18,6), + VLR_VENDA NUMBER(18,6), + VL_TICKET_MEDIO NUMBER(18,6), + PROPQTDPRODUTOBASE NUMBER(18,6), + DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL, + CONSTRAINT PK_TB_FLASH_FATO_VENDA PRIMARY KEY (ID_FATO), + CONSTRAINT FK_TB_FLASH_FATO_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO), + CONSTRAINT FK_TB_FLASH_FATO_VENDA_EMP FOREIGN KEY (ID_NODO_EMPRESA) REFERENCES TB_FLASH_NODO (ID_NODO), + CONSTRAINT CK_TB_FLASH_FATO_VENDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12) + )'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_DATA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_DATA ON TB_FLASH_FATO_VENDA (DATA_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_ANOMES'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_ANOMES ON TB_FLASH_FATO_VENDA (ANO_REFERENCIA, MES_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_NODO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_NODO ON TB_FLASH_FATO_VENDA (ID_NODO)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_EMP'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_EMP ON TB_FLASH_FATO_VENDA (COD_EMPRESA, ANO_REFERENCIA, MES_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_FATO_VENDA_PROD'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_FATO_VENDA_PROD ON TB_FLASH_FATO_VENDA (COD_PRODUTO)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_FATO_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_FATO_VENDA ADD CONSTRAINT UK_TB_FLASH_FATO_VENDA UNIQUE (DATA_REFERENCIA, COD_EMPRESA, COD_PRODUTO, NROSEGMENTO)'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_FATO_VENDA'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_FATO_VENDA CASCADE CONSTRAINTS PURGE'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000005_seq_tb_flash_meta_venda.sql b/migrations/C5_big/20260430000005_seq_tb_flash_meta_venda.sql new file mode 100644 index 0000000..959b3a6 --- /dev/null +++ b/migrations/C5_big/20260430000005_seq_tb_flash_meta_venda.sql @@ -0,0 +1,23 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_META_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_META_VENDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_META_VENDA'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_META_VENDA'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000006_tb_flash_meta_venda.sql b/migrations/C5_big/20260430000006_tb_flash_meta_venda.sql new file mode 100644 index 0000000..8a99020 --- /dev/null +++ b/migrations/C5_big/20260430000006_tb_flash_meta_venda.sql @@ -0,0 +1,80 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE ' + CREATE TABLE TB_FLASH_META_VENDA ( + ID_META NUMBER NOT NULL, + ID_NODO NUMBER NOT NULL, + DATA_REFERENCIA DATE NOT NULL, + ANO_REFERENCIA NUMBER(4) NOT NULL, + MES_REFERENCIA NUMBER(2) NOT NULL, + DIA_REFERENCIA NUMBER(2) NOT NULL, + PERCENTUAL_META NUMBER(10,4), + VALOR_META NUMBER(18,6), + OBSERVACAO VARCHAR2(500), + DATA_CADASTRO DATE DEFAULT SYSDATE NOT NULL, + DATA_ATUALIZACAO DATE, + CONSTRAINT PK_TB_FLASH_META_VENDA PRIMARY KEY (ID_META), + CONSTRAINT FK_TB_FLASH_META_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO), + CONSTRAINT CK_TB_FLASH_META_VENDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12), + CONSTRAINT CK_TB_FLASH_META_VENDA_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31) + )'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_META_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_META_VENDA ADD CONSTRAINT UK_TB_FLASH_META_VENDA UNIQUE (ID_NODO, DATA_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VENDA_NODO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VENDA_NODO ON TB_FLASH_META_VENDA (ID_NODO)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VENDA_DATA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VENDA_DATA ON TB_FLASH_META_VENDA (DATA_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VENDA_ANOMESDIA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VENDA_ANOMESDIA ON TB_FLASH_META_VENDA (ANO_REFERENCIA, MES_REFERENCIA, DIA_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_VENDA'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_META_VENDA CASCADE CONSTRAINTS PURGE'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000007_tb_flash_meta_venda_stg.sql b/migrations/C5_big/20260430000007_tb_flash_meta_venda_stg.sql new file mode 100644 index 0000000..78144c6 --- /dev/null +++ b/migrations/C5_big/20260430000007_tb_flash_meta_venda_stg.sql @@ -0,0 +1,73 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_VENDA_STG'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE ' + CREATE TABLE TB_FLASH_META_VENDA_STG ( + COD_EMPRESA NUMBER NOT NULL, + TIPO_NODO VARCHAR2(30) NOT NULL, + CODIGO_NODO VARCHAR2(60) NOT NULL, + CODIGO_NODO_PAI VARCHAR2(60), + TIPO_NODO_PAI VARCHAR2(30), + DATA_REFERENCIA DATE NOT NULL, + ANO_REFERENCIA NUMBER(4) NOT NULL, + MES_REFERENCIA NUMBER(2) NOT NULL, + DIA_REFERENCIA NUMBER(2) NOT NULL, + PERCENTUAL_META NUMBER(10,4), + VALOR_META NUMBER(18,6), + OBSERVACAO VARCHAR2(500), + ORIGEM_META VARCHAR2(100), + DATA_CARGA DATE DEFAULT SYSDATE, + CONSTRAINT CK_TB_FLASH_META_VDA_STG_TIPO CHECK (TIPO_NODO IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'')), + CONSTRAINT CK_TB_FLASH_META_VDA_STG_TIPO_PAI CHECK (TIPO_NODO_PAI IN (''EMPRESA'', ''CATEGORIA'', ''PRODUTO'') OR TIPO_NODO_PAI IS NULL), + CONSTRAINT CK_TB_FLASH_META_VDA_STG_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12), + CONSTRAINT CK_TB_FLASH_META_VDA_STG_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31) + )'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VDA_STG_01'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VDA_STG_01 ON TB_FLASH_META_VENDA_STG (COD_EMPRESA, DATA_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VDA_STG_02'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VDA_STG_02 ON TB_FLASH_META_VENDA_STG (TIPO_NODO, CODIGO_NODO, CODIGO_NODO_PAI)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_META_VDA_STG_03'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_META_VDA_STG_03 ON TB_FLASH_META_VENDA_STG (ORIGEM_META)'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_META_VENDA_STG'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_META_VENDA_STG CASCADE CONSTRAINTS PURGE'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000008_vw_flash_meta_venda_stg.sql b/migrations/C5_big/20260430000008_vw_flash_meta_venda_stg.sql new file mode 100644 index 0000000..68cd596 --- /dev/null +++ b/migrations/C5_big/20260430000008_vw_flash_meta_venda_stg.sql @@ -0,0 +1,33 @@ +-- +goose Up +-- +goose StatementBegin +CREATE OR REPLACE VIEW VW_FLASH_META_VENDA_STG AS +SELECT m1.empresa_fk AS cod_empresa, 'CATEGORIA' AS tipo_nodo, TO_CHAR(m1.categoria_fk) AS codigo_nodo, + TO_CHAR(m1.categoria_pai_fk) AS codigo_nodo_pai, 'CATEGORIA' AS tipo_nodo_pai, + m1.data_referencia, m1.ano AS ano_referencia, m1.mes AS mes_referencia, m1.dia AS dia_referencia, + m1.percentual AS percentual_meta, m1.valor_meta, 'TB_METAS_CATN1' AS observacao, 'TB_METAS_CATN1' AS origem_meta +FROM vitruvio.tb_metas_catn1 m1 +UNION ALL +SELECT m2.empresa_fk, 'CATEGORIA', TO_CHAR(m2.categoria_fk), TO_CHAR(m2.categoria_pai_fk), 'CATEGORIA', + m2.data_referencia, m2.ano, m2.mes, m2.dia, m2.percentual, m2.valor_meta, 'TB_METAS_CATN2', 'TB_METAS_CATN2' +FROM vitruvio.tb_metas_catn2 m2 +UNION ALL +SELECT m3.empresa_fk, 'CATEGORIA', TO_CHAR(m3.categoria_fk), TO_CHAR(m3.categoria_pai_fk), 'CATEGORIA', + m3.data_referencia, m3.ano, m3.mes, m3.dia, m3.percentual, m3.valor_meta, 'TB_METAS_CATN3', 'TB_METAS_CATN3' +FROM vitruvio.tb_metas_catn3 m3 +UNION ALL +SELECT m4.empresa_fk, 'CATEGORIA', TO_CHAR(m4.categoria_fk), TO_CHAR(m4.categoria_pai_fk), 'CATEGORIA', + m4.data_referencia, m4.ano, m4.mes, m4.dia, m4.percentual, m4.valor_meta, 'TB_METAS_CATN4', 'TB_METAS_CATN4' +FROM vitruvio.tb_metas_catn4 m4 +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'VW_FLASH_META_VENDA_STG' AND object_type = 'VIEW'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP VIEW VW_FLASH_META_VENDA_STG'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000009_seq_tb_flash_nodo_resumo_venda.sql b/migrations/C5_big/20260430000009_seq_tb_flash_nodo_resumo_venda.sql new file mode 100644 index 0000000..274260a --- /dev/null +++ b/migrations/C5_big/20260430000009_seq_tb_flash_nodo_resumo_venda.sql @@ -0,0 +1,23 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO_RESUMO_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_TB_FLASH_NODO_RESUMO_VENDA START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_sequences WHERE sequence_name = 'SEQ_TB_FLASH_NODO_RESUMO_VENDA'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_TB_FLASH_NODO_RESUMO_VENDA'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000010_tb_flash_nodo_resumo_venda.sql b/migrations/C5_big/20260430000010_tb_flash_nodo_resumo_venda.sql new file mode 100644 index 0000000..e3bdb44 --- /dev/null +++ b/migrations/C5_big/20260430000010_tb_flash_nodo_resumo_venda.sql @@ -0,0 +1,85 @@ +-- +goose Up +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO_RESUMO_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE ' + CREATE TABLE TB_FLASH_NODO_RESUMO_VENDA ( + ID_RESUMO NUMBER NOT NULL, + ID_NODO NUMBER NOT NULL, + DATA_REFERENCIA DATE NOT NULL, + ANO_REFERENCIA NUMBER(4) NOT NULL, + MES_REFERENCIA NUMBER(2) NOT NULL, + DIA_REFERENCIA NUMBER(2) NOT NULL, + VALOR_VENDA NUMBER(18,6), + VALOR_META_PROPRIA NUMBER(18,6), + VALOR_META_FILHOS NUMBER(18,6), + VALOR_META_EFETIVA NUMBER(18,6), + PERCENTUAL_META_PROPRIA NUMBER(10,4), + PERCENTUAL_META_FILHOS NUMBER(10,4), + PERCENTUAL_META_EFETIVA NUMBER(10,4), + DESVIO NUMBER(18,6), + PERCENTUAL_ATINGIMENTO NUMBER(18,6), + DATA_APURACAO DATE DEFAULT SYSDATE NOT NULL, + CONSTRAINT PK_TB_FLASH_NODO_RES_VENDA PRIMARY KEY (ID_RESUMO), + CONSTRAINT FK_TB_FLASH_NODO_RES_VENDA_NODO FOREIGN KEY (ID_NODO) REFERENCES TB_FLASH_NODO (ID_NODO), + CONSTRAINT CK_TB_FLASH_NODO_RES_VENDA_MES CHECK (MES_REFERENCIA BETWEEN 1 AND 12), + CONSTRAINT CK_TB_FLASH_NODO_RES_VENDA_DIA CHECK (DIA_REFERENCIA BETWEEN 1 AND 31) + )'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_constraints WHERE constraint_name = 'UK_TB_FLASH_NODO_RES_VENDA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'ALTER TABLE TB_FLASH_NODO_RESUMO_VENDA ADD CONSTRAINT UK_TB_FLASH_NODO_RES_VENDA UNIQUE (ID_NODO, DATA_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_VENDA_NODO'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_VENDA_NODO ON TB_FLASH_NODO_RESUMO_VENDA (ID_NODO)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_VENDA_DATA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_VENDA_DATA ON TB_FLASH_NODO_RESUMO_VENDA (DATA_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_indexes WHERE index_name = 'IX_TB_FLASH_NODO_RES_VENDA_ANOMESDIA'; + IF v_count = 0 THEN + EXECUTE IMMEDIATE 'CREATE INDEX IX_TB_FLASH_NODO_RES_VENDA_ANOMESDIA ON TB_FLASH_NODO_RESUMO_VENDA (ANO_REFERENCIA, MES_REFERENCIA, DIA_REFERENCIA)'; + END IF; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_tables WHERE table_name = 'TB_FLASH_NODO_RESUMO_VENDA'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP TABLE TB_FLASH_NODO_RESUMO_VENDA CASCADE CONSTRAINTS PURGE'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000011_prc_flash_carga_meta_venda_stg.sql b/migrations/C5_big/20260430000011_prc_flash_carga_meta_venda_stg.sql new file mode 100644 index 0000000..24b56c3 --- /dev/null +++ b/migrations/C5_big/20260430000011_prc_flash_carga_meta_venda_stg.sql @@ -0,0 +1,36 @@ +-- +goose Up +-- +goose StatementBegin +CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_META_VENDA_STG ( + p_data_inicial IN DATE, + p_data_final IN DATE +) AS +BEGIN + DELETE FROM TB_FLASH_META_VENDA_STG + WHERE data_referencia BETWEEN p_data_inicial AND p_data_final; + + INSERT INTO TB_FLASH_META_VENDA_STG ( + cod_empresa, tipo_nodo, codigo_nodo, codigo_nodo_pai, tipo_nodo_pai, + data_referencia, ano_referencia, mes_referencia, dia_referencia, + percentual_meta, valor_meta, observacao, origem_meta, data_carga + ) + SELECT cod_empresa, tipo_nodo, codigo_nodo, codigo_nodo_pai, tipo_nodo_pai, + data_referencia, ano_referencia, mes_referencia, dia_referencia, + percentual_meta, valor_meta, observacao, origem_meta, SYSDATE + FROM VW_FLASH_META_VENDA_STG + WHERE data_referencia BETWEEN p_data_inicial AND p_data_final; + + COMMIT; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'PRC_FLASH_CARGA_META_VENDA_STG' AND object_type = 'PROCEDURE'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_META_VENDA_STG'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000012_prc_flash_carga_meta_venda.sql b/migrations/C5_big/20260430000012_prc_flash_carga_meta_venda.sql new file mode 100644 index 0000000..b27afa3 --- /dev/null +++ b/migrations/C5_big/20260430000012_prc_flash_carga_meta_venda.sql @@ -0,0 +1,109 @@ +-- +goose Up +-- +goose StatementBegin +CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_META_VENDA ( + p_data_inicial IN DATE, + p_data_final IN DATE +) AS + v_id_nodo NUMBER; + v_id_nodo_pai NUMBER; +BEGIN + DELETE FROM TB_FLASH_META_VENDA + WHERE data_referencia BETWEEN p_data_inicial AND p_data_final; + + FOR r IN ( + SELECT * + FROM TB_FLASH_META_VENDA_STG + WHERE data_referencia BETWEEN p_data_inicial AND p_data_final + ) LOOP + v_id_nodo := NULL; + v_id_nodo_pai := NULL; + + IF r.codigo_nodo_pai IS NOT NULL THEN + BEGIN + SELECT n.id_nodo + INTO v_id_nodo_pai + FROM TB_FLASH_NODO n + WHERE n.codigo = r.codigo_nodo_pai + AND n.tipo_nodo = r.tipo_nodo_pai + AND NVL(n.cod_empresa, -1) = NVL(r.cod_empresa, -1); + EXCEPTION + WHEN TOO_MANY_ROWS THEN v_id_nodo_pai := NULL; + WHEN NO_DATA_FOUND THEN v_id_nodo_pai := NULL; + END; + END IF; + + BEGIN + IF r.tipo_nodo = 'EMPRESA' THEN + SELECT n.id_nodo INTO v_id_nodo + FROM TB_FLASH_NODO n + WHERE n.tipo_nodo = 'EMPRESA' + AND n.codigo = r.codigo_nodo + AND n.id_nodo_pai IS NULL; + ELSIF r.tipo_nodo = 'PRODUTO' THEN + SELECT n.id_nodo INTO v_id_nodo + FROM TB_FLASH_NODO n + WHERE n.tipo_nodo = 'PRODUTO' + AND n.codigo = r.codigo_nodo + AND NVL(n.cod_empresa, -1) = NVL(r.cod_empresa, -1) + AND (v_id_nodo_pai IS NULL OR n.id_nodo_pai = v_id_nodo_pai); + ELSE + SELECT n.id_nodo INTO v_id_nodo + FROM TB_FLASH_NODO n + WHERE n.tipo_nodo = 'CATEGORIA' + AND n.codigo = r.codigo_nodo + AND NVL(n.cod_empresa, -1) = NVL(r.cod_empresa, -1) + AND (v_id_nodo_pai IS NULL OR n.id_nodo_pai = v_id_nodo_pai); + END IF; + EXCEPTION + WHEN TOO_MANY_ROWS THEN v_id_nodo := NULL; + WHEN NO_DATA_FOUND THEN v_id_nodo := NULL; + END; + + IF v_id_nodo IS NOT NULL THEN + MERGE INTO TB_FLASH_META_VENDA dst + USING ( + SELECT v_id_nodo AS id_nodo, + r.data_referencia AS data_referencia, + r.ano_referencia AS ano_referencia, + r.mes_referencia AS mes_referencia, + r.dia_referencia AS dia_referencia, + r.percentual_meta AS percentual_meta, + r.valor_meta AS valor_meta, + r.observacao AS observacao + FROM dual + ) src + ON (dst.id_nodo = src.id_nodo AND dst.data_referencia = src.data_referencia) + WHEN MATCHED THEN UPDATE SET + dst.percentual_meta = src.percentual_meta, + dst.valor_meta = src.valor_meta, + dst.observacao = src.observacao, + dst.ano_referencia = src.ano_referencia, + dst.mes_referencia = src.mes_referencia, + dst.dia_referencia = src.dia_referencia, + dst.data_atualizacao = SYSDATE + WHEN NOT MATCHED THEN INSERT ( + id_meta, id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia, + percentual_meta, valor_meta, observacao, data_cadastro, data_atualizacao + ) VALUES ( + SEQ_TB_FLASH_META_VENDA.NEXTVAL, src.id_nodo, src.data_referencia, src.ano_referencia, + src.mes_referencia, src.dia_referencia, src.percentual_meta, src.valor_meta, src.observacao, + SYSDATE, NULL + ); + END IF; + END LOOP; + + COMMIT; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'PRC_FLASH_CARGA_META_VENDA' AND object_type = 'PROCEDURE'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_META_VENDA'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000013_prc_flash_carga_resumo_venda.sql b/migrations/C5_big/20260430000013_prc_flash_carga_resumo_venda.sql new file mode 100644 index 0000000..9127cbf --- /dev/null +++ b/migrations/C5_big/20260430000013_prc_flash_carga_resumo_venda.sql @@ -0,0 +1,107 @@ +-- +goose Up +-- +goose StatementBegin +CREATE OR REPLACE PROCEDURE PRC_FLASH_CARGA_RESUMO_VENDA ( + p_data_inicial IN DATE, + p_data_final IN DATE +) AS +BEGIN + DELETE FROM TB_FLASH_NODO_RESUMO_VENDA + WHERE data_referencia BETWEEN p_data_inicial AND p_data_final; + + INSERT INTO TB_FLASH_NODO_RESUMO_VENDA ( + id_resumo, id_nodo, data_referencia, ano_referencia, mes_referencia, dia_referencia, + valor_venda, valor_meta_propria, valor_meta_filhos, valor_meta_efetiva, + percentual_meta_propria, percentual_meta_filhos, percentual_meta_efetiva, + desvio, percentual_atingimento, data_apuracao + ) + WITH datas AS ( + SELECT TRUNC(p_data_inicial) + LEVEL - 1 AS data_referencia + FROM dual + CONNECT BY TRUNC(p_data_inicial) + LEVEL - 1 <= TRUNC(p_data_final) + ), + venda_direta AS ( + SELECT f.id_nodo, TRUNC(f.data_referencia) AS data_referencia, + f.ano_referencia, f.mes_referencia, f.dia_referencia, + SUM(f.vlr_venda) AS valor_venda + FROM TB_FLASH_FATO_VENDA f + WHERE f.data_referencia BETWEEN p_data_inicial AND p_data_final + GROUP BY f.id_nodo, TRUNC(f.data_referencia), f.ano_referencia, f.mes_referencia, f.dia_referencia + ), + venda_hierarquia AS ( + SELECT a.id_nodo_ancestral AS id_nodo, + d.data_referencia, + EXTRACT(YEAR FROM d.data_referencia) AS ano_referencia, + EXTRACT(MONTH FROM d.data_referencia) AS mes_referencia, + EXTRACT(DAY FROM d.data_referencia) AS dia_referencia, + SUM(NVL(vd.valor_venda, 0)) AS valor_venda + FROM ( + SELECT CONNECT_BY_ROOT n.id_nodo AS id_nodo_ancestral, + n.id_nodo AS id_nodo_descendente + FROM TB_FLASH_NODO n + CONNECT BY PRIOR n.id_nodo = n.id_nodo_pai + ) a + CROSS JOIN datas d + LEFT JOIN venda_direta vd + ON vd.id_nodo = a.id_nodo_descendente + AND vd.data_referencia = d.data_referencia + GROUP BY a.id_nodo_ancestral, d.data_referencia + ), + meta_propria_diaria AS ( + SELECT m.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia, + MAX(m.percentual_meta) AS percentual_meta_propria, + SUM(m.valor_meta) AS valor_meta_propria + FROM TB_FLASH_META_VENDA m + WHERE m.data_referencia BETWEEN p_data_inicial AND p_data_final + GROUP BY m.id_nodo, m.data_referencia, m.ano_referencia, m.mes_referencia, m.dia_referencia + ), + meta_filhos_diaria AS ( + SELECT pai.id_nodo, mpd.data_referencia, mpd.ano_referencia, mpd.mes_referencia, mpd.dia_referencia, + SUM(mpd.valor_meta_propria) AS valor_meta_filhos + FROM TB_FLASH_NODO pai + JOIN TB_FLASH_NODO filho ON filho.id_nodo_pai = pai.id_nodo + JOIN meta_propria_diaria mpd ON mpd.id_nodo = filho.id_nodo + GROUP BY pai.id_nodo, mpd.data_referencia, mpd.ano_referencia, mpd.mes_referencia, mpd.dia_referencia + ), + base AS ( + SELECT n.id_nodo, d.data_referencia, + EXTRACT(YEAR FROM d.data_referencia) AS ano_referencia, + EXTRACT(MONTH FROM d.data_referencia) AS mes_referencia, + EXTRACT(DAY FROM d.data_referencia) AS dia_referencia + FROM TB_FLASH_NODO n + CROSS JOIN datas d + ) + SELECT SEQ_TB_FLASH_NODO_RESUMO_VENDA.NEXTVAL, + b.id_nodo, b.data_referencia, b.ano_referencia, b.mes_referencia, b.dia_referencia, + vh.valor_venda, + mpd.valor_meta_propria, + mfd.valor_meta_filhos, + CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, + mpd.percentual_meta_propria, + CAST(NULL AS NUMBER(10,4)), + CASE WHEN mpd.percentual_meta_propria IS NOT NULL THEN mpd.percentual_meta_propria ELSE NULL END, + NVL(vh.valor_venda, 0) - NVL(CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, 0), + CASE + WHEN NVL(CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END, 0) = 0 THEN NULL + ELSE (NVL(vh.valor_venda, 0) / CASE WHEN mpd.valor_meta_propria IS NOT NULL THEN mpd.valor_meta_propria ELSE mfd.valor_meta_filhos END) * 100 + END, + SYSDATE + FROM base b + LEFT JOIN venda_hierarquia vh ON vh.id_nodo = b.id_nodo AND vh.data_referencia = b.data_referencia + LEFT JOIN meta_propria_diaria mpd ON mpd.id_nodo = b.id_nodo AND mpd.data_referencia = b.data_referencia + LEFT JOIN meta_filhos_diaria mfd ON mfd.id_nodo = b.id_nodo AND mfd.data_referencia = b.data_referencia; + + COMMIT; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM user_objects WHERE object_name = 'PRC_FLASH_CARGA_RESUMO_VENDA' AND object_type = 'PROCEDURE'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP PROCEDURE PRC_FLASH_CARGA_RESUMO_VENDA'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000014_prc_flash_atualiza_venda.sql b/migrations/C5_big/20260430000014_prc_flash_atualiza_venda.sql new file mode 100644 index 0000000..7eef246 --- /dev/null +++ b/migrations/C5_big/20260430000014_prc_flash_atualiza_venda.sql @@ -0,0 +1,81 @@ +-- +goose Up +-- +goose StatementBegin +CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA ( + p_data_inicial IN DATE, + p_data_final IN DATE, + p_empresa_ini IN NUMBER DEFAULT NULL, + p_empresa_fim IN NUMBER DEFAULT NULL +) AS + v_inicio_execucao DATE := SYSDATE; +BEGIN + DBMS_OUTPUT.PUT_LINE('Iniciando PRC_FLASH_ATUALIZA_VENDA em ' || TO_CHAR(v_inicio_execucao, 'DD/MM/YYYY HH24:MI:SS')); + DBMS_OUTPUT.PUT_LINE('Período: ' || TO_CHAR(p_data_inicial, 'DD/MM/YYYY') || ' até ' || TO_CHAR(p_data_final, 'DD/MM/YYYY')); + + FOR r IN ( + SELECT codigo + FROM vitruvio.vi_lojas + WHERE codigo NOT IN (301, 401, 500) + AND (p_empresa_ini IS NULL OR codigo >= p_empresa_ini) + AND (p_empresa_fim IS NULL OR codigo <= p_empresa_fim) + ORDER BY codigo + ) LOOP + BEGIN + DBMS_OUTPUT.PUT_LINE('Carregando venda da empresa: ' || r.codigo); + + PRC_FLASH_CARGA_DADOS_VENDA( + p_data_inicial => p_data_inicial, + p_data_final => p_data_final, + p_empresa => r.codigo + ); + + EXCEPTION + WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE( + 'Erro ao carregar empresa ' || r.codigo || ': ' || SQLERRM + ); + RAISE; + END; + END LOOP; + + DBMS_OUTPUT.PUT_LINE('Carregando stage de metas de venda...'); + + PRC_FLASH_CARGA_META_VENDA_STG( + p_data_inicial => p_data_inicial, + p_data_final => p_data_final + ); + + DBMS_OUTPUT.PUT_LINE('Carregando metas finais de venda...'); + + PRC_FLASH_CARGA_META_VENDA( + p_data_inicial => p_data_inicial, + p_data_final => p_data_final + ); + + DBMS_OUTPUT.PUT_LINE('Atualizando resumo de venda...'); + + PRC_FLASH_CARGA_RESUMO_VENDA( + p_data_inicial => p_data_inicial, + p_data_final => p_data_final + ); + + DBMS_OUTPUT.PUT_LINE('PRC_FLASH_ATUALIZA_VENDA finalizada em ' || TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS')); + DBMS_OUTPUT.PUT_LINE('Tempo em segundos: ' || ROUND((SYSDATE - v_inicio_execucao) * 86400, 2)); + +EXCEPTION + WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE('Erro geral na PRC_FLASH_ATUALIZA_VENDA: ' || SQLERRM); + RAISE; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM all_objects WHERE object_name = 'PRC_FLASH_ATUALIZA_VENDA' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_ATUALIZA_VENDA'; + END IF; +END; +-- +goose StatementEnd diff --git a/migrations/C5_big/20260430000015_prc_flash_carga_dados_venda.sql b/migrations/C5_big/20260430000015_prc_flash_carga_dados_venda.sql new file mode 100644 index 0000000..6fd2d5b --- /dev/null +++ b/migrations/C5_big/20260430000015_prc_flash_carga_dados_venda.sql @@ -0,0 +1,227 @@ +-- +goose Up +-- +goose StatementBegin +CREATE OR REPLACE PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_VENDA ( + p_data_inicial IN DATE, + p_data_final IN DATE, + p_empresa IN NUMBER +) AS + v_id_empresa NUMBER; + v_id_cat1 NUMBER; + v_id_cat2 NUMBER; + v_id_cat3 NUMBER; + v_id_cat4 NUMBER; + v_id_cat5 NUMBER; + v_id_produto NUMBER; + v_contador NUMBER := 0; + + FUNCTION FN_GET_OR_CREATE_NODO ( + p_id_nodo_pai IN NUMBER, + p_tipo_nodo IN VARCHAR2, + p_codigo IN VARCHAR2, + p_nome IN VARCHAR2, + p_nivel IN NUMBER, + p_cod_empresa IN NUMBER DEFAULT NULL, + p_cod_produto IN NUMBER DEFAULT NULL, + p_seqprodutobase IN NUMBER DEFAULT NULL + ) RETURN NUMBER + IS + v_id_nodo NUMBER; + BEGIN + SELECT n.id_nodo + INTO v_id_nodo + FROM TB_FLASH_NODO n + WHERE ( + n.id_nodo_pai = p_id_nodo_pai + OR (n.id_nodo_pai IS NULL AND p_id_nodo_pai IS NULL) + ) + AND n.tipo_nodo = p_tipo_nodo + AND n.codigo = p_codigo + AND ( + p_tipo_nodo <> 'PRODUTO' + OR ( + n.cod_empresa = p_cod_empresa + OR (n.cod_empresa IS NULL AND p_cod_empresa IS NULL) + ) + ); + + UPDATE TB_FLASH_NODO n + SET n.nome = p_nome, + n.cod_empresa = p_cod_empresa, + n.cod_produto = p_cod_produto, + n.seqprodutobase = p_seqprodutobase, + n.data_atualizacao = SYSDATE + WHERE n.id_nodo = v_id_nodo + AND ( + NVL(n.nome, '#') <> NVL(p_nome, '#') + OR NVL(n.cod_empresa, -1) <> NVL(p_cod_empresa, -1) + OR NVL(n.cod_produto, -1) <> NVL(p_cod_produto, -1) + OR NVL(n.seqprodutobase, -1) <> NVL(p_seqprodutobase, -1) + ); + + RETURN v_id_nodo; + + EXCEPTION + WHEN NO_DATA_FOUND THEN + v_id_nodo := SEQ_TB_FLASH_NODO.NEXTVAL; + + INSERT INTO TB_FLASH_NODO ( + id_nodo, id_nodo_pai, tipo_nodo, codigo, nome, nivel, + ordem_exibicao, ativo, cod_empresa, cod_produto, seqprodutobase, + data_cadastro, data_atualizacao + ) VALUES ( + v_id_nodo, p_id_nodo_pai, p_tipo_nodo, p_codigo, p_nome, p_nivel, + NULL, 'S', p_cod_empresa, p_cod_produto, p_seqprodutobase, + SYSDATE, NULL + ); + + RETURN v_id_nodo; + END; + +BEGIN + DELETE FROM TB_FLASH_FATO_VENDA + WHERE data_referencia BETWEEN p_data_inicial AND p_data_final + AND cod_empresa = p_empresa; + + FOR r IN ( + SELECT dv.nrodivisao, + seg1.nrosegmento, + e.nroempresa AS empresa, + e.nomereduzido AS nomeempresa, + a.seqproduto AS cod_produto, + a.seqprodutobase, + a.desccompleta AS descricao, + z.dtaentradasaida AS data_referencia, + TO_NUMBER(TO_CHAR(z.dtaentradasaida,'D')) AS dia_semana, + TO_NUMBER(TO_CHAR(z.dtaentradasaida,'DD')) AS dia, + TO_NUMBER(TO_CHAR(z.dtaentradasaida,'MM')) AS mes, + TO_NUMBER(TO_CHAR(z.dtaentradasaida,'YYYY')) AS ano, + 0 AS nro_tickets, + SUM(DECODE(y.qtdvda, 0, 0, + ((y.vlrimpostovda + + NVL(DECODE(pg.indutilicmstaresugprabc, + 'S', COALESCE(y.vlricmsvdasolicit, y.vlricmsvda), + y.vlricmsvda), 0) + + NVL(y.vlrpisvda, 0) + + NVL(y.vlrcofinsvda, 0)) / y.qtdvda)) * z.qtdvda) + + + SUM(DECODE(NVL(y.qtddevol, 0), 0, 0, + ((NVL(y.vlrimpostodevol, 0) + + NVL(DECODE(pg.indutilicmstaresugprabc, + 'S', + DECODE(y.qtdvda, 0, 0, + COALESCE((y.vlricmsvdasolicit / y.qtdvda) * y.qtddevol, + y.vlricmsdevol)), + ((z.vlricmsvda / GREATEST(z.qtdvda, 1)) * NVL(z.qtddevol, 0))), + 0) + + NVL(y.vlrpisdevol, 0) + + NVL(y.vlrcofinsdevol, 0)) / y.qtddevol)) * (0 - NVL(z.qtddevol, 0)) + ) AS vlr_imp_venda, + SUM((z.qtdvda - NVL(z.qtddevol, 0)) / k.qtdembalagem) AS qtde_venda, + (SUM(z.vlrtotalvda) - SUM(NVL(z.vlrtotaldevol, 0))) AS vlr_venda, + 0 AS vl_ticket_medio, + a.propqtdprodutobase, + ( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 1 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn1, + ( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 1 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn1, + ( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 2 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn2, + ( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 2 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn2, + ( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 3 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn3, + ( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 3 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn3, + ( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 4 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn4, + ( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 4 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn4, + ( SELECT dc.seqcategoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 5 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS codcatn5, + ( SELECT cc.categoria FROM map_famdivcateg dc JOIN map_categoria cc ON cc.seqcategoria = dc.seqcategoria AND cc.statuscategor = 'A' AND cc.nivelhierarquia = 5 AND cc.nrodivisao = dc.nrodivisao AND cc.tipcategoria = 'M' WHERE dc.nrodivisao = e.nrodivisao AND dc.status = 'A' AND dc.seqfamilia = a.seqfamilia ) AS nomecatn5 + FROM maxv_categoria g, map_famdivcateg u, map_produto a, map_famdivisao d, + map_famembalagem k, mad_segmento seg1, mrl_produtoempresa c, + mad_famsegmento h, max_empresa e, mrl_custodia y, mrl_custodia z, + mrlv_descontoregra re, max_divisao dv, max_paramgeral pg + WHERE z.dtaentradasaida BETWEEN p_data_inicial AND p_data_final + AND z.nroempresa = p_empresa + AND e.nroempresa = z.nroempresa + AND e.nrodivisao = d.nrodivisao + AND z.seqproduto = c.seqproduto + AND e.nroempresa = c.nroempresa + AND y.seqproduto = z.seqproduto + AND y.dtaentradasaida = z.dtaentradasaida + AND y.nroempresa = z.nroempresa + AND (z.vlrtotalvda > 0 OR z.vlrtotaldevol > 0) + AND seg1.nrodivisao = d.nrodivisao + AND h.seqfamilia = z.seqfamilia + AND h.nrosegmento = e.nrosegmentoprinc + AND h.nrosegmento = seg1.nrosegmento + AND d.seqfamilia = z.seqfamilia + AND d.nrodivisao IN (1) + AND dv.nrodivisao = d.nrodivisao + AND k.seqfamilia = h.seqfamilia + AND k.qtdembalagem = 1 + AND z.seqproduto = re.seqproduto(+) + AND z.dtaentradasaida = re.datafaturamento(+) + AND z.nroempresa = re.nroempresa(+) + AND g.nrodivisao = u.nrodivisao + AND g.nivelhierarquia = 1 + AND g.tipcategoria = 'M' + AND g.statuscategor != 'I' + AND u.seqfamilia = d.seqfamilia + AND u.nrodivisao = d.nrodivisao + AND u.seqcategoria = g.seqcategoria + AND u.status = 'A' + AND a.seqproduto = z.seqproduto + AND a.seqfamilia = d.seqfamilia + GROUP BY dv.nrodivisao, seg1.nrosegmento, e.nroempresa, e.nomereduzido, + a.seqproduto, a.seqprodutobase, a.desccompleta, z.dtaentradasaida, + a.propqtdprodutobase, e.nrodivisao, a.seqfamilia + ) LOOP + + v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.empresa), r.nomeempresa, 1, r.empresa); + + IF r.codcatn1 IS NOT NULL THEN + v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.codcatn1), r.nomecatn1, 2, r.empresa); + ELSE v_id_cat1 := v_id_empresa; END IF; + + IF r.codcatn2 IS NOT NULL THEN + v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.codcatn2), r.nomecatn2, 3, r.empresa); + ELSE v_id_cat2 := v_id_cat1; END IF; + + IF r.codcatn3 IS NOT NULL THEN + v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.codcatn3), r.nomecatn3, 4, r.empresa); + ELSE v_id_cat3 := v_id_cat2; END IF; + + IF r.codcatn4 IS NOT NULL THEN + v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.codcatn4), r.nomecatn4, 5, r.empresa); + ELSE v_id_cat4 := v_id_cat3; END IF; + + IF r.codcatn5 IS NOT NULL THEN + v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.codcatn5), r.nomecatn5, 6, r.empresa); + ELSE v_id_cat5 := v_id_cat4; END IF; + + v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.cod_produto), r.descricao, 7, r.empresa, r.cod_produto, r.seqprodutobase); + + INSERT INTO TB_FLASH_FATO_VENDA ( + id_fato, data_referencia, ano_referencia, mes_referencia, dia_referencia, dia_semana, + id_nodo, id_nodo_empresa, cod_empresa, nome_empresa, cod_produto, descricao_produto, + seqprodutobase, nrodivisao, nrosegmento, nro_tickets, vlr_imp_venda, qtde_venda, + vlr_venda, vl_ticket_medio, propqtdprodutobase, data_cadastro + ) VALUES ( + SEQ_TB_FLASH_FATO_VENDA.NEXTVAL, + r.data_referencia, r.ano, r.mes, r.dia, r.dia_semana, + v_id_produto, v_id_empresa, r.empresa, r.nomeempresa, r.cod_produto, r.descricao, + r.seqprodutobase, r.nrodivisao, r.nrosegmento, r.nro_tickets, r.vlr_imp_venda, + r.qtde_venda, r.vlr_venda, r.vl_ticket_medio, r.propqtdprodutobase, SYSDATE + ); + + END LOOP; + + COMMIT; +END; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DECLARE + v_count NUMBER; +BEGIN + SELECT COUNT(*) INTO v_count FROM all_objects WHERE object_name = 'PRC_FLASH_CARGA_DADOS_VENDA' AND object_type = 'PROCEDURE' AND owner = 'VITRUVIO'; + IF v_count > 0 THEN + EXECUTE IMMEDIATE 'DROP PROCEDURE VITRUVIO.PRC_FLASH_CARGA_DADOS_VENDA'; + END IF; +END; +-- +goose StatementEnd From 11ccd8a32829f27d2994e74cbe60ad652220fdc9 Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Thu, 30 Apr 2026 10:46:01 -0300 Subject: [PATCH 38/41] =?UTF-8?q?Inclus=C3=A3o=20flash=20de=20perdas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash_perdas/flash_perdas.module.ts | 201 ++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 src/flash_perdas/flash_perdas.module.ts diff --git a/src/flash_perdas/flash_perdas.module.ts b/src/flash_perdas/flash_perdas.module.ts new file mode 100644 index 0000000..5aa50a1 --- /dev/null +++ b/src/flash_perdas/flash_perdas.module.ts @@ -0,0 +1,201 @@ +import { createModuleFactory } from "@davinti/jeff"; + +const moduleFactory = createModuleFactory(["C5", "C5_big", "C5_mambo"]); + +export default moduleFactory + .createModule({ + id: "flash-de-perdas", + description: "Flash de Perdas", + label: "Flash de Perdas", + icon: "bar-chart", + queries: { + flash: { + name: "Flash de Perdas", + display: { + type: "flash", + settings: { + group_column: "canalapp", + total_indicator_column: "is_total", + null_label_key: "Geral", + }, + header: { + title_column: "canalapp", + value_column: "perda_dia", + value_format: "currency", + }, + rows: [ + { + label: "Meta Mês", + column: "meta_mes", + format: "currency_short", + }, + { + label: "Mês Atual", + column: "mes_atual", + format: "currency_short", + }, + { + label: "Dif ($)", + column: "dif_mes_atual", + format: "currency_short", + }, + { + label: "% Variação", + column: "variacao_atual", + format: "percentage", + }, + { + label: "Mês Anterior", + column: "mes_anterior", + format: "currency_short", + }, + { + label: "Dif ($)", + column: "dif_mes_anterior", + format: "currency_short", + }, + { + label: "% Variação", + column: "variacao_mes_anterior", + format: "percentage", + }, + { + label: "Ano Anterior", + column: "ano_anterior", + format: "currency_short", + }, + { + label: "Dif ($)", + column: "dif_ano_anterior", + format: "currency_short", + }, + { + label: "% Variação", + column: "variacao_ano_anterior", + format: "percentage", + }, + ], + }, + params: ["data_perda"], + }, + }, + entrypoint: "flash", + }) + .withImplementations({ + C5: { + flash: (args) => { + return { + sql: /*sql*/ ` +select + tes.canalapp, + tes.nomeempresaapp, + grouping(tes.canalapp) is_total, + sum(tvf.vlrvendadia) venda_dia, + sum(tvf.vlrmetames) meta_mes, + sum(tvf.vlrvendaacumulada) vda, + sum(tvf.vlrvendaacumulada - tvf.vlrmetaaculumada) dma, + sum(tvf.vlrmetadia) meta_dia, + round(avg(tvf.vlrmetamargemdiaperc), 2) meta_margem_dia, + sum(tvf.qtdclientes) qtd_clientes, + round(sum(tvf.vlrvendadia) / nullif(sum(tvf.qtdclientes), 0), 2) as ticket_medio, + round((sum(tvf.vlrlucro) / nullif(sum(tvf.vlrvendadia), 0)) * 100, 2) as margem +from mboard.tb_venda_flash tvf +inner join mboard.tb_empresa_segmento tes + on tes.nroempresa = tvf.nroempresa + and tes.nrodivisao = tvf.nrodivisao + and tes.nrosegmento = tvf.nrosegmento + and tes.codcanal = tvf.codcanal +where 1=1 + and tvf.vlrvendaacumulada > 0 + and tvf.dtavda = TO_DATE(${args.data_perda}, 'YYYY-MM-DD') + and (tvf.nroempresa in (${args.ctx_user_companies_for_module})) +group by rollup(canalapp, nomeempresaapp) +order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, + }; + }, + }, + C5_big: {flash: (args) => { + return { + sql: /*sql*/ ` + SELECT + 'Lojas' AS canalapp, + x.nomeempresaapp AS nomeempresaapp, + CASE + WHEN GROUPING(x.nomeempresaapp) = 1 THEN 1 + ELSE 0 + END AS is_total, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) AS mes_atual, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda - x.valor_meta_efetiva ELSE 0 END) AS dif_mes_atual, + CASE + WHEN SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_meta_efetiva ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_atual, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_mes_anterior, + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS mes_anterior, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) - + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_mes_anterior, + CASE + WHEN SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'MES_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_mes_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_meta_efetiva ELSE 0 END) AS meta_ano_anterior, + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS ano_anterior, + SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) - + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) AS dif_ano_anterior, + CASE + WHEN SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END) = 0 THEN 0 + ELSE ROUND( + ((SUM(CASE WHEN x.periodo = 'ATUAL' THEN x.valor_venda ELSE 0 END) / + SUM(CASE WHEN x.periodo = 'ANO_ANTERIOR' THEN x.valor_venda ELSE 0 END)) * 100) - 100 + , 2) + END AS variacao_ano_anterior + FROM + ( + SELECT + n.codigo, + n.nome AS nomeempresaapp, + r.valor_meta_efetiva, + r.valor_venda, + CASE + WHEN r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_perda}, 'YYYY-MM-DD') + THEN 'ATUAL' + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -1) + THEN 'MES_ANTERIOR' + WHEN r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -12) + THEN 'ANO_ANTERIOR' + END AS periodo + FROM + tb_flash_nodo_resumo_venda r + JOIN tb_flash_nodo n + ON + n.id_nodo = r.id_nodo + WHERE + n.tipo_nodo = 'EMPRESA' + AND ( + r.data_referencia BETWEEN TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM') AND TO_DATE(${args.data_perda}, 'YYYY-MM-DD') + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -1) + AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -1) + OR r.data_referencia BETWEEN ADD_MONTHS(TRUNC(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), 'MM'), -12) + AND ADD_MONTHS(TO_DATE(${args.data_perda}, 'YYYY-MM-DD'), -12) + ) + ) x + GROUP BY + ROLLUP(x.nomeempresaapp) + `,}; + }, + }, + C5_mambo: {flash: (args) => { + return { + sql: /*sql*/ ``,}; + }, + }, + }) \ No newline at end of file From abf0eaad89c6509d6125491c0170d1d20e6f11e4 Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Thu, 30 Apr 2026 11:26:46 -0300 Subject: [PATCH 39/41] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20de=20colunas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash_perdas/flash_perdas.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/flash_perdas/flash_perdas.module.ts b/src/flash_perdas/flash_perdas.module.ts index 5aa50a1..d1cb257 100644 --- a/src/flash_perdas/flash_perdas.module.ts +++ b/src/flash_perdas/flash_perdas.module.ts @@ -90,7 +90,7 @@ select tes.canalapp, tes.nomeempresaapp, grouping(tes.canalapp) is_total, - sum(tvf.vlrvendadia) venda_dia, + sum(tvf.vlrvendadia) perda_dia, sum(tvf.vlrmetames) meta_mes, sum(tvf.vlrvendaacumulada) vda, sum(tvf.vlrvendaacumulada - tvf.vlrmetaaculumada) dma, From 6b15a4ebe551d38afdfcbeeb6cb2b897c8553076 Mon Sep 17 00:00:00 2001 From: "lucas.favaro" Date: Thu, 30 Apr 2026 11:35:10 -0300 Subject: [PATCH 40/41] =?UTF-8?q?Corre=C3=A7=C3=A3o=20do=20Schedule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/flash/flash.module.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/flash/flash.module.ts b/src/flash/flash.module.ts index 783d010..fdd54fb 100644 --- a/src/flash/flash.module.ts +++ b/src/flash/flash.module.ts @@ -199,6 +199,15 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, }, }, }).withSchedules({ + C5: [ + { + name: "Procedure que atualiza os dados do flash", + command: /*sql*/ `BEGIN + END`, + cron: "0 * * * *", + timeout_seconds: 2400, + }, + ], C5_big: [ { name: "Procedure que atualiza os dados do flash", @@ -214,4 +223,13 @@ order by grouping(canalapp) desc, grouping(nomeempresaapp) desc`, timeout_seconds: 2400, }, ], + C5_mambo: [ + { + name: "Procedure que atualiza os dados do flash", + command: /*sql*/ `BEGIN + END`, + cron: "0 * * * *", + timeout_seconds: 2400, + }, + ], }); From ed0c01a779bfeb2d774fe1e5cf1320d86d3e85a4 Mon Sep 17 00:00:00 2001 From: tkinaba Date: Thu, 30 Apr 2026 12:08:56 -0300 Subject: [PATCH 41/41] ci: adicionar registry davinti --- Jenkinsfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 817d451..9c886df 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -22,6 +22,9 @@ pipeline { echo "password ${GIT_TOKEN}" >> ~/.netrc chmod 600 ~/.netrc + npm config set @davinti:registry=https://git.davinti.com.br/api/packages/davinTI/npm/ + npm config set -- '//git.davinti.com.br/api/packages/davinTI/npm/:_authToken' "${GIT_TOKEN}" + npm install """ }