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);

BEGIN

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

  /* SITUACAO AUTORIZADO */
  IF(NEW.SITUACAO = 2) THEN
  BEGIN
        EXECUTE PROCEDURE SP_CFE_PARCELAMENTO (NEW.ID, NEW.ESTABELECIMENTO_ID, NEW.REPRESENTANTE_ID,
           NEW.REPRESENTANTE_COMISSAO, NEW.VENDEDOR_ID, NEW.VENDEDOR_COMISSAO, NEW.CLIENTE_ID,
           :CAIXA_ID,  NEW.NUMERO_CFE, NEW.SERIE, NEW.DATA_EMISSAO, 1);

        EXECUTE PROCEDURE SP_CFE_PEDIDO(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, 0);

        SELECT * FROM SPI_NF_CONTABIL('CFI', NEW.ID, 0)
        INTO :ESTABELECIMENTO_ID, :NUMERO_NOTAFISCAL, :DATA,
            :HISTORICO_CONTABIL, :CONTA_DEBITO, :CONTA_CREDITO,
            :VALOR, :VFALHAS;

  END ELSE
  /* SITUACAO CANCELADO */
  IF(NEW.SITUACAO = 3) THEN
  BEGIN

        EXECUTE PROCEDURE SP_CFE_PARCELAMENTO (NEW.ID, NEW.ESTABELECIMENTO_ID, NEW.REPRESENTANTE_ID,
            NEW.REPRESENTANTE_COMISSAO, NEW.VENDEDOR_ID, NEW.VENDEDOR_COMISSAO, NEW.CLIENTE_ID,
            :CAIXA_ID,  NEW.NUMERO_CFE, NEW.SERIE, NEW.DATA_EMISSAO, 1);

        EXECUTE PROCEDURE SP_CFE_PEDIDO(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 SPD_MOVCONTABIL(NEW.ID, 'CFI');

  END

END;