IF OBJECT_ID('P_REPROCESSAR_IFOOD_PEDIDOS_MANUAL') IS NOT NULL
	BEGIN
		DROP PROCEDURE P_REPROCESSAR_IFOOD_PEDIDOS_MANUAL
	END
GO 

/*
=======================================================================================
'Nível Classificação.: INFORMAÇÃO RESTRITA
'Versão..............: 251121
'Job.................:  
'Nome................: [P_REPROCESSAR_IFOOD_PEDIDOS_MANUAL]
'Objetivo............: 
'Tabelas.............: 
'Dt Criação..........: 
'Dt Ult Alteracão....: 21/11/2025
'Criado por..........: Iuri
'Alterado por........: --
'=======================================================================================
*/

CREATE PROCEDURE P_REPROCESSAR_IFOOD_PEDIDOS_MANUAL	  
(
    @DIAS  INT = 1,  -- Quantos dias para trás
    @HORAS INT = 2   -- Ignorar últimas X horas
)
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO INTEGRA_IFOOD_PEDIDO_MANUAL
        (CODIGO_IFOOD, FLAG_INTEGRA, DT_PROCESSA)

    SELECT DISTINCT 
        E.ORDER_ID,
        'RE',
        NULL
    FROM INTEGRA_IFOOD_EVENTOS E
    WHERE E.ORDER_ID IS NOT NULL

        -- Pedidos dos últimos @DIAS dias
        AND E.DATA_CADASTRO >= CAST(DATEADD(DAY, -@DIAS, GETDATE()) AS DATE)

        -- Ignorar eventos muito recentes (últimas @HORAS horas)
        AND E.DATA_CADASTRO < DATEADD(HOUR, -@HORAS, GETDATE())

        -- Sem SPE
        AND NOT EXISTS (
            SELECT 1
            FROM INTEGRA_IFOOD_EVENTOS SPE
            WHERE SPE.ORDER_ID = E.ORDER_ID
              AND SPE.CODE = 'SPE'
        )

        -- Sem CAN
        AND NOT EXISTS (
            SELECT 1
            FROM INTEGRA_IFOOD_EVENTOS CAN
            WHERE CAN.ORDER_ID = E.ORDER_ID
              AND CAN.CODE = 'CAN'
        )

        -- Não integrados no ERP
        AND NOT EXISTS (
            SELECT 1
            FROM INTEGRA_ECOMMERCE_PEDIDO P
            WHERE P.CODIGO_PEDIDO = E.ORDER_ID
        )

        -- Não duplicar pendência
        AND NOT EXISTS (
            SELECT 1
            FROM INTEGRA_IFOOD_PEDIDO_MANUAL M
            WHERE M.CODIGO_IFOOD = E.ORDER_ID
        );
END;