lucioalves Postado Fevereiro 10, 2010 Denunciar Share Postado Fevereiro 10, 2010 quando clico no botão confirmar esta dando baixa apenas em um item ,as vezes quando tem mais de dois não da baixa em nenhum,segue o codigo fonte geral do formcadpedidos, se Possivel comente todo o codigo pois estou aprendendo.unit CadPedidos;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Cadastro, StdCtrls, Buttons, ExtCtrls, Db, DBTables, DBCtrls, Mask, ComCtrls, Grids, DBGrids, Menus;type TFrmCadPedidos = class(TFrmCadastro) TbPedidos: TTable; TbItens: TTable; TbProdutos: TTable; TbClientes: TTable; TbVendedor: TTable; TbPedidosCodCliente: TIntegerField; TbPedidosCodVendedor: TIntegerField; TbPedidosDataPed: TDateField; TbItensNroPed: TIntegerField; TbItensCodProduto: TIntegerField; TbItensQuantidade: TSmallintField; TbItensPreco: TCurrencyField; TbItensAliq_ICMS: TCurrencyField; TbItensAliq_IPI: TCurrencyField; TbClientesCodigo: TAutoIncField; TbClientesNome: TStringField; TbClientesEndereco: TStringField; TbClientesBairro: TStringField; TbClientesCidade: TStringField; TbClientesUF: TStringField; TbClientesCEP: TStringField; TbClientesCGC: TStringField; TbClientesCPF: TStringField; TbClientesIE: TStringField; TbPedidosVendedor: TStringField; TbPedidosCliente: TStringField; Label1: TLabel; DBEdit1: TDBEdit; DsPedidos: TDataSource; Label2: TLabel; DBEdit2: TDBEdit; Label3: TLabel; DBLookupComboBox1: TDBLookupComboBox; Label4: TLabel; DBLookupComboBox2: TDBLookupComboBox; DtPedido: TDateTimePicker; TbItensProduto: TStringField; TbItensTotal: TCurrencyField; DsItens: TDataSource; DBGrid1: TDBGrid; Panel1: TPanel; Label5: TLabel; PopupMenu1: TPopupMenu; Incluir1: TMenuItem; Alterar1: TMenuItem; Excluir1: TMenuItem; TbVendedorCodigo: TAutoIncField; TbVendedorVendedor: TStringField; TbVendedorEndereco: TStringField; TbVendedorBairro: TStringField; TbVendedorCidade: TStringField; TbVendedorUF: TStringField; TbVendedorCEP: TStringField; TbVendedorTelefone1: TStringField; TbVendedorTelefone2: TStringField; TbVendedorData: TDateField; TbVendedorCPF: TStringField; TbVendedorRG: TStringField; TbFormaPag: TTable; TbPedidosCodFormaPag: TIntegerField; Label6: TLabel; DBLookupComboBox3: TDBLookupComboBox; DsBaixas: TDataSource; TbItensTroca: TSmallintField; TbControle: TTable; TbPedidosNumero: TIntegerField; TbControlePedido: TIntegerField; TbProdutosCodigo: TAutoIncField; TbProdutosDescricao: TStringField; TbProdutosSaldo: TIntegerField; TbProdutosPrecoCusto: TCurrencyField; TbProdutosPrecoVenda: TCurrencyField; TbFormaPagCodigo: TAutoIncField; TbFormaPagDescricao: TStringField; TbFormaPagIntervaloDias: TSmallintField; TbFormaPagQtdParcelas: TSmallintField; TbFormaPagPrimVenc: TSmallintField; TbTitulos: TTable; TbPedidosFormaPag: TStringField; TbPedidosCGC: TStringField; TbPedidosCPF: TStringField; TbPedidosIE: TStringField; TbPedidosEndereco: TStringField; TbPedidosBairro: TStringField; TbPedidosCidade: TStringField; TbPedidosEstado: TStringField; TbPedidosCep: TStringField; TbClientesCodVendedor: TIntegerField; TbTitulosNroTitulo: TIntegerField; TbTitulosValor: TCurrencyField; TbTitulosVencimento: TDateField; TbControleTitulo: TIntegerField; TbTitulosNroPed: TIntegerField; TbPedidosObservacao: TMemoField; Label7: TLabel; DBMemo1: TDBMemo; TbPrecos: TTable; TbPrecosCodCliente: TIntegerField; TbPrecosCodProduto: TIntegerField; TbPrecosPreco: TCurrencyField; DsClientes: TDataSource; Label8: TLabel; Panel2: TPanel; TbProdutosPonto: TIntegerField; TbItensPonto: TIntegerField; TbPedidosUser: TStringField; DBText1: TDBText; Label9: TLabel; TbClientesCodFormaPag: TIntegerField; TbClientesPontos: TIntegerField; TbPedidosLinhas: TSmallintField; Bevel3: TBevel; Bevel4: TBevel; TbProdutosModelo: TStringField; TbVendedorComisao: TSmallintField; TbPedidosEntregue: TBooleanField; TbControleFornecedor: TIntegerField; TbControleCliente: TIntegerField; TbControleAno: TDateField; TbClientesDtNascimento: TStringField; procedure Restaura; procedure DtPedidoCloseUp(Sender: TObject); procedure BtIncluirClick(Sender: TObject); procedure BtAlterarClick(Sender: TObject); procedure BtExcluirClick(Sender: TObject); procedure BtConfirmarClick(Sender: TObject); procedure BtCancelarClick(Sender: TObject); procedure BtSairClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure DBGrid1KeyPress(Sender: TObject; var Key: Char); procedure TbItensCalcFields(DataSet: TDataSet); procedure TbItensCodProdutoChange(Sender: TField); procedure TbItensAfterDelete(DataSet: TDataSet); procedure TbItensAfterEdit(DataSet: TDataSet); procedure Incluir1Click(Sender: TObject); procedure Alterar1Click(Sender: TObject); procedure Excluir1Click(Sender: TObject); Function CalculaTotal:Integer; procedure TbItensAfterPost(DataSet: TDataSet); procedure TbPedidosAfterInsert(DataSet: TDataSet); Procedure Titulos; procedure Soma; procedure Subtrai(Coluna:Integer); procedure DBGrid1ColExit(Sender: TObject); procedure DBGrid1ColEnter(Sender: TObject); procedure DBLookupComboBox2CloseUp(Sender: TObject); procedure TbPedidosCodClienteChange(Sender: TField); procedure TbItensBeforeDelete(DataSet: TDataSet); procedure DBMemo1Exit(Sender: TObject); procedure DBMemo1KeyPress(Sender: TObject; var Key: Char); procedure DBMemo1Change(Sender: TObject); private { Private declarations } public Escolha:Char; end;var FrmCadPedidos: TFrmCadPedidos;implementationuses Principal, ConsPedidos, Global;{$R *.DFM}procedure TFrmCadPedidos.Soma;Begin TbProdutos.Close; TbProdutos.Open; TbItens.Edit; Tbitens.Post; TbProdutos.FindKey([TbItensCodProduto.value]); TbProdutos.Edit; TbProdutosSaldo.Value:=TbProdutosSaldo.Value+TbItensQuantidade.Value+TbItensTroca.Value; TbProdutos.Post; TbItens.Next;End;procedure TFrmCadPedidos.Subtrai(Coluna:Integer);Var VarSaldo:Integer; VarProduto:String;Begin TbProdutos.Close; TbProdutos.Open; TbItens.Edit; Tbitens.Post; TbProdutos.FindKey([TbItensCodProduto.value]); VarProduto:=TbProdutosDescricao.Value; VarSaldo:=TbProdutosSaldo.value; if (TbProdutosSaldo.Value>=(TbItensQuantidade.Value+TbItensTroca.Value)) then begin TbProdutos.Edit; TbProdutosSaldo.Value:=TbProdutosSaldo.Value-TbItensQuantidade.Value-TbItensTroca.Value; TbProdutos.Post; TbItens.Next End Else Begin ShowMessage('O Saldo do Produto "'+VarProduto+'" é de: '+IntToStr(VarSaldo)+', Não atendendo o solicitado!'); TbItens.Edit; TbItensQuantidade.Value:=0; TbItensTroca.Value:=0;// DbGrid1.SelectedIndex:=Coluna; End;End;Procedure TFrmCadPedidos.Titulos;VarVarTotal:Real;Louca,I,AUX:Integer;Begin While not TbTitulos.Eof do TbTitulos.Delete;VarTotal:=0;TbItens.First;While not TbItens.Eof do Begin VarTotal:=VarTotal+TbItensTotal.Value; TbItens.Next; End;if TbFormaPagPrimVenc.Value=0 then Begin Louca:=1; AUX:=0; Endelse Begin Louca:=0; AUX:=1; End;For I:=AUX to (TbFormaPagQtdParcelas.Value-Louca) doBegin TbTitulos.Append; TbTitulosValor.Value:=VarTotal/TbFormaPagQtdParcelas.Value; TbTitulosVencimento.Value:=TbPedidosDataPed.Value+(TbFormaPagIntervaloDias.Value*I);End;End;Function TFrmCadPedidos.CalculaTotal:Integer;Var VarTot:Real; VarPonto:Integer;BeginVarTot:=0;VarPonto:=0;TbItens.First;While Not TbItens.eof do begin VarTot:=VarTot+TbItensTotal.Value; VarPonto:=VarPonto+TbItensPonto.Value*TbItensQuantidade.Value; TbItens.Next; end;Panel1.Caption:=FloatToStrf(VarTot,ffcurrency,18,2);Panel2.Caption:=IntToStr(VarPonto);Result:=VarPonto;end;procedure TFrmCadPedidos.Restaura;begin btincluir.enabled:= not btincluir.Enabled; btalterar.enabled:= not btalterar.Enabled; btexcluir.enabled:= not btexcluir.Enabled; btconfirmar.enabled:= not btconfirmar.Enabled; btcancelar.Enabled:= not btcancelar.Enabled; dsPedidos.Enabled:= not dsPedidos.Enabled; dsItens.Enabled:= not dsItens.Enabled; DtPedido.Enabled:=not DtPedido.Enabled; DsBaixas.Enabled:=Not DsBaixas.Enabled; Panel1.caption:='';end;procedure TFrmCadPedidos.DtPedidoCloseUp(Sender: TObject);begin inherited; TbPedidosDataPed.Value:=DtPedido.Date;end;procedure TFrmCadPedidos.BtIncluirClick(Sender: TObject);beginRestaura;Escolha:='I';FrmPrincipal.Database.StartTransaction;TbPedidos.Append;TbPedidosDataPed.Value:=Date;end;procedure TFrmCadPedidos.BtAlterarClick(Sender: TObject);beginGlbCodigo:=0;Try Application.CreateForm(TFrmConsPedidos, FrmConsPedidos); FrmConsPedidos.ShowModal;Finally FrmConsPedidos.Free;End;If GlbCodigo<>0 ThenBeginRestaura;Escolha:='A';FrmPrincipal.Database.StartTransaction;TbPedidos.FindKey([GlbCodigo]);CalculaTotal;TbPedidos.Edit; End;end;procedure TFrmCadPedidos.BtExcluirClick(Sender: TObject);beginGlbCodigo:=0;Try Application.CreateForm(TFrmConsPedidos, FrmConsPedidos); FrmConsPedidos.ShowModal;Finally FrmConsPedidos.Free;End;If GlbCodigo<>0 ThenBeginRestaura;Escolha:='E';FrmPrincipal.Database.StartTransaction;TbPedidos.FindKey([GlbCodigo]);CalculaTotal;End;end;procedure TFrmCadPedidos.BtConfirmarClick(Sender: TObject);beginif (Escolha='I') or (Escolha='A') Then Begin if Escolha='I' then TbPedidosUser.Value:=GlbUser; TbPedidosLinhas.Value:=DbMemo1.Lines.Count; TbPedidos.Post; Titulos; TbClientes.Edit; TbClientesPontos.Value:=TbClientesPontos.Value+CalculaTotal; TbClientes.Post; EndElse Begin While not TbItens.Eof do TbItens.Delete; TbPedidos.Delete; End;FrmPrincipal.Database.Commit;Restaura;end;procedure TFrmCadPedidos.BtCancelarClick(Sender: TObject);beginTbPedidos.Cancel;FrmPrincipal.Database.Rollback;Restaura;end;procedure TFrmCadPedidos.BtSairClick(Sender: TObject);begin inherited;Close;end;procedure TFrmCadPedidos.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin inherited;if btconfirmar.Enabled then begin canclose:=false; ShowMessage('Finalize a Operação Clicando em "Confirmar" ou "Cancelar"!'); end;end;procedure TFrmCadPedidos.FormShow(Sender: TObject);begin TbPedidos.Open; TbItens.Open; TbProdutos.Open; TbClientes.Open; TbVendedor.Open; TbFormaPag.Open; TbTitulos.Open; TbPrecos.Open; DtPedido.Date:=date;end;procedure TFrmCadPedidos.FormClose(Sender: TObject; var Action: TCloseAction);begin TbPedidos.Close; TbItens.Close; TbProdutos.Close; TbClientes.Close; TbVendedor.Close; TbFormaPag.Close; TbTitulos.Close; TbPrecos.Close;end;procedure TFrmCadPedidos.FormKeyPress(Sender: TObject; var Key: Char);begin if key=#13 then Perform(WM_NEXTDLGCTL,0,0);end;procedure TFrmCadPedidos.DBGrid1KeyPress(Sender: TObject; var Key: Char);beginif Key=#13 then Begin If DbGrid1.SelectedIndex<>4 Then Begin DbGrid1.SelectedIndex:=DbGrid1.SelectedIndex+1; end Else Begin if (DbGrid1.SelectedIndex=4)and(TbItens.Eof) then Begin TbItens.Append; DbGrid1.SelectedIndex:=0; End Else Begin TbItens.Next; DbGrid1.SelectedIndex:=0; End; End; End;end;procedure TFrmCadPedidos.TbItensCalcFields(DataSet: TDataSet);begin TbItensTotal.Value:=TbItensQuantidade.Value*TbItensPreco.Value;end;procedure TFrmCadPedidos.TbItensCodProdutoChange(Sender: TField);begin TbITensQuantidade.Value:=0; TbItensTroca.Value:=0;if TbPrecos.FindKey([TbPedidosCodCliente.Value,TbItensCodProduto.Value]) then TbItensPreco.Value:=TbPrecosPreco.ValueElse TbItensPreco.Value:=TbProdutosPrecoVenda.Value;end;procedure TFrmCadPedidos.TbItensAfterDelete(DataSet: TDataSet);begin CalculaTotal;end;procedure TFrmCadPedidos.TbItensAfterEdit(DataSet: TDataSet);begin TbProdutos.Edit; TbProdutosSaldo.Value:=TbProdutosSaldo.Value+TbItensQuantidade.Value; TbProdutos.Post;end;procedure TFrmCadPedidos.Incluir1Click(Sender: TObject);begin TbItens.Append;end;procedure TFrmCadPedidos.Alterar1Click(Sender: TObject);begin TbItens.Edit;end;procedure TFrmCadPedidos.Excluir1Click(Sender: TObject);beginif Application.MessageBox('Deseja Realmente Excluir esse Item?','Itens do Pedido',MB_YESNO+MB_ICONQUESTION)=ID_YES thenTbItens.Delete;end;procedure TFrmCadPedidos.TbItensAfterPost(DataSet: TDataSet);begin CalculaTotal;end;procedure TFrmCadPedidos.TbPedidosAfterInsert(DataSet: TDataSet);beginTbControle.Open;TbPedidosNumero.Value:=TbControlePedido.Value;TbControle.Edit;TbControlePedido.Value:=TbControlePedido.Value+1;TbControle.Post;TbControle.Close;end;procedure TFrmCadPedidos.DBGrid1ColExit(Sender: TObject);Beginif (DbGrid1.SelectedIndex=0)or(DbGrid1.SelectedIndex=1)or(DbGrid1.SelectedIndex=3) then begin Subtrai(DbGrid1.SelectedIndex); end;end;procedure TFrmCadPedidos.DBGrid1ColEnter(Sender: TObject);beginif (DbGrid1.SelectedIndex=0)or(DbGrid1.SelectedIndex=1)or(DbGrid1.SelectedIndex=3) then begin Soma; end;end;procedure TFrmCadPedidos.DBLookupComboBox2CloseUp(Sender: TObject);begin TbITens.First; While Not TbItens.Eof do Begin if TbPrecos.FindKey([TbPedidosCodCliente.Value,TbItensCodProduto.Value]) then TbItensPreco.Value:=TbPrecosPreco.Value Else begin TbProdutos.FindKey([TbItensCodProduto.Value]); TbItens.Edit; TbItensPreco.Value:=TbProdutosPrecoVenda.Value; TbItens.Post; end; TbItens.Next; End;end;procedure TFrmCadPedidos.TbPedidosCodClienteChange(Sender: TField);begin inherited;TbPedidosCodVendedor.Value:=TbClientesCodVendedor.Value;TbPedidosCodFormaPag.Value:=TbClientesCodFormaPag.Value;end;procedure TFrmCadPedidos.TbItensBeforeDelete(DataSet: TDataSet);begin TbProdutos.Findkey([TbitensCodProduto.Value]); Tbprodutos.Edit; TbProdutosSaldo.Value:=TbProdutosSaldo.Value+TbItensQuantidade.Value+TbItensTroca.Value; TbProdutos.Post;end;procedure TFrmCadPedidos.DBMemo1Exit(Sender: TObject);beginif dbmemo1.Lines.Count>7 then begin ShowMessage('O Campo Observação só pode ter no Máximo Sete Linhas!'); Dbmemo1.SetFocus; end;end;procedure TFrmCadPedidos.DBMemo1KeyPress(Sender: TObject; var Key: Char);begin inherited;if dbmemo1.Lines.Count>2 then begin ShowMessage('O Campo Observação só pode ter Duas Linhas!'); Dbmemo1.SetFocus; end;end;procedure TFrmCadPedidos.DBMemo1Change(Sender: TObject);Var I:Integer; S:String;beginFor I:=1 to DbMemo1.Lines.Count doBeginif Length(DbMemo1.Lines)>=80 thenBegin S:=DbMemo1.Lines; DbMemo1.Lines.Append(Copy(S,80,Length(s)));End;End;end;end. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 11, 2010 Denunciar Share Postado Fevereiro 11, 2010 acompanhe a execução do programa usando o debugger do delphi ( break point ) e vai encontrar o problemaabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
lucioalves
quando clico no botão confirmar esta dando baixa apenas em um item ,as vezes quando tem mais de dois não da baixa em nenhum,segue o codigo fonte geral do formcadpedidos, se Possivel comente todo o codigo pois estou aprendendo.
unit CadPedidos;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Cadastro, StdCtrls, Buttons, ExtCtrls, Db, DBTables, DBCtrls, Mask,
ComCtrls, Grids, DBGrids, Menus;
type
TFrmCadPedidos = class(TFrmCadastro)
TbPedidos: TTable;
TbItens: TTable;
TbProdutos: TTable;
TbClientes: TTable;
TbVendedor: TTable;
TbPedidosCodCliente: TIntegerField;
TbPedidosCodVendedor: TIntegerField;
TbPedidosDataPed: TDateField;
TbItensNroPed: TIntegerField;
TbItensCodProduto: TIntegerField;
TbItensQuantidade: TSmallintField;
TbItensPreco: TCurrencyField;
TbItensAliq_ICMS: TCurrencyField;
TbItensAliq_IPI: TCurrencyField;
TbClientesCodigo: TAutoIncField;
TbClientesNome: TStringField;
TbClientesEndereco: TStringField;
TbClientesBairro: TStringField;
TbClientesCidade: TStringField;
TbClientesUF: TStringField;
TbClientesCEP: TStringField;
TbClientesCGC: TStringField;
TbClientesCPF: TStringField;
TbClientesIE: TStringField;
TbPedidosVendedor: TStringField;
TbPedidosCliente: TStringField;
Label1: TLabel;
DBEdit1: TDBEdit;
DsPedidos: TDataSource;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
Label4: TLabel;
DBLookupComboBox2: TDBLookupComboBox;
DtPedido: TDateTimePicker;
TbItensProduto: TStringField;
TbItensTotal: TCurrencyField;
DsItens: TDataSource;
DBGrid1: TDBGrid;
Panel1: TPanel;
Label5: TLabel;
PopupMenu1: TPopupMenu;
Incluir1: TMenuItem;
Alterar1: TMenuItem;
Excluir1: TMenuItem;
TbVendedorCodigo: TAutoIncField;
TbVendedorVendedor: TStringField;
TbVendedorEndereco: TStringField;
TbVendedorBairro: TStringField;
TbVendedorCidade: TStringField;
TbVendedorUF: TStringField;
TbVendedorCEP: TStringField;
TbVendedorTelefone1: TStringField;
TbVendedorTelefone2: TStringField;
TbVendedorData: TDateField;
TbVendedorCPF: TStringField;
TbVendedorRG: TStringField;
TbFormaPag: TTable;
TbPedidosCodFormaPag: TIntegerField;
Label6: TLabel;
DBLookupComboBox3: TDBLookupComboBox;
DsBaixas: TDataSource;
TbItensTroca: TSmallintField;
TbControle: TTable;
TbPedidosNumero: TIntegerField;
TbControlePedido: TIntegerField;
TbProdutosCodigo: TAutoIncField;
TbProdutosDescricao: TStringField;
TbProdutosSaldo: TIntegerField;
TbProdutosPrecoCusto: TCurrencyField;
TbProdutosPrecoVenda: TCurrencyField;
TbFormaPagCodigo: TAutoIncField;
TbFormaPagDescricao: TStringField;
TbFormaPagIntervaloDias: TSmallintField;
TbFormaPagQtdParcelas: TSmallintField;
TbFormaPagPrimVenc: TSmallintField;
TbTitulos: TTable;
TbPedidosFormaPag: TStringField;
TbPedidosCGC: TStringField;
TbPedidosCPF: TStringField;
TbPedidosIE: TStringField;
TbPedidosEndereco: TStringField;
TbPedidosBairro: TStringField;
TbPedidosCidade: TStringField;
TbPedidosEstado: TStringField;
TbPedidosCep: TStringField;
TbClientesCodVendedor: TIntegerField;
TbTitulosNroTitulo: TIntegerField;
TbTitulosValor: TCurrencyField;
TbTitulosVencimento: TDateField;
TbControleTitulo: TIntegerField;
TbTitulosNroPed: TIntegerField;
TbPedidosObservacao: TMemoField;
Label7: TLabel;
DBMemo1: TDBMemo;
TbPrecos: TTable;
TbPrecosCodCliente: TIntegerField;
TbPrecosCodProduto: TIntegerField;
TbPrecosPreco: TCurrencyField;
DsClientes: TDataSource;
Label8: TLabel;
Panel2: TPanel;
TbProdutosPonto: TIntegerField;
TbItensPonto: TIntegerField;
TbPedidosUser: TStringField;
DBText1: TDBText;
Label9: TLabel;
TbClientesCodFormaPag: TIntegerField;
TbClientesPontos: TIntegerField;
TbPedidosLinhas: TSmallintField;
Bevel3: TBevel;
Bevel4: TBevel;
TbProdutosModelo: TStringField;
TbVendedorComisao: TSmallintField;
TbPedidosEntregue: TBooleanField;
TbControleFornecedor: TIntegerField;
TbControleCliente: TIntegerField;
TbControleAno: TDateField;
TbClientesDtNascimento: TStringField;
procedure Restaura;
procedure DtPedidoCloseUp(Sender: TObject);
procedure BtIncluirClick(Sender: TObject);
procedure BtAlterarClick(Sender: TObject);
procedure BtExcluirClick(Sender: TObject);
procedure BtConfirmarClick(Sender: TObject);
procedure BtCancelarClick(Sender: TObject);
procedure BtSairClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure TbItensCalcFields(DataSet: TDataSet);
procedure TbItensCodProdutoChange(Sender: TField);
procedure TbItensAfterDelete(DataSet: TDataSet);
procedure TbItensAfterEdit(DataSet: TDataSet);
procedure Incluir1Click(Sender: TObject);
procedure Alterar1Click(Sender: TObject);
procedure Excluir1Click(Sender: TObject);
Function CalculaTotal:Integer;
procedure TbItensAfterPost(DataSet: TDataSet);
procedure TbPedidosAfterInsert(DataSet: TDataSet);
Procedure Titulos;
procedure Soma;
procedure Subtrai(Coluna:Integer);
procedure DBGrid1ColExit(Sender: TObject);
procedure DBGrid1ColEnter(Sender: TObject);
procedure DBLookupComboBox2CloseUp(Sender: TObject);
procedure TbPedidosCodClienteChange(Sender: TField);
procedure TbItensBeforeDelete(DataSet: TDataSet);
procedure DBMemo1Exit(Sender: TObject);
procedure DBMemo1KeyPress(Sender: TObject; var Key: Char);
procedure DBMemo1Change(Sender: TObject);
private
{ Private declarations }
public
Escolha:Char;
end;
var
FrmCadPedidos: TFrmCadPedidos;
implementation
uses Principal, ConsPedidos, Global;
{$R *.DFM}
procedure TFrmCadPedidos.Soma;
Begin
TbProdutos.Close;
TbProdutos.Open;
TbItens.Edit;
Tbitens.Post;
TbProdutos.FindKey([TbItensCodProduto.value]);
TbProdutos.Edit;
TbProdutosSaldo.Value:=TbProdutosSaldo.Value+TbItensQuantidade.Value+TbItensTroca.Value;
TbProdutos.Post;
TbItens.Next;
End;
procedure TFrmCadPedidos.Subtrai(Coluna:Integer);
Var
VarSaldo:Integer;
VarProduto:String;
Begin
TbProdutos.Close;
TbProdutos.Open;
TbItens.Edit;
Tbitens.Post;
TbProdutos.FindKey([TbItensCodProduto.value]);
VarProduto:=TbProdutosDescricao.Value;
VarSaldo:=TbProdutosSaldo.value;
if (TbProdutosSaldo.Value>=(TbItensQuantidade.Value+TbItensTroca.Value)) then
begin
TbProdutos.Edit;
TbProdutosSaldo.Value:=TbProdutosSaldo.Value-TbItensQuantidade.Value-TbItensTroca.Value;
TbProdutos.Post;
TbItens.Next
End
Else
Begin
ShowMessage('O Saldo do Produto "'+VarProduto+'" é de: '+IntToStr(VarSaldo)+', Não atendendo o solicitado!');
TbItens.Edit;
TbItensQuantidade.Value:=0;
TbItensTroca.Value:=0;
// DbGrid1.SelectedIndex:=Coluna;
End;
End;
Procedure TFrmCadPedidos.Titulos;
Var
VarTotal:Real;
Louca,I,AUX:Integer;
Begin
While not TbTitulos.Eof do
TbTitulos.Delete;
VarTotal:=0;
TbItens.First;
While not TbItens.Eof do
Begin
VarTotal:=VarTotal+TbItensTotal.Value;
TbItens.Next;
End;
if TbFormaPagPrimVenc.Value=0 then
Begin
Louca:=1;
AUX:=0;
End
else
Begin
Louca:=0;
AUX:=1;
End;
For I:=AUX to (TbFormaPagQtdParcelas.Value-Louca) do
Begin
TbTitulos.Append;
TbTitulosValor.Value:=VarTotal/TbFormaPagQtdParcelas.Value;
TbTitulosVencimento.Value:=TbPedidosDataPed.Value+(TbFormaPagIntervaloDias.Value*I);
End;
End;
Function TFrmCadPedidos.CalculaTotal:Integer;
Var
VarTot:Real;
VarPonto:Integer;
Begin
VarTot:=0;
VarPonto:=0;
TbItens.First;
While Not TbItens.eof do
begin
VarTot:=VarTot+TbItensTotal.Value;
VarPonto:=VarPonto+TbItensPonto.Value*TbItensQuantidade.Value;
TbItens.Next;
end;
Panel1.Caption:=FloatToStrf(VarTot,ffcurrency,18,2);
Panel2.Caption:=IntToStr(VarPonto);
Result:=VarPonto;
end;
procedure TFrmCadPedidos.Restaura;
begin
btincluir.enabled:= not btincluir.Enabled;
btalterar.enabled:= not btalterar.Enabled;
btexcluir.enabled:= not btexcluir.Enabled;
btconfirmar.enabled:= not btconfirmar.Enabled;
btcancelar.Enabled:= not btcancelar.Enabled;
dsPedidos.Enabled:= not dsPedidos.Enabled;
dsItens.Enabled:= not dsItens.Enabled;
DtPedido.Enabled:=not DtPedido.Enabled;
DsBaixas.Enabled:=Not DsBaixas.Enabled;
Panel1.caption:='';
end;
procedure TFrmCadPedidos.DtPedidoCloseUp(Sender: TObject);
begin
inherited;
TbPedidosDataPed.Value:=DtPedido.Date;
end;
procedure TFrmCadPedidos.BtIncluirClick(Sender: TObject);
begin
Restaura;
Escolha:='I';
FrmPrincipal.Database.StartTransaction;
TbPedidos.Append;
TbPedidosDataPed.Value:=Date;
end;
procedure TFrmCadPedidos.BtAlterarClick(Sender: TObject);
begin
GlbCodigo:=0;
Try
Application.CreateForm(TFrmConsPedidos, FrmConsPedidos);
FrmConsPedidos.ShowModal;
Finally
FrmConsPedidos.Free;
End;
If GlbCodigo<>0 Then
Begin
Restaura;
Escolha:='A';
FrmPrincipal.Database.StartTransaction;
TbPedidos.FindKey([GlbCodigo]);
CalculaTotal;
TbPedidos.Edit;
End;
end;
procedure TFrmCadPedidos.BtExcluirClick(Sender: TObject);
begin
GlbCodigo:=0;
Try
Application.CreateForm(TFrmConsPedidos, FrmConsPedidos);
FrmConsPedidos.ShowModal;
Finally
FrmConsPedidos.Free;
End;
If GlbCodigo<>0 Then
Begin
Restaura;
Escolha:='E';
FrmPrincipal.Database.StartTransaction;
TbPedidos.FindKey([GlbCodigo]);
CalculaTotal;
End;
end;
procedure TFrmCadPedidos.BtConfirmarClick(Sender: TObject);
begin
if (Escolha='I') or (Escolha='A') Then
Begin
if Escolha='I' then
TbPedidosUser.Value:=GlbUser;
TbPedidosLinhas.Value:=DbMemo1.Lines.Count;
TbPedidos.Post;
Titulos;
TbClientes.Edit;
TbClientesPontos.Value:=TbClientesPontos.Value+CalculaTotal;
TbClientes.Post;
End
Else
Begin
While not TbItens.Eof do
TbItens.Delete;
TbPedidos.Delete;
End;
FrmPrincipal.Database.Commit;
Restaura;
end;
procedure TFrmCadPedidos.BtCancelarClick(Sender: TObject);
begin
TbPedidos.Cancel;
FrmPrincipal.Database.Rollback;
Restaura;
end;
procedure TFrmCadPedidos.BtSairClick(Sender: TObject);
begin
inherited;
Close;
end;
procedure TFrmCadPedidos.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
inherited;
if btconfirmar.Enabled then
begin
canclose:=false;
ShowMessage('Finalize a Operação Clicando em "Confirmar" ou "Cancelar"!');
end;
end;
procedure TFrmCadPedidos.FormShow(Sender: TObject);
begin
TbPedidos.Open;
TbItens.Open;
TbProdutos.Open;
TbClientes.Open;
TbVendedor.Open;
TbFormaPag.Open;
TbTitulos.Open;
TbPrecos.Open;
DtPedido.Date:=date;
end;
procedure TFrmCadPedidos.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
TbPedidos.Close;
TbItens.Close;
TbProdutos.Close;
TbClientes.Close;
TbVendedor.Close;
TbFormaPag.Close;
TbTitulos.Close;
TbPrecos.Close;
end;
procedure TFrmCadPedidos.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
Perform(WM_NEXTDLGCTL,0,0);
end;
procedure TFrmCadPedidos.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
Begin
If DbGrid1.SelectedIndex<>4 Then
Begin
DbGrid1.SelectedIndex:=DbGrid1.SelectedIndex+1;
end
Else
Begin
if (DbGrid1.SelectedIndex=4)and(TbItens.Eof) then
Begin
TbItens.Append;
DbGrid1.SelectedIndex:=0;
End
Else
Begin
TbItens.Next;
DbGrid1.SelectedIndex:=0;
End;
End;
End;
end;
procedure TFrmCadPedidos.TbItensCalcFields(DataSet: TDataSet);
begin
TbItensTotal.Value:=TbItensQuantidade.Value*TbItensPreco.Value;
end;
procedure TFrmCadPedidos.TbItensCodProdutoChange(Sender: TField);
begin
TbITensQuantidade.Value:=0;
TbItensTroca.Value:=0;
if TbPrecos.FindKey([TbPedidosCodCliente.Value,TbItensCodProduto.Value]) then
TbItensPreco.Value:=TbPrecosPreco.Value
Else
TbItensPreco.Value:=TbProdutosPrecoVenda.Value;
end;
procedure TFrmCadPedidos.TbItensAfterDelete(DataSet: TDataSet);
begin
CalculaTotal;
end;
procedure TFrmCadPedidos.TbItensAfterEdit(DataSet: TDataSet);
begin
TbProdutos.Edit;
TbProdutosSaldo.Value:=TbProdutosSaldo.Value+TbItensQuantidade.Value;
TbProdutos.Post;
end;
procedure TFrmCadPedidos.Incluir1Click(Sender: TObject);
begin
TbItens.Append;
end;
procedure TFrmCadPedidos.Alterar1Click(Sender: TObject);
begin
TbItens.Edit;
end;
procedure TFrmCadPedidos.Excluir1Click(Sender: TObject);
begin
if Application.MessageBox('Deseja Realmente Excluir esse Item?','Itens do Pedido',MB_YESNO+MB_ICONQUESTION)=ID_YES then
TbItens.Delete;
end;
procedure TFrmCadPedidos.TbItensAfterPost(DataSet: TDataSet);
begin
CalculaTotal;
end;
procedure TFrmCadPedidos.TbPedidosAfterInsert(DataSet: TDataSet);
begin
TbControle.Open;
TbPedidosNumero.Value:=TbControlePedido.Value;
TbControle.Edit;
TbControlePedido.Value:=TbControlePedido.Value+1;
TbControle.Post;
TbControle.Close;
end;
procedure TFrmCadPedidos.DBGrid1ColExit(Sender: TObject);
Begin
if (DbGrid1.SelectedIndex=0)or(DbGrid1.SelectedIndex=1)or(DbGrid1.SelectedIndex=3) then
begin
Subtrai(DbGrid1.SelectedIndex);
end;
end;
procedure TFrmCadPedidos.DBGrid1ColEnter(Sender: TObject);
begin
if (DbGrid1.SelectedIndex=0)or(DbGrid1.SelectedIndex=1)or(DbGrid1.SelectedIndex=3) then
begin
Soma;
end;
end;
procedure TFrmCadPedidos.DBLookupComboBox2CloseUp(Sender: TObject);
begin
TbITens.First;
While Not TbItens.Eof do
Begin
if TbPrecos.FindKey([TbPedidosCodCliente.Value,TbItensCodProduto.Value]) then
TbItensPreco.Value:=TbPrecosPreco.Value
Else
begin
TbProdutos.FindKey([TbItensCodProduto.Value]);
TbItens.Edit;
TbItensPreco.Value:=TbProdutosPrecoVenda.Value;
TbItens.Post;
end;
TbItens.Next;
End;
end;
procedure TFrmCadPedidos.TbPedidosCodClienteChange(Sender: TField);
begin
inherited;
TbPedidosCodVendedor.Value:=TbClientesCodVendedor.Value;
TbPedidosCodFormaPag.Value:=TbClientesCodFormaPag.Value;
end;
procedure TFrmCadPedidos.TbItensBeforeDelete(DataSet: TDataSet);
begin
TbProdutos.Findkey([TbitensCodProduto.Value]);
Tbprodutos.Edit;
TbProdutosSaldo.Value:=TbProdutosSaldo.Value+TbItensQuantidade.Value+TbItensTroca.Value;
TbProdutos.Post;
end;
procedure TFrmCadPedidos.DBMemo1Exit(Sender: TObject);
begin
if dbmemo1.Lines.Count>7 then
begin
ShowMessage('O Campo Observação só pode ter no Máximo Sete Linhas!');
Dbmemo1.SetFocus;
end;
end;
procedure TFrmCadPedidos.DBMemo1KeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if dbmemo1.Lines.Count>2 then
begin
ShowMessage('O Campo Observação só pode ter Duas Linhas!');
Dbmemo1.SetFocus;
end;
end;
procedure TFrmCadPedidos.DBMemo1Change(Sender: TObject);
Var
I:Integer;
S:String;
begin
For I:=1 to DbMemo1.Lines.Count do
Begin
if Length(DbMemo1.Lines)>=80 then
Begin
S:=DbMemo1.Lines;
DbMemo1.Lines.Append(Copy(S,80,Length(s)));
End;
End;
end;
end.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.