Ir para conteúdo
Fórum Script Brasil
  • 0

baixa no dbgrid


lucioalves

Pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...