SET TERM ^ ;

CREATE OR ALTER procedure SPU_PREPEDIDO_CLIENTE (
    PDV_CFE_ID integer,
    CLIENTE_CFE_ID integer,
    REPRESENTANTE_CFE_ID integer,
    CORRETOR_CFE_ID integer,
    ACAO integer)
as
declare variable PRE_PEDIDO_ID integer;
declare variable CLIENTE_ID integer;
declare variable CLIENTE_ORIGINAL integer;
declare variable REPRESENTANTE_ID integer;
declare variable REPRESENTANTE_ORIGINAL integer;
declare variable CORRETOR_ID integer;
declare variable CORRETOR_ORIGINAL integer;
BEGIN

    FOR SELECT DISTINCT
        C.ID,
        C.CLIENTE_ID,
        C.CLIENTE_ORIGINAL,
        COALESCE(C.REPRESENTANTE_ID, 0),
        COALESCE(C.REPRESENTANTE_ORIGINAL, 0),
        COALESCE(C.CORRETOR_ID, 0),
        COALESCE(C.CORRETOR_ORIGINAL, 0)
    FROM TBPDV_CFE_ITEM A, TBPDV_CONFERENCIA C
    WHERE A.CONFERENCIA_ITEM_ID > 0
      AND A.PDV_CFE_ID = :PDV_CFE_ID
      AND C.ID = A.CONFERENCIA_ID
    INTO
    :PRE_PEDIDO_ID, :CLIENTE_ID, :CLIENTE_ORIGINAL,
    :REPRESENTANTE_ID, :REPRESENTANTE_ORIGINAL, :CORRETOR_ID, :CORRETOR_ORIGINAL
    DO BEGIN

        /* REALIZAR BAIXA DE CONFERENCIA */
        IF (:ACAO = 1) THEN
           BEGIN
                UPDATE TBPDV_CONFERENCIA T SET
                    T.CLIENTE_ORIGINAL = COALESCE(T.CLIENTE_ID, 0),
                    T.CLIENTE_ID = :CLIENTE_CFE_ID,
                    T.REPRESENTANTE_ORIGINAL = T.REPRESENTANTE_ID,
                    T.REPRESENTANTE_ID = :REPRESENTANTE_CFE_ID
                WHERE T.ID = :PRE_PEDIDO_ID;
           END
           /* DESFAZ BAIXA DE CONFERENCIA */
           ELSE IF(:ACAO = 2) THEN
           BEGIN
                UPDATE TBPDV_CONFERENCIA T SET
                    T.CLIENTE_ID = T.CLIENTE_ORIGINAL,
                    T.CLIENTE_ORIGINAL = 0,
                    T.REPRESENTANTE_ID = COALESCE(T.REPRESENTANTE_ORIGINAL, 0),
                    T.REPRESENTANTE_ORIGINAL = 0
                WHERE T.ID = :PRE_PEDIDO_ID;

           END

       END

END
^

SET TERM ; ^

