SET TERM ^ ;
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 INCLUIR_PARCELA_SEM_SALDO VARCHAR(1);
DECLARE VARIABLE VALOR_SALDO NUMERIC(10,4);
BEGIN
   :INCLUIR_PARCELA_SEM_SALDO = 0;
   IF (NEW.GC_WEB = 1) THEN
       BEGIN
            :INCLUIR_PARCELA_SEM_SALDO = COALESCE((SELECT FIRST 1 A.PARCELAS_SEM_SALDO FROM TBPAGAMENTO_FORMA A WHERE A.CODIGO = NEW.PAGAMENTO_FORMA),'0');
            IF(:INCLUIR_PARCELA_SEM_SALDO = '1')THEN
            BEGIN
               NEW.VALOR_SALDO = 0;
            END

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

                IF(COALESCE(NEW.PDV_DEVOLUCAO_TROCA_ID, 0) > 0) THEN
                BEGIN
                    /* REALIZAR BAIXA DE DEVOLUCAO */
                    EXECUTE PROCEDURE SPUI_DEVOLUCAO_TROCA_NF(NEW.PDV_DEVOLUCAO_TROCA_ID, NEW.VALOR, 2);
                END

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

                    IF(COALESCE(NEW.PDV_DEVOLUCAO_TROCA_ID, 0) > 0) THEN
                    BEGIN
                        /* REALIZAR BAIXA DE DEVOLUCAO */
                        EXECUTE PROCEDURE SPUI_DEVOLUCAO_TROCA_NF(NEW.PDV_DEVOLUCAO_TROCA_ID, NEW.VALOR, 2);
                    END
              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

            IF(NEW.PDV_CFE_FORMA_PAGAMENTO_ID > 0 AND COALESCE(NEW.PDV_CFE_ID, 0) = 0)THEN
            BEGIN
               NEW.PDV_CFE_ID = COALESCE((SELECT FIRST 1 CFE.PDV_CFE_ID FROM TBPDV_CFE_FORMA_PAGAMENTO CFE WHERE CFE.ID = NEW.PDV_CFE_FORMA_PAGAMENTO_ID),0);
            END
       END

END
^ SET TERM ; ^