Cadastro de Cheque
Gostaria de saber como faço para que, na hora de cadastrar os cheques eu colocasse somente a qtd de cheque e o numero do primeiro cheque e toda vez que usuario gravar o sistema pedisse para o usuario continuasse colocando somente o proximo numero do cheque, a data de bom para e o valor.
Josenildo Rosa
Curtidas 0
Respostas
Josenildo Rosa
26/07/2010
Gostaria de saber como faço para que, na hora de cadastrar os cheques eu colocasse somente a qtd de cheque e o numero do primeiro cheque e toda vez que usuario gravar o sistema pedisse para o usuario continuasse colocando somente o proximo numero do cheque, a data de bom para e o valor.
Uso delphi 7 e firebird 2.0
GOSTEI 0
Eriley Barbosa
26/07/2010
Poste a estrutura de sua tabela e os componentes que está utilizando(dbExpress, ibx, etc...).
Atenciosamente
Eriley
GOSTEI 0
Carlos Mazzi
26/07/2010
Provavelmente só pegar o ultimo numero do cheque, armazenar numa variavel e ir incrementando conforme a qtd de cheques selecionada.
Poste parte do seu codigo que implementa , para termos uma ideia pra te ajudar.
GOSTEI 0
Josenildo Rosa
26/07/2010
Eriley segue abaixo a estrutura da tabela:
CREATE TABLE CHRECEBIDOS (
CHRS_ID INTEGER NOT NULL,
CHRS_NUMERO INTEGER,
CHRS_TITULO VARCHAR(15) NOT NULL,
CHRS_DATA DATE NOT NULL,
CHRS_BOMPARA DATE NOT NULL,
CHRS_RECEBEUDE VARCHAR(25),
CHRS_PAGOA VARCHAR(20),
CHRS_CONTA VARCHAR(20),
CHRS_TOTAL NUMERIC(12,2) NOT NULL,
B_ID INTEGER NOT NULL, //codigo do Banco
CLI_ID INTEGER NOT NULL, //codigo do cliente
E_ID INTEGER NOT NULL, //codigo da empresa
CC_ID INTEGER NOT NULL //codigo do centro de custo
); Uso os componentes da paleta Interbase e o codigo usado na tela é o seguinte: IF R1.Checked = True THEN "se o cheque for a vista"
BEGIN
FOR I := 1 TO EdQtd.Value DO {é a quantidade de cheques informada pelo cliente}
BEGIN
GeraCodigoCHPagos; {gera um codigo sequencia para a tabela de cheques pagos}
TCHPagos.Active := True;
TCHPagos.Insert;
TCHPagosCHPS_ID.Value := StrToInt(Edit1.Text);{obs abaixo que para dar sequencia eu coloquei um imputbox, mas o cliente está reclamando que fica aparecendo toda hora mensagem fica cansativo, o que eu quero é que em vez desse imputbox ele gravasse e deixasse o curso no edit para o usuario digitar o proximo cheque}
Numero := InputBox('Informando o Numero do Cheque', 'Digite o número do ' + IntToStr(I)+ 'º cheque', 'Digite o numero aqui');
TCHPagosCHPS_NUMERO.Value := StrToInt(Numero);
TCHPagosCHPS_TITULO.Value := Edit3.Text + '/' + IntToStr(I);
TCHPagosCHPS_DATA.Value := Date1.Date;
Venc := InputBox('Entrada de Vencimentos', 'Digite o vencimento do ' + IntToStr(I)+ 'º cheque', 'Digite a data com / aqui');
TCHPagosCHPS_BOMPARA.Value := StrToDate(Venc);
TCHPagosCHPS_RECEBEUDE.Value := F_Entrada.Edit4.Text;
TCHPagosCHPS_PAGOA.Value := '';
TCHPagosCHPS_CONTA.Value := Edit5.Text;
Valor := InputBox('Entrada de Valores', 'Digite o valor do ' + IntToStr(I)+ 'º cheque', 'Digite o valor aqui');
Total := StrToFloat(Valor);
TCHPagosCHPS_TOTAL.Value := Total;
TCHPagosB_ID.Value := StrToInt(InputBox('Entrada de Valores', 'Digite o codigo do banco do ' + IntToStr(I)+ 'º cheque', ''));
TCHPagosF_ID.Value := F_Entrada.TAuxF_ID.Value;
TCHPagosE_ID.Value := F_Entrada.TAuxE_ID.Value;
TCHPagosCC_ID.Value := F_Entrada.TAuxCC_ID.Value;
TCHPagos.Post;
END;
END;
CHRS_ID INTEGER NOT NULL,
CHRS_NUMERO INTEGER,
CHRS_TITULO VARCHAR(15) NOT NULL,
CHRS_DATA DATE NOT NULL,
CHRS_BOMPARA DATE NOT NULL,
CHRS_RECEBEUDE VARCHAR(25),
CHRS_PAGOA VARCHAR(20),
CHRS_CONTA VARCHAR(20),
CHRS_TOTAL NUMERIC(12,2) NOT NULL,
B_ID INTEGER NOT NULL, //codigo do Banco
CLI_ID INTEGER NOT NULL, //codigo do cliente
E_ID INTEGER NOT NULL, //codigo da empresa
CC_ID INTEGER NOT NULL //codigo do centro de custo
); Uso os componentes da paleta Interbase e o codigo usado na tela é o seguinte: IF R1.Checked = True THEN "se o cheque for a vista"
BEGIN
FOR I := 1 TO EdQtd.Value DO {é a quantidade de cheques informada pelo cliente}
BEGIN
GeraCodigoCHPagos; {gera um codigo sequencia para a tabela de cheques pagos}
TCHPagos.Active := True;
TCHPagos.Insert;
TCHPagosCHPS_ID.Value := StrToInt(Edit1.Text);{obs abaixo que para dar sequencia eu coloquei um imputbox, mas o cliente está reclamando que fica aparecendo toda hora mensagem fica cansativo, o que eu quero é que em vez desse imputbox ele gravasse e deixasse o curso no edit para o usuario digitar o proximo cheque}
Numero := InputBox('Informando o Numero do Cheque', 'Digite o número do ' + IntToStr(I)+ 'º cheque', 'Digite o numero aqui');
TCHPagosCHPS_NUMERO.Value := StrToInt(Numero);
TCHPagosCHPS_TITULO.Value := Edit3.Text + '/' + IntToStr(I);
TCHPagosCHPS_DATA.Value := Date1.Date;
Venc := InputBox('Entrada de Vencimentos', 'Digite o vencimento do ' + IntToStr(I)+ 'º cheque', 'Digite a data com / aqui');
TCHPagosCHPS_BOMPARA.Value := StrToDate(Venc);
TCHPagosCHPS_RECEBEUDE.Value := F_Entrada.Edit4.Text;
TCHPagosCHPS_PAGOA.Value := '';
TCHPagosCHPS_CONTA.Value := Edit5.Text;
Valor := InputBox('Entrada de Valores', 'Digite o valor do ' + IntToStr(I)+ 'º cheque', 'Digite o valor aqui');
Total := StrToFloat(Valor);
TCHPagosCHPS_TOTAL.Value := Total;
TCHPagosB_ID.Value := StrToInt(InputBox('Entrada de Valores', 'Digite o codigo do banco do ' + IntToStr(I)+ 'º cheque', ''));
TCHPagosF_ID.Value := F_Entrada.TAuxF_ID.Value;
TCHPagosE_ID.Value := F_Entrada.TAuxE_ID.Value;
TCHPagosCC_ID.Value := F_Entrada.TAuxCC_ID.Value;
TCHPagos.Post;
END;
END;
Poste a estrutura de sua tabela e os componentes que está utilizando(dbExpress, ibx, etc...).
Atenciosamente
Eriley
GOSTEI 0
Josenildo Rosa
26/07/2010
Carlos como faço isso, eu postei a estrutura e parte do codigo que estou usando na minha aplicação olhe acima no post do Eriley de uma olhada.
Provavelmente só pegar o ultimo numero do cheque, armazenar numa variavel e ir incrementando conforme a qtd de cheques selecionada.
Poste parte do seu codigo que implementa , para termos uma ideia pra te ajudar.
GOSTEI 0
Marco Salles
26/07/2010
Realmente vc esta usando muito Imput e fica desconfortavel para o usuário digitar n vezes a mesma coisa
Vc Deve criar um Formulário especifico de cadastro de cheques que automatize todas essas informaçoes
Ja passei por algo parecido e No meu caso a idéia era
1) Vez ..
Digitava o CPF/CNPJ
No fim do CPF/CNPJ digitado efetuava uma Pesquisa na Base de Dados para Trazer Informaçoes
ja persistidas como por exemplo ( Banco , Agencia , Numero Cheque , Nome do Emitente etc...)
Caso fosse um CPF/CNPJ novo ai não tina alternativa ..
Digitava os Dados ( Banco , Agencia , Numero Cheque , Nome do Emitente ,Valor , enfim as informaçoes afims)
*** Detalhe <de posse do CPF / CNPJ > efetuava uma pesquisa na Base de Dados e prenchia tudo que fosse
pertinente ...( Banco , Agencia , Nome , Tel )
*** Em caso de mais de uma Agencia/Conta Cadastrada para o mesmo CPF/CNPJ selecionava em um DbGrid
*** Qual era a conta
2)
A automatização mais ainda o processo a partir do segundo cheque
Digitava novamente o CPF/CNPJ ... Ou Replicava os Dados Possiveis
a Unica diferença era que Efetuava uma pesquisa pelo numero do cheque
Trazia alem dos Dados Afins que citei acima (Praça , Numero do Banco , Agencia , Conta , Nome , Tel ... )
Trazia o NUMERO DO PROXIMO O CHEQUE , Se o Cheque é
000800-5 o Proximo pela logica 000801-3 ( O Final 5 e o Final 3 é o digito Verificador que se obtem
por logica)...
Alem do Numero do Cheque eu tb Obtia a Proxima Data ( que geralmente é Mais 30 Dias Ou Mais 28 Dias)
3) No fim o Processo estava tão automatizado que ate o CNP/CNPJ que eu digitava ja era atraves de um
MaskEdit ficava sempre uma Lista Suspensa para evitar digitar algumas vezes o Mesmo CPF/CNPJ
Claro que isto tudo é uma idéa .. A pesquisa , Como Obter o Numero esperado do proximo Cheque ,
como criar uma Lista suspensa em um MaskEdit , são idéias que se te servir vc não terá muitas
dificuladades , em implementa-las . Na duvida Pesquise
GOSTEI 0