CREATE OR ALTER PROCEDURE SPU_CONTA_RECEBER_SALDO2 ( NFS_CONTROLE_1 INTEGER, CONTROLE_1 INTEGER) AS DECLARE VARIABLE CONTROLEX INTEGER; DECLARE VARIABLE SALDOX NUMERIC(10,2); DECLARE VARIABLE CONTROLE2 INTEGER; DECLARE VARIABLE CONTROLE3 INTEGER; DECLARE VARIABLE DATA DATE; DECLARE VARIABLE VALOR NUMERIC(10,5); DECLARE VARIABLE SALDO NUMERIC(10,5); DECLARE VARIABLE RM CHAR(1); DECLARE VARIABLE TIPO CHAR(1); BEGIN CONTROLEX = 0; FOR SELECT A.NFS_PARCELAMENTO_CONTROLE, A.CONTROLE, A.DATA, A.VALOR_TOTAL, A.VALOR_SALDO, A.REGISTRO_MESTRE, A.TIPO FROM TBCAIXABANCO_LANCAMENTO_REG A WHERE A.NFS_CONTROLE = :NFS_CONTROLE_1 AND A.NFS_PARCELAMENTO_CONTROLE = :CONTROLE_1 ORDER BY 1, 3, 2 INTO :CONTROLE2, :CONTROLE3, :DATA, :VALOR, :SALDO, :RM, :TIPO DO BEGIN IF (:CONTROLE2 > 0) THEN BEGIN IF (:CONTROLEX <> :CONTROLE2) THEN BEGIN SALDOX = :VALOR; CONTROLEX = :CONTROLE2; END ELSE BEGIN IF (:TIPO = 'C') THEN BEGIN SALDOX = :SALDOX - :VALOR ; END IF (:TIPO = 'D') THEN BEGIN SALDOX = :SALDOX + :VALOR ; END END IF (:SALDOX < 0) THEN BEGIN SALDOX = 0; END UPDATE TBCAIXABANCO_LANCAMENTO_REG SET VALOR_SALDO = :SALDOX WHERE CONTROLE = :CONTROLE3 AND NFS_CONTROLE = :NFS_CONTROLE_1 AND NFS_PARCELAMENTO_CONTROLE = :CONTROLE2; END END END; CREATE OR ALTER VIEW VWNFS_PARCELAMENTO( EMPRESA_CODIGO, NFS_CONTROLE, ESTABELECIMENTO_CODIGO, NUMERO_NOTAFISCAL, SERIE, DATA_INICIO, FT_VENC, DATA_FIM, DT_VENC, VALOR_SALDO, VALOR_TOTAL, VALOR_TOTAL2, DATA_EMISSAO, ACEITE, SITUACAO, AVULSO, QTD_PARCELA, REPRESENTANTE_ID, REPRESENTANTE_COMISSAO, FORMA_COMISSAO, CAIXA_ID, TIPO, PAGAMENTO_FORMA) AS SELECT EMPRESA_CODIGO, NFS_CONTROLE, ESTABELECIMENTO_CODIGO, NUMERO_NOTAFISCAL, SERIE, DATA_INICIO, DATA_INICIO AS FT_VENC, DATA_FIM, FN_DATE_TO_STRING(DATA_INICIO)||' a '||FN_DATE_TO_STRING(DATA_FIM) AS DT_VENC, VALOR_SALDO, VALOR_TOTAL, VALOR_TOTAL AS VALOR_TOTAL2, DATA_EMISSAO, ACEITE, SITUACAO, AVULSO, QTD_PARCELA, REPRESENTANTE_ID, REPRESENTANTE_COMISSAO, FORMA_COMISSAO, CAIXA_ID, TIPO, PAGAMENTO_FORMA FROM( SELECT W.EMPRESA_CODIGO, W.NFS_CONTROLE, W.ESTABELECIMENTO_CODIGO, W.NUMERO_NOTAFISCAL, w.SERIE, W.DATA_EMISSAO, min(w.data_vencimento) DATA_INICIO, max(w.data_vencimento) as DATA_FIM, SUM(CAST(W.VALOR_SALDO AS NUMERIC(15,2))) as VALOR_SALDO, SUM(CAST(W.VALOR AS NUMERIC(15,2))) as VALOR_TOTAL, W.ACEITE, W.SITUACAO, W.AVULSO, COUNT(W.CONTROLE) AS QTD_PARCELA, W.REPRESENTANTE_ID, W.REPRESENTANTE_COMISSAO, W.FORMA_COMISSAO, W.CAIXA_ID, W.TIPO, W.PAGAMENTO_FORMA FROM TBNFS_PARCELAMENTO W WHERE w.aceite = 'S' AND w.situacao = 1 GROUP BY W.EMPRESA_CODIGO, W.NFS_CONTROLE, W.ESTABELECIMENTO_CODIGO, W.NUMERO_NOTAFISCAL, W.SERIE, W.CAIXA_ID, W.DATA_EMISSAO, W.ACEITE, W.SITUACAO, W.AVULSO, W.ACEITE, W.SITUACAO, W.AVULSO, W.REPRESENTANTE_ID, W.REPRESENTANTE_COMISSAO, W.FORMA_COMISSAO, W.TIPO, W.PAGAMENTO_FORMA ORDER BY W.ESTABELECIMENTO_CODIGO, W.DATA_EMISSAO, W.NUMERO_NOTAFISCAL, W.EMPRESA_CODIGO );