unit fproveedores;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, ZDataset, ZAbstractRODataset,
  ZAbstractDataset, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls;

type
  Tproveedores = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    Label5: TLabel;
    lbuscar: TEdit;
    Button3: TButton;
    qproveedores: TZQuery;
    qentradas: TZReadOnlyQuery;
    dsqproveedores: TDataSource;
    dsqentradas: TDataSource;
    qidproveedor: TZReadOnlyQuery;
    qidproveedorid: TLargeintField;
    qproveedoresid: TIntegerField;
    qproveedoresnif: TWideStringField;
    qproveedoresnombre: TWideStringField;
    qproveedoresnombre_corto: TWideStringField;
    qproveedoresdireccion: TWideStringField;
    qproveedorespoblacion: TWideStringField;
    qproveedorescodpost: TWideStringField;
    qproveedoresprovincia: TWideStringField;
    qproveedorestelefono: TWideStringField;
    qproveedorestelefono2: TWideStringField;
    qproveedoresmovil: TWideStringField;
    qproveedoresemail: TWideStringField;
    qproveedorespersonacontacto: TWideStringField;
    qproveedorescodigomercado: TIntegerField;
    qproveedoresactivo: TIntegerField;
    qproveedoresobservaciones: TWideStringField;
    qproveedoresccontable: TIntegerField;
    qproveedoresdescuento: TFloatField;
    procedure lbuscarChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure dsqproveedoresDataChange(Sender: TObject; Field: TField);
    procedure qproveedoresBeforePost(DataSet: TDataSet);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  proveedores: Tproveedores;

implementation

{$R *.dfm}

uses datos;

procedure Tproveedores.Button1Click(Sender: TObject);
begin
  qidproveedor.Close;
  qidproveedor.Open;
  qproveedores.Append;
  qproveedoresid.AsInteger:=qidproveedorid.AsInteger;
end;

procedure Tproveedores.dsqproveedoresDataChange(Sender: TObject; Field: TField);
begin
  qentradas.Close;
  qentradas.Prepare;
  qentradas.ParamByName('IDPROVEEDOR').AsInteger:=qproveedoresid.asinteger;
  qentradas.Open;
end;

procedure Tproveedores.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then  Key :=9;
    end;
end;

procedure Tproveedores.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 Tproveedores.FormShow(Sender: TObject);
begin
  qproveedores.Close;
  qproveedores.Prepare;
  qproveedores.ParamByName('NOMBRE').AsString:='%';
  qproveedores.Open;
end;

procedure Tproveedores.lbuscarChange(Sender: TObject);
begin
   qproveedores.Prepare;
   qproveedores.ParamByName('NOMBRE').AsString:=lbuscar.Text;
   qproveedores.Refresh;
end;

procedure Tproveedores.qproveedoresBeforePost(DataSet: TDataSet);
var x:integer;
begin
    if qproveedores.state=dsinsert then x:=dm.PedirConfirmacion('¿Confirma que desea dar de alta este Proveedor?',true,true,true)
                                     else x:=dm.PedirConfirmacion('¿Confirma que desea modificar este Proveedor?',true,true,true);
    case x of
        mrno: begin
                 qproveedores.cancel;
                 abort;
              end;
        mrcancel:BEGIN
                 abort;
                 END;

    end;

end;

end.
