SET TERM ^ ;

CREATE OR ALTER trigger ttbpdv_cfe_a01u for tbpdv_cfe
active after update position 1
AS
DECLARE VARIABLE CAIXA_ID INTEGER;

DECLARE VARIABLE ESTABELECIMENTO_ID INTEGER;
DECLARE VARIABLE NUMERO_NOTAFISCAL INTEGER;
DECLARE VARIABLE DATA DATE;
DECLARE VARIABLE HISTORICO_CONTABIL VARCHAR(100);
DECLARE VARIABLE CONTA_DEBITO VARCHAR(50);
DECLARE VARIABLE CONTA_CREDITO VARCHAR(50);
DECLARE VARIABLE VALOR NUMERIC(18,2);
DECLARE VARIABLE VFALHAS VARCHAR(50);
DECLARE VARIABLE DOCUMENTO_TIPO VARCHAR(3);
DECLARE VARIABLE DOCUMENTO INTEGER;
DECLARE VARIABLE PAGAMENTO_FORMA_ID INTEGER;
DECLARE VARIABLE PARCELA INTEGER;
DECLARE VARIABLE VALOR_PARCELA DECIMAL(15,2);
DECLARE VARIABLE TARIFA DECIMAL(15,4);
DECLARE VARIABLE VALOR_LIQUIDO DECIMAL(15,2);
DECLARE VARIABLE NSU VARCHAR(50);
DECLARE VARIABLE ADQUIRENTE_ID INTEGER;
DECLARE VARIABLE BANDEIRA_CARTAO VARCHAR(100);
DECLARE VARIABLE CODIGO_AUTORIZACAO VARCHAR(50);
DECLARE VARIABLE CONCILIACAO VARCHAR(1);

BEGIN

  SELECT T.PDV_CAIXA_ID FROM TBPDV_MOVIMENTO_CAIXA T WHERE T.ID = NEW.PDV_MOVIMENTO_CAIXA_ID INTO CAIXA_ID;

  IN AUTONOMOUS TRANSACTION DO
  BEGIN
    INSERT INTO TBPDV_CFE_LOG(PDV_CFE_ID, DESCRICAO, USUARIO_ID) VALUES(NEW.ID, 'SIT: '||COALESCE(OLD.SITUACAO, 0)||' - '||COALESCE(NEW.SITUACAO, 0), FN_CURRENT_USER_ID());
  END

  /* SITUACAO AUTORIZADO */
  IF(OLD.SITUACAO = 1 AND NEW.SITUACAO = 2) THEN
  BEGIN



        EXECUTE PROCEDURE SP_CFE_PEDIDO(NEW.ID, 1);

        EXECUTE PROCEDURE SP_CFE_CONFERENCIA(NEW.ID, 1);

        EXECUTE PROCEDURE SP_CFE_ESTOQUE(NEW.ID, NEW.ESTABELECIMENTO_ID, NEW.CLIENTE_ID, :CAIXA_ID,
            NEW.NUMERO_CFE, NEW.SERIE, NEW.DATA_EMISSAO, 1);

        EXECUTE PROCEDURE SP_CFE_PARCELAMENTO (NEW.ID, 1);

        EXECUTE PROCEDURE SP_CFE_FORMA_PAGAMENTO(NEW.ID, 2);

        EXECUTE PROCEDURE SPU_PREPEDIDO_CLIENTE(NEW.ID, COALESCE(NEW.CLIENTE_ID, 0), COALESCE(NEW.REPRESENTANTE_ID, 0), COALESCE(NEW.CORRETOR_ID, 0), 1);

        IF(NEW.NATUREZA = 1) THEN
        BEGIN

            FOR SELECT
                    ESTABELECIMENTO_ID,
                    NUMERO_NOTAFISCAL,
                    DATA,
                    HISTORICO_CONTABIL,
                    CONTA_DEBITO,
                    CONTA_CREDITO,
                    VALOR,
                    VFALHAS
                FROM SPI_NF_CONTABIL('CFI', NEW.ID, 0) T
            INTO :ESTABELECIMENTO_ID, :NUMERO_NOTAFISCAL, :DATA,
                :HISTORICO_CONTABIL, :CONTA_DEBITO, :CONTA_CREDITO,
                :VALOR, :VFALHAS
            DO BEGIN
    
            END

        END

        /*
        SELECT * FROM SP_FORMA_PAGAMENTO_CARTAO('CFE', NEW.ID, 1)
        INTO :DOCUMENTO_TIPO, :DOCUMENTO, :PAGAMENTO_FORMA_ID, :PARCELA, :VALOR_PARCELA, :TARIFA, :VALOR_LIQUIDO,
                 :NSU, :ADQUIRENTE_ID, :BANDEIRA_CARTAO, :CODIGO_AUTORIZACAO, :CONCILIACAO;

        GERAR COMISSAO
        EXECUTE PROCEDURE SPI_CFE_GERAR_COMISSAO(NEW.ID);

        EXECUTE PROCEDURE SPI_GERAR_COMISSAO(NEW.ID,'CFE');
        */

  END ELSE
  /* SITUACAO CANCELADO */
  IF((OLD.SITUACAO = 2 AND NEW.SITUACAO = 3) OR (OLD.SITUACAO = 2 AND NEW.SITUACAO = 1) ) THEN
  BEGIN

        EXECUTE PROCEDURE SP_CFE_PARCELAMENTO (NEW.ID, 2);

        EXECUTE PROCEDURE SP_CFE_ESTOQUE(NEW.ID, NEW.ESTABELECIMENTO_ID, NEW.CLIENTE_ID, :CAIXA_ID,
            NEW.NUMERO_CFE, NEW.SERIE, NEW.DATA_EMISSAO, 2, 0);

        EXECUTE PROCEDURE SP_CFE_PEDIDO(NEW.ID, 2);

        EXECUTE PROCEDURE SP_CFE_CONFERENCIA(NEW.ID, 2);

        EXECUTE PROCEDURE SPU_PREPEDIDO_CLIENTE(NEW.ID, COALESCE(NEW.CLIENTE_ID, 0), COALESCE(NEW.REPRESENTANTE_ID, 0), COALESCE(NEW.CORRETOR_ID, 0), 2);

        IF(OLD.NATUREZA = 1) THEN
        BEGIN
            EXECUTE PROCEDURE SPD_MOVCONTABIL(NEW.ID, 'CFI');
        END

        EXECUTE PROCEDURE SP_CFE_FORMA_PAGAMENTO(NEW.ID, 1);

        DELETE FROM TBNFS_FORMA_PAGAMENTO T WHERE T.DOCUMENTO_TIPO = 'CFE' AND T.DOCUMENTO_ID = NEW.ID;

        /*APAGAR COMISSAO*/
        DELETE FROM TBCOMISSAO A WHERE A.ORIGEM = 'CFE' AND A.TABELA_ID = NEW.ID;
  END

END
^

SET TERM ; ^

