Fix: ajuste nas procedures de contribuição
davinTI/app-dono-modulos/pipeline/head This commit looks good

This commit is contained in:
2026-05-07 15:01:29 -03:00
parent 940f2fcdb7
commit 8fea2da1c9
9 changed files with 56 additions and 25 deletions
@@ -85,8 +85,11 @@ BEGIN
FOR r IN (
SELECT Z.DTA,
Z.NROEMPRESA,
Z.NOMEEMPRESA,
Z.NROSEGMENTO,
Z.NRODIVISAO,
Z.SEQPRODUTO,
Z.SEQPRODUTOBASE,
Z.PRODUTO,
Z.SEQCATEGORIAN1,
Z.CATEGORIAN1,
@@ -121,11 +124,15 @@ BEGIN
Z.VLRCONTRIB_MES_ANT,
Z.VLRVENDA_ANO_ANT,
Z.VLRCONTRIB_ANO_ANT,
Z.QTDE_VENDA
Z.QTDE_VENDA,
Z.VLR_IMP_VENDA,
Z.PROPQTDPRODUTOBASE
FROM (SELECT /*+OPTIMIZER_FEATURES_ENABLE('10.2.0.4')*/
TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' ) DTA,
V.NROEMPRESA,
E.NOMEFANTASIA AS NOMEEMPRESA,
V.NROSEGMENTO,
V.NRODIVISAO,
V.SEQPRODUTO,
A.SEQPRODUTOBASE,
A.DESCCOMPLETA PRODUTO,
@@ -348,7 +355,8 @@ BEGIN
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_MES_ANT
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_MES_ANT
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRVENDA_ANO_ANT
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_ANO_ANT
, CAST( 0.0000 AS NUMBER(20,4)) AS VLRCONTRIB_ANO_ANT
, MAX(A.PROPQTDPRODUTOBASE) AS PROPQTDPRODUTOBASE
FROM MRL_CUSTODIA Y
JOIN MAXV_ABCDISTRIBBASE V ON Y.DTAENTRADASAIDA = V.DTAVDA
JOIN MAP_PRODUTO A ON A.SEQPRODUTO = V.SEQPRODUTO
@@ -363,9 +371,10 @@ BEGIN
WHERE V.NROEMPRESA IN ( SELECT E.EMPRESA_ID FROM EMPRESA_PARAMETROS E WHERE E.PARTICIPA_FLASH = 1 )
AND V.NROSEGMENTO IN ( SELECT A.NROSEGMENTO FROM CONSINCO.MAD_SEGMENTO A WHERE A.STATUS = 'A' )
AND DECODE(V.TIPTABELA, 'S', V.CGOACMCOMPRAVENDA, V.ACMCOMPRAVENDA) IN ( 'S','I' )
AND V.DTAVDA BETWEEN ParDataInicial AND ParDataFinal
AND V.DTAVDA BETWEEN p_data_inicial AND p_data_final
GROUP BY TO_DATE( Y.DTAENTRADASAIDA, 'DD/MM/RRRR' )
, V.NROEMPRESA
, E.NOMEFANTASIA
, V.NRODIVISAO
, V.NROSEGMENTO
, V.SEQPRODUTO
@@ -376,29 +385,29 @@ BEGIN
, CC1.CATEGORIA) Z
) LOOP
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.empresa), r.nomeempresa, 1, r.empresa);
v_id_empresa := FN_GET_OR_CREATE_NODO(NULL, 'EMPRESA', TO_CHAR(r.NROEMPRESA), r.NOMEEMPRESA, 1, r.NROEMPRESA);
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);
IF r.SEQCATEGORIAN1 IS NOT NULL THEN
v_id_cat1 := FN_GET_OR_CREATE_NODO(v_id_empresa, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN1), r.CATEGORIAN1, 2, r.NROEMPRESA);
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);
IF r.SEQCATEGORIAN2 IS NOT NULL THEN
v_id_cat2 := FN_GET_OR_CREATE_NODO(v_id_cat1, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN2), r.CATEGORIAN2, 3, r.NROEMPRESA);
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);
IF r.SEQCATEGORIAN3 IS NOT NULL THEN
v_id_cat3 := FN_GET_OR_CREATE_NODO(v_id_cat2, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN3), r.CATEGORIAN3, 4, r.NROEMPRESA);
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);
IF r.SEQCATEGORIAN4 IS NOT NULL THEN
v_id_cat4 := FN_GET_OR_CREATE_NODO(v_id_cat3, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN4), r.CATEGORIAN4, 5, r.NROEMPRESA);
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);
IF r.SEQCATEGORIAN5 IS NOT NULL THEN
v_id_cat5 := FN_GET_OR_CREATE_NODO(v_id_cat4, 'CATEGORIA', TO_CHAR(r.SEQCATEGORIAN5), r.CATEGORIAN5, 6, r.NROEMPRESA);
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);
v_id_produto := FN_GET_OR_CREATE_NODO(v_id_cat5, 'PRODUTO', TO_CHAR(r.SEQPRODUTO), r.PRODUTO, 7, r.NROEMPRESA, r.SEQPRODUTO, r.SEQPRODUTOBASE);
INSERT INTO TB_FLASH_FATO_CONTRIBUICAO (
id_fato, data_referencia, ano_referencia, mes_referencia, dia_referencia, dia_semana,
@@ -407,10 +416,13 @@ BEGIN
vlr_contribuicao, vl_ticket_medio, propqtdprodutobase, data_cadastro
) VALUES (
SEQ_TB_FLASH_FATO_CONTRIBUICAO.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_contribuicao,
r.qtde_contribuicao, r.vlr_contribuicao, r.vl_ticket_medio, r.propqtdprodutobase, SYSDATE
r.DTA, EXTRACT(YEAR FROM r.DTA), EXTRACT(MONTH FROM r.DTA), EXTRACT(DAY FROM r.DTA),
TO_NUMBER(TO_CHAR(r.DTA, 'D')),
v_id_produto, v_id_empresa, r.NROEMPRESA, r.NOMEEMPRESA, r.SEQPRODUTO, r.PRODUTO,
r.SEQPRODUTOBASE, r.NRODIVISAO, r.NROSEGMENTO, r.QTDE_VENDA, r.VLR_IMP_VENDA,
r.QTDE_VENDA, r.VLRCONTRIB,
CASE WHEN r.QTDE_VENDA > 0 THEN r.VLRVENDA / r.QTDE_VENDA ELSE NULL END,
r.PROPQTDPRODUTOBASE, SYSDATE
);
END LOOP;