SET TERM ^ ;

CREATE OR ALTER trigger ttbpdv_conferencia_b2u_02 for tbpdv_conferencia
active before update position 2
AS
Declare variable PEDVENDA INTEGER;
Declare variable PDV_CONFERENCIA_TROCA_ID INTEGER;
BEGIN

  IF ((NEW.COLABORADOR_ID <> OLD.COLABORADOR_ID) OR
      (NEW.CLIENTE_ID <> OLD.CLIENTE_ID)) THEN
      BEGIN
      UPDATE TBCLIENTE     E SET E.PRIMEIRO_PREPEDIDO = 0 WHERE E.CODIGO = OLD.CLIENTE_ID     AND E.PRIMEIRO_PREPEDIDO = OLD.ID;
      UPDATE TBCOLABORADOR E SET E.PRIMEIRO_PREPEDIDO = 0 WHERE E.CODIGO = OLD.COLABORADOR_ID AND E.PRIMEIRO_PREPEDIDO = OLD.ID;

      FOR SELECT DISTINCT
            T.PDV_CONFERENCIA_TROCA_ID
        FROM TBPDV_CONFERENCIA_TROCA_ITEM T
        WHERE T.PRE_PEDIDO_ID = NEW.ID
      INTO :PDV_CONFERENCIA_TROCA_ID
      DO BEGIN
        IF(:PDV_CONFERENCIA_TROCA_ID > 0) THEN
        BEGIN
            UPDATE TBPDV_CONFERENCIA_TROCA K SET K.CLIENTE_ID = NEW.CLIENTE_ID, K.COLABORADOR_ID = NEW.COLABORADOR_ID WHERE K.ID = :PDV_CONFERENCIA_TROCA_ID;
        END
      END

      PEDVENDA = COALESCE(
                          (SELECT FIRST 1 PF.CONTROLE
                             FROM TBPERFIL PF
                            WHERE PF.ID = NEW.PERFIL_PEDIDO
                              AND PF.TABELA = 'PED'
                          AND COALESCE(PF.VENDA,1) = 1),0);
      if (PEDVENDA > 0) then
          BEGIN
          UPDATE TBCLIENTE     E SET E.PRIMEIRO_PREPEDIDO = NEW.ID WHERE E.CODIGO = NEW.CLIENTE_ID     AND COALESCE(E.PRIMEIRO_PREPEDIDO,0) = 0;
          UPDATE TBCOLABORADOR E SET E.PRIMEIRO_PREPEDIDO = NEW.ID WHERE E.CODIGO = NEW.COLABORADOR_ID AND COALESCE(E.PRIMEIRO_PREPEDIDO,0) = 0;
          END
      END

END
^

SET TERM ; ^

