unit upedidofornecedor;

interface

uses
  Windows, variants, Messages, SysUtils, clipbrd, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, Grids, DBGrids, ComCtrls, Db, DBTables, StdCtrls, DBCtrls, Mask,
  Buttons, ToolWin, ActnList, OleServer, Word97;

type

THackDBGrid = class(TDBGrid);

  Tfpedidofornecedor = class(TForm)
    dspedido: TDataSource;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    ScrollBox1: TScrollBox;
    Panel1: TPanel;
    dsitem: TDataSource;
    Panel2: TPanel;
    ScrollBox2: TScrollBox;
    EditCodPed: TDBEdit;
    Label1: TLabel;
    EditDtaEm: TDBEdit;
    Label7: TLabel;
    EditCliente: TDBEdit;
    Label9: TLabel;
    EditTransp: TDBEdit;
    Label6: TLabel;
    Panel5: TPanel;
    DBGrid2: TDBGrid;
    Label13: TLabel;
    EditCodigo: TDBEdit;
    DBRadioGroup1: TDBRadioGroup;
    ToolBar1: TToolBar;
    btnPrimeiro: TSpeedButton;
    btnVoltar: TSpeedButton;
    btnAvancar: TSpeedButton;
    btnUltimo: TSpeedButton;
    Panel7: TPanel;
    btnnovo: TSpeedButton;
    btngravar: TSpeedButton;
    btncancelar: TSpeedButton;
    Panel8: TPanel;
    SpeedButton8: TSpeedButton;
    DBEdit2: TDBEdit;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label19: TLabel;
    ActionList1: TActionList;
    Totalizar: TAction;
    preencher: TAction;
    Panel6: TPanel;
    Panel10: TPanel;
    Panel12: TPanel;
    Panel13: TPanel;
    formproduto: TAction;
    formimagem: TAction;
    Image1: TDBImage;
    GroupBox5: TGroupBox;
    SpeedButton5: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    Label34: TLabel;
    Label35: TLabel;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Panel16: TPanel;
    totalizar1: TAction;
    SpeedButton6: TSpeedButton;
    Label23: TLabel;
    novo: TAction;
    avancar: TAction;
    voltar: TAction;
    foco: TAction;
    estoque: TAction;
    formatar: TAction;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label8: TLabel;
    Label11: TLabel;
    DBEdit1: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    Label17: TLabel;
    DBEdit9: TDBEdit;
    Label22: TLabel;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    Label24: TLabel;
    DBEdit13: TDBEdit;
    Label25: TLabel;
    DBEdit14: TDBEdit;
    Label26: TLabel;
    dbimage1: TImage;
    Bevel3: TBevel;
    Bevel4: TBevel;
    Bevel5: TBevel;
    Panel3: TPanel;
    DBGrid1: TDBGrid;
    Panel14: TPanel;
    Label12: TLabel;
    DBText2: TDBText;
    saldo: TAction;
    email: TAction;
    SpeedButton1: TSpeedButton;
    btndelete: TSpeedButton;
    StatusBar1: TStatusBar;
    Panel4: TPanel;
    ajuda: TAction;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EditCodigoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnnovoClick(Sender: TObject);
    procedure btngravarClick(Sender: TObject);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGrid1Enter(Sender: TObject);
    procedure btnPrimeiroClick(Sender: TObject);
    procedure btnVoltarClick(Sender: TObject);
    procedure btnAvancarClick(Sender: TObject);
    procedure btnUltimoClick(Sender: TObject);
    procedure btncancelarClick(Sender: TObject);
    procedure Label1Click(Sender: TObject);
    procedure Label13Click(Sender: TObject);
    procedure Label14Click(Sender: TObject);
    procedure TotalizarExecute(Sender: TObject);
    procedure preencherExecute(Sender: TObject);
    procedure DBGrid1ColExit(Sender: TObject);
    procedure DBGrid1Exit(Sender: TObject);
    procedure formprodutoExecute(Sender: TObject);
    procedure formimagemExecute(Sender: TObject);
    procedure Image1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure PageControl1Change(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure totalizar1Execute(Sender: TObject);
    procedure MaskEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MaskEdit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure DBRadioGroup1Exit(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure avancarExecute(Sender: TObject);
    procedure voltarExecute(Sender: TObject);
    procedure EditCodPedKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBEdit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure focoExecute(Sender: TObject);
    procedure novoExecute(Sender: TObject);
    procedure estoqueExecute(Sender: TObject);
    procedure formatarExecute(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure btndeleteClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure DBEdit2Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBGrid1EditButtonClick(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure ajudaExecute(Sender: TObject);
  private
   procedure AppHint(Sender : TObject);
    { Private declarations }
  public
  BOK : boolean;
  St, tipo, foc : String;
  it:integer;
    { Public declarations }
  end;

var
  fpedidofornecedor: Tfpedidofornecedor;

implementation

uses ulistafornecedor, UnitMenu, ulistaproduto,
urpedidofornecedor, udm, ucontrolefornecedor;




procedure tfpedidofornecedor.AppHint(Sender: TObject);
begin
  StatusBar1.Panels[0].Text := Application.Hint;
end;



{$R *.DFM}

procedure Tfpedidofornecedor.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
	        Application.OnHint := nil;
end;

procedure Tfpedidofornecedor.EditCodigoKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if key = VK_F3 then
         Label13Click(Self);


        if key = vk_F12 then begin
         Application.CreateForm (tflistafornecedor, flistafornecedor);
          flistafornecedor.st := 'pedido';
           fdm.tbfornecedor.open;
            flistafornecedor.show;
             end;

          if key = 13 then begin
           Key := 0;

          fdm.tbfornecedor.open;

               if fdm.tbfornecedor.Locate ('codigo',EditCodigo.text,[]) then begin
               fdm.tbpedidofornecedor.edit;
               fdm.tbpedidofornecedor['fantasia'] := fdm.tbfornecedor['fantasia'];
               fdm.tbpedidofornecedor['nome'] := fdm.tbfornecedor['fornecedor'];
               fdm.tbpedidofornecedor['endereco'] := fdm.tbfornecedor['endereco'];
               fdm.tbpedidofornecedor['bairro'] := fdm.tbfornecedor['bairro'];
               fdm.tbpedidofornecedor['municipio'] := fdm.tbfornecedor['cidade'];
               fdm.tbpedidofornecedor['cep'] := fdm.tbfornecedor['cep'];
               fdm.tbpedidofornecedor['uf'] := fdm.tbfornecedor['uf'];
               fdm.tbpedidofornecedor['fone'] := fdm.tbfornecedor['fone'];
               fdm.tbpedidofornecedor['fax'] := fdm.tbfornecedor['fone_fax'];
               fdm.tbpedidofornecedor['cgc/cpf'] := fdm.tbfornecedor['cgc'];
               fdm.tbpedidofornecedor['ie/rg'] := fdm.tbfornecedor['inscricao'];
               fdm.tbpedidofornecedor['prazopgto'] := fdm.tbfornecedor['condpgto'];
               fdm.tbpedidofornecedor['email'] := fdm.tbfornecedor['email'];
               fdm.tbpedidofornecedor['transportadora'] := fdm.tbfornecedor['transportadora'];
               fdm.tbfornecedor.close;
               dbedit12.SetFocus;


          end else begin
          Showmessage('Não há nenhum fornecedor código: ' +  EditCodigo.text +' cadastrado !!!');
           editcodigo.setfocus;
          end;
          end;

end;

procedure Tfpedidofornecedor.btnnovoClick(Sender: TObject);
begin
        novoexecute(self);
end;

procedure Tfpedidofornecedor.btngravarClick(Sender: TObject);
begin
        fdm.tbpedidofornecedor.edit;
         fdm.tbpedidofornecedor.post;
          btnGravar.Enabled:=false;
           btncancelar.enabled := false;
end;

procedure Tfpedidofornecedor.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin


        if key = vk_F12 then
         formprodutoexecute (self);

        if key = vk_f4 then begin
         if image1.Visible = false then
          formimagemexecute(self)
         else
          image1.Hide;
        end;

            if key = 13 then
           dbgrid1.selectedindex := dbgrid1.selectedindex + 1
          else if key = 27 then begin
          fdm.tbpedidofornecedoritem.edit;
         fdm.tbpedidofornecedoritem.post;
        dbgrid1.selectedindex := dbgrid1.selectedindex - 1;
       end;


        if dbgrid1.SelectedIndex in [4,5] then
        if (key =38) or (key = 40) then
         fdm.tbpedidofornecedoritem.cancel;

      
end;

procedure Tfpedidofornecedor.DBGrid1Enter(Sender: TObject);
begin

        btngravarclick(self);

        if (fdm.tbpedidofornecedor['fantasia']= null) then begin

        showmessage(' preencha o nome fantasia');
        editcodigo.SetFocus;
     end else begin

        keypreview := false;
        dbgrid1.SelectedIndex := 0;
        foc := '1';
         end;
 
end;

procedure Tfpedidofornecedor.btnPrimeiroClick(Sender: TObject);
begin
        fdm.tbpedidofornecedor.first;
end;

procedure Tfpedidofornecedor.btnVoltarClick(Sender: TObject);
begin
        fdm.tbpedidofornecedor.prior;
end;

procedure Tfpedidofornecedor.btnAvancarClick(Sender: TObject);
begin
        fdm.tbpedidofornecedor.Next;
end;

procedure Tfpedidofornecedor.btnUltimoClick(Sender: TObject);
begin
        fdm.tbpedidofornecedor.last;
end;

procedure Tfpedidofornecedor.btncancelarClick(Sender: TObject);
begin
        fdm.tbpedidofornecedor.cancel;
          btnGravar.Enabled:=false;
           btncancelar.enabled := false;
end;

procedure Tfpedidofornecedor.Label1Click(Sender: TObject);
begin
        BOK := inputquery('Localizar Pedido','Entre com o número:',ST);
         if BOK then
          if not fdm.tbpedidofornecedor.Locate ('pedido',ST,[]) then
           ShowMessage ('Pedido não localizado!!!');
            ST := '';
end;

procedure Tfpedidofornecedor.Label13Click(Sender: TObject);
begin
        BOK := inputquery('Localizar Código de Cliente','Entre com o código:',ST);
         if BOK then
          if not fdm.tbpedidofornecedor.Locate ('codigo',ST,[]) then
           ShowMessage ('Código não encontrado !!!');
            ST := '';
end;

procedure Tfpedidofornecedor.Label14Click(Sender: TObject);
begin
        BOK := inputquery('Localizar Cliente','Entre com o nome:',ST);
         if BOK then
          if not fdm.tbpedidofornecedor.Locate ('fantasia',Uppercase(ST),[]) then
           ShowMessage ('Nome não localizado!!!');
            ST := '';
end;

procedure Tfpedidofornecedor.TotalizarExecute(Sender: TObject);
var
tot: real;
bookmark : tbookmarkstr;
begin


    if dbgrid1.SelectedIndex in [3,4] then begin

     fdm.tbpedidofornecedoritem.edit;
     // qtd * vrunit
     fdm.tbpedidofornecedoritem['total'] := (fdm.tbpedidofornecedoritem.fieldbyname ('vrunit') as tfloatfield).Value * (fdm.tbpedidofornecedoritem.fieldbyname ('qtd') as tfloatfield).Value;
      fdm.tbpedidofornecedoritem['saldo'] := (fdm.tbpedidofornecedoritem.fieldbyname ('qtd') as tfloatfield).Value - (fdm.tbpedidofornecedoritem.fieldbyname ('qtdentrada') as tfloatfield).Value;

     bookmark := fdm.tbpedidofornecedoritem.Bookmark;

     try
      fdm.tbpedidofornecedoritem.DisableControls;
      tot := 0;

    try
    fdm.tbpedidofornecedoritem.First;

    while not fdm.tbpedidofornecedoritem.Eof do begin

    tot := tot + (fdm.tbpedidofornecedoritem.fieldbyname ('total') as tfloatfield).Value;
    fdm.tbpedidofornecedoritem.next;
    end;
    finally

    fdm.tbpedidofornecedoritem.EnableControls;
    end;
    finally
    fdm.tbpedidofornecedoritem.Bookmark := bookmark;
    end;

    fdm.tbpedidofornecedor.edit;
    fdm.tbpedidofornecedor['total'] := tot;
    fdm.tbpedidofornecedor.post;

    end;

end;

procedure Tfpedidofornecedor.preencherExecute(Sender: TObject);
 var
 prod:string;
begin

       if fdm.tbproduto.Locate('codigo',fdm.tbpedidofornecedoritem['codigo'],[]) then begin

       if fdm.tbproduto['produto'] <> null then prod := fdm.tbproduto['produto'];
        if fdm.tbproduto['descricao'] <> null then prod := prod + ' ' + fdm.tbproduto['descricao'];

        fdm.tbpedidofornecedoritem.edit;

      fdm.tbpedidofornecedoritem['nome'] := prod;

          fdm.tbpedidofornecedoritem['vrunit'] := fdm.tbproduto['vrunit'];
           fdm.tbpedidofornecedoritem['un'] := fdm.tbproduto['un'];
            dbgrid1.selectedindex := 3;
           end else begin
        beep;
         showmessage('Este produto não foi cadastrado!!!');
          end;


end;

procedure Tfpedidofornecedor.DBGrid1ColExit(Sender: TObject);
begin
        if dbgrid1.selectedindex = 0 then
         preencherExecute (self);


        if dbgrid1.selectedindex in [4,3] then
          totalizarExecute (self);

          if dbgrid1.selectedindex = 0 then begin
           fdm.tbpedidofornecedoritem.edit;
            dbgrid1.Columns[1].Field.text := uppercase(dbgrid1.Columns[1].Field.text);
             end;
end;

procedure Tfpedidofornecedor.DBGrid1Exit(Sender: TObject);
begin
        keypreview := true;
        foc := '0';
end;

procedure Tfpedidofornecedor.formprodutoExecute(Sender: TObject);
begin

         Application.CreateForm (Tflistaproduto, flistaproduto);
          flistaproduto.st :='pedidofornecedor';
           flistaproduto.table1.open;
            flistaproduto.showmodal;



end;

procedure Tfpedidofornecedor.formimagemExecute(Sender: TObject);
 var
  pt : String;
begin

    fdm.tbproduto.open;
     fdm.tbproduto.Locate('codigo',fdm.tbpedidofornecedoritem['codigo'],[]);
      if fdm.tbproduto['imagem'] <> null then begin
       pt := fdm.tbproduto['imagem'] ;
       if fileexists (pt) then
        image1.Picture.LoadFromFile (pt);
        end else
      image1.Picture.LoadFromFile(extractfilepath(paramstr(0)) + '\imagem\imagem.wmf');
     image1.show;
end;

procedure Tfpedidofornecedor.Image1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
       if image1.Width < 430 then begin
        if key = 107 then begin
         image1.width := image1.width + 10;
          image1.height := image1.height + 10;
           image1.left := image1.left - 5;
            image1.top := image1.top - 5;
           end;
           end;

        if image1.Width > 120 then begin
        if key = 109 then begin
         image1.width := image1.width - 10;
          image1.height := image1.height - 10;
           image1.left := image1.left + 5;
            image1.top := image1.top + 5;
             end;
              end;

        if key = 27 then begin
         image1.Hide;
          dbgrid1.setfocus;
           end;
end;

procedure Tfpedidofornecedor.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if key=#13 then begin
  Key := #0;
       Perform(WM_nextdlgctl,0,0)
 end else if Key = #27 then
   Perform(WM_nextdlgctl,1,0);
end;

procedure Tfpedidofornecedor.PageControl1Change(Sender: TObject);
begin
        fdm.tbpedidofornecedoritem.filtered := false;

        if pagecontrol1.ActivePageIndex = 0 then begin
         fdm.tbpedidofornecedoritem.MasterFields := 'Pedido';
           keypreview := true;

        end else begin
        btngravarclick(self);
        fdm.tbpedidofornecedoritem.MasterFields := '';
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''P''';
        fdm.tbpedidofornecedoritem.filtered := true;
        totalizar1execute(self);
        keypreview := false;
        tipo := 'P';
        radiobutton1.Checked := true;

 THackDBGrid(DBGrid2).FixedCols := 9;
        end;
end;

procedure Tfpedidofornecedor.RadioButton1Click(Sender: TObject);
begin
        fdm.tbpedidofornecedoritem.Filtered := false;

        if (maskedit1.text <>'  /  /    ') and (maskedit2.text <>'  /  /    ') then
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''P'' and data >=''' + maskedit1.text + ''' and data<=''' +  maskedit2.text + ''''
        else
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''P''';
        fdm.tbpedidofornecedoritem.filtered := true;
        tipo := 'P';
        totalizar1execute(self);
end;

procedure Tfpedidofornecedor.RadioButton2Click(Sender: TObject);
begin
        fdm.tbpedidofornecedoritem.Filtered := false;

        if (maskedit1.text <>'  /  /    ') and (maskedit2.text <>'  /  /    ') then
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''O'' and data >=''' + maskedit1.text + ''' and data<=''' +  maskedit2.text + ''''
        else
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''O''';
        fdm.tbpedidofornecedoritem.filtered := true;
        tipo := 'O';
        totalizar1execute(self);
end;

procedure Tfpedidofornecedor.totalizar1Execute(Sender: TObject);
var
tot : real;
bookmark : tbookmarkstr;
begin

     bookmark := fdm.tbpedidofornecedoritem.Bookmark;

     try
      fdm.tbpedidofornecedoritem.DisableControls;
      tot := 0;

    try
    fdm.tbpedidofornecedoritem.First;

    while not fdm.tbpedidofornecedoritem.Eof do begin

    tot := tot + (fdm.tbpedidofornecedoritem.fieldbyname ('total') as tfloatfield).Value;
    fdm.tbpedidofornecedoritem.next;
    end;
    finally

    fdm.tbpedidofornecedoritem.EnableControls;
    end;
    finally
    fdm.tbpedidofornecedoritem.Bookmark := bookmark;
    end;

        panel16.caption := 'Total: ' + format('%n', [tot]);


end;

procedure Tfpedidofornecedor.MaskEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if key = 13 then
         maskedit2.setfocus;
end;

procedure Tfpedidofornecedor.MaskEdit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

  begin

        if key = 13 then
        SpeedButton6click (self);


end;

procedure Tfpedidofornecedor.SpeedButton5Click(Sender: TObject);
begin
      if fdm.tbpedidofornecedoritem['Fantasia'] <> null Then
       ST:= fdm.tbpedidofornecedoritem['Fantasia'];

        BOK:= InputQuery ('Filtrar', 'Entre com o nome do cliente', St);
      if BOK then begin

        fdm.tbpedidofornecedoritem.Filtered := false;

        if (maskedit1.text <>'  /  /    ') and (maskedit2.text <>'  /  /    ') then
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''' + tipo + ''' and data >=''' + maskedit1.text + ''' and data<=''' +  maskedit2.text + '''  and fantasia = ''' + UpperCase(st) + ''''
        else
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''' + tipo + ''' and fantasia = ''' + UpperCase(st) + '''';
        fdm.tbpedidofornecedoritem.filtered := true;
        totalizar1execute(self);
        end;

end;

procedure Tfpedidofornecedor.SpeedButton11Click(Sender: TObject);
begin
      if fdm.tbpedidofornecedoritem['nome'] <> null Then
       ST:= fdm.tbpedidofornecedoritem['nome'];

        BOK:= InputQuery ('Filtrar', 'Entre com o nome do produto', St);
      if BOK then begin

        fdm.tbpedidofornecedoritem.Filtered := false;

        if (maskedit1.text <>'  /  /    ') and (maskedit2.text <>'  /  /    ') then
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''' + tipo + ''' and data >=''' + maskedit1.text + ''' and data<=''' +  maskedit2.text + '''  and nome = ''' + st + ''''
        else
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''' + tipo + ''' and nome = ''' + st + '''';
        fdm.tbpedidofornecedoritem.filtered := true;
        totalizar1execute(self);
        end;

end;

procedure Tfpedidofornecedor.SpeedButton6Click(Sender: TObject);
begin



        fdm.tbpedidofornecedoritem.Filtered := false;
        if (maskedit1.Text <> '  /  /    ') or (maskedit2.text <>'  /  /    ') then
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''' + tipo + ''' and data >=''' + maskedit1.text + ''' and data<=''' +  maskedit2.text + ''''
        else
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''' + tipo + '''';
        fdm.tbpedidofornecedoritem.filtered := true;

        totalizar1execute(self);
end;

procedure Tfpedidofornecedor.DBRadioGroup1Exit(Sender: TObject);
begin


      fdm.tbpedidofornecedoritem.DisableControls;

    fdm.tbpedidofornecedoritem.First;

    while not fdm.tbpedidofornecedoritem.Eof do begin
    fdm.tbpedidofornecedoritem.edit;
    fdm.tbpedidofornecedoritem['operacao'] := fdm.tbpedidofornecedor['operacao'];
    fdm.tbpedidofornecedoritem.post;
    fdm.tbpedidofornecedoritem.next;
    end;

    fdm.tbpedidofornecedoritem.EnableControls;

end;

procedure Tfpedidofornecedor.SpeedButton8Click(Sender: TObject);
var
pd:string;
bookmark : tbookmarkstr;

begin

         bookmark := fdm.tbpedidofornecedor.bookmark;

pd := (fdm.tbpedidofornecedor['pedido']);

       fdm.tbpedidofornecedor.Filtered := false;
        fdm.tbpedidofornecedor.Filter := 'pedido='''+ pd +'''';
         fdm.tbpedidofornecedor.filtered := true;


        Application.CreateForm(tFrPedidoFornecedor, FrPedidoFornecedor);

  fmenu.logotipoExecute(self);
  if fileexists (extractfilepath(paramstr(0)) + '\imagem\logo.bmp') then begin
  FrPedidoFornecedor.image1.Picture.assign(clipboard);
  clipboard.clear;
  end;

  if fileexists (extractfilepath(paramstr(0)) + '\imagem\dado.txt') then
   FrPedidoFornecedor.memo1.lines.loadfromfile(extractfilepath(paramstr(0)) + '\imagem\dado.txt');

         if fdm.tbpedidofornecedor['Operacao'] = 'P' then begin
          FrPedidoFornecedor.lped.caption := 'X';
           FrPedidoFornecedor.lcotacao.caption := '';
            end else  begin
          FrPedidoFornecedor.lped.caption := '';
           FrPedidoFornecedor.lcotacao.caption := 'X';
            end;

            FrPedidoFornecedor.quickpedido.previewmodal;
             FrPedidoFornecedor.Release;
              fdm.tbpedidofornecedor.Filtered := false;

              fdm.tbpedidofornecedor.Bookmark := bookmark;
end;

procedure Tfpedidofornecedor.avancarExecute(Sender: TObject);
begin
        fdm.tbpedidofornecedor.next;
end;

procedure Tfpedidofornecedor.voltarExecute(Sender: TObject);
begin
        fdm.tbpedidofornecedor.prior;
end;

procedure Tfpedidofornecedor.EditCodPedKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if key = VK_F3 then
         Label1Click(Self);
end;

procedure Tfpedidofornecedor.DBEdit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if key = VK_F3 then
         Label14Click(Self);
end;

procedure Tfpedidofornecedor.focoExecute(Sender: TObject);
begin

        if image1.Visible= true then begin
         if dbgrid1.Focused = true then
          image1.SetFocus
         else
         dbgrid1.SetFocus;
        end else begin

        it := it + 1;

        if it = 3 then it:=1;

        case it of

        1: editcodped.setfocus;
        2: dbgrid1.setfocus;
        end;
        end;

end;

procedure Tfpedidofornecedor.novoExecute(Sender: TObject);
begin

        if foc = '1' then begin
         fdm.tbpedidofornecedoritem.Insert;
          dbgrid1.SelectedIndex := 0;

       end else begin

       btnGravar.Enabled:=true;
       btncancelar.Enabled := true;
       fdm.tbpedidofornecedor.Refresh;

        with fdm.query1 do begin
         close;
          sql.clear;
           sql.add('select max(pedido) as codigo from tbpedidofornecedor');
            open;
         end;

        fdm.tbpedidofornecedor.insert;
        if fdm.query1['codigo'] <> null then
         fdm.tbpedidofornecedor['pedido'] := fdm.query1['codigo'] + 1
        else
        fdm.tbpedidofornecedor['pedido']:='1';
        fdm.tbpedidofornecedor['operacao']:='P';
        fdm.tbpedidofornecedor['data']:=DateTostr(now);

        st := '';

          fdm.query1.close;
           editcodigo.setfocus;
       end;    
end;

 

procedure Tfpedidofornecedor.estoqueExecute(Sender: TObject);
var
tot, tot1: real;
begin
       if dbgrid1.Focused = true then begin

        with fdm.Query1 do begin
         close;
          sql.clear;
           sql.add ('select codigo, nome, sum(qtd)as entrada from tbentradaitem');
            sql.add (' where codigo = "'+ dbgrid1.columns[0].field.text + '" group by codigo, nome');
            open;
        end;

        with fdm.Query2 do begin
         close;
          sql.clear;
           sql.add ('select codigo, nome, sum(qtd) as saida from tbpedidoitem');
            sql.add (' where codigo = "'+ dbgrid1.columns[0].field.text + '" group by codigo, nome');
            open;
        end;

        fdm.tbproduto.Open;


        if fdm.tbproduto.Locate('codigo',fdm.query1['codigo'],[]) then
        tot1:= fdm.tbproduto.FieldByName('minimo').asfloat
        else
        tot1 := 0;

        FDM.tbproduto.close;


        tot := (fdm.query1.fields[2].asfloat - fdm.query2.fields[2].asfloat);

        if fdm.query1['nome'] <> null then
            showmessage('ESTOQUE = ' + floattostr(tot) + ' ' + fdm.query1['nome']+#13+
            'ESTOQUE MÍNIMO = '+ floattostr(tot1))
        else
        showmessage('Estoque Vazio!!!');
end;

        FDM.Query1.close;
        fdm.Query2.Close;
end;

procedure Tfpedidofornecedor.formatarExecute(Sender: TObject);
begin
 (fdm.tbpedidofornecedor.fieldbyname ('data') as tdatetimefield).editmask := '99/99/9999';
 (fdm.tbpedidofornecedor.fieldbyname ('pedido') as tfloatfield).displayformat := '000000';
 (fdm.tbpedidofornecedor.fieldbyname ('total') as tfloatfield).displayformat := '###,##0.00';
 (fdm.tbpedidofornecedor.fieldbyname ('uf') as tstringfield).editmask := 'aa';
 (fdm.tbpedidofornecedor.fieldbyname ('cep') as tstringfield).editmask := '99.999-999';
 (fdm.tbpedidofornecedor.fieldbyname ('fone') as tstringfield).editmask := '(99)9999-9999';
 (fdm.tbpedidofornecedor.fieldbyname ('fax') as tstringfield).editmask := '(99)9999-9999';
 (fdm.tbpedidofornecedor.fieldbyname ('codigo') as tfloatfield).displayformat := '000000';

 (fdm.tbpedidofornecedoritem.fieldbyname ('vrunit') as tfloatfield).displayformat := '###,##0.00';
 (fdm.tbpedidofornecedoritem.fieldbyname ('saldo') as tfloatfield).displayformat := '00';
 (fdm.tbpedidofornecedoritem.fieldbyname ('total') as tfloatfield).displayformat := '###,##0.00';
 (fdm.tbpedidofornecedoritem.fieldbyname ('qtd') as tfloatfield).displayformat := '00';
 (fdm.tbpedidofornecedoritem.fieldbyname ('qtdentrada') as tfloatfield).displayformat := '00';
 (fdm.tbpedidofornecedoritem.fieldbyname ('codigo') as tfloatfield).displayformat := '000000';
end;

procedure Tfpedidofornecedor.SpeedButton12Click(Sender: TObject);
begin
        Application.CreateForm(tFrPedidoFornecedor, FrPedidoFornecedor);

  fmenu.logotipoExecute(self);
  if fileexists (extractfilepath(paramstr(0)) + '\imagem\logo.bmp') then begin
  FrPedidoFornecedor.image2.Picture.assign(clipboard);
  clipboard.clear;
  end;
  if fileexists (extractfilepath(paramstr(0)) + '\imagem\dado.txt') then
   FrPedidoFornecedor.memo2.lines.loadfromfile(extractfilepath(paramstr(0)) + '\imagem\dado.txt');

         FrPedidoFornecedor.ltotal.caption := panel16.Caption;
          FrPedidoFornecedor.quicklista.previewmodal;
           FrPedidoFornecedor.Release;

end;

procedure Tfpedidofornecedor.SpeedButton1Click(Sender: TObject);
begin
        maskedit1.Clear;
        maskedit2.Clear;

        fdm.tbpedidofornecedoritem.Filtered := false;
        fdm.tbpedidofornecedoritem.filter := 'operacao = ''' + tipo + '''';
        fdm.tbpedidofornecedoritem.filtered := true;

        totalizar1execute(self);


end;

procedure Tfpedidofornecedor.btndeleteClick(Sender: TObject);
begin
    if Application.MessageBox('Deseja apagar este pedido?','Deletar',4 + MB_ICONQUESTION) = mrYes then begin

        fdm.tbpedidofornecedoritem.Last;

        while not fdm.tbpedidofornecedoritem.Bof do begin
         fdm.tbpedidofornecedoritem.delete;
          fdm.tbpedidofornecedoritem.prior;
           end;

           if fdm.tbpedidofornecedoritem['codigo']<> null then fdm.tbpedidofornecedoritem.Delete;
         fdm.tbpedidofornecedor.delete;

         end;
end;

procedure Tfpedidofornecedor.FormShow(Sender: TObject);
begin
        fdm.tbpedidofornecedor.Last;
end;

procedure Tfpedidofornecedor.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
        IF btngravar.Enabled = true then begin
         case application.MessageBox('Deseja salvar as alterações?', 'Sair do Pedido ao Fornecedor',mb_yesnocancel + MB_ICONQUESTION )of

         idyes : begin
         fdm.tbpedidofornecedor.edit;
          fdm.tbpedidofornecedor.post;
           fdm.tbpedidofornecedoritem.edit;
            fdm.tbpedidofornecedoritem.post;
             canclose:=true;
              end;

         idno : begin
          fdm.tbpedidofornecedor.cancel;
           fdm.tbpedidofornecedoritem.cancel;
            canclose:=true;
             end;

         idcancel :
           canclose:=false;
end;
end;

end;

procedure Tfpedidofornecedor.DBEdit2Exit(Sender: TObject);
begin

        fdm.tbpedidofornecedoritem.DisableControls;
        fdm.tbpedidofornecedoritem.First;

        while not fdm.tbpedidofornecedoritem.Eof do begin
        fdm.tbpedidofornecedoritem.Edit;
        fdm.tbpedidofornecedoritem['operacao'] := fdm.tbpedidofornecedor['operacao'];
        fdm.tbpedidofornecedoritem['fantasia'] := fdm.tbpedidofornecedor['fantasia'];
        fdm.tbpedidofornecedoritem.Next;
        end;

        fdm.tbpedidofornecedoritem.EnableControls;
end;

procedure Tfpedidofornecedor.FormCreate(Sender: TObject);
begin
         Application.OnHint := AppHint;
end;

procedure Tfpedidofornecedor.DBGrid1EditButtonClick(Sender: TObject);
begin
        if dbgrid1.SelectedIndex in [6,7] then begin
         application.CreateForm(tfcontrolefornecedor, fcontrolefornecedor);
          fcontrolefornecedor.showmodal;
           fcontrolefornecedor.release;
            end;
end;

procedure Tfpedidofornecedor.DBGrid1KeyPress(Sender: TObject;
  var Key: Char);
begin
    if dbgrid1.SelectedIndex in [6,7] then
     if  (key in ['0'..'9']) then
      Showmessage('Para dar baixa no pedido, clique no botão da grade');
end;

procedure Tfpedidofornecedor.ajudaExecute(Sender: TObject);
var
  Comp: Trichedit; // * variável Comp da classe TMemo
  texto : string;
begin
  Comp := Trichedit.Create (Self);  // * cria o componente Memo
  Comp.Parent := Self;    // * exibe o componente criado

  if fileexists (extractfilepath(paramstr(0)) + '\ajuda\ajudapedidofornecedor.txt') then
   comp.lines.loadfromfile (extractfilepath(paramstr(0)) + '\ajuda\ajudapedidofornecedor.txt');

  texto := comp.Text;
  comp.Destroy;

  Showmessage (texto);


end;

end.



