quinta-feira, 17 de agosto de 2017

Script para Refazer Estoque ou Custos - TGFESE

Executar esse script em algum gerenciador de banco de dados conectado na base:

Download, clique aqui.

DECLARE
    P_SQL VARCHAR2(4000);
  BEGIN
  
    EXECUTE IMMEDIATE 'TRUNCATE TABLE TGFESE';
  
    P_SQL := 'BEGIN ' || 'INSERT INTO TGFESE ' ||
             '( DTREFERENCIA, TIPMOV, CODTIPOPER, CODEMP, CODPROD, CODLOCALORIG, CONTROLE, ATUALESTOQUE, ATUALESTTERC, QTDNEG ' ||
             ',QTDENTRADAS, QTDSAIDAS, CODEMPCONTPART ) ' ||
             ' SELECT   TRUNC( CASE  WHEN T.ATUALLIVFIS = ''S'' OR T.CUPOMFISCAL = ''S'' THEN C.DTNEG ELSE NVL( C.DTENTSAI, C.DTNEG )  END ) AS DTREFERENCIA ' ||
             ',C.TIPMOV, C.CODTIPOPER, I.CODEMP, I.CODPROD, I.CODLOCALORIG, NVL( I.CONTROLE, '' '' ), I.ATUALESTOQUE, NVL( I.ATUALESTTERC, ''N'' ) AS ATUALESTTERC ' ||
             ',SUM( I.QTDNEG ) AS QTDNEG, SUM( CASE WHEN I.ATUALESTOQUE = -1 THEN 0 ELSE I.QTDNEG END ) AS QTDENTRADA ' ||
             ',SUM( CASE WHEN I.ATUALESTOQUE = -1 THEN I.QTDNEG ELSE 0 END ) AS QTDSAIDA ' ||
             ',CASE  WHEN C.TIPMOV = ''T'' AND I.CODEMP = C.CODEMPNEGOC THEN C.CODEMP ELSE C.CODEMPNEGOC END AS CODEMPCONTPART ' ||
             ' FROM TGFITE I, TGFCAB C, TGFTOP T ' ||
             ' WHERE I.RESERVA = ''N'' ' ||
             '      AND (    I.ATUALESTOQUE <> 0 OR I.ATUALESTTERC <> ''N'' ) ' ||
             '      AND I.NUNOTA = C.NUNOTA ' ||
             '      AND C.CODTIPOPER = T.CODTIPOPER AND C.DHTIPOPER = T.DHALTER ' ||
             'GROUP BY TRUNC( CASE WHEN T.ATUALLIVFIS = ''S'' OR T.CUPOMFISCAL = ''S'' THEN C.DTNEG ELSE NVL( C.DTENTSAI, C.DTNEG )  END ) ' ||
             ',C.TIPMOV, C.CODTIPOPER, I.CODEMP, I.CODPROD, I.CODLOCALORIG, NVL( I.CONTROLE, '' '' ),I.ATUALESTOQUE, NVL( I.ATUALESTTERC, ''N'' ) ' ||
             ',CASE WHEN C.TIPMOV = ''T'' AND I.CODEMP = C.CODEMPNEGOC THEN C.CODEMP ELSE C.CODEMPNEGOC END;   ' || ' ' ||
             'END;';
  
    EXECUTE IMMEDIATE P_SQL;
  

  END;

Nenhum comentário:

Postar um comentário