create or replace PROCEDURE SIT_ASSOC_AUTO(
  P_NRORGINT NUMBER,
  P_OPERADOR VARCHAR2,
  P_RETORNO OUT VARCHAR2)
AS
  V_CONT_ATUALIZADO NUMBER := 0;
  V_CONT_IGNORADO   NUMBER := 0;
  V_NRORGINT_MODELO NUMBER := 1257; -- Organização Modelo "TEKNUTRI IMPLANTAÇÃO"
  V_NO_DATA         NUMBER := 1;
    
  V_CDPRODUTO       VARCHAR2(10);
  V_QTPESOINT       FLOAT;
  V_IDATIVO         VARCHAR2(1);

BEGIN 
  
  FOR C_PROD IN 
  (
    SELECT *
      FROM SIT_PRODUTOINT
     WHERE NRORGINT = P_NRORGINT
       AND DTLIBERACAO IS NULL
  )
  LOOP
  
    BEGIN 
      SELECT CDPRODUTO, QTPESOINT, IDATIVO
        INTO V_CDPRODUTO, V_QTPESOINT, V_IDATIVO
        FROM SIT_PRODUTOINT
       WHERE NRORGINT = V_NRORGINT_MODELO
         AND CDPRODUTOINT = C_PROD.CDPRODUTOINT
         AND NMPRODUTOINT = C_PROD.NMPRODUTOINT
         AND CDUNIDADEINT = C_PROD.CDUNIDADEINT
         AND DTLIBERACAO IS NOT NULL;
    EXCEPTION 
      WHEN NO_DATA_FOUND THEN
        V_NO_DATA := 2;    
        V_CONT_IGNORADO := V_CONT_IGNORADO + 1;
    END;
    
    IF V_NO_DATA = 1 THEN
      V_CONT_ATUALIZADO := V_CONT_ATUALIZADO + 1;
      
      UPDATE SIT_PRODUTOINT 
         SET QTPESOINT = V_QTPESOINT,
             CDPRODUTO = V_CDPRODUTO,
             DTLIBERACAO = SYSDATE,
             IDATIVO = V_IDATIVO,
             DTULTATU = SYSDATE,
             CDOPERULTATU = P_OPERADOR
       WHERE NRORGINT = C_PROD.NRORGINT
         AND NRREMESSA = C_PROD.NRREMESSA
         AND CDPRODUTOINT = C_PROD.CDPRODUTOINT;
         
    END IF;
    
    V_NO_DATA := 1; 
  END LOOP;
  
  P_RETORNO := V_CONT_ATUALIZADO || '-' || V_CONT_IGNORADO;
END;
/