SET TERM ^ ; CREATE OR ALTER procedure SP_CALCULO_VARIACOES_DRE ( IANO integer, IMES integer) returns ( DESCRICAO varchar(100), V1 numeric(15,2), V2 numeric(15,2), V3 numeric(15,2)) as begin for select V1,V2 from SP_DRE_EMBALAGEM(:IANO, :IMES) into V1, V2 do begin V3 = V1 + V2; DESCRICAO = 'MAT.PRIMA E EMBALAGEM'; suspend; end for select V1,V2 from sp_dre_cepo(:IANO, :IMES) into V1, V2 do begin V3 = V1 + V2; DESCRICAO = 'USO -CEPO'; suspend; end for select V1,V2 from sp_dre_limpeza(:IANO, :IMES) into V1, V2 do begin V3 = V1 + V2; DESCRICAO = 'USO -LIMPEZA'; suspend; end for select V1,V2 from sp_dre_epi(:IANO, :IMES) into V1, V2 do begin V3 = V1 + V2; DESCRICAO = 'USO -EPI'; suspend; end for select V1,V2 from sp_dre_manutencao(:IANO, :IMES) into V1, V2 do begin V3 = V1 + V2; DESCRICAO = 'USO -MANUTENÇÃO'; suspend; end for select V1,V2 from sp_dre_escritorio(:IANO, :IMES) into V1, V2 do begin V3 = V1 + V2; DESCRICAO = 'USO -ESCRITORIO'; suspend; end for select V1,V2 from sp_dre_consumo(:IANO, :IMES) into V1, V2 do begin V3 = V1 + V2; DESCRICAO = 'USO -CONSUMO'; suspend; end end ^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SP_DRE_EMBALAGEM ( IANO integer, IMES integer) returns ( V1 numeric(15,2), V2 numeric(15,2)) as declare variable ANO integer; declare variable MES integer; declare variable VALOR numeric(15,4); declare variable VALOR_M1 numeric(15,4); declare variable VALOR_M2 numeric(15,4); declare variable CONT integer; declare variable VARIACAO_ESTOQUE numeric(15,4); declare variable CONTA varchar(50); declare variable DESCRICAO varchar(200); declare variable LANCAMENTO_AJUSTE numeric(15,4); declare variable VALOR_CALCULADO numeric(15,4); declare variable FLAG varchar(20); begin -- ################################ INICIO MAT.PRIMA E EMBALAGEM ############################################## CONT = 0; VALOR_M1 = 0; VALOR_M2 = 0; LANCAMENTO_AJUSTE = 0; VALOR_CALCULADO = 0; FLAG = formatdatetime(current_timestamp); for SELECT ANO,MES, SUM(CAST((M.SALDO + M.SALDO_EMTERCEIRO) * M.CUSTO_MEDIO AS NUMERIC(15,2))) AS VALOR FROM TBESTOQUE_SALDO_MES M, TBPRODUTO P WHERE M.PRODUTO_CODIGO = P.CODIGO AND M.DATA between dateadd(month, -1, cast('01.'||:IMES||'.'||:IANO as date)) and fn_end_of_month('01.'||:IMES||'.'||:IANO) AND P.TIPOPRODUTO_CODIGO IN (1,8) AND P.INVENTARIO = '1' GROUP BY 1,2 order by 1,2 into ANO, MES, VALOR do begin CONT = CONT + 1; if(CONT = 1)then begin VALOR_M1 = VALOR; end else begin VALOR_M2 = VALOR; end end VARIACAO_ESTOQUE = VALOR_M1 - VALOR_M2; for SELECT CONTA, CONTA_DESCRICAO, SUM(VALOR) VALOR FROM ( SELECT A.CONTA, C.DESCRICAO CONTA_DESCRICAO, IIF(A.NATUREZA = 'C', A.VALOR*(-1),A.VALOR) AS VALOR FROM TBMOVCONTABIL A, TBCONTACONTABIL C WHERE A.CONTA = C.CONTA and a.tipolanc <> 'E' AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) AND A.CONTA IN ( 31100100002 , 31100100001 , 31100100003 , 31100100005 , 31100100007 , 31100100008 , 31100100009 , 31100100010 , 31100100011 , 31100100012 , 31100100013 , 31100100014 , 31100200001 , 31100200002 , 31100200003 , 31100200004 , 31100200005 , 31100200007 , 31100200008 , 31100200010 , 31100200013 ) ) GROUP BY 1,2 into CONTA, DESCRICAO, VALOR do begin LANCAMENTO_AJUSTE = LANCAMENTO_AJUSTE + VALOR; end for SELECT CCUSTO, SUM(CUSTO_TOTAL) VALOR FROM ( SELECT ESTABELECIMENTO_ID, LOCALIZACAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, iif(char_length(CCUSTO)>0,substring(CCUSTO from 1 for 2),'11') CCUSTO, DATA, (SELECT CODIGO||'-'||DESCRICAO FROM TBOPERACAO WHERE CODIGO = OPERACAO) OPERACAO, TIPO, QUANTIDADE, CUSTO_MEDIO, CAST(QUANTIDADE * CUSTO_MEDIO AS NUMERIC(15,4)) CUSTO_TOTAL FROM ( SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, P.CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, A.DATA, A.OPERACAO_CODIGO OPERACAO, A.TIPO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.CCUSTO,A.CENTRO_DE_CUSTO) CCUSTO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.QUANTIDADE,A.QUANTIDADE) QUANTIDADE, (SELECT M.CUSTO_MEDIO FROM TBESTOQUE_SALDO_DIARIO M WHERE M.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND A.LOCALIZACAO_CODIGO = M.LOCALIZACAO_CODIGO AND M.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND M.DATA = A.DATA) * IIF(A.TIPO = 'S', -1, 1) CUSTO_MEDIO FROM TBPRODUTO P, TBOPERACAO_DRE O, TBESTOQUE_TRANSACAO_ITEM A LEFT JOIN TBESTOQUE_TRANSACAO_ITEM_CCUSTO C ON C.ESTOQUE_TRANSACAO_ID = A. CONTROLE WHERE A.PRODUTO_CODIGO = P.CODIGO AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) AND O.OPERACAO_CODIGO = A.OPERACAO_CODIGO and (O.PRODUCAO_CONSUMO = '1' or O.DESPERDICIO = '1' or O.AJUSTE = '1' ) AND P.TIPOPRODUTO_CODIGO IN (1,8) AND P.INVENTARIO = '1' AND A.TIPO <> 'B' ) ) GROUP BY 1 into CONTA, VALOR do begin VALOR_CALCULADO = VALOR_CALCULADO + VALOR; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('31100100017', '', :CONTA, :VALOR * -1, :IANO, :IMES, 1, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); end V1 = VARIACAO_ESTOQUE - (LANCAMENTO_AJUSTE * -1); V2 = (V1 + VALOR_CALCULADO) * -1; V1 = VALOR_CALCULADO; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('31100100017', '', '11', :V2 * -1, :IANO, :IMES, 2, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); DELETE FROM TBMOVCONTABIL_DRE WHERE ANO = :IANO AND MES = :IMES AND TIPO IN (1,2) AND FLAG <> :FLAG; -- ################################ FIM MAT.PRIMA E EMBALAGEM ############################################## suspend; end ^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SP_DRE_CEPO ( IANO integer, IMES integer) returns ( V1 numeric(15,2), V2 numeric(15,2)) as declare variable ANO integer; declare variable MES integer; declare variable VALOR numeric(15,4); declare variable VALOR_M1 numeric(15,4); declare variable VALOR_M2 numeric(15,4); declare variable CONT integer; declare variable VARIACAO_ESTOQUE numeric(15,4); declare variable CONTA varchar(50); declare variable DESCRICAO varchar(200); declare variable LANCAMENTO_AJUSTE numeric(15,4); declare variable VALOR_CALCULADO numeric(15,4); declare variable FLAG varchar(20); begin -- ################################ INICIO CEPO ############################################## CONT = 0; VALOR_M1 = 0; VALOR_M2 = 0; LANCAMENTO_AJUSTE = 0; VALOR_CALCULADO = 0; FLAG = formatdatetime(current_timestamp); for /* Verifica Variação de Estoque */ SELECT ANO,MES, SUM(CAST((M.SALDO + M.SALDO_EMTERCEIRO) * M.CUSTO_MEDIO AS NUMERIC(15,2))) AS VALOR FROM TBESTOQUE_SALDO_MES M, TBPRODUTO P WHERE M.PRODUTO_CODIGO = P.CODIGO AND M.DATA between dateadd(month, -1, cast('01.'||:IMES||'.'||:IANO as date)) and fn_end_of_month('01.'||:IMES||'.'||:IANO) AND P.FAMILIA_CODIGO = 5 AND P.INVENTARIO = '1' GROUP BY 1,2 order by 1,2 into ANO, MES, VALOR do begin CONT = CONT + 1; if(CONT = 1)then begin VALOR_M1 = VALOR; end else begin VALOR_M2 = VALOR; end end VARIACAO_ESTOQUE = VALOR_M1 - VALOR_M2; for /* Verificação dos lançamentos contábeis */ SELECT CONTA, CONTA_DESCRICAO, CAST(SUM(VALOR-PIS-COFINS) AS NUMERIC(15,2)) VALOR FROM ( SELECT A.CONTA, C.DESCRICAO CONTA_DESCRICAO, IIF(A.NATUREZA = 'C', A.VALOR*(-1),A.VALOR) AS VALOR, A.VALOR * 0.0165 PIS, A.VALOR * 0.076 COFINS FROM TBMOVCONTABIL A, TBCONTACONTABIL C WHERE A.CONTA = C.CONTA AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) --AND A.CODORIGEM = 'NFE' and a.tipolanc <> 'E' AND A.CONTA IN ( '31101000010' ) ) GROUP BY 1,2 into CONTA, DESCRICAO, VALOR do begin LANCAMENTO_AJUSTE = LANCAMENTO_AJUSTE + VALOR; end for /* Verificacao de Transações de Estoque C.Custo - MAT.USO/CONSUMO - Fam.5-CEPOS*/ SELECT CCUSTO, SUM(CUSTO_TOTAL) VALOR FROM ( SELECT ESTABELECIMENTO_ID, LOCALIZACAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, iif(char_length(CCUSTO)>0,substring(CCUSTO from 1 for 2),'11') CCUSTO, DATA, (SELECT CODIGO||'-'||DESCRICAO FROM TBOPERACAO WHERE CODIGO = OPERACAO) OPERACAO, TIPO, QUANTIDADE, CUSTO_MEDIO, CAST(QUANTIDADE * CUSTO_MEDIO AS NUMERIC(15,4)) CUSTO_TOTAL FROM ( SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, P.CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, A.DATA, A.OPERACAO_CODIGO OPERACAO, A.TIPO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.CCUSTO,A.CENTRO_DE_CUSTO) CCUSTO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.QUANTIDADE,A.QUANTIDADE) QUANTIDADE, (SELECT M.CUSTO_MEDIO FROM TBESTOQUE_SALDO_DIARIO M WHERE M.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND A.LOCALIZACAO_CODIGO = M.LOCALIZACAO_CODIGO AND M.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND M.DATA = A.DATA) * IIF(A.TIPO = 'S', -1, 1) CUSTO_MEDIO FROM TBPRODUTO P, TBOPERACAO_DRE O, TBESTOQUE_TRANSACAO_ITEM A LEFT JOIN TBESTOQUE_TRANSACAO_ITEM_CCUSTO C ON C.ESTOQUE_TRANSACAO_ID = A. CONTROLE WHERE A.PRODUTO_CODIGO = P.CODIGO AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) AND O.OPERACAO_CODIGO = A.OPERACAO_CODIGO and (O.PRODUCAO_CONSUMO = '1' or O.DESPERDICIO = '1' or O.AJUSTE = '1' ) AND P.FAMILIA_CODIGO = 5 AND P.INVENTARIO = '1' AND A.TIPO <> 'B' ) ) GROUP BY 1 into CONTA, VALOR do begin VALOR_CALCULADO = VALOR_CALCULADO + VALOR; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('31100100018', '', :CONTA, :VALOR * -1, :IANO, :IMES, 3, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); end V1 = VARIACAO_ESTOQUE - (LANCAMENTO_AJUSTE * -1); V2 = (V1 + VALOR_CALCULADO) * -1; V1 = VALOR_CALCULADO; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('31100100018', '', '21', :V2 * -1, :IANO, :IMES, 4, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); DELETE FROM TBMOVCONTABIL_DRE WHERE ANO = :IANO AND MES = :IMES AND TIPO IN (3,4) AND FLAG <> :FLAG; -- ################################ FIM CEPO ############################################## suspend; end ^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SP_DRE_LIMPEZA ( IANO integer, IMES integer) returns ( V1 numeric(15,2), V2 numeric(15,2)) as declare variable ANO integer; declare variable MES integer; declare variable VALOR numeric(15,4); declare variable VALOR_M1 numeric(15,4); declare variable VALOR_M2 numeric(15,4); declare variable CONT integer; declare variable VARIACAO_ESTOQUE numeric(15,4); declare variable CONTA varchar(50); declare variable DESCRICAO varchar(200); declare variable LANCAMENTO_AJUSTE numeric(15,4); declare variable VALOR_CALCULADO numeric(15,4); declare variable FLAG varchar(20); begin -- ################################ INICIO LIMPEZA ############################################## CONT = 0; VALOR_M1 = 0; VALOR_M2 = 0; LANCAMENTO_AJUSTE = 0; VALOR_CALCULADO = 0; FLAG = formatdatetime(current_timestamp); for /* Verifica Variação de Estoque */ SELECT ANO,MES, SUM(CAST((M.SALDO + M.SALDO_EMTERCEIRO) * M.CUSTO_MEDIO AS NUMERIC(15,2))) AS VALOR FROM TBESTOQUE_SALDO_MES M, TBPRODUTO P WHERE M.PRODUTO_CODIGO = P.CODIGO AND M.DATA between dateadd(month, -1, cast('01.'||:IMES||'.'||:IANO as date)) and fn_end_of_month('01.'||:IMES||'.'||:IANO) AND P.FAMILIA_CODIGO = 51 AND P.INVENTARIO = '1' GROUP BY 1,2 order by 1,2 into ANO, MES, VALOR do begin CONT = CONT + 1; if(CONT = 1)then begin VALOR_M1 = VALOR; end else begin VALOR_M2 = VALOR; end end VARIACAO_ESTOQUE = VALOR_M1 - VALOR_M2; for /* Verificação dos lançamentos contábeis */ SELECT CONTA, CONTA_DESCRICAO, CAST(SUM(VALOR) AS NUMERIC(15,2)) VALOR FROM ( SELECT A.CONTA, C.DESCRICAO CONTA_DESCRICAO, IIF(A.NATUREZA = 'C', A.VALOR*(-1),A.VALOR) AS VALOR FROM TBMOVCONTABIL A, TBCONTACONTABIL C WHERE A.CONTA = C.CONTA AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) --AND A.CODORIGEM = 'NFE' and a.tipolanc <> 'E' AND A.CONTA IN ( '31101000003' ) ) GROUP BY 1,2 into CONTA, DESCRICAO, VALOR do begin LANCAMENTO_AJUSTE = LANCAMENTO_AJUSTE + VALOR; end for /* Verificacao de Transações de Estoque C.Custo - MAT.USO/CONSUMO - Fam.51-LIMPEZA */ SELECT CCUSTO, SUM(CUSTO_TOTAL) VALOR FROM ( SELECT ESTABELECIMENTO_ID, LOCALIZACAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, iif(char_length(CCUSTO)>0,substring(CCUSTO from 1 for 2),'11') CCUSTO, DATA, (SELECT CODIGO||'-'||DESCRICAO FROM TBOPERACAO WHERE CODIGO = OPERACAO) OPERACAO, TIPO, QUANTIDADE, CUSTO_MEDIO, CAST(QUANTIDADE * CUSTO_MEDIO AS NUMERIC(15,4)) CUSTO_TOTAL FROM ( SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, P.CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, A.DATA, A.OPERACAO_CODIGO OPERACAO, A.TIPO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.CCUSTO,A.CENTRO_DE_CUSTO) CCUSTO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.QUANTIDADE,A.QUANTIDADE) QUANTIDADE, (SELECT M.CUSTO_MEDIO FROM TBESTOQUE_SALDO_DIARIO M WHERE M.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND A.LOCALIZACAO_CODIGO = M.LOCALIZACAO_CODIGO AND M.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND M.DATA = A.DATA) * IIF(A.TIPO = 'S', -1, 1) CUSTO_MEDIO FROM TBPRODUTO P, TBOPERACAO_DRE O, TBESTOQUE_TRANSACAO_ITEM A LEFT JOIN TBESTOQUE_TRANSACAO_ITEM_CCUSTO C ON C.ESTOQUE_TRANSACAO_ID = A. CONTROLE WHERE A.PRODUTO_CODIGO = P.CODIGO AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) AND O.OPERACAO_CODIGO = A.OPERACAO_CODIGO AND(O.PRODUCAO_CONSUMO = '1' or O.DESPERDICIO = '1' or O.AJUSTE = '1') AND P.FAMILIA_CODIGO = 51 AND P.INVENTARIO = '1' AND A.TIPO <> 'B' ) ) GROUP BY 1 into CONTA, VALOR do begin VALOR_CALCULADO = VALOR_CALCULADO + VALOR; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300033', '', :CONTA, :VALOR * -1, :IANO, :IMES, 5, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); end V1 = VARIACAO_ESTOQUE - (LANCAMENTO_AJUSTE * -1); V2 = (V1 + VALOR_CALCULADO) * -1; V1 = VALOR_CALCULADO; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300033', '', '11', :V2 * -1, :IANO, :IMES, 6, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); DELETE FROM TBMOVCONTABIL_DRE WHERE ANO = :IANO AND MES = :IMES AND TIPO IN (5,6) AND FLAG <> :FLAG; -- ################################ FIM LIMPEZA ############################################## suspend; end ^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SP_DRE_EPI ( IANO integer, IMES integer) returns ( V1 numeric(15,2), V2 numeric(15,2)) as declare variable ANO integer; declare variable MES integer; declare variable VALOR numeric(15,4); declare variable VALOR_M1 numeric(15,4); declare variable VALOR_M2 numeric(15,4); declare variable CONT integer; declare variable VARIACAO_ESTOQUE numeric(15,4); declare variable CONTA varchar(50); declare variable DESCRICAO varchar(200); declare variable LANCAMENTO_AJUSTE numeric(15,4); declare variable VALOR_CALCULADO numeric(15,4); declare variable FLAG varchar(20); begin -- ################################ INICIO epi ############################################## CONT = 0; VALOR_M1 = 0; VALOR_M2 = 0; LANCAMENTO_AJUSTE = 0; VALOR_CALCULADO = 0; FLAG = formatdatetime(current_timestamp); for /* Verifica Variação de Estoque */ SELECT ANO,MES, SUM(CAST((M.SALDO + M.SALDO_EMTERCEIRO) * M.CUSTO_MEDIO AS NUMERIC(15,2))) AS VALOR FROM TBESTOQUE_SALDO_MES M, TBPRODUTO P WHERE M.PRODUTO_CODIGO = P.CODIGO AND M.DATA between dateadd(month, -1, cast('01.'||:IMES||'.'||:IANO as date)) and fn_end_of_month('01.'||:IMES||'.'||:IANO) AND P.FAMILIA_CODIGO = 10 AND P.INVENTARIO = '1' GROUP BY 1,2 order by 1,2 into ANO, MES, VALOR do begin CONT = CONT + 1; if(CONT = 1)then begin VALOR_M1 = VALOR; end else begin VALOR_M2 = VALOR; end end VARIACAO_ESTOQUE = VALOR_M1 - VALOR_M2; for /* Verificação dos lançamentos contábeis */ SELECT CONTA, CONTA_DESCRICAO, CAST(SUM(VALOR) AS NUMERIC(15,2)) VALOR FROM ( SELECT A.CONTA, C.DESCRICAO CONTA_DESCRICAO, IIF(A.NATUREZA = 'C', A.VALOR*(-1),A.VALOR) AS VALOR FROM TBMOVCONTABIL A, TBCONTACONTABIL C WHERE A.CONTA = C.CONTA AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) --AND A.CODORIGEM = 'NFE' and a.tipolanc <> 'E' AND A.CONTA IN ( '31101000004' ) ) GROUP BY 1,2 into CONTA, DESCRICAO, VALOR do begin LANCAMENTO_AJUSTE = LANCAMENTO_AJUSTE + VALOR; end for /* Verificacao de Transações de Estoque C.Custo - MAT.USO/CONSUMO - Fam.10-EPI*/ SELECT CCUSTO, SUM(CUSTO_TOTAL) VALOR FROM ( SELECT ESTABELECIMENTO_ID, LOCALIZACAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, iif(char_length(CCUSTO)>0,substring(CCUSTO from 1 for 2),'11') CCUSTO, DATA, (SELECT CODIGO||'-'||DESCRICAO FROM TBOPERACAO WHERE CODIGO = OPERACAO) OPERACAO, TIPO, QUANTIDADE, CUSTO_MEDIO, CAST(QUANTIDADE * CUSTO_MEDIO AS NUMERIC(15,4)) CUSTO_TOTAL FROM ( SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, P.CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, A.DATA, A.OPERACAO_CODIGO OPERACAO, A.TIPO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.CCUSTO,A.CENTRO_DE_CUSTO) CCUSTO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.QUANTIDADE,A.QUANTIDADE) QUANTIDADE, (SELECT M.CUSTO_MEDIO FROM TBESTOQUE_SALDO_DIARIO M WHERE M.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND A.LOCALIZACAO_CODIGO = M.LOCALIZACAO_CODIGO AND M.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND M.DATA = A.DATA) * IIF(A.TIPO = 'S', -1, 1) CUSTO_MEDIO FROM TBPRODUTO P, TBOPERACAO_DRE O, TBESTOQUE_TRANSACAO_ITEM A LEFT JOIN TBESTOQUE_TRANSACAO_ITEM_CCUSTO C ON C.ESTOQUE_TRANSACAO_ID = A. CONTROLE WHERE A.PRODUTO_CODIGO = P.CODIGO AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) AND O.OPERACAO_CODIGO = A.OPERACAO_CODIGO AND(O.PRODUCAO_CONSUMO = '1' or O.DESPERDICIO = '1' or O.AJUSTE = '1') AND P.FAMILIA_CODIGO = 10 AND P.INVENTARIO = '1' AND A.TIPO <> 'B' ) ) GROUP BY 1 into CONTA, VALOR do begin VALOR_CALCULADO = VALOR_CALCULADO + VALOR; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300035', '', :CONTA, :VALOR * -1, :IANO, :IMES, 7, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); end V1 = VARIACAO_ESTOQUE - (LANCAMENTO_AJUSTE * -1); V2 = (V1 + VALOR_CALCULADO) * -1; V1 = VALOR_CALCULADO; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300035', '', '71007', :V2 * -1, :IANO, :IMES, 8, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); DELETE FROM TBMOVCONTABIL_DRE WHERE ANO = :IANO AND MES = :IMES AND TIPO IN (7,8) AND FLAG <> :FLAG; -- ################################ FIM epi ############################################## suspend; end ^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SP_DRE_MANUTENCAO ( IANO integer, IMES integer) returns ( V1 numeric(15,2), V2 numeric(15,2)) as declare variable ANO integer; declare variable MES integer; declare variable VALOR numeric(15,4); declare variable VALOR_M1 numeric(15,4); declare variable VALOR_M2 numeric(15,4); declare variable CONT integer; declare variable VARIACAO_ESTOQUE numeric(15,4); declare variable CONTA varchar(50); declare variable DESCRICAO varchar(200); declare variable LANCAMENTO_AJUSTE numeric(15,4); declare variable VALOR_CALCULADO numeric(15,4); declare variable FLAG varchar(20); declare variable NATUREZA varchar(10); begin -- ################################ INICIO manutencao ############################################## CONT = 0; VALOR_M1 = 0; VALOR_M2 = 0; LANCAMENTO_AJUSTE = 0; VALOR_CALCULADO = 0; FLAG = formatdatetime(current_timestamp); for /* Verifica Variação de Estoque */ SELECT ANO,MES, SUM(CAST((M.SALDO + M.SALDO_EMTERCEIRO) * M.CUSTO_MEDIO AS NUMERIC(15,2))) AS VALOR FROM TBESTOQUE_SALDO_MES M, TBPRODUTO P WHERE M.PRODUTO_CODIGO = P.CODIGO AND M.DATA between dateadd(month, -1, cast('01.'||:IMES||'.'||:IANO as date)) and fn_end_of_month('01.'||:IMES||'.'||:IANO) AND P.FAMILIA_CODIGO = 52 AND P.INVENTARIO = '1' GROUP BY 1,2 order by 1,2 into ANO, MES, VALOR do begin CONT = CONT + 1; if(CONT = 1)then begin VALOR_M1 = VALOR; end else begin VALOR_M2 = VALOR; end end VARIACAO_ESTOQUE = VALOR_M1 - VALOR_M2; for /* Verificação dos lançamentos contábeis */ SELECT CONTA, /*NATUREZA,*/ CONTA_DESCRICAO, SUM(VALOR) VALOR FROM ( SELECT A.CONTA, C.DESCRICAO CONTA_DESCRICAO, A.NATUREZA, IIF(A.NATUREZA = 'C', A.VALOR*(-1),A.VALOR) AS VALOR FROM TBMOVCONTABIL A, TBCONTACONTABIL C WHERE A.CONTA = C.CONTA AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) --AND A.CODORIGEM = 'NFE' and a.tipolanc <> 'E' AND A.CONTA IN ( 31101000009 ) ) GROUP BY 1,2/*,3*/ into CONTA, --NATUREZA, DESCRICAO, VALOR do begin LANCAMENTO_AJUSTE = LANCAMENTO_AJUSTE + VALOR; end for /* Verificacao de Transações de Estoque C.Custo - MAT.USO/CONSUMO - Fam.52-MANUTENCAO*/ SELECT CCUSTO, SUM(CUSTO_TOTAL) VALOR FROM ( SELECT ESTABELECIMENTO_ID, LOCALIZACAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, iif(char_length(CCUSTO)>0,substring(CCUSTO from 1 for 2),'11') CCUSTO, DATA, (SELECT CODIGO||'-'||DESCRICAO FROM TBOPERACAO WHERE CODIGO = OPERACAO) OPERACAO, TIPO, QUANTIDADE, CUSTO_MEDIO, CAST(QUANTIDADE * CUSTO_MEDIO AS NUMERIC(15,4)) CUSTO_TOTAL FROM ( SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, P.CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, A.DATA, A.OPERACAO_CODIGO OPERACAO, A.TIPO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.CCUSTO,A.CENTRO_DE_CUSTO) CCUSTO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.QUANTIDADE,A.QUANTIDADE) QUANTIDADE, (SELECT M.CUSTO_MEDIO FROM TBESTOQUE_SALDO_DIARIO M WHERE M.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND A.LOCALIZACAO_CODIGO = M.LOCALIZACAO_CODIGO AND M.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND M.DATA = A.DATA) * IIF(A.TIPO = 'S', -1, 1) CUSTO_MEDIO FROM TBPRODUTO P, TBOPERACAO_DRE O, TBESTOQUE_TRANSACAO_ITEM A LEFT JOIN TBESTOQUE_TRANSACAO_ITEM_CCUSTO C ON C.ESTOQUE_TRANSACAO_ID = A. CONTROLE WHERE A.PRODUTO_CODIGO = P.CODIGO AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) AND O.OPERACAO_CODIGO = A.OPERACAO_CODIGO AND(O.PRODUCAO_CONSUMO = '1' or O.DESPERDICIO = '1' or O.AJUSTE = '1') AND P.FAMILIA_CODIGO = 52 AND P.INVENTARIO = '1' AND A.TIPO <> 'B' ) ) GROUP BY 1 into CONTA, VALOR do begin VALOR_CALCULADO = VALOR_CALCULADO + VALOR; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300032', '', :CONTA, :VALOR * -1, :IANO, :IMES, 9, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); end V1 = VARIACAO_ESTOQUE - (LANCAMENTO_AJUSTE * -1); V2 = (V1 + VALOR_CALCULADO) * -1; V1 = VALOR_CALCULADO; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300032', '', '11', :V2 * -1, :IANO, :IMES, 10, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); DELETE FROM TBMOVCONTABIL_DRE WHERE ANO = :IANO AND MES = :IMES AND TIPO IN (9,10) AND FLAG <> :FLAG; -- ################################ FIM manutencao ############################################## suspend; end ^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SP_DRE_ESCRITORIO ( IANO integer, IMES integer) returns ( V1 numeric(15,2), V2 numeric(15,2)) as declare variable ANO integer; declare variable MES integer; declare variable VALOR numeric(15,4); declare variable VALOR_M1 numeric(15,4); declare variable VALOR_M2 numeric(15,4); declare variable CONT integer; declare variable VARIACAO_ESTOQUE numeric(15,4); declare variable CONTA varchar(50); declare variable DESCRICAO varchar(200); declare variable LANCAMENTO_AJUSTE numeric(15,4); declare variable VALOR_CALCULADO numeric(15,4); declare variable FLAG varchar(20); declare variable NATUREZA varchar(10); begin -- ################################ INICIO escritotio ############################################## CONT = 0; VALOR_M1 = 0; VALOR_M2 = 0; LANCAMENTO_AJUSTE = 0; VALOR_CALCULADO = 0; FLAG = formatdatetime(current_timestamp); for /* Verifica Variação de Estoque */ SELECT ANO,MES, SUM(CAST((M.SALDO + M.SALDO_EMTERCEIRO) * M.CUSTO_MEDIO AS NUMERIC(15,2))) AS VALOR FROM TBESTOQUE_SALDO_MES M, TBPRODUTO P WHERE M.PRODUTO_CODIGO = P.CODIGO AND M.DATA between dateadd(month, -1, cast('01.'||:IMES||'.'||:IANO as date)) and fn_end_of_month('01.'||:IMES||'.'||:IANO) AND P.FAMILIA_CODIGO = 50 AND P.INVENTARIO = '1' GROUP BY 1,2 order by 1,2 into ANO, MES, VALOR do begin CONT = CONT + 1; if(CONT = 1)then begin VALOR_M1 = VALOR; end else begin VALOR_M2 = VALOR; end end VARIACAO_ESTOQUE = VALOR_M1 - VALOR_M2; for /* Verificação dos lançamentos contábeis */ SELECT CONTA, /*NATUREZA,*/ CONTA_DESCRICAO, SUM(VALOR) VALOR FROM ( SELECT A.CONTA, C.DESCRICAO CONTA_DESCRICAO, A.NATUREZA, IIF(A.NATUREZA = 'C', A.VALOR*(-1),A.VALOR) AS VALOR FROM TBMOVCONTABIL A, TBCONTACONTABIL C WHERE A.CONTA = C.CONTA AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) --AND A.CODORIGEM = 'NFE' and a.tipolanc <> 'E' AND A.CONTA IN ( --'31101000006' '32100300015' ) ) GROUP BY 1,2/*,3*/ into CONTA, --NATUREZA, DESCRICAO, VALOR do begin LANCAMENTO_AJUSTE = LANCAMENTO_AJUSTE + VALOR; end for /* Verificacao de Transações de Estoque C.Custo - MAT.USO/CONSUMO - Fam.52-MANUTENCAO*/ SELECT CCUSTO, SUM(CUSTO_TOTAL) VALOR FROM ( SELECT ESTABELECIMENTO_ID, LOCALIZACAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, iif(char_length(CCUSTO)>0,substring(CCUSTO from 1 for 2),'11') CCUSTO, DATA, (SELECT CODIGO||'-'||DESCRICAO FROM TBOPERACAO WHERE CODIGO = OPERACAO) OPERACAO, TIPO, QUANTIDADE, CUSTO_MEDIO, CAST(QUANTIDADE * CUSTO_MEDIO AS NUMERIC(15,4)) CUSTO_TOTAL FROM ( SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, P.CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, A.DATA, A.OPERACAO_CODIGO OPERACAO, A.TIPO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.CCUSTO,A.CENTRO_DE_CUSTO) CCUSTO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.QUANTIDADE,A.QUANTIDADE) QUANTIDADE, (SELECT M.CUSTO_MEDIO FROM TBESTOQUE_SALDO_DIARIO M WHERE M.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND A.LOCALIZACAO_CODIGO = M.LOCALIZACAO_CODIGO AND M.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND M.DATA = A.DATA) * IIF(A.TIPO = 'S', -1, 1) CUSTO_MEDIO FROM TBPRODUTO P, TBOPERACAO_DRE O, TBESTOQUE_TRANSACAO_ITEM A LEFT JOIN TBESTOQUE_TRANSACAO_ITEM_CCUSTO C ON C.ESTOQUE_TRANSACAO_ID = A. CONTROLE WHERE A.PRODUTO_CODIGO = P.CODIGO AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) AND O.OPERACAO_CODIGO = A.OPERACAO_CODIGO AND(O.PRODUCAO_CONSUMO = '1' or O.DESPERDICIO = '1' or O.AJUSTE = '1') AND P.FAMILIA_CODIGO = 50 AND P.INVENTARIO = '1' AND A.TIPO <> 'B' ) ) GROUP BY 1 into CONTA, VALOR do begin VALOR_CALCULADO = VALOR_CALCULADO + VALOR; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300034', '', :CONTA, :VALOR * -1, :IANO, :IMES, 11, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); end V1 = VARIACAO_ESTOQUE - (LANCAMENTO_AJUSTE * -1); V2 = (V1 + VALOR_CALCULADO) * -1; V1 = VALOR_CALCULADO; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300034', '', '11', :V2 * -1, :IANO, :IMES, 12, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); DELETE FROM TBMOVCONTABIL_DRE WHERE ANO = :IANO AND MES = :IMES AND TIPO IN (11,12) AND FLAG <> :FLAG; -- ################################ FIM escritorio ############################################## suspend; end ^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SP_DRE_CONSUMO ( IANO integer, IMES integer) returns ( V1 numeric(15,2), V2 numeric(15,2)) as declare variable ANO integer; declare variable MES integer; declare variable VALOR numeric(15,4); declare variable VALOR_M1 numeric(15,4); declare variable VALOR_M2 numeric(15,4); declare variable CONT integer; declare variable VARIACAO_ESTOQUE numeric(15,4); declare variable CONTA varchar(50); declare variable DESCRICAO varchar(200); declare variable LANCAMENTO_AJUSTE numeric(15,4); declare variable VALOR_CALCULADO numeric(15,4); declare variable FLAG varchar(20); declare variable NATUREZA varchar(10); begin -- ################################ INICIO consumo ############################################## CONT = 0; VALOR_M1 = 0; VALOR_M2 = 0; LANCAMENTO_AJUSTE = 0; VALOR_CALCULADO = 0; FLAG = formatdatetime(current_timestamp); for /* Verifica Variação de Estoque */ SELECT ANO,MES, SUM(CAST((M.SALDO + M.SALDO_EMTERCEIRO) * M.CUSTO_MEDIO AS NUMERIC(15,2))) AS VALOR FROM TBESTOQUE_SALDO_MES M, TBPRODUTO P WHERE M.PRODUTO_CODIGO = P.CODIGO AND M.DATA between dateadd(month, -1, cast('01.'||:IMES||'.'||:IANO as date)) and fn_end_of_month('01.'||:IMES||'.'||:IANO) AND P.FAMILIA_CODIGO IN (29,136) AND P.INVENTARIO = '1' GROUP BY 1,2 order by 1,2 into ANO, MES, VALOR do begin CONT = CONT + 1; if(CONT = 1)then begin VALOR_M1 = VALOR; end else begin VALOR_M2 = VALOR; end end VARIACAO_ESTOQUE = VALOR_M1 - VALOR_M2; for /* Verificação dos lançamentos contábeis */ SELECT CONTA, /*NATUREZA,*/ CONTA_DESCRICAO, SUM(VALOR) VALOR FROM ( SELECT A.CONTA, C.DESCRICAO CONTA_DESCRICAO, A.NATUREZA, IIF(A.NATUREZA = 'C', A.VALOR*(-1),A.VALOR) AS VALOR FROM TBMOVCONTABIL A, TBCONTACONTABIL C WHERE A.CONTA = C.CONTA AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) --AND A.CODORIGEM = 'NFE' and a.tipolanc <> 'E' AND A.CONTA IN ( '31101000005' ) ) GROUP BY 1,2/*,3*/ into CONTA, --NATUREZA, DESCRICAO, VALOR do begin LANCAMENTO_AJUSTE = LANCAMENTO_AJUSTE + VALOR; end for /* Verificacao de Transações de Estoque C.Custo - MAT.USO/CONSUMO - Fam.52-MANUTENCAO*/ SELECT CCUSTO, SUM(CUSTO_TOTAL) VALOR FROM ( SELECT ESTABELECIMENTO_ID, LOCALIZACAO_ID, PRODUTO_ID, PRODUTO_DESCRICAO, iif(char_length(CCUSTO)>0,substring(CCUSTO from 1 for 2),'11') CCUSTO, DATA, (SELECT CODIGO||'-'||DESCRICAO FROM TBOPERACAO WHERE CODIGO = OPERACAO) OPERACAO, TIPO, QUANTIDADE, CUSTO_MEDIO, CAST(QUANTIDADE * CUSTO_MEDIO AS NUMERIC(15,4)) CUSTO_TOTAL FROM ( SELECT A.ESTABELECIMENTO_CODIGO ESTABELECIMENTO_ID, A.LOCALIZACAO_CODIGO LOCALIZACAO_ID, P.CODIGO PRODUTO_ID, P.DESCRICAO PRODUTO_DESCRICAO, A.DATA, A.OPERACAO_CODIGO OPERACAO, A.TIPO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.CCUSTO,A.CENTRO_DE_CUSTO) CCUSTO, IIF(C.ESTOQUE_TRANSACAO_ID>0,C.QUANTIDADE,A.QUANTIDADE) QUANTIDADE, (SELECT M.CUSTO_MEDIO FROM TBESTOQUE_SALDO_DIARIO M WHERE M.ESTABELECIMENTO_CODIGO = A.ESTABELECIMENTO_CODIGO AND A.LOCALIZACAO_CODIGO = M.LOCALIZACAO_CODIGO AND M.PRODUTO_CODIGO = A.PRODUTO_CODIGO AND M.DATA = A.DATA) * IIF(A.TIPO = 'S', -1, 1) CUSTO_MEDIO FROM TBPRODUTO P, TBOPERACAO_DRE O, TBESTOQUE_TRANSACAO_ITEM A LEFT JOIN TBESTOQUE_TRANSACAO_ITEM_CCUSTO C ON C.ESTOQUE_TRANSACAO_ID = A. CONTROLE WHERE A.PRODUTO_CODIGO = P.CODIGO AND A.DATA BETWEEN fn_start_of_month('01.'||:IMES||'.'||:IANO) AND fn_end_of_month('01.'||:IMES||'.'||:IANO) AND O.OPERACAO_CODIGO = A.OPERACAO_CODIGO AND(O.PRODUCAO_CONSUMO = '1' or O.DESPERDICIO = '1' or O.AJUSTE = '1') AND P.FAMILIA_CODIGO IN (29,136) AND P.INVENTARIO = '1' AND A.TIPO <> 'B' ) ) GROUP BY 1 into CONTA, VALOR do begin VALOR_CALCULADO = VALOR_CALCULADO + VALOR; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300036', '', :CONTA, :VALOR * -1, :IANO, :IMES, 13, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); end V1 = VARIACAO_ESTOQUE - (LANCAMENTO_AJUSTE * -1); V2 = (V1 + VALOR_CALCULADO) * -1; V1 = VALOR_CALCULADO; UPDATE OR INSERT INTO TBMOVCONTABIL_DRE (CONTA, NATUREZA, CCUSTO, VALOR, ANO, MES,TIPO, FLAG) VALUES ('32100300036', '', '11', :V2 * -1, :IANO, :IMES, 14, :FLAG) MATCHING (CONTA, CCUSTO, ANO, MES, TIPO); DELETE FROM TBMOVCONTABIL_DRE WHERE ANO = :IANO AND MES = :IMES AND TIPO IN (13,14) AND FLAG <> :FLAG; -- ################################ FIM consumo ############################################## suspend; end ^ SET TERM ; ^