CREATE OR ALTER TRIGGER TTBPDV_CONFERENCIA_B01U FOR TBPDV_CONFERENCIA
ACTIVE BEFORE UPDATE POSITION 1
AS 
DECLARE VARIABLE NFS_ID INTEGER;
DECLARE VARIABLE PDV_CFE_ID INTEGER;
DECLARE VARIABLE PEDIDO INTEGER;
BEGIN
    IF(NEW.CANAL_VENDAS_ID IS DISTINCT FROM OLD.CANAL_VENDAS_ID) THEN
    BEGIN

        -- ATUALIZACAO NAS NF'S PARA TROCA DE CANAL DE VENDAS
        FOR SELECT DISTINCT
            T.NFS_CONTROLE
           FROM TBNFS_ITEM T
        WHERE T.PDV_CONFERENCIA_ID = NEW.ID
        INTO :NFS_ID
        DO BEGIN
            UPDATE TBNFS X SET X.CANAL_VENDAS_ID = NEW.CANAL_VENDAS_ID WHERE X.CONTROLE = :NFS_ID;
        END

        -- ATUALIZACAO NOS CF'S PARA TROCA DE CANAL DE VENDAS
        FOR SELECT DISTINCT
            T.PDV_CFE_ID
           FROM TBPDV_CFE_ITEM T
        WHERE T.CONFERENCIA_ID = NEW.ID
        INTO :PDV_CFE_ID
        DO BEGIN
            UPDATE TBPDV_CFE X SET X.CANAL_VENDAS_ID = NEW.CANAL_VENDAS_ID WHERE X.ID = :PDV_CFE_ID;
        END

        -- ATUALIZACAO NOS PEDIDOS PARA TROCA DE CANAL DE VENDAS
        FOR SELECT DISTINCT
            T.PEDIDO
           FROM TBPEDIDO T
        WHERE T.PRE_PEDIDO_ID = NEW.ID
        INTO :PEDIDO
        DO BEGIN
            UPDATE TBPEDIDO X SET X.CANAL_VENDAS_ID = NEW.CANAL_VENDAS_ID WHERE X.PEDIDO = :PEDIDO;
        END
    END

    
    IF(NEW.CORRETOR_ID IS DISTINCT FROM OLD.CORRETOR_ID) THEN
    BEGIN

        -- ATUALIZACAO NAS NF'S PARA TROCA DE CORRETOR
        FOR SELECT DISTINCT
            T.NFS_CONTROLE
           FROM TBNFS_ITEM T
        WHERE T.PDV_CONFERENCIA_ID = NEW.ID
        INTO :NFS_ID
        DO BEGIN
            UPDATE TBNFS X SET X.CORRETOR_ID = NEW.CORRETOR_ID WHERE X.CONTROLE = :NFS_ID;
        END

        -- ATUALIZACAO NOS CF'S PARA TROCA DE CORRETOR
        FOR SELECT DISTINCT
            T.PDV_CFE_ID
           FROM TBPDV_CFE_ITEM T
        WHERE T.CONFERENCIA_ID = NEW.ID
        INTO :PDV_CFE_ID
        DO BEGIN
            UPDATE TBPDV_CFE X SET X.CORRETOR_ID = NEW.CORRETOR_ID WHERE X.ID = :PDV_CFE_ID;
        END

        -- ATUALIZACAO NOS PEDIDOS PARA TROCA DE CORRETOR
        FOR SELECT DISTINCT
            T.PEDIDO
           FROM TBPEDIDO T
        WHERE T.PRE_PEDIDO_ID = NEW.ID
        INTO :PEDIDO
        DO BEGIN
            UPDATE TBPEDIDO X SET X.CORRETOR_ID = NEW.CORRETOR_ID WHERE X.PEDIDO = :PEDIDO;
        END
    END
END^

CREATE OR ALTER TRIGGER TTBPEDIDO_B15U FOR TBPEDIDO
ACTIVE BEFORE UPDATE POSITION 10
AS 
DECLARE VARIABLE NFS_ID INTEGER;
DECLARE VARIABLE PDV_CFE_ID INTEGER;
DECLARE VARIABLE PEDIDO INTEGER;
BEGIN
    IF(NEW.CANAL_VENDAS_ID IS DISTINCT FROM OLD.CANAL_VENDAS_ID) THEN
    BEGIN

        -- ATUALIZACAO NAS NF'S PARA TROCA DE CANAL DE VENDAS
        FOR SELECT DISTINCT
            T.NFS_CONTROLE
           FROM TBNFS_ITEM T
        WHERE T.PEDIDO = NEW.PEDIDO
        INTO :NFS_ID
        DO BEGIN
            UPDATE TBNFS X SET X.CANAL_VENDAS_ID = NEW.CANAL_VENDAS_ID WHERE X.CONTROLE = :NFS_ID;
        END

        -- ATUALIZACAO NOS CF'S PARA TROCA DE CANAL DE VENDAS
        FOR SELECT DISTINCT
            T.PDV_CFE_ID
           FROM TBPDV_CFE_ITEM T
        WHERE T.PEDIDO = NEW.PEDIDO
        INTO :PDV_CFE_ID
        DO BEGIN
            UPDATE TBPDV_CFE X SET X.CANAL_VENDAS_ID = NEW.CANAL_VENDAS_ID WHERE X.ID = :PDV_CFE_ID;
        END
    END

    
    IF(NEW.CORRETOR_ID IS DISTINCT FROM OLD.CORRETOR_ID) THEN
    BEGIN

        -- ATUALIZACAO NAS NF'S PARA TROCA DE CORRETOR
        FOR SELECT DISTINCT
            T.NFS_CONTROLE
           FROM TBNFS_ITEM T
        WHERE T.PEDIDO = NEW.PEDIDO
        INTO :NFS_ID
        DO BEGIN
            UPDATE TBNFS X SET X.CORRETOR_ID = NEW.CORRETOR_ID WHERE X.CONTROLE = :NFS_ID;
        END

        -- ATUALIZACAO NOS CF'S PARA TROCA DE CORRETOR
        FOR SELECT DISTINCT
            T.PDV_CFE_ID
           FROM TBPDV_CFE_ITEM T
        WHERE T.PEDIDO = NEW.PEDIDO
        INTO :PDV_CFE_ID
        DO BEGIN
            UPDATE TBPDV_CFE X SET X.CORRETOR_ID = NEW.CORRETOR_ID WHERE X.ID = :PDV_CFE_ID;
        END
    END
END^

