CREATE OR ALTER TRIGGER TTBNFS_PARCELAMENTO_B05I FOR TBNFS_PARCELAMENTO
ACTIVE BEFORE INSERT POSITION 4
AS
declare variable PDV_CFE_ID INTEGER;
declare variable pdv_caixa_id INTEGER;
declare variable valor_saldo numeric(10,4);
BEGIN

   IF (NEW.GC_WEB = 1) THEN
       BEGIN
            IF(NEW.NF_NATUREZA = 2) THEN
            BEGIN
               EXECUTE PROCEDURE SP_NF_LANCAMENTO_PARCELA('NFS', NEW.CONTROLE, NEW.NFS_CONTROLE,
                 NEW.ESTABELECIMENTO_CODIGO, NEW.EMPRESA_CODIGO, NEW.CONTA_RECEBER_OPERACAO,
                 NEW.NUMERO_NOTAFISCAL, NEW.PARCELA, NEW.DATA_EMISSAO, NEW.VALOR_SALDO, NEW.VALOR, 'D', NEW.SERIE, NEW.AVULSO, 1);

            END
            else
            begin    
              IF(NEW.NF_SITUACAO = 2) THEN
              begin
                  EXECUTE PROCEDURE SP_NF_LANCAMENTO_PARCELA('NFS', NEW.CONTROLE, NEW.NFS_CONTROLE,
                     NEW.ESTABELECIMENTO_CODIGO, NEW.EMPRESA_CODIGO, NEW.CONTA_RECEBER_OPERACAO,
                     NEW.NUMERO_NOTAFISCAL, NEW.PARCELA, NEW.DATA_EMISSAO, NEW.VALOR_SALDO, NEW.VALOR, 'D', NEW.SERIE, NEW.AVULSO, 1);

              end
              ELSE
              BEGIN
                  IF(NEW.PDV_CFE_FORMA_PAGAMENTO_ID > 0)THEN
                  BEGIN
                    for SELECT FIRST 1 b.ID, (SELECT first 1 T.PDV_CAIXA_ID FROM TBPDV_MOVIMENTO_CAIXA T WHERE T.ID = b.PDV_MOVIMENTO_CAIXA_ID) as pdv_caixa_id
                         from TBPDV_CFE_FORMA_PAGAMENTO A, TBPDV_CFE B
                          WHERE A.ID = NEW.PDV_CFE_FORMA_PAGAMENTO_ID
                          AND A.PDV_CFE_ID = B.ID
                          and a.id is not null into :PDV_CFE_ID,:PDV_CAIXA_ID do
                          begin
                              EXECUTE PROCEDURE SP_CFE_LANCAMENTO_PARCELA('CFE', NEW.CONTROLE, NEW.PDV_CFE_FORMA_PAGAMENTO_ID,
                                 NEW.ESTABELECIMENTO_CODIGO, NEW.EMPRESA_CODIGO, NEW.CONTA_RECEBER_OPERACAO, NEW.CONTA_RECEBER_BANCO,
                                 NEW.NUMERO_NOTAFISCAL, NEW.PARCELA, NEW.DATA_EMISSAO, NEW.VALOR_SALDO, NEW.VALOR, 'D', NEW.SERIE, NEW.AVULSO, 1);

                          end
                  END
              END
            end
       END

END;

ALTER TABLE TBPDV_CFE
ADD REPROCESSAR_PARCELAS INTEGER
DEFAULT 0; 

CREATE OR ALTER TRIGGER TBNFS_PARCELAMENTO_B10D FOR TBNFS_PARCELAMENTO
ACTIVE BEFORE DELETE POSITION 10
AS

DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE SITUACAO_CFE INTEGER;
declare variable REPROCESSAR_PARCELAS INTEGER;

BEGIN

  SELECT FIRST 1
       T.ID,
       T.SITUACAO,
       COALESCE(T.REPROCESSAR_PARCELAS,0) AS REPROCESSAR_PARCELAS
    FROM TBPDV_CFE T
    INNER JOIN TBPDV_MOVIMENTO_CAIXA MC ON MC.ID = T.PDV_MOVIMENTO_CAIXA_ID
    WHERE T.SERIE = OLD.SERIE
    AND T.NUMERO_CFE = OLD.NUMERO_NOTAFISCAL
    AND MC.PDV_CAIXA_ID = OLD.CAIXA_ID
    INTO :ID, :SITUACAO_CFE, :REPROCESSAR_PARCELAS;

    IF(:ID > 0) THEN
    BEGIN
        IF(:SITUACAO_CFE <> 1) THEN
        BEGIN
            IF(:SITUACAO_CFE = 2 AND :REPROCESSAR_PARCELAS = 0) THEN
            BEGIN

                EXCEPTION "..."'CUPOM FISCAL AUTORIZADO. EXCLUSAO CANCELADA';



            END

        END

    END

END;