Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EXECUTE block
- (
- pCodigoEmpresa INTEGER = :pCodigoEmpresa,
- pCodigoEstab INTEGER = :pCodigoEstab,
- pChaveDuplicataSai VARCHAR(25) = :pChaveDuplicataSai,
- pNumeroDuplicataSai VARCHAR(25) = :pNumeroDuplicataSai,
- pNumeroParcela VARCHAR(3) = :pNumeroParcela,
- pDataPgto DATE = :pDataPgto,
- pValorPago numeric(10,2) = :pValorPago,
- pValorJuros numeric(10,2) = :pValorJuros,
- pValorMulta numeric(10,2) = :pValorMulta,
- pValorDesconto numeric(10,2) = :pValorDesconto,
- pValorTarifa numeric(10,2) = :pValorTarifa,
- pCodigoTabCtbFis INTEGER = :pCodigoTabCtbFis
- )
- /*
- returns (
- vReturn varchar(500)
- )
- */
- AS
- DECLARE vCurrentDateTime VARCHAR(20);
- DECLARE vChaveDuplicataSai INTEGER;
- DECLARE vNumeroDuplicata VARCHAR(25);
- DECLARE vNumeroParcela VARCHAR(25);
- DECLARE vDataLctoFis DATE;
- DECLARE vProximaSeq INTEGER;
- DECLARE vCodigoTabCtbFis INTEGER;
- DECLARE vObservPgto VARCHAR(100);
- DECLARE vValorDuplicata numeric(10,2);
- DECLARE vValorPago numeric(10,2);
- DECLARE vStatus INTEGER;
- BEGIN
- -- Pega a data/hora atual
- SELECT LPAD(EXTRACT(DAY FROM CURRENT_DATE), 2, '0')||'/'||LPAD(EXTRACT(MONTH FROM CURRENT_DATE), 2, '0')||'/'||
- EXTRACT(YEAR FROM CURRENT_DATE)||' '||left(current_time,8) AS currentdate FROM rdb$database
- INTO :vCurrentDateTime;
- vObservPgto = 'IMPORTADO AUTOMATICAMENTE PELA PLANILHA EM '||:vCurrentDateTime;
- -- Busca os dados das duplicatas em aberto do Questor
- -- Parametros: CodigoEmpresa, CodigoEstab, ChaveDuplicataSai, NumeroDuplicataSai, NumeroParcela
- SELECT chaveduplicatasai, numeroduplicatasai, numeroparcela, datalctofis
- FROM duplicatasaiparcela
- WHERE codigoempresa = :pCodigoEmpresa AND codigoestab = :pCodigoEstab AND chaveduplicatasai = :pChaveDuplicataSai AND numeroduplicatasai = LPAD(:pNumeroDuplicataSai, 25, ' ') AND CAST(numeroparcela AS INTEGER) = :pNumeroParcela
- INTO :vChaveDuplicataSai, :vNumeroDuplicata, :vNumeroParcela, :vDataLctoFis;
- -- Busca a proxima sequencia disponivel para a baixa da duplicata
- SELECT COALESCE(MAX(seq),0)+1 AS seq
- FROM duplicatasaipgto WHERE codigoempresa = :pCodigoEmpresa AND codigoestab = :pCodigoEstab AND
- chaveduplicatasai = :vChaveDuplicataSai AND numeroduplicatasai = :vNumeroDuplicata AND numeroparcela = :vNumeroParcela
- INTO :vProximaSeq;
- -- Insere a baixa do pagamento
- INSERT INTO duplicatasaipgto (codigoempresa, codigoestab, chaveduplicatasai, numeroduplicatasai, numeroparcela, seq, datalctofis, datapgto,
- valorpago, valorjuros, valormulta, valordesconto, valortarifa, codigotabctbfis, codigousuario, datahoralctofis, origemdado, observpgto)
- VALUES (:pCodigoEmpresa, :pCodigoEstab, :vChaveDuplicataSai, :vNumeroDuplicata, :vNumeroParcela, :vProximaSeq, :vDataLctoFis, :pDataPgto, :pValorPago, :pValorJuros, :pValorMulta, :pValorDesconto, :pValorTarifa, :pCodigoTabCtbFis, 1, CURRENT_TIMESTAMP, 3, :vObservPgto);
- -- Buscar o valor da parcela
- SELECT SUM(valorparcela) FROM duplicatasaiparcela
- WHERE codigoempresa = :pCodigoEmpresa AND codigoestab = :pCodigoEstab AND chaveduplicatasai = :vChaveDuplicataSai AND numeroparcela = :vNumeroParcela
- INTO :vValorDuplicata;
- -- Busca o valor do pagamento
- SELECT COALESCE(SUM(valorpago) + SUM(valordesconto),0) AS valorpago FROM duplicatasaipgto
- WHERE codigoempresa = :pCodigoEmpresa AND codigoestab = :pCodigoEstab AND chaveduplicatasai = :vChaveDuplicataSai AND numeroparcela = :vNumeroParcela
- INTO :vValorPago;
- -- Verifica o valor da duplicata x parcela para alterar o status
- IF (vValorPago >= vValorDuplicata) THEN
- vStatus = 3;
- ELSE IF (vValorPago > 0 AND vValorPago < vValorDuplicata) THEN
- vStatus = 2;
- -- Atualiza o status da duplicata
- UPDATE duplicatasaiparcela SET
- situacao = :vStatus, datahoralctofis = CURRENT_TIMESTAMP
- WHERE codigoempresa = :pCodigoEmpresa AND codigoestab = :pCodigoEstab AND chaveduplicatasai = :vChaveDuplicataSai AND numeroparcela = :vNumeroParcela;
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement