unit pedidos;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls,
  Data.DB, ZAbstractRODataset, ZAbstractDataset, ZDataset, Vcl.StdCtrls;

type
  Tfpedidos = class(TForm)
    dsqpedidos: TDataSource;
    qpedidos: TZQuery;
    qpedidoside: TWideStringField;
    qpedidosid: TIntegerField;
    qpedidosanyo: TIntegerField;
    qpedidosfechapedido: TDateField;
    qpedidosfechaentrega: TDateField;
    qpedidosnomcliente: TWideStringField;
    qpedidosdirenvio: TWideStringField;
    qpedidoscodpostenvio: TWideStringField;
    qpedidospoblacionenvio: TWideStringField;
    qpedidosprovinciaenvio: TWideStringField;
    qpedidosobservaciones: TWideStringField;
    dsqlineaspedidos: TDataSource;
    qlineaspedidos: TZQuery;
    qlineaspedidoside: TWideStringField;
    qlineaspedidosidp: TIntegerField;
    qlineaspedidosanyo: TIntegerField;
    qlineaspedidosida: TWideStringField;
    qlineaspedidosdesarticulo: TWideStringField;
    qlineaspedidoscantidad: TFloatField;
    qlineaspedidosobservaciones: TWideStringField;
    Panel1: TPanel;
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    Panel3: TPanel;
    Panel4: TPanel;
    qlineaspedidosidser: TWideStringField;
    qlineaspedidosid: TIntegerField;
    qlineaspedidosnumlinea: TIntegerField;
    DBGrid5: TDBGrid;
    qestadopedidos: TZQuery;
    qestadopedidosid: TIntegerField;
    qestadopedidoside: TWideStringField;
    qestadopedidosidp: TIntegerField;
    qestadopedidosanyo: TIntegerField;
    qestadopedidosida: TWideStringField;
    qestadopedidosidproceso: TIntegerField;
    qestadopedidosfecha: TDateField;
    qestadopedidoscant_total: TFloatField;
    qestadopedidoscant_recibida: TFloatField;
    qestadopedidoscant_finalizada: TFloatField;
    qestadopedidosdescripcion: TWideStringField;
    dsqestadopedidos: TDataSource;
    qclientes: TZQuery;
    dsqclientes: TDataSource;
    qclientesnomcliente: TWideStringField;
    qclienteside: TWideStringField;
    Panel5: TPanel;
    DBGrid4: TDBGrid;
    Panel6: TPanel;
    DBGrid3: TDBGrid;
    Label1: TLabel;
    lbuscar: TEdit;
    procedure FormShow(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure DBGrid5TitleClick(Column: TColumn);
    procedure DBGrid4TitleClick(Column: TColumn);
    procedure DBGrid3TitleClick(Column: TColumn);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure lbuscarChange(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fpedidos: Tfpedidos;

implementation

{$R *.dfm}

procedure Tfpedidos.DBGrid1TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qclientes.SortType;
  qclientes.SortedFields:=Column.FieldName;
  If st = stAscending then qclientes.SortType:=stDescending else qclientes.SortType:=stAscending;
  dsqclientes.DataSet.First;
end;

procedure Tfpedidos.DBGrid3TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qestadopedidos.SortType;
  qestadopedidos.SortedFields:=Column.FieldName;
  If st = stAscending then qestadopedidos.SortType:=stDescending else qestadopedidos.SortType:=stAscending;
  dsqestadopedidos.DataSet.First;
end;

procedure Tfpedidos.DBGrid4TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qlineaspedidos.SortType;
  qlineaspedidos.SortedFields:=Column.FieldName;
  If st = stAscending then qlineaspedidos.SortType:=stDescending else qlineaspedidos.SortType:=stAscending;
  dsqlineaspedidos.DataSet.First;

end;

procedure Tfpedidos.DBGrid5TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qpedidos.SortType;
  qpedidos.SortedFields:=Column.FieldName;
  If st = stAscending then qpedidos.SortType:=stDescending else qpedidos.SortType:=stAscending;
  dsqpedidos.DataSet.First;
end;

procedure Tfpedidos.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then  Key :=9;
    end;
end;

procedure Tfpedidos.FormKeyPress(Sender: TObject; var Key: Char);
var formatos:tformatsettings;
punto:string;
begin
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatos);
    punto:=formatos.DecimalSeparator;
    if punto=',' then
    begin
        key:=upcase(key);
        if (key='.') and (activecontrol is tdbgrid) then
        begin
            key:=',';
        end;
    end;
    if (activecontrol is tdbgrid) then
    begin
        if Key = #13 then Key :=#9;
    end;

    if (key=#13) then
    begin
        Perform(WM_NextDLGCtl,0,0);
        key:=#0;
    end;
end;

procedure Tfpedidos.FormShow(Sender: TObject);
var vbuscar:string;
begin
    qclientes.Close;
    qclientes.Prepare;
    if lbuscar.Text='' then vbuscar:='%' else vbuscar:='%'+lbuscar.Text+'%';
    qclientes.ParamByName('TEXTO').AsString:=vbuscar;
    qclientes.Open;
    qpedidos.Open;
    qlineaspedidos.Open;
    qestadopedidos.Open;
end;

procedure Tfpedidos.lbuscarChange(Sender: TObject);
var vbuscar:string;
begin
    qclientes.Close;
    qclientes.Prepare;
    if lbuscar.Text='' then vbuscar:='%' else vbuscar:='%'+lbuscar.Text+'%';
    qclientes.ParamByName('TEXTO').AsString:=vbuscar;
    qclientes.Open;
end;

end.
