Advertisement
geracino

cancela_pedidos

Jan 28th, 2022 (edited)
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 8.27 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE Espp_Canc_Ped_Mais_45_Dias(Vnindacao IN INTEGER) IS
  2.   Pcancelapedidosuprim Msux_Cancelapedidosuprim%ROWTYPE;
  3.   Vstemp VARCHAR2(1);
  4.  
  5. --Regra cancelamento pedidos de compras que não foram recebido:
  6. BEGIN
  7.   DELETE esp_incons_job_canc_ped_compra a WHERE a.nome_objeto = 'Espp_Canc_Ped_Mais_45_Dias';
  8.   FOR T IN (SELECT * FROM
  9.            (/*select --1 as seq,
  10.                    A.TIPPEDIDOSUPRIM,
  11.                    A.ID_PEDIDOSUPRIM
  12.               From MACV_PSITEMRECEBER A, MAX_COMPRADOR B, MAX_EMPRESA C
  13.              Where A.SITUACAOQTDE = 'P'
  14.                AND A.tippedidosuprim = 'C'
  15.                AND (A.QTDSALDO - A.QTDTRANSITO) > 0
  16.                AND A.SEQCOMPRADOR = B.SEQCOMPRADOR
  17.                AND A.NROEMPRESA = C.NROEMPRESA
  18.                And a.dtaemissao < trunc(sysdate)-45--A.DTAEMISSAO between vdataincial and vdatafinal
  19.                And C.STATUS = 'A'
  20.              group by A.TIPPEDIDOSUPRIM,
  21.                       A.NROEMPRESA,
  22.                       A.SEQFORNECEDOR,
  23.                       A.NROPEDIDOSUPRIM,
  24.                       A.CENTRALLOJA,
  25.                       A.DTAEMISSAO,
  26.                       A.SEQCOMPRADOR,
  27.                       A.INDGEROUREPLICACAO,
  28.                       A.ID_PEDIDOSUPRIM,
  29.                       B.APELIDO,
  30.                       C.NOMEREDUZIDO,
  31.                       A.nropedfornecedor
  32.             Union*/
  33.             SELECT A.TIPPEDIDOSUPRIM,
  34.                    A.ID_PEDIDOSUPRIM
  35.               FROM MACV_PSITEMRECEBER A, MAX_COMPRADOR B, MAX_EMPRESA C
  36.              WHERE A.SITUACAOQTDE = 'P'
  37.                AND (A.QTDSALDO - A.QTDTRANSITO) > 0
  38.                AND A.SEQCOMPRADOR = B.SEQCOMPRADOR
  39.                AND A.NROEMPRESA = C.NROEMPRESA
  40.                AND a.dtaemissao < TRUNC(SYSDATE)-45--A.DTAEMISSAO between vdataincial and vdatafinal
  41.                AND C.STATUS = 'A'
  42.              GROUP BY A.TIPPEDIDOSUPRIM,
  43.                       A.ID_PEDIDOSUPRIM
  44.             UNION
  45.             SELECT A.TIPPEDIDOSUPRIM,
  46.                    A.ID_PEDIDOSUPRIM
  47.               FROM MACV_PSITEMEXPEDIR A, MAX_COMPRADOR B, MAX_EMPRESA C
  48.              WHERE A.QTDSALDO > 0
  49.                AND A.SEQCOMPRADOR = B.SEQCOMPRADOR
  50.                AND A.NROEMPRESA = C.NROEMPRESA
  51.                AND a.dtaemissao < TRUNC(SYSDATE)-45--A.DTAEMISSAO between vdataincial and vdatafinal
  52.                AND C.STATUS = 'A'
  53.              GROUP BY  A.TIPPEDIDOSUPRIM,
  54.                        A.ID_PEDIDOSUPRIM
  55.             --UNION
  56.             /*select A.TIPPEDIDOSUPRIM,
  57.                    A.ID_PEDIDOSUPRIM
  58.               From MACV_PSITEMRECEBER A, MAX_COMPRADOR B, MAX_EMPRESA C
  59.              Where A.SITUACAOQTDE = 'P'
  60.                AND (A.QTDSALDO - A.QTDTRANSITO) > 0
  61.                AND A.SEQCOMPRADOR = B.SEQCOMPRADOR
  62.                AND A.NROEMPRESA = C.NROEMPRESA
  63.                AND B.SEQCOMPRADOR = 35
  64.                And a.dtaemissao < trunc(sysdate)-45--A.DTAEMISSAO between vdataincial and vdatafinal
  65.                And C.STATUS = 'A'
  66.              group by A.TIPPEDIDOSUPRIM,
  67.                       A.NROEMPRESA,
  68.                       A.SEQFORNECEDOR,
  69.                       A.NROPEDIDOSUPRIM,
  70.                       A.CENTRALLOJA,
  71.                       A.DTAEMISSAO,
  72.                       A.SEQCOMPRADOR,
  73.                       A.INDGEROUREPLICACAO,
  74.                       A.ID_PEDIDOSUPRIM,
  75.                       B.APELIDO,
  76.                       C.NOMEREDUZIDO,
  77.                       A.nropedfornecedor
  78.             UNION*/
  79.             -- PEDIDOS DE TRASFERENCIA COM MAIS DE 7.
  80.             /*select A.TIPPEDIDOSUPRIM,
  81.                    A.ID_PEDIDOSUPRIM
  82.               From MACV_PSITEMRECEBER A, MAX_COMPRADOR B, MAX_EMPRESA C
  83.              Where A.SITUACAOQTDE = 'P'
  84.                AND (A.QTDSALDO - A.QTDTRANSITO) > 0
  85.                AND A.SEQCOMPRADOR = B.SEQCOMPRADOR
  86.                AND A.NROEMPRESA = C.NROEMPRESA
  87.                And A.seqfornecedor IN
  88.                    (SELECT E.SEQPESSOAEMP FROM CBOXV_EMPRESA E)
  89.                   --and a.nropedidosuprim = 2911541
  90.                And A.tippedidosuprim iN ('C', 'T')
  91.                And A.centralloja = 'M'
  92.                And a.dtaemissao < trunc(sysdate)-45--A.DTAEMISSAO between vdataincial and vdatafinal
  93.                   --And A.DTAEMISSAO >= sysdate - 90
  94.                And C.STATUS = 'A'
  95.              group by A.TIPPEDIDOSUPRIM,
  96.                       A.NROEMPRESA,
  97.                       A.SEQFORNECEDOR,
  98.                       A.NROPEDIDOSUPRIM,
  99.                       A.CENTRALLOJA,
  100.                       A.DTAEMISSAO,
  101.                       A.SEQCOMPRADOR,
  102.                       A.INDGEROUREPLICACAO,
  103.                       A.ID_PEDIDOSUPRIM,
  104.                       B.APELIDO,
  105.                       C.NOMEREDUZIDO,
  106.                       A.nropedfornecedor*/
  107.                      ))
  108.   LOOP
  109.     --DBMS_OUTPUT.PUT_LINE(a => TO_CHAR(T.ID_PEDIDOSUPRIM));
  110.     --pkg_adm_compra.spmsu_cancelapedidocompra(t.Id_Pedidosuprim,'AUTOMATICO');
  111.     --commit;
  112.  
  113.     pcancelapedidosuprim.Indpedidoitem := 'P';
  114.     pcancelapedidosuprim.Tippedidosuprim := T.tippedidosuprim;
  115.     pcancelapedidosuprim.Id_Itempedido := T.Id_Pedidosuprim;
  116.  
  117.     pcancelapedidosuprim.Apporigem := 10; -- DEVE SER APPORIGEM 10
  118.     pcancelapedidosuprim.Usucancelamento := 'AUTOMATICO';
  119.  
  120.     Pkg_CancelaPedidoSuprim.sp_gravatabtemp(pcancelapedidosuprim);
  121.  
  122.  
  123.   END LOOP;
  124.  
  125.   Pkg_Cancelapedidosuprim.Sp_Proccancelamento(10, Vnindacao, Vstemp);
  126.  
  127.   INSERT INTO esp_incons_job_canc_ped_compra
  128.   SELECT 'Espp_Canc_Ped_Mais_45_Dias' nome_objeto, SYSDATE dtahora_inconsistencia, a.Nropedidosuprim, a.Nroempresa, b.Seqfornecedor, c.Nomerazao,
  129.          a.Codinconsistencia, a.Ocorrencia
  130.   FROM Msux_Inconsistecancelpedsuprim a, Msu_Pedidosuprim b, Ge_Pessoa c
  131.   WHERE a.Nropedidosuprim = b.Nropedidosuprim
  132.   AND b.Seqfornecedor = c.Seqpessoa
  133.   AND a.Apporigem = 10;
  134.  
  135.   Vstemp := NULL;
  136.  
  137.  
  138.  
  139.   DELETE Msux_Inconsistecancelpedsuprim;
  140.  
  141.   --Regra cancelamento saldo dos pedidos de compra:
  142.   FOR T IN (SELECT a.id_psitemreceber, a.seqfornecedor, a.Tippedidosuprim, a.Qtdsaldo, a.Seqproduto, a.Seqpsitemrecebido
  143.               FROM macv_psitemreceber a
  144.              WHERE a.situacaoqtde = 'P'
  145.                AND (a.qtdsaldo - a.qtdtransito) > 0
  146.                AND a.qtdrecebida > 0
  147.                AND a.dtaemissao < TRUNC(SYSDATE)-45--a.dtaemissao between vdataincial and vdatafinal
  148.                AND NOT EXISTS (SELECT 1
  149.                                  FROM msux_CancelaPedidoSuprim b
  150.                                 WHERE b.Id_Pedidosuprim = a.id_pedidosuprim)
  151.             )
  152.  
  153.    LOOP
  154.     --DBMS_OUTPUT.PUT_LINE(a => TO_CHAR(T.ID_PSITEMRECEBER));
  155.     --pkg_adm_compra.spmsu_cancelaitemreceber(t.id_psitemreceber, 'Automatico');
  156.     --commit;
  157.  
  158.     Pcancelapedidosuprim.Indpedidoitem := 'I';
  159.     Pcancelapedidosuprim.Tippedidosuprim := t.Tippedidosuprim;
  160.     Pcancelapedidosuprim.Id_Itempedido := t.id_psitemreceber;
  161.     Pcancelapedidosuprim.Apporigem := 10; -- DEVE SER APPORIGEM 10
  162.     Pcancelapedidosuprim.Usucancelamento := 'Automatico';
  163.     Pcancelapedidosuprim.Qtdcancelar := t.Qtdsaldo;
  164.     Pcancelapedidosuprim.Seqproduto := t.Seqproduto;
  165.     Pcancelapedidosuprim.Seqpsitem := t.Seqpsitemrecebido;
  166.     Pcancelapedidosuprim.Seqprocesso := NULL;
  167.  
  168.     Pkg_Cancelapedidosuprim.Sp_Gravatabtemp(Pcancelapedidosuprim);
  169.  
  170.   END LOOP;
  171.  
  172.   INSERT INTO esp_incons_job_canc_ped_compra
  173.   SELECT 'Espp_Canc_Ped_Mais_45_Dias' nome_objeto, SYSDATE dtahora_inconsistencia, a.Nropedidosuprim, a.Nroempresa, b.Seqfornecedor, c.Nomerazao,
  174.          a.Codinconsistencia, a.Ocorrencia
  175.   FROM Msux_Inconsistecancelpedsuprim a, Msu_Pedidosuprim b, Ge_Pessoa c
  176.   WHERE a.Nropedidosuprim = b.Nropedidosuprim
  177.   AND b.Seqfornecedor = c.Seqpessoa
  178.   AND a.Apporigem = 10;
  179.  
  180.   Pkg_Cancelapedidosuprim.Sp_Proccancelamento(10, Vnindacao, Vstemp);
  181.  
  182.  
  183.   INSERT INTO esp_incons_job_canc_ped_compra
  184.   SELECT 'Espp_Canc_Ped_Mais_45_Dias' nome_objeto, SYSDATE dtahora_inconsistencia, a.Nropedidosuprim, a.Nroempresa, b.Seqfornecedor, c.Nomerazao,
  185.          a.Codinconsistencia, a.Ocorrencia
  186.   FROM Msux_Inconsistecancelpedsuprim a, Msu_Pedidosuprim b, Ge_Pessoa c
  187.   WHERE a.Nropedidosuprim = b.Nropedidosuprim
  188.   AND b.Seqfornecedor = c.Seqpessoa
  189.   AND a.Apporigem = 10;
  190.  
  191.   --IF Vnindacao = 1 THEN
  192.      COMMIT;
  193.   --END IF;
  194. END Espp_Canc_Ped_Mais_45_Dias;
  195.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement