/*
Procedure copia da USR_EXPORTA_PRODUTO da Teknisa

Alteracoes:

1- Retirado o right join da tabela produto com a tabela usr_produto(+),

para que somente produtos com tipo cadastrado sejam integrados, nos dois cursores.

2- Alterado de '01' para null os valores inseridos para os campos W1_EMPRESA, W1_FILIAL

onde o W1_TPEDI = 2 e 3, para que os produtos sejam relicados para todas as empresas no Protheus.

*/

create or replace PROCEDURE USR_EXPORTA_PRODUTO_OFICIAL
AS
   V_TESTE       VARCHAR(1);
   V_NOVOCODIGO  INTEGER;
BEGIN
   FOR C_PROD IN (SELECT P.CDPRODUTO, P.CDARVPROD, P.NMPRODUTO, P.SGUNIDADE,
                         U.USR_CDTPPRODUTO, P.IDPRODATIVPR
                    FROM PRODUTO P, PRSUBGRPROD G, USR_PRODTPPRO U
                   WHERE P.USR_DTEXPPROD IS NULL
                     AND G.CDPRODUTO(+) = P.CDPRODUTO
                     AND G.CDFILISUBGR = 'P'
                     AND G.CDGRUPPROD  = '0000009999'
                     AND SUBSTR(P.CDARVPROD, 1, 1) <> 'F'
                     AND CDPRODESTO IS NOT NULL
                     AND P.CDPRODUTO = U.USR_CDPRODTPPRO
                     AND P.DTULTATUPROD>= TO_DATE('01/01/2011','DD/MM/YYYY')) LOOP

      IF SUBSTR(C_PROD.CDARVPROD,9,2) <> 'xx' THEN

         /* Retorna o sequencial para a tabela */
         BEGIN
            SELECT W1_IDPROD.NEXTVAL
              INTO V_NOVOCODIGO
              FROM DUAL;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_NOVOCODIGO := 1;
         END;
         INSERT INTO USR_ZW1
            (W1_IDPROD, W1_EMPRESA, W1_FILIAL, W1_COD, W1_DESC, W1_UM,
             W1_DTGRV, W1_HRGRV, W1_TPEDI, W1_TIPO)
         VALUES
            (V_NOVOCODIGO, '01', '01', SUBSTR(C_PROD.CDARVPROD,1,15), SUBSTR(C_PROD.NMPRODUTO, 1, 30), SUBSTR(C_PROD.SGUNIDADE, 1, 2),
             TRUNC(SYSDATE), TO_CHAR(SYSDATE, 'HH24MI'), '1', SUBSTR(C_PROD.USR_CDTPPRODUTO, 1, 2));

         IF C_PROD.IDPRODATIVPR = 'N' THEN

            /* Retorna o sequencial para a tabela */
            BEGIN
               SELECT W1_IDPROD.NEXTVAL
                 INTO V_NOVOCODIGO
                 FROM DUAL;
            EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  V_NOVOCODIGO := 1;
            END;

            INSERT INTO USR_ZW1
               (W1_IDPROD, W1_EMPRESA, W1_FILIAL, W1_COD, W1_DESC, W1_UM,
                W1_DTGRV, W1_HRGRV, W1_TPEDI, W1_TIPO)
            VALUES
               (V_NOVOCODIGO, NULL, NULL, SUBSTR(C_PROD.CDARVPROD,1,15), SUBSTR(C_PROD.NMPRODUTO, 1, 30), SUBSTR(C_PROD.SGUNIDADE, 1, 2),
                TRUNC(SYSDATE), TO_CHAR(SYSDATE, 'HH24MI'), '2', SUBSTR(C_PROD.USR_CDTPPRODUTO, 1, 2));
         END IF;

         UPDATE PRODUTO
            SET USR_DTEXPPROD = SYSDATE
          WHERE CDPRODUTO = C_PROD.CDPRODUTO;
      END IF;
   END LOOP;

   FOR C_PRODUPD IN (SELECT P.CDPRODUTO, P.CDARVPROD, P.NMPRODUTO, P.SGUNIDADE,
                            U.USR_CDTPPRODUTO, P.IDPRODATIVPR
                       FROM PRODUTO P, PRSUBGRPROD G, USR_PRODTPPRO U
                      WHERE ((P.DTULTATUPROD >= USR_DTEXPPROD)
                         OR (P.DTULTATUPROD  >= USR_DTEXPPROD))
                        AND (G.CDPRODUTO(+)   = P.CDPRODUTO)
                        AND G.CDFILISUBGR = 'P'
                        AND G.CDGRUPPROD  = '0000009999'
                        AND SUBSTR(P.CDARVPROD, 1, 1) <> 'F'
                        AND CDPRODESTO IS NOT NULL
                        AND P.CDPRODUTO = U.USR_CDPRODTPPRO
                        AND P.DTULTATUPROD>= TO_DATE('01/01/2011','DD/MM/YYYY')) LOOP

      IF SUBSTR(C_PRODUPD.CDARVPROD,9,2) <> 'xx' THEN
         BEGIN
            SELECT W1_IDPROD.NEXTVAL
              INTO V_NOVOCODIGO
              FROM DUAL;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_NOVOCODIGO := 1;
         END;
         INSERT INTO USR_ZW1
            (W1_IDPROD, W1_EMPRESA, W1_FILIAL, W1_COD, W1_DESC, W1_UM,
             W1_DTGRV, W1_HRGRV, W1_TPEDI, W1_TIPO)
         VALUES
            (V_NOVOCODIGO, NULL, NULL, SUBSTR(C_PRODUPD.CDARVPROD,1,15), SUBSTR(C_PRODUPD.NMPRODUTO, 1, 30), SUBSTR(C_PRODUPD.SGUNIDADE, 1, 2),
             TRUNC(SYSDATE), TO_CHAR(SYSDATE, 'HH24MI'), '3', SUBSTR(C_PRODUPD.USR_CDTPPRODUTO, 1, 2));

         IF C_PRODUPD.IDPRODATIVPR = 'N' THEN
            BEGIN
               SELECT W1_IDPROD.NEXTVAL
                 INTO V_NOVOCODIGO
                 FROM DUAL;
            EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  V_NOVOCODIGO := 1;
            END;

            INSERT INTO USR_ZW1
               (W1_IDPROD, W1_EMPRESA, W1_FILIAL, W1_COD, W1_DESC, W1_UM,
                W1_DTGRV, W1_HRGRV, W1_TPEDI, W1_TIPO)
            VALUES
               (V_NOVOCODIGO, NULL, NULL, SUBSTR(C_PRODUPD.CDARVPROD,1,15), SUBSTR(C_PRODUPD.NMPRODUTO, 1, 30), SUBSTR(C_PRODUPD.SGUNIDADE, 1, 2),
                TRUNC(SYSDATE), TO_CHAR(SYSDATE, 'HH24MI'), '2', SUBSTR(C_PRODUPD.USR_CDTPPRODUTO, 1, 2));
         END IF;

         UPDATE PRODUTO
            SET USR_DTEXPPROD = SYSDATE
          WHERE CDPRODUTO = C_PRODUPD.CDPRODUTO;
      END IF;
   END LOOP;
   COMMIT;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('USR_EXPORTA_PRODUTO_OFICIAL','5.50.XXX'); END;
/
