Advertisement
Guest User

Untitled

a guest
Mar 12th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* SCRIPT PARA RETORNAR STATUS DA EXPEDIÇÃO
  2.  * VERSÃO:          1.0
  3.  * ALTERAÇÂO:       11/11/2016
  4.  * MODIFICADO POR : LUCAS CHINELATE
  5.  */
  6.  
  7. DECLARE
  8.    idExpedicao            NUMBER;
  9.    deletaReservas         VARCHAR(1);
  10.    deletaRessuprimentos   VARCHAR(1);
  11.    retornaStatusExpedicao VARCHAR(1);
  12.    
  13.    idReservaSaida         VARCHAR(10000);
  14.    idReservaRessuprimento VARCHAR(10000);
  15.    idOndasRessuprimento   VARCHAR(10000);
  16. BEGIN
  17.   idExpedicao := :idExpedicao;
  18.   deletaReservas := 'S';
  19.   deletaRessuprimentos := 'S';
  20.   retornaStatusExpedicao := 'S';
  21.  
  22.   /* DELETA OS RESSUPRIMENTOS GERADOS PELA EXPEDIÇÂO */
  23.   IF (deletaRessuprimentos = 'S') THEN
  24.  
  25.       --GUARDEI EM UMA VARIAVEL OS IDS DAS ONDAS DE RESSUPRIMENTO
  26.       SELECT ONDA INTO idOndasRessuprimento
  27.         FROM (SELECT LISTAGG(COD_ONDA_RESSUPRIMENTO,',') WITHIN GROUP (ORDER BY COD_ONDA_RESSUPRIMENTO) ONDA
  28.                 FROM (SELECT DISTINCT COD_ONDA_RESSUPRIMENTO
  29.                          FROM ONDA_RESSUPRIMENTO_PEDIDO ORP
  30.                          LEFT JOIN PEDIDO P ON ORP.COD_PEDIDO = P.COD_PEDIDO
  31.                          LEFT JOIN CARGA C ON C.COD_CARGA = P.COD_CARGA
  32.                          WHERE C.COD_EXPEDICAO = idExpedicao));
  33.  
  34.       --GUARDEI EM UMA VARIAVEL OS IDS DAS RESERVAS DE ESTOQUE GERADAS PELA ONDA DE RESSUPRIMENTO
  35.       SELECT RESERVA INTO idReservaRessuprimento
  36.         FROM (SELECT LISTAGG(COD_RESERVA_ESTOQUE,',') WITHIN GROUP (ORDER BY COD_RESERVA_ESTOQUE) RESERVA
  37.                 FROM RESERVA_ESTOQUE_ONDA_RESSUP REOR
  38.                INNER JOIN ONDA_RESSUPRIMENTO_OS  ORO ON ORO.COD_ONDA_RESSUPRIMENTO_OS = REOR.COD_ONDA_RESSUPRIMENTO_OS
  39.                WHERE COD_ONDA_RESSUPRIMENTO IN (SELECT REGEXP_SUBSTR(idOndasRessuprimento, '[^,]+', 1, LEVEL) AS R FROM DUAL
  40.                                                CONNECT BY REGEXP_SUBSTR (idOndasRessuprimento, '[^,]+', 1, LEVEL) IS NOT NULL));
  41.  
  42.       --DELETO OS REGISTROS NA TABELA RESERVA_ESTOQUE_ONDA_RESSUP
  43.        DELETE FROM RESERVA_ESTOQUE_ONDA_RESSUP
  44.         WHERE COD_ONDA_RESSUPRIMENTO_OS IN
  45.             (SELECT COD_ONDA_RESSUPRIMENTO_OS FROM ONDA_RESSUPRIMENTO_OS
  46.               WHERE COD_ONDA_RESSUPRIMENTO IN (SELECT REGEXP_SUBSTR(idOndasRessuprimento, '[^,]+', 1, LEVEL) AS R FROM DUAL
  47.                                               CONNECT BY REGEXP_SUBSTR (idOndasRessuprimento, '[^,]+', 1, LEVEL) IS NOT NULL));
  48.  
  49.        --DELETO AS RESERVAS DE ESTOQUE
  50.        DELETE FROM RESERVA_ESTOQUE
  51.        WHERE COD_RESERVA_ESTOQUE IN (SELECT REGEXP_SUBSTR(idReservaRessuprimento, '[^,]+', 1, LEVEL) AS R FROM DUAL
  52.                                     CONNECT BY REGEXP_SUBSTR (idReservaRessuprimento, '[^,]+', 1, LEVEL) IS NOT NULL);
  53.  
  54.         --DELETO ONDA_RESSUPRIMENTO_OS_PRODUTO
  55.        DELETE FROM ONDA_RESSUPRIMENTO_OS_PRODUTO
  56.         WHERE COD_ONDA_RESSUPRIMENTO_OS IN
  57.             (SELECT COD_ONDA_RESSUPRIMENTO_OS FROM ONDA_RESSUPRIMENTO_OS
  58.               WHERE COD_ONDA_RESSUPRIMENTO IN (SELECT REGEXP_SUBSTR(idOndasRessuprimento, '[^,]+', 1, LEVEL) AS R FROM DUAL
  59.                                               CONNECT BY REGEXP_SUBSTR (idOndasRessuprimento, '[^,]+', 1, LEVEL) IS NOT NULL));
  60.  
  61.         --DELETO ONDA_RESSUPRIMENTO_OS
  62.        DELETE FROM ONDA_RESSUPRIMENTO_OS
  63.         WHERE COD_ONDA_RESSUPRIMENTO IN (SELECT REGEXP_SUBSTR(idOndasRessuprimento, '[^,]+', 1, LEVEL) AS R FROM DUAL
  64.                                         CONNECT BY REGEXP_SUBSTR (idOndasRessuprimento, '[^,]+', 1, LEVEL) IS NOT NULL);
  65.  
  66.        --DELETO AS ORDENS DE SERVIÇO
  67.        DELETE FROM ORDEM_SERVICO
  68.         WHERE COD_OS IN (SELECT COD_OS FROM ONDA_RESSUPRIMENTO_OS
  69.                           WHERE COD_ONDA_RESSUPRIMENTO IN (SELECT REGEXP_SUBSTR(idOndasRessuprimento, '[^,]+', 1, LEVEL) AS R FROM DUAL
  70.                                                           CONNECT BY REGEXP_SUBSTR (idOndasRessuprimento, '[^,]+', 1, LEVEL) IS NOT NULL));
  71.  
  72.         --DELETO ONDA_RESSUPRIMENTO_PEDIDO
  73.        DELETE FROM ONDA_RESSUPRIMENTO_PEDIDO
  74.         WHERE COD_ONDA_RESSUPRIMENTO IN (SELECT REGEXP_SUBSTR(idOndasRessuprimento, '[^,]+', 1, LEVEL) AS R FROM DUAL
  75.                                         CONNECT BY REGEXP_SUBSTR (idOndasRessuprimento, '[^,]+', 1, LEVEL) IS NOT NULL);
  76.  
  77.        --DELETO ONDA_RESSUPRIMENTO
  78.        DELETE FROM ONDA_RESSUPRIMENTO
  79.         WHERE COD_ONDA_RESSUPRIMENTO IN (SELECT REGEXP_SUBSTR(idOndasRessuprimento, '[^,]+', 1, LEVEL) AS R FROM DUAL
  80.                                         CONNECT BY REGEXP_SUBSTR (idOndasRessuprimento, '[^,]+', 1, LEVEL) IS NOT NULL);
  81.  
  82.  
  83.   END IF;
  84.  
  85.   /* DELETA AS RESERVAS DE SAIDA DA EXPEDIÇÃO */
  86.   IF (deletaReservas = 'S') THEN
  87.       SELECT RESERVAS INTO idReservaSaida
  88.         FROM (SELECT LISTAGG(COD_RESERVA_ESTOQUE,',')
  89.               WITHIN GROUP (ORDER BY COD_RESERVA_ESTOQUE) RESERVAS
  90.                 FROM RESERVA_ESTOQUE_EXPEDICAO WHERE COD_EXPEDICAO = idExpedicao);
  91.  
  92.       DELETE FROM RESERVA_ESTOQUE_EXPEDICAO WHERE COD_EXPEDICAO = idExpedicao;
  93.    
  94.       DELETE FROM RESERVA_ESTOQUE
  95.       WHERE COD_RESERVA_ESTOQUE IN (SELECT REGEXP_SUBSTR(idReservaSaida, '[^,]+', 1, LEVEL) AS R FROM DUAL
  96.                                     CONNECT BY REGEXP_SUBSTR (idReservaSaida, '[^,]+', 1, LEVEL) IS NOT NULL);
  97.   END IF;
  98.  
  99.   /* RETORNA O STATUS DA EXPEDIÇÃO */
  100.   IF (retornaStatusExpedicao = 'S') THEN
  101.     UPDATE EXPEDICAO SET COD_STATUS = 462, DTH_FINALIZACAO = NULL WHERE COD_EXPEDICAO IN(idExpedicao);
  102.    
  103.     DELETE FROM ETIQUETA_CONFERENCIA WHERE COD_ETIQUETA_SEPARACAO IN (
  104.     SELECT CODBARRAS FROM V_ETIQUETA_SEPARACAO WHERE EXPEDICAO IN (idExpedicao));
  105.    
  106.     DELETE FROM ETIQUETA_SEPARACAO WHERE COD_ETIQUETA_SEPARACAO IN(
  107.     SELECT CODBARRAS FROM V_ETIQUETA_SEPARACAO WHERE EXPEDICAO IN (idExpedicao));
  108.    
  109.     DELETE FROM ETIQUETA_MAE_QUEBRA WHERE COD_ETIQUETA_MAE IN (
  110.     SELECT COD_ETIQUETA_MAE FROM ETIQUETA_MAE WHERE COD_EXPEDICAO IN (idExpedicao));
  111.    
  112.     DELETE FROM EXPEDICAO_ANDAMENTO WHERE COD_EXPEDICAO IN (idExpedicao);
  113.    
  114.     DELETE FROM ETIQUETA_MAE WHERE COD_EXPEDICAO IN (idExpedicao);
  115.    
  116.     DELETE FROM MAPA_SEPARACAO_EMB_CLIENTE WHERE COD_MAPA_SEPARACAO IN (
  117.     SELECT COD_MAPA_SEPARACAO FROM MAPA_SEPARACAO WHERE COD_EXPEDICAO IN (idExpedicao));
  118.    
  119.     DELETE FROM MAPA_SEPARACAO_CONFERENCIA WHERE COD_MAPA_SEPARACAO IN (
  120.     SELECT COD_MAPA_SEPARACAO FROM MAPA_SEPARACAO WHERE COD_EXPEDICAO IN (idExpedicao));
  121.    
  122.     DELETE FROM MAPA_SEPARACAO_QUEBRA WHERE COD_MAPA_SEPARACAO IN (
  123.     SELECT COD_MAPA_SEPARACAO FROM MAPA_SEPARACAO WHERE COD_EXPEDICAO IN (idExpedicao));
  124.    
  125.     DELETE FROM MAPA_SEPARACAO_PRODUTO WHERE COD_MAPA_SEPARACAO IN (
  126.     SELECT COD_MAPA_SEPARACAO FROM MAPA_SEPARACAO WHERE COD_EXPEDICAO IN (idExpedicao));
  127.    
  128.     DELETE FROM MAPA_SEPARACAO_PEDIDO WHERE COD_MAPA_SEPARACAO IN (
  129.     SELECT COD_MAPA_SEPARACAO FROM MAPA_SEPARACAO WHERE COD_EXPEDICAO IN (idExpedicao));
  130.    
  131.     DELETE FROM MAPA_SEPARACAO WHERE COD_EXPEDICAO IN (idExpedicao);
  132.    
  133.     DELETE FROM ORDEM_SERVICO WHERE COD_EXPEDICAO IN (idExpedicao);
  134.    
  135.     UPDATE PEDIDO SET CONFERIDO = 0, IND_ETIQUETA_MAPA_GERADO = 'N' WHERE COD_CARGA IN (
  136.     SELECT COD_CARGA FROM CARGA WHERE COD_EXPEDICAO IN (idExpedicao));
  137.    
  138.     UPDATE PEDIDO_PRODUTO SET QTD_ATENDIDA = 0, QTD_CORTADA = 0 WHERE COD_PEDIDO IN (
  139.     SELECT COD_PEDIDO FROM PEDIDO WHERE COD_CARGA IN (
  140.     SELECT COD_CARGA FROM CARGA WHERE COD_EXPEDICAO IN (idExpedicao)));
  141.    
  142.     UPDATE VOLUME_PATRIMONIO  SET IND_OCUPADO = 'N' WHERE COD_VOLUME_PATRIMONIO IN (
  143.     SELECT COD_VOLUME_PATRIMONIO FROM EXPEDICAO_VOLUME_PATRIMONIO WHERE COD_EXPEDICAO IN (idExpedicao));
  144.    
  145.     DELETE FROM EXPEDICAO_VOLUME_PATRIMONIO WHERE COD_EXPEDICAO IN (idExpedicao);
  146.      
  147.   END IF;
  148.  
  149. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement