Fórum Erro Parcelamento #533356
02/10/2015
0
Estou tentando efetuar um parcelamento e não estou conseguindo, quando eu clico na forma de pagamento me retorna vários erros e não estou conseguindo achar a solução!!!
Se alguém puder ajudar!!!
Grato
[img:descricao=Tela Inicial]http://arquivo.devmedia.com.br/forum/imagem/316964-20151002-121712.jpg[/img]
[img:descricao=Erro 1]http://arquivo.devmedia.com.br/forum/imagem/316964-20151002-121728.jpg[/img]
[img:descricao=Erro 2]http://arquivo.devmedia.com.br/forum/imagem/0-20151002-121754.jpg[/img]
fonte
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Mask, DBXpress, FMTBcd, SqlExpr, DB, DBClient,
DBCtrls, Provider;
type
TFrmFinalizaChequePre = class(TForm)
GroupCliente: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
GroupDadosCheque: TGroupBox;
Label2: TLabel;
Edit3: TEdit;
Label3: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Label4: TLabel;
Edit6: TEdit;
Label5: TLabel;
Edit7: TEdit;
Label6: TLabel;
Edit8: TEdit;
Label7: TLabel;
Edit9: TEdit;
GroupLancamentos: TGroupBox;
Label8: TLabel;
EdtValorTotalCheque: TEdit;
Label9: TLabel;
EdtQuantidadeParcelas: TEdit;
Label10: TLabel;
EdtQuantidadeDias: TEdit;
Label11: TLabel;
EdtDia: TEdit;
Label12: TLabel;
EdtValorParcela: TEdit;
Label13: TLabel;
MskVencimento: TMaskEdit;
Label14: TLabel;
EdtRestante: TEdit;
GridParcelas: TStringGrid;
BtnLimpar: TButton;
BtnLancar: TButton;
BtnGravar: TButton;
BtnCancelar: TButton;
EdtAcrescimo: TEdit;
txtTot: TEdit;
Conexao: TSQLConnection;
DsParcelamento: TDataSource;
qryParcelamento: TSQLDataSet;
cbParcelamento: TDBLookupComboBox;
Label15: TLabel;
DspParcelamento: TDataSetProvider;
CdsParcelamento: TClientDataSet;
qryParcelamentoCODIGO: TIntegerField;
qryParcelamentoDESCRICAO: TStringField;
qryParcelamentoQUANTIDADEPARCELAS: TIntegerField;
qryParcelamentoQUANTIDADEDIASINICIAL: TIntegerField;
qryParcelamentoACRESCIMO: TIntegerField;
procedure gridtop;
procedure FormShow(Sender: TObject);
procedure BtnLancarClick(Sender: TObject);
procedure EdtValorTotalChequeExit(Sender: TObject);
procedure EdtDiaExit(Sender: TObject);
procedure EdtValorParcelaEnter(Sender: TObject);
procedure MskVencimentoExit(Sender: TObject);
procedure EdtRestanteEnter(Sender: TObject);
procedure EdtRestanteExit(Sender: TObject);
procedure cbParcelamentoClick(Sender: TObject);
procedure EdtValorTotalChequeEnter(Sender: TObject);
procedure EdtValorTotalChequeKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmFinalizaChequePre: TFrmFinalizaChequePre;
valorsoma: currency;
valortotal: currency;
quantidadeparcelas, parcelas: integer;
vencimento, dia, mes, ano, codigoParcela: string;
centavo, soma, valorparcela, total, restante,totaljuros, acrescimo: currency;
implementation
uses Bib;
{$R *.dfm}
procedure TFrmFinalizaChequePre.gridtop;
begin
if GridParcelas .RowCount>4
then GridParcelas.TopRow:=GridParcelas.RowCount-4;
end;
procedure TFrmFinalizaChequePre.FormShow(Sender: TObject);
begin
valorsoma:=0.00;
GridParcelas.Cells[1,0]:='Parcelas';
GridParcelas.Cells[2,0]:='Vencimento';
GridParcelas.Cells[3,0]:='Valor';
if GroupCliente.Enabled=false then
begin
CbParcelamento.SetFocus;
qryParcelamento.Close; qryParcelamento.Open;
cbParcelamentoClick(sender);
end
else EdtDia.SetFocus;
// qryParcelamento.Close; qryParcelamento.Open;
end;
procedure TFrmFinalizaChequePre.BtnLancarClick(Sender: TObject);
var i: integer;
begin
if (quantidadeparcelas=1) and (strtocurr(converte2(EdtValorParcela.Text))<strtocurr(converte2(EdtRestante.Text))) then
begin
mess(FrmFinalizaChequePre.Handle,'Valor da Prestação Não Confere !!!',MB_ICONWARNING or MB_OK);
EdtValorParcela.SetFocus;
exit;
end
else
begin
if StrToDate(MskVencimento.Text)=date then
begin
if StrToCurr(Converte2(EdtValorTotalCheque.Text))<>StrToCurr(Converte2(EdtValorParcela.Text)) Then
begin
Mess(FrmFinalizaChequePre.Handle,'Valor Recebido Não Confere com o Valor da Prestação!!!',MB_ICONWARNING or MB_OK);
EdtValorParcela.SetFocus;
Exit;
end;
valorsoma:=valorsoma+StrToCurr(Converte2(EdtValorParcela.Text));
parcelas:=parcelas+1;
i:=GridParcelas.Rowcount-1;
GridParcelas.Cells[1,i]:=FormatFloat('00',parcelas);
GridParcelas.Cells[2,i]:=MskVencimento.Text;
GridParcelas.Cells[3,i]:=Converte(Converte2(EdtValorParcela.Text),7,2);
GridParcelas.RowCount:=i+2;
quantidadeparcelas:=quantidadeparcelas-1;
MskVencimento.Text:=datetostr(strtodate(vencimento)+30);
if dia<>copy(MskVencimento.Text,1,2) then MskVencimento.Text:=dia+copy(MskVencimento.Text,3,8);
vencimento:=MskVencimento.Text;
EdtRestante.Text:=Converte(CurrtoStr(Rounds(StrToCurr(Converte2(EdtRestante.Text))-StrToCurr(Converte2(EdtValorParcela.Text)),2)),9,2);
if trim(EdtRestante.Text)<>'0,00' then
begin
valorparcela:=StrToCurr(Converte2(EdtRestante.Text))/quantidadeparcelas;
centavo:=((valorparcela*100)-int(valorparcela*100));
centavo:=Rounds(((centavo*quantidadeparcelas)/100),2);
valorparcela:=(int(valorparcela*100)/100)+centavo;
soma:=Rounds(valorparcela+soma,2);
EdtValorParcela.Text:=converte(CurrToStr(Rounds(valorparcela,2)),9,2);
gridtop;
EdtValorParcela.SetFocus;
end
else
begin
EdtValorParcela.Text:=Converte('0',9,2);
EdtRestante.Text:=Converte('0',9,2);
MskVencimento.Clear;
BtnGravar.SetFocus;
//limpa variaveis
parcelas:=0; quantidadeparcelas:=0;
centavo:=0.00; soma:=0.00;
total:=0.00;
restante:=0.00;
end;
end
else
begin
if quantidadeparcelas>0 then
begin
valorsoma:=valorsoma+StrToCurr(Converte2(EdtValorParcela.Text));
parcelas:=parcelas+1;
i:=GridParcelas.Rowcount-1;
GridParcelas.Cells[1,i]:=FormatFloat('00',parcelas);
GridParcelas.Cells[2,i]:=MskVencimento.Text;
GridParcelas.Cells[3,i]:=Converte(Converte2(EdtValorParcela.Text),7,2);
GridParcelas.RowCount:=i+2;
quantidadeparcelas:=quantidadeparcelas-1;
MskVencimento.Text:=datetostr(strtodate(MskVencimento.Text)+30);
if dia<>copy(MskVencimento.Text,1,2) then MskVencimento.Text:=dia+copy(MskVencimento.Text,3,8);
vencimento:=MskVencimento.Text;
EdtRestante.Text:=Converte(CurrtoStr(Rounds(StrToCurr(Converte2(EdtRestante.Text))-StrToCurr(Converte2(EdtValorParcela.Text)),2)),9,2);
if trim(EdtRestante.Text)<>'0,00' then
begin
if trim(EdtAcrescimo.Text)>'0' then valorparcela:=StrToCurr(Converte2(EdtValorTotalCheque.Text))/StrToCurr(Converte2(EdtQuantidadeParcelas.Text))
else valorparcela:=StrToCurr(Converte2(EdtRestante.Text))/quantidadeparcelas;
centavo:=((valorparcela*100)-int(valorparcela*100));
centavo:=Rounds(((centavo*quantidadeparcelas)/100),2);
valorparcela:=(int(valorparcela*100)/100)+centavo;
soma:=Rounds(valorparcela+soma,2);
EdtValorParcela.Text:=converte(CurrToStr(Rounds(valorparcela,2)),9,2);
gridtop;
EdtValorParcela.SetFocus;
end
else
begin
EdtValorParcela.Text:=Converte('0',9,2);
EdtRestante.Text:=Converte('0',9,2);
MskVencimento.Clear;
BtnGravar.SetFocus;
//limpa variaveis
parcelas:=0; quantidadeparcelas:=0;
centavo:=0.00; soma:=0.00;
total:=0.00;
restante:=0.00;
end;
end;
end;
end;
if (trim(EdtAcrescimo.Text)>'0') and (quantidadeparcelas=0) then
begin
BtnGravar.SetFocus;
EdtRestante.Text:=Converte('0',9,2);
EdtValorParcela.Text:=Converte('0',9,2);
EdtValorTotalCheque.Text:=converte(currtostr(strtocurr(converte2(EdtValorTotalCheque.Text))+totaljuros),9,2);
end;
end;
procedure TFrmFinalizaChequePre.EdtValorTotalChequeExit(Sender: TObject);
begin
EdtValorTotalCheque.Text:=Converte(EdtValorTotalCheque.Text,9,2);
if trim(CbParcelamento.Text)<>'' then BtnLancar.Click;
end;
procedure TFrmFinalizaChequePre.EdtDiaExit(Sender: TObject);
var i:integer;
begin
if trim(EdtDia.Text)='' then
begin
mess(FrmFinalizaChequePre.Handle,'Informa o Dia para Vencimento!',MB_ICONINFORMATION or MB_OK);
EdtDia.SetFocus;
exit;
end;
if trim(EdtValorTotalCheque.Text)<>'0,00' then
begin
// txtCartao.Text:=Converte('0',9,2);
//txtTicket.Text:=Converte('0',9,2);
EdtValorTotalCheque.Text:=Converte('0',9,2);
//txtDinheiro.Text:=Converte('0',9,2);
//txtTroco.Text:=Converte('0',9,2);
end;
//limpa grid
for i:=1 to GridParcelas.RowCount-2 do
begin
GridParcelas.cells[1,i]:='';
GridParcelas.cells[2,i]:='';
GridParcelas.cells[3,i]:='';
end;
GridParcelas.Rowcount:=2;
quantidadeparcelas:=strtoint(trim(EdtQuantidadeParcelas.Text));
total:=StrToCurr(Converte2(EdtValorTotalCheque.Text));
acrescimo:=StrToCurr(Converte2(EdtAcrescimo.Text));
mes:=copy(datetostr(date),4,2);
dia:=FormatFloat('00',strtoint(EdtDia.Text));
if EdtDia.Text<>'' then
begin
vencimento:=dia+'/'+mes+'/'+ano;
MskVencimento.Text:=DateToStr(strtodate(vencimento)+StrToInt(Converte2(EdtQuantidadeDias.Text)));
//l_tot:=Rounds((l_total*(l_acrescimo/100))+l_total,2);
valorparcela:=total/quantidadeparcelas;
centavo:=(valorparcela*100)-int(valorparcela*100);
centavo:=Rounds(((centavo*quantidadeparcelas)/100),2);
valorparcela:=(int(valorparcela*100)/100)+centavo;
EdtRestante.Text:=Converte(CurrtoStr(Rounds(total,2)),9,2);
EdtValorParcela.Text:=converte(currtostr(rounds(valorparcela,2)),9,2); //converte(CurrToStr(Rounds(((l_valorParc*(l_acrescimo/100))+l_valorParc),2)),9,2);
txtTot.Text:=converte(CurrToStr(Rounds(total,2)),9,2);
end;
end;
procedure TFrmFinalizaChequePre.EdtValorParcelaEnter(Sender: TObject);
begin
EdtValorParcela.Text:=Converte2(EdtValorParcela.Text);
EdtValorParcela.SelectAll;
end;
procedure TFrmFinalizaChequePre.MskVencimentoExit(Sender: TObject);
begin
if trim(MskVencimento.Text)='/ /' then
begin
mess(FrmFinalizaChequePre.Handle,'Informe uma data de Vencimento!',MB_ICONINFORMATION or MB_OK);
MskVencimento.SetFocus;
exit;
end;
if StrtoDate(MskVencimento.Text)<date() then
begin
mess(FrmFinalizaChequePre.Handle,'Data de Vencimento menor, Verifique!',MB_ICONINFORMATION or MB_OK);
MskVencimento.SetFocus;
exit;
end;
vencimento:=MskVencimento.Text;
if StrToDate(MskVencimento.Text)=Date() then
begin
//GroupTotal.Enabled:=true;
EdtValorTotalCheque.Text:=Converte(Converte2(EdtValorParcela.Text),9,2);
//txtDinheiro.Text:=Converte(Converte2(txtValorParc.Text),9,2);
//txtCartao.Enabled:=false;
//txtCheque.Enabled:=false;
//txtTicket.Enabled:=false;
//txtDinheiro.SetFocus;
end;
end;
procedure TFrmFinalizaChequePre.EdtRestanteEnter(Sender: TObject);
begin
EdtRestante.Text:=Converte2(EdtRestante.Text);
EdtRestante.SelectAll;
end;
procedure TFrmFinalizaChequePre.EdtRestanteExit(Sender: TObject);
begin
EdtRestante.Text:=Converte(Converte2(EdtRestante.Text),9,2);
end;
procedure TFrmFinalizaChequePre.cbParcelamentoClick(Sender: TObject);
begin
EdtQuantidadeParcelas.Text:=qryParcelamento.fieldbyname('QUANTIDADEPARCELAS').AsString;
EdtQuantidadeDias.Text:=qryParcelamento.fieldbyname('QUANTIDADEDIASINICIAL').AsString;
EdtAcrescimo.Text:=qryParcelamento.fieldbyname('ACRESCIMO').AsString;
//txtchqpre.Text:=qryParcelamento.fieldbyname('chqpre').AsString;
//txtChkCartao.Text:=qryParcelamento.fieldbyname('cartao').AsString;
EdtDia.Text:=copy(datetostr(date),1,2);
EdtDia.SetFocus;
codigoParcela:=qryParcelamento.fieldbyname('CODIGO').AsString;
end;
procedure TFrmFinalizaChequePre.EdtValorTotalChequeEnter(Sender: TObject);
begin
EdtValorTotalCheque.Text:=Converte2(EdtValorTotalCheque.Text);
EdtValorTotalCheque.SelectAll;
end;
procedure TFrmFinalizaChequePre.EdtValorTotalChequeKeyPress(
Sender: TObject; var Key: Char);
begin
Key:=FkeyPress(EdtValorTotalCheque.Text,Key);
end;
end.Bruno Henrique
Curtir tópico
+ 0Posts
02/10/2015
Bruno Henrique
Gostei + 0
05/10/2015
Mateus Carvalho
O segundo erro está dizendo que o sistema não pode fazer uma operação com o dataset fechado, ou seja, a tabela para postar os dados está fechada, e não tem como realizar nenhuma ação. Coloque o código abaixo ao abrir o form que deve resolver:
table1.active := true; //onde table1 é o nome da tabela
Att!
Gostei + 0
08/10/2015
Bruno Henrique
Se eu disponibilizar o código você pode me ajudar???
Grato
Gostei + 0
08/10/2015
Mateus Carvalho
Att!
Gostei + 0
15/10/2015
Bruno Henrique
Estou aqui novamente com um novo erro!!! rssss
[img:descricao=''is not a valid floating point value]http://arquivo.devmedia.com.br/forum/imagem/316964-20151015-232249.jpg[/img]
Debuguei o código e o erro apresenta nessa parte do código aonde está comentado //aqui da o erro !!!Mais não achei nada de anormal
procedure TFrmFinalizaChequePre.EdtDiaExit(Sender: TObject);
var i:integer;
begin
if trim(EdtDia.Text)='' then
begin
mess(FrmFinalizaChequePre.Handle,'Informa o Dia para Vencimento!',MB_ICONINFORMATION or MB_OK);
EdtDia.SetFocus;
exit;
end;
if trim(EdtValorTotalCheque.Text)<>'0,00' then
begin
// txtCartao.Text:=Converte('0',9,2);
//txtTicket.Text:=Converte('0',9,2);
EdtValorTotalCheque.Text:=Converte('0',9,2);
//txtDinheiro.Text:=Converte('0',9,2);
//txtTroco.Text:=Converte('0',9,2);
end;
//limpa grid
for i:=1 to GridParcelas.RowCount-2 do
begin
GridParcelas.cells[1,i]:='';
GridParcelas.cells[2,i]:='';
GridParcelas.cells[3,i]:='';
end;
GridParcelas.Rowcount:=2;
quantidadeparcelas:=strtoint(trim(EdtQuantidadeParcelas.Text));
total:=StrToCurr(Converte2(EdtValorTotalCheque.Text));
acrescimo:=StrToCurr(Converte2(EdtAcrescimo.Text));//aqui dá o erro
mes:=copy(datetostr(date),4,2);
dia:=FormatFloat('00',strtoint(EdtDia.Text));
if EdtDia.Text<>'' then
begin
vencimento:=dia+'/'+mes+'/'+ano;
MskVencimento.Text:=DateToStr(strtodate(vencimento)+StrToInt(Converte2(EdtQuantidadeDias.Text)));
//l_tot:=Rounds((l_total*(l_acrescimo/100))+l_total,2);
valorparcela:=total/quantidadeparcelas;
centavo:=(valorparcela*100)-int(valorparcela*100);
centavo:=Rounds(((centavo*quantidadeparcelas)/100),2);
valorparcela:=(int(valorparcela*100)/100)+centavo;
EdtRestante.Text:=Converte(CurrtoStr(Rounds(total,2)),9,2);
EdtValorParcela.Text:=converte(currtostr(rounds(valorparcela,2)),9,2); //converte(CurrToStr(Rounds(((l_valorParc*(l_acrescimo/100))+l_valorParc),2)),9,2);
txtTot.Text:=converte(CurrToStr(Rounds(total,2)),9,2);
end;
end;Gostei + 0
16/10/2015
Bruno Henrique
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)