Fórum Como fazer corretamente essas rotinas ? #2057
21/01/2009
a/c Rodrigo carreiro Mourão
Veja ai , se ta certo , se estiver errado fale onde tem que melhorar ou refazer
unit ufrmRadioLocar;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DBCtrls, StdCtrls, FMTBcd, DB, DBClient, Provider,
SqlExpr, DateUtils, ADODB, Buttons;
type
TfrmRadioLocar = class(TForm)
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lbl4: TLabel;
lbl5: TLabel;
lbl6: TLabel;
lbl7: TLabel;
lbl8: TLabel;
lbl9: TLabel;
lbl10: TLabel;
lbl11: TLabel;
lbl12: TLabel;
lbl13: TLabel;
lbl14: TLabel;
edtMatricula: TEdit;
edtMotoqueiro: TEdit;
edtRadio: TEdit;
edtSerialradio: TEdit;
edtcategoriaDiaria: TEdit;
edtvalorlocacao: TEdit;
edttotallocacao: TEdit;
edt_ultimalocao: TEdit;
edttotallocacaomes: TEdit;
edtlimitedebito: TEdit;
edtproxlimite: TEdit;
edtvalorpagamento: TEdit;
edtsaldoatual: TEdit;
edtnovosaldo: TEdit;
dbimg1: TDBImage;
btnLocar: TButton;
btnCancelar: TButton;
Limpar: TButton;
edt_idCategoriaMotoqueiro: TEdit;
ds1: TDataSource;
dbgrd1: TDBGrid;
lblIDLOCACAO: TLabel;
procedure edtMatriculaChange(Sender: TObject);
procedure edtRadioChange(Sender: TObject);
procedure btnLocarClick(Sender: TObject);
procedure edtMatriculaKeyPress(Sender: TObject; var Key: Char);
procedure LimparClick(Sender: TObject);
procedure edtvalorpagamentoChange(Sender: TObject);
procedure edtvalorpagamentoKeyPress(Sender: TObject; var Key: Char);
procedure edtRadioKeyPress(Sender: TObject; var Key: Char);
procedure edtvalorpagamentoExit(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
procedure CONSULTAMOTOQUEIRO;
procedure loca_radio;
procedure limpaformulario;
procedure LANCA_MOV_MOTOQUEIRO;
procedure lanca_caixa;
procedure verificaMotoRadio;
procedure VERIFICAULTIMALOCACAO;
procedure TOTALTODASLOCACAO;
procedure LOCACAOMES;
procedure VERIFICASALDO;
procedure proximoLimite;
procedure verificalimiteDebito;
procedure verificaradiodisponivel;
procedure Atualizalimite;
procedure RotinasLocacao;
procedure ImprimiRecibo;
public
{ Public declarations }
end;
var
frmRadioLocar: TfrmRadioLocar;
aIdlocacao: integer;
implementation
uses UDMBUSCA, uDMprincipal, UDMRADIO, UDMMOTOQUEIRO, ufrmlog, udmLocacao;
{$R *.dfm}
procedure TfrmRadioLocar.Atualizalimite;
begin
if StrToFloat(edtnovosaldo.Text) < 0 then
begin
DMRADIO.qryAtualizaLimiteMotoqueiro.Close;
DMRADIO.qryAtualizaLimiteMotoqueiro.sql.Clear;
DMRADIO.qryAtualizaLimiteMotoqueiro.SQL.Add(update tb_motoqueiro set vl_limite_debito =:aLimite where nr_matricula =:aMotoqueiro);
DMRADIO.qryAtualizaLimiteMotoqueiro.ParamByName(aMotoqueiro).AsInteger := StrToInt(edtMatricula.Text);
DMRADIO.qryAtualizaLimiteMotoqueiro.ParamByName(alimite).AsInteger := StrToint(edtproxlimite.Text);
DMRADIO.qryAtualizaLimiteMotoqueiro.ExecSQL;
end
else
ShowMessage(Motoqueiro com Mensalidade Quitada );
end;
procedure TfrmRadioLocar.btnLocarClick(Sender: TObject);
begin
if (MessageDlg(Deseja concluir a locação ?, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
RotinasLocacao;
// ImprimiRecibo ;
end;
end;
procedure TfrmRadioLocar.CONSULTAMOTOQUEIRO;
begin
if (edtMatricula.Text EmptyStr) then
if Length(edtMatricula.Text) >= 4 then
begin
dmbusca.qryconsultaMotoqueiro.Close;
dmbusca.qryconsultaMotoqueiro.SQL.clear;
dmbusca.qryconsultaMotoqueiro.SQL.add(select * from VW_CAD_MOTOQUEIRO where matricula= :pMATRICULA);
dmbusca.qryconsultaMotoqueiro.ParamByName(pMATRICULA).AsString := edtMatricula.Text;
dmbusca.qryconsultaMotoqueiro.open;
if not dmbusca.qryconsultaMotoqueiro.isempty then
begin
if not VarIsNull(dmbusca.qryconsultaMotoqueiro[nome]) then
edtMotoqueiro.Text := dmbusca.qryconsultaMotoqueiro[nome];
if not VarIsNull(DMBUSCA.QryConsultaMotoqueiro[diaria]) then
edtcategoriaDiaria.Text := DMBUSCA.QryConsultaMotoqueiro[diaria];
if not VarIsNull(DMBUSCA.QryConsultaMotoqueiro[Vl_Categoria]) then
edtvalorlocacao.Text := DMBUSCA.QryConsultaMotoqueiro[Vl_Categoria];
if not VarIsNull(DMBUSCA.QryConsultaMotoqueiro[LIMITE_DEBITO]) then
edtlimitedebito.Text := DMBUSCA.QryConsultaMotoqueiro[LIMITE_DEBITO];
end;
end;
end;
procedure TfrmRadioLocar.edtMatriculaChange(Sender: TObject);
begin
CONSULTAMOTOQUEIRO;
// verificalimiteDebito ;
verificaMotoRadio;
TOTALTODASLOCACAO;
LOCACAOMES;
VERIFICASALDO;
proximoLimite;
VERIFICAULTIMALOCACAO;
end;
procedure TfrmRadioLocar.edtMatriculaKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in [0..9, Chr(8)]) then
Key := #0;
end;
procedure TfrmRadioLocar.edtRadioChange(Sender: TObject);
begin
verificaradiodisponivel;
end;
procedure TfrmRadioLocar.edtRadioKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in [0..9, Chr(8)]) then
Key := #0;
end;
procedure TfrmRadioLocar.edtvalorpagamentoChange(Sender: TObject);
begin
if edtvalorpagamento.text EmptyStr then begin
edtnovosaldo.text := floattostr(strtofloat(edtsaldoatual.Text) + strtofloat(edtvalorpagamento.text));
end;
end;
procedure TfrmRadioLocar.edtvalorpagamentoExit(Sender: TObject);
begin
if edtvalorpagamento.Text = EmptyStr then
edtvalorpagamento.Text := 0;
end;
procedure TfrmRadioLocar.edtvalorpagamentoKeyPress(Sender: TObject;
var Key: Char);
begin
if not (Key in [0..9, Chr(8)]) then
Key := #0;
end;
procedure TfrmRadioLocar.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
Key := #0;
Perform(Wm_NextDlgCtl, 0, 0);
end
end;
procedure TfrmRadioLocar.ImprimiRecibo;
begin
if StrToFloat(edtValorPagamento.text) > 0 then
if (MessageDlg(Deseja imprimir o comprovante de pagamento para Motoqueiro ?, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
ShowMessage(Implementação futura);
end;
end;
procedure TfrmRadioLocar.lanca_caixa;
begin
if StrToInt(edtvalorpagamento.Text) > 0 then
begin
dmlocacao.qryLancaCaixa.Close;
dmlocacao.qryLancaCaixa.SQL.clear;
dmlocacao.qryLancaCaixa.sql.Add(exec pri_movimento_Caixa :aidcaixa,:atipoLancamento,:aValor ,:aMatricula,:aUsuario);
dmlocacao.qryLancaCaixa.ParamByName(aIdCaixa).AsInteger := 15;
dmlocacao.qryLancaCaixa.ParamByName(aTipolancamento).AsInteger := 1;
dmlocacao.qryLancaCaixa.ParamByName(aValor).AsInteger := StrToInt(edtvalorpagamento.Text);
dmlocacao.qryLancaCaixa.ParamByName(aMatricula).AsInteger := StrToInt(edtMatricula.Text);
dmlocacao.qryLancaCaixa.ParamByName(aUsuario).AsInteger := 1; //vm_idusuario
dmlocacao.qryLancaCaixa.ExecSQL;
end;
end;
procedure TfrmRadioLocar.LANCA_MOV_MOTOQUEIRO;
begin
dmlocacao.qryMovMotoqueiro.Close;
dmlocacao.qryMovMotoqueiro.sql.clear;
dmlocacao.qryMovMotoqueiro.SQL.Add(exec pri_motoqueiro_movimento :aMatricula,:aidlocacao,:atipocredito,:aPagamento,:atipomovimento,:aUsuario);
dmlocacao.qryMovMotoqueiro.ParamByName(aMatricula).AsInteger := StrToInt(edtMatricula.Text);
dmlocacao.qryMovMotoqueiro.ParamByName(aIdLocacao).AsInteger := aIdlocacao;
dmlocacao.qryMovMotoqueiro.ParamByName(atipocredito).AsInteger := 1;
dmlocacao.qryMovMotoqueiro.ParamByName(aPagamento).AsInteger := StrToInt(edtvalorpagamento.text);
dmlocacao.qryMovMotoqueiro.ParamByName(aTipoMovimento).AsInteger := 1;
dmlocacao.qryMovMotoqueiro.ParamByName(aUsuario).AsInteger := 1; //vm_idusuario
dmlocacao.qryMovMotoqueiro.Open;
end;
procedure TfrmRadioLocar.limpaformulario;
var
I: integer;
begin
for i := 0 to ComponentCount - 1 do
begin
if Components[i].ClassName = TEdit then
Tedit(Components[i]).clear;
end;
end;
procedure TfrmRadioLocar.LimparClick(Sender: TObject);
begin
limpaformulario;
end;
procedure TfrmRadioLocar.LOCACAOMES;
begin
//total de locacoes dentro de um mes
DMRADIO.cdsTotalLocacaoMes.Close;
DMRADIO.cdsTotalLocacaoMes.Params[0].asstring := edtMatricula.Text;
DMRADIO.cdsTotalLocacaoMes.Params[1].AsString := FormatDateTime(yyyy/dd/mm 00:00:00, StartOfTheMonth(Date));
DMRADIO.cdsTotalLocacaoMes.Params[2].AsString := FormatDateTime(yyyy/dd/mm 23:59:59, Date);
DMRADIO.cdsTotalLocacaoMes.Open;
if not DMRADIO.cdsTotalLocacaoMes.IsEmpty then
begin
if not VarIsNull(DMRADIO.cdsTotalLocacaoMes[total]) then
edttotallocacaomes.text := DMRADIO.cdsTotalLocacaoMes[total]
end;
end;
procedure TfrmRadioLocar.loca_radio;
begin
dmlocacao.qryIdLocacao.Close;
dmlocacao.qryIdLocacao.sql.Clear;
dmlocacao.qryIdLocacao.sql.Add(exec pri_locacao :aRadio,:aMatricula,:aUsuario,:aCategoria,:aPagamento,:aValor,:aStatus );
dmlocacao.qryIdLocacao.ParamByName(aRadio).AsInteger := StrToInt(edtRadio.Text);
dmlocacao.qryIdLocacao.ParamByName(aMatricula).AsInteger := StrToInt(edtMatricula.Text);
dmlocacao.qryIdLocacao.ParamByName(aUsuario).AsInteger := 1; //vm_idusuario;
dmlocacao.qryIdLocacao.ParamByName(acategoria).AsInteger := StrToInt(edt_idCategoriaMotoqueiro.Text);
dmlocacao.qryIdLocacao.ParamByName(aPagamento).AsFloat := StrToFloat(edtvalorpagamento.Text); //valor
dmlocacao.qryIdLocacao.ParamByName(aValor).AsFloat := StrToFloat(edtvalorlocacao.Text); //valor
dmlocacao.qryIdLocacao.ParamByName(aStatus).AsInteger := 2;
dmlocacao.qryIdLocacao.Open;
if not dmlocacao.qryIdLocacao.IsEmpty then
begin
if (not VarIsNull(dmlocacao.qryIdLocacao[ID_LOCACAO])) then
// ShowMessage(dmlocacao.qryIdLocacao[ID_LOCACAO]);
aIdlocacao := dmlocacao.qryIdLocacao[id_locacao];
end;
ShowMessage(locacão realizada com sucesso !);
end;
procedure TfrmRadioLocar.proximoLimite;
begin
if (edtMatricula.Text EmptyStr) then
if Length(edtMatricula.Text) >= 4 then
begin
DMRADIO.cdsLAtualizaLimiteMotoqueiro.Close;
DMRADIO.cdsLAtualizaLimiteMotoqueiro.Params[0].Asstring := edtMatricula.Text;
DMRADIO.cdsLAtualizaLimiteMotoqueiro.Open;
edtproxlimite.Text := IntToStr(DMRADIO.cdsLAtualizaLimiteMotoqueiroNovo_limite.asinteger);
end;
end;
procedure TfrmRadioLocar.RotinasLocacao;
begin
if (edtvalorpagamento.Text) = EmptyStr then
edtvalorpagamento.Text := 0;
verificaMotoRadio;
verificaradiodisponivel;
verificaLimiteDebito;
VERIFICASALDO;
proximoLimite;
loca_radio;
AtualizaLimite;
LANCA_MOV_MOTOQUEIRO;
lanca_caixa;
limpaformulario;
end;
procedure TfrmRadioLocar.TOTALTODASLOCACAO;
begin
if (edtMatricula.Text EmptyStr) then
if Length(edtMatricula.Text) >= 4 then
begin
dmradio.cdsTotalLocacoesGerais.Close;
dmradio.cdsTotalLocacoesGerais.Params[0].Asstring := edtMatricula.Text;
dmradio.cdsTotalLocacoesGerais.Open;
if not dmradio.cdsTotalLocacoesGerais.IsEmpty then
begin
if not VarIsNull(dmradio.cdsTotalLocacoesGerais[total]) then
edttotallocacao.Text := dmradio.cdsTotalLocacoesGerais[total];
end;
end;
end;
procedure TfrmRadioLocar.verificalimiteDebito;
begin
if StrToFloat(edtlimitedebito.text) < -strtofloat(edtnovosaldo.Text) then
begin
raise Exception.Create(Limite insuficiente para um nova locação );
end;
end;
procedure TfrmRadioLocar.verificaMotoRadio;
begin
if Length(edtMatricula.Text) >= 4 then
begin
DmLocacao.cdsMotoqueirocomRadio.Close;
DmLocacao.cdsMotoqueirocomRadio.Params[0].Asstring := edtMatricula.Text;
DmLocacao.cdsMotoqueirocomRadio.Open;
if DmLocacao.cdsMotoqueirocomRadio.RecordCount > 0 then
begin
raise Exception.Create(Motoqueiro já tem Rádio locado );
end;
end;
end;
procedure TfrmRadioLocar.verificaradiodisponivel;
begin
if Length(edtRadio.Text) >= 3 then
begin
DMlocacao.cdsRadioDisponivel.Close;
DMlocacao.cdsRadioDisponivel.Params[0].Asstring := edtradio.text;
DMlocacao.cdsRadioDisponivel.Open;
if not DMlocacao.cdsRadioDisponivel.IsEmpty then
begin
if not VarIsNull(DMlocacao.cdsRadioDisponivel[NR_SERIAL]) then
edtSerialradio.Text := DMlocacao.cdsRadioDisponivel[NR_SERIAL];
end
else
begin
raise Exception.Create(O Rádio selecionado não esta disponivel );
end;
end;
end;
procedure TfrmRadioLocar.VERIFICASALDO;
begin
if (edtMatricula.Text EmptyStr) then
if Length(edtMatricula.Text) >= 4 then
begin
DmLocacao.cdsSaldoMotoqueiro.Close;
DmLocacao.cdsSaldoMotoqueiro.Params[0].AsString := edtMatricula.Text;
DmLocacao.cdsSaldoMotoqueiro.Open;
edtsaldoatual.Text := (DmLocacao.cdsSaldoMotoqueiroVl_Saldo.AsString);
edtnovosaldo.Text := (DmLocacao.cdsSaldoMotoqueiroVl_Saldo.AsString);
end;
end;
procedure TfrmRadioLocar.VERIFICAULTIMALOCACAO;
begin
DMMOTOQUEIRO.qryUltimalocacao.close;
DMMOTOQUEIRO.qryUltimalocacao.SQL.Clear;
DMMOTOQUEIRO.qryUltimalocacao.SQL.Add(select top 1 * from tb_locacao_radio where nr_matricula =:aMotoqueiro order by id_locacao desc );
DMMOTOQUEIRO.qryUltimalocacao.ParamByName(aMotoqueiro).Asstring := edtMatricula.Text;
DMMOTOQUEIRO.qryUltimalocacao.open;
if not DMMOTOQUEIRO.qryUltimalocacao.IsEmpty then
begin
if not VarIsNull(DMMOTOQUEIRO.qryUltimalocacao[dt_locacao]) then
edt_ultimalocao.Text := DMMOTOQUEIRO.qryUltimalocacao[dt_locacao];
end;
end;
end.
[#VIDEO-65#]
Posts
esse e o video
[#VIDEO-65#]
21/01/2009
Rodrigo Mourão
Ok !! Estarei verificando e entro em contato o mais rápido possível !!1
abs !!!!
21/01/2009
Rodrigo Mourão
Segue video com algumas considerações.
abs !!!
[#VIDEO-68#]
23/01/2009
Rodrigo Mourão
Olá Carlos, já baixei seus fontes e o back up do banco de dados.
Apanhei aqui para restaurar sua base. Eu tenho o SQL Server 2000
instalado e você usa o 2005. Depois de pesquisar muito aqui vi que era
isso então baixei o SqlServer 2005 com uma conexão com a internet não
muito boa rsrsrsrsrs. Enfim acabei de baixar e consegui instalar e
restaurar sua base.
Um outro problema que encontrei foi com a versão do Delphi, você usou a
2009 e o projeto não abre no 2007. Sorte nossa ter um dproj.2007 salvo
junto. Estou agora acertando alguns detalhes para a aplicação rodar.
Peço que aguarde mais um pouco pois como os três chamados abertos girar
em torno do mesmo projeto e na mesma tela irei analisar linha a linha
para que possa identificar as falhas e gravar uma video com a solução
das mesmas.
Conto com sua compreensão. Obrigado !!!
abs !!!!!
26/01/2009
Rodrigo Mourão
Olá Carlos,
Podemos encerrar este chamado ?? Você abriu um especifico e estou trabalhando nele. Trata-se do chamado 2176.
Fico no aguardo !!!
abs !!