create or replace 
PROCEDURE IMPORTA_ALT_LISTA_PRECIOS
IS
   V_CDFILIAL  VARCHAR2(4);
   V_NUMCOLETA VARCHAR2(10);
   V_CDMARCA   VARCHAR2(5);
   V_CDREGIAO  VARCHAR2(3);
   V_CDFORNEC  VARCHAR2(21);
   V_CDPRODUTO VARCHAR2(10);
   V_VDPRSEMPR VARCHAR2(15);
   V_NMPRODUTO VARCHAR2(50);
   V_NMFANTFOR VARCHAR2(30);
   V_NMMARCA   VARCHAR2(20);
BEGIN
   V_VDPRSEMPR := ' ';
   FOR C_LISTAPRECO IN
       (SELECT U.CDCHAVE, U.VRPRECUNIITM, U.IDINTERFACE
          FROM USR_SAP_ALT_LISTPRECO U
         WHERE U.DTINTERFACEDEST IS NULL
         ORDER BY U.CDCHAVE)
   LOOP
      V_CDFILIAL  := SUBSTR(C_LISTAPRECO.CDCHAVE, 1, 4);
      V_NUMCOLETA := SUBSTR(C_LISTAPRECO.CDCHAVE, 5, 10);
      V_CDMARCA   := SUBSTR(C_LISTAPRECO.CDCHAVE, 15, 5);
      V_CDREGIAO  := SUBSTR(C_LISTAPRECO.CDCHAVE, 20, 3);
      
      IF LENGTH(C_LISTAPRECO.CDCHAVE) = 53 THEN
         V_CDFORNEC := SUBSTR(C_LISTAPRECO.CDCHAVE, 23, 21);
      ELSE
         V_CDFORNEC := SUBSTR(C_LISTAPRECO.CDCHAVE, 23, ((LENGTH(C_LISTAPRECO.CDCHAVE)-10)-22));
      END IF;
      
      V_CDPRODUTO := SUBSTR(C_LISTAPRECO.CDCHAVE, -10);

      IF (V_VDPRSEMPR <> V_CDFILIAL||V_NUMCOLETA) THEN
         IF (TRIM(V_VDPRSEMPR) IS NOT NULL) THEN
            FOR C_PROD_N_ATUAL IN
                (SELECT CDPRODUTO, CDMARCA, CDFORNECED
                   FROM ITEMCOLE
                  WHERE CDFILIAL    = SUBSTR(V_VDPRSEMPR, 1, 4)
                    AND NRCOLEPRECO = SUBSTR(V_VDPRSEMPR, 5, 10)
                    AND VRPRECOITMPI IS NULL)
            LOOP
               SELECT NMPRODUTO
                 INTO V_NMPRODUTO
                 FROM PRODUTO
                WHERE CDPRODUTO = C_PROD_N_ATUAL.CDPRODUTO;
               
               SELECT NMMARCA
                 INTO V_NMMARCA
                 FROM MARCA
                WHERE CDMARCA = C_PROD_N_ATUAL.CDMARCA;
                 
                SELECT CDEXFORNECED
                  INTO V_NMFANTFOR
                  FROM FORNECEDOR
                 WHERE CDFORNECED = C_PROD_N_ATUAL.CDFORNECED;
               
               INSERT INTO USR_SAP_LOG(IDINTERFACE, IDSEQLOG, IDPROCESSO, DTLOG, STATUS, OBSSTATUS)
               VALUES(SUBSTR(V_VDPRSEMPR, 5, 10), 'A', 1, SYSDATE, 1, 'Producto '||V_NMPRODUTO||', marca '||V_NMMARCA||' del proveedor '||V_NMFANTFOR||
                                                                       ' del site '||SUBSTR(V_VDPRSEMPR, 1, 4)||' en la lista '||
                                                                       SUBSTR(V_VDPRSEMPR, 5, 10)||' no posee precio ec'||CHR(243)||'nomico PI oriundos de SAP');
            END LOOP;
            
            UPDATE ITEMCOLE
               SET VRPRECOITMPI = VRPRECUNIITM
             WHERE CDFILIAL    = SUBSTR(V_VDPRSEMPR, 1, 4)
               AND NRCOLEPRECO = SUBSTR(V_VDPRSEMPR, 5, 10)
               AND VRPRECOITMPI IS NULL;         
         END IF;
         
         V_VDPRSEMPR := V_CDFILIAL||V_NUMCOLETA;
      END IF;
      
      UPDATE ITEMCOLE
         SET VRPRECOITMPI = C_LISTAPRECO.VRPRECUNIITM
       WHERE CDFILIAL     = V_CDFILIAL
         AND NRCOLEPRECO  = V_NUMCOLETA
         AND CDMARCA      = V_CDMARCA
         AND CDREGIAO     = V_CDREGIAO
         AND CDFORNECED   = V_CDFORNEC
         AND CDPRODUTO    = V_CDPRODUTO;
      
      IF SQL%ROWCOUNT > 0 THEN
         INSERT INTO USR_SAP_LOG(IDINTERFACE, IDSEQLOG, IDPROCESSO, DTLOG, STATUS, OBSSTATUS)
         VALUES(C_LISTAPRECO.IDINTERFACE, 'A', 1, SYSDATE, 0, 'Lista de precio actualizada con suceso');

         UPDATE USR_SAP_ALT_LISTPRECO 
            SET DTINTERFACEDEST = SYSDATE, 
                STATUS = 0
          WHERE IDINTERFACE = C_LISTAPRECO.IDINTERFACE;
      ELSE
         INSERT INTO USR_SAP_LOG(IDINTERFACE, IDSEQLOG, IDPROCESSO, DTLOG, STATUS, OBSSTATUS)
         VALUES(C_LISTAPRECO.IDINTERFACE, 'A', 1, SYSDATE, 1, 'No fueram actualizados ningun producto');

         UPDATE USR_SAP_ALT_LISTPRECO 
            SET STATUS = 2
          WHERE IDINTERFACE = C_LISTAPRECO.IDINTERFACE;
      END IF;
   END LOOP;
   
   FOR C_PROD_N_ATUAL IN
       (SELECT CDPRODUTO, CDMARCA, CDFORNECED
          FROM ITEMCOLE
         WHERE CDFILIAL    = V_CDFILIAL
           AND NRCOLEPRECO = V_NUMCOLETA
           AND VRPRECOITMPI IS NULL)
   LOOP
      SELECT NMPRODUTO
        INTO V_NMPRODUTO
        FROM PRODUTO
       WHERE CDPRODUTO = C_PROD_N_ATUAL.CDPRODUTO;
      
      SELECT NMMARCA
        INTO V_NMMARCA
        FROM MARCA
       WHERE CDMARCA = C_PROD_N_ATUAL.CDMARCA;
        
       SELECT CDEXFORNECED
         INTO V_NMFANTFOR
         FROM FORNECEDOR
        WHERE CDFORNECED = C_PROD_N_ATUAL.CDFORNECED;
      
      INSERT INTO USR_SAP_LOG(IDINTERFACE, IDSEQLOG, IDPROCESSO, DTLOG, STATUS, OBSSTATUS)
      VALUES(SUBSTR(V_VDPRSEMPR, 5, 10), 'A', 1, SYSDATE, 1, 'Producto '||V_NMPRODUTO||', marca '||V_NMMARCA||' del proveedor '||V_NMFANTFOR||
                                                              ' del site '||V_CDFILIAL||' en la lista '||
                                                              V_NUMCOLETA||' no posee precio ec'||CHR(243)||'nomico PI oriundos de SAP');
   END LOOP;
   
   UPDATE ITEMCOLE
      SET VRPRECOITMPI = VRPRECUNIITM
    WHERE CDFILIAL    = V_CDFILIAL
      AND NRCOLEPRECO = V_NUMCOLETA
      AND VRPRECOITMPI IS NULL; 
   
   COMMIT;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('IMPORTA_ALT_LISTA_PRECIOS','6.05.xxx'); END;
/