Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo Miss

Baixa Conta Receber

Recommended Posts

Bom dia pessoal!

Segue abaixo + uma das minhas inumeras duvidas:

 

 

Imagine um form de contas a receber (frmBxContaRec):

 

nele tm um grid onde mostra todas a contas em aberto de tal cliente informado num edit...

 

digamos q tm 3 contas:

 

doc 1 12,00

doc 2 15,00

doc 3 10,00

Total 37,00

 

Digamos q o usuario selecionou tds a 3 contas e informou num edit (txtVlrBaixar) q gostaria de baixar 35,00 sobrando assim 2,00 pro cliente pagar em outra ocasiao...

 

Como você faria pra baixar as 3 contas de uma soh vez, sendo q eu precisaria alterar as contas pra fikar desse jeito:

 

doc 1 = 12,00 = baixado = PAGO

doc 2 = 15,00 = baixado = PAGO

doc 3 = 8,00 = baixado = PAGO PARCIAL Ref: 10,00

 

e criar uma nova conta:

DOC 3 = 2,00 = pendente = RESTANTE CONTA de: 10,00

 

algum consegui me entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Rodrigo, Cara como você faz as baixas? Tipo grava em outra tbl os recebidos e se fechou o titulo você baixa? Você pode ir baixando uma a uma e verificando o total pago, tipo enquanto der você vai baixando, hora q o dinheiro não der pra baixar mais, você simplesmente lança um pgto parcial.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ôwh kra! baum Carlos Edu

 

kra... eu tenho na tabela de contasreceber um campo bit (Pendente)

 

qdo baixo ele apenas mudo de status pendente = false, e ajeito o historico, Baixa Total/ Baixa Parcial e talz....

 

tipow

como você me sugeriu ... colocar o valor a baixar numa variavel?

 

 

teria como dar um pq exemplo aki como deveria fazer....?

 

vlw kra... aguardo contato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se lhe servir seue abaixo um pequeno exemplo que fiz em um sistema de estoque para dar baixa em material...

 

procedure TFrmMovMat.BtnMovLotesEstClick(Sender: TObject);Var Qtde, Retirado, Lote : Double;	i: integer;	Local : String;	Validade : TDate;	SaldoQtde : Double;begin  Local := EdtOrigemMov.Text;  if (Application.MessageBox(PChar('Deseja Realmente movimentar esse material para '+ Local +'? Será Definitivo!'),'Aviso',mb_YesNo or mb_iconExclamation)=idyes) then  Begin	SaldoQtde := EdtQTDEMov.Value;	AdsResLote.First;	while SaldoQtde > 0 do	begin	  if AdsResLoteLOTE_STAT.Value = 'S' then	  begin		if AdsResLoteLOTE_SALD.Value > SaldoQtde then		Begin		  //Grava a Saída do material do estoque		  Grava_Dados_Estoque(AdsResLoteLote_Codl.Value,0,'MP',SaldoQtde,AdsResLoteLOTE_VALI.Value,'8.888 1');		  //Grava a Entrada do material		  Grava_Dados_Estoque(AdsResLoteLote_Codl.Value,StrToFloat(EdtMovDocumento.Text),EdtOrigemMov.Value,SaldoQtde,AdsResLoteLOTE_VALI.Value,'4.444 1');		  SaldoQtde := 0;		End		else		Begin		  SaldoQtde := SaldoQtde - AdsResLoteLOTE_SALD.Value;		  //Grava a saida do material		  Grava_Dados_Estoque(AdsResLoteLote_Codl.Value,0,'MP',AdsResLoteLOTE_SALD.Value,AdsResLoteLOTE_VALI.Value,'8.888 1');		  //Grava a entrada do material		  Grava_Dados_Estoque(AdsResLoteLote_Codl.Value,StrToFloat(EdtMovDocumento.Text),EdtOrigemMov.Value,AdsResLoteLOTE_SALD.Value,AdsResLoteLOTE_VALI.Value,'4.444 1');		End;	  //if	  end;	  AdsResLote.Next;	  If Not AdsTblMovProd.Active Then		 AdsTblMovProd.Active := True;	  If not AdsTblMovProd.Locate('MVPR_LOTE',StrToFloat(EdtMovDocumento.Text),[]) then	  Begin		AdsTblMovProd.Append;		AdsTblMovProdMVPR_DATA.Value := Date;		AdsTblMovProdMVPR_MATE.Value := AdsTblProdutoPROD_COD.Value;		AdsTblMovProdMVPR_NTOP.Value := '4.444 1';		AdsTblMovProdMVPR_QTDE.Value := EdtQtdeProduto.Value;		AdsTblMovProdMVPR_DPTO.Value := 'PP';		AdsTblMovProdMVPR_LOTE.Value := StrToFloat(EdtMovDocumento.Text);		AdsTblMovProd.Post;	  End;	//While	end;  //Messagebox...  End;  GeraResumoLote;  EdtMovDocumento.Text := '';  EdtProduto.Text := '';  EdtQtdeProduto.Value := 0;  EdtQTDEMov.Value:= 0;    BtnMovLotesEst.Enabled := False;end;

 

Estude esse code que ele irá satisfazer a sua dúvida...

 

ele abate lote a lote, até atingir a quantidade necessária... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente, a idéia é a mesma que o Hugo sugeriu;Se quiser pode fazer como você mesmo disse, coloque um váriavel e vá baixando assim saberá se poderá baixar todos se não quando finalizar faça apenas uma baixa parcial e dê um msg para o usuario dizendo q não foi possivel baixar todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia pessoal!

vlw pela dica de vcs....

adotei o seguinte:

 

var  ValorBaixar: Double;begin  ValorBaixar:= StrToFloat(txtValor.Text);  qry.GotoBookMark(Pointer(grd.SelectedRows.Itemns[i - 1]));    if ValorBaixar > qryValor.Value then	begin	//Baixa a conta	end	else	//Baixa a conta e altera o valor para o ValorBaixar;   //Cria nva conta com o qryValor.Value - ValorBaixar;

 

deu certinho ... era exatamente issu q eu qria ... vlw pessoal pelo refresh rs

abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde galera!

agora tive fazendo uns testes aki e ta me esquentando a cabeca ... fiz o seguinte pra baixar contas:

 

if (grd.SelectedRows.Count > 1) and (StrToFloat(txtValor.Text) < StrToFloat(txtSelecionado.Text)) then	begin	ValorBaixar:= StrToFloat(txtValor.Text);	for i:= 1 to grd.SelectedRows.Count do		begin		qry.GotoBookmark(Pointer(grd.SelectedRows.Items[i - 1]));		ID_CLIENTE:= qryID_CLIENTE.Text;		DATA_EMISSAO:= qryDATA_EMISSAO.Value;		DATA_VCTO:= qryDATA_VCTO.Value;		DOC:= qryDOC.Value;		HISTORICo:= qryHISTORICO.Value;		VALOR:= qryVALOR.Value;		if ValorBaixar > qryValor.Value then			begin			ValorBaixar:= ValorBaixar - qryValor.Value;			qry.Edit;			qryDATA_PGTO.Value:= Date;			qryPENDENTE.Value:= False;			qry.Post;			end;		if ValorBaixar < qryValor.Value then			begin			qry.Edit;			qryDATA_PGTO.Value:= Date;			qryPENDENTE.Value:= False;			qryValor.Value:= ValorBaixar;			qryHistorico.Text:= 'Baixar Parcial Conta de: ' + FloatToStr(Valor) + HISTORICO;			qry.Post;			qry.Insert;			qryPENDENTE.Value:= True;			qryValor.Value:= Valor - ValorBaixar;			qryHistorico.Text:= 'Restante Conta de: ' + FloatToStr(Valor) + HISTORICO;			qryID_CLIENTE.Text:= ID_CLIENTE;			qryDATA_VCTO.Value:= DATA_VCTO;			qryDATA_EMISSAO.Value:= DATA_EMISSAO;			qryDOC.Text:= DOC;			qry.Post;			end;		end;		qry.Close;		qry.Open;	end;		 end;

daew o seguinte ... digamos q tenha 2 contas :

Doc 1 ************** 10,00

Doc 2 ************** 12,00

 

e o user informa q vai ser baixado 20,00 , nesse caso ele faz certo baixa as duas contas - altera o valor do Doc 2 para 10,00 e cria uma nova conta de 2,00

 

agora o problema ta se estiver invertido as ordens,, por exemplo c estiver assim:

Doc 1 ************** 12,00

Doc 2 ************** 10,00

 

Dai ele c embanana td ,,, nesse caso c o user informar q vai se baixado 20 tb, ele faz o seguinte:

Cria 2 novas contas

Restante Doc 1 **** 4,00 e

Restante Doc 2 **** 2,00

 

e baixa assim:

Baixa Parcial Doc 1 **** 8,00 e

Baixa Parcial Doc 2 **** 8,00

 

pq sera essa bagunça tda ...

Por favor.... alguem consegui me entender????? Entao ! pode me ajudar???

 

Fikarei no aguardo ..;.. vlw pessoal mais uma vez;..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.