unit fclientes;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,principal,datosclientes, Vcl.StdCtrls, Vcl.ComCtrls,
  Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.Mask, Vcl.DBCtrls,Data.DB,
  ZAbstractRODataset, ZAbstractDataset, ZDataset, Vcl.CheckLst;

type
  Tclientes = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel5: TPanel;
    DBGrid1: TDBGrid;
    todosclientes: TCheckBox;
    tbuscar: TEdit;
    Label1: TLabel;
    dsqformaspago: TDataSource;
    qformaspago: TZQuery;
    qformaspagoide: TIntegerField;
    qformaspagoid: TIntegerField;
    qformaspagocodigo: TWideStringField;
    qformaspagodescripcion: TWideStringField;
    qformaspagodias: TIntegerField;
    qaux: TZReadOnlyQuery;
    SaveDialog1: TSaveDialog;
    dsqfacturasclientes: TDataSource;
    qfacturasclientes: TZReadOnlyQuery;
    qfacturasclientesserie: TWideStringField;
    qfacturasclientesid: TIntegerField;
    qfacturasclientesidempresa: TIntegerField;
    qfacturasclientesidcliente: TIntegerField;
    qfacturasclientesiddestino: TWideStringField;
    qfacturasclientesnif: TWideStringField;
    qfacturasclientesdireccion: TWideStringField;
    qfacturasclientespoblacion: TWideStringField;
    qfacturasclientesprovincia: TWideStringField;
    qfacturasclientescodpost: TWideStringField;
    qfacturasclientesfecha: TDateField;
    qfacturasclientesreferencia: TWideStringField;
    qfacturasclientestelefono: TWideStringField;
    qfacturasclientesnomcliente: TWideStringField;
    qfacturasclientespaiscliente: TWideStringField;
    qfacturasclientesnomdestino: TWideStringField;
    qfacturasclientesdirecciondestino: TWideStringField;
    qfacturasclientespoblaciondestino: TWideStringField;
    qfacturasclientescodpostdestino: TWideStringField;
    qfacturasclientesprovinciadestino: TWideStringField;
    qfacturasclientespaisdestino: TWideStringField;
    qfacturasclientesneto: TFloatField;
    qfacturasclientestotal: TFloatField;
    qfacturasclientesdocumento: TWideStringField;
    qfacturasclientesdescuento_lin: TFloatField;
    qfacturasclientesdescuento_com: TFloatField;
    qfacturasclientesdescuento_pp: TFloatField;
    qfacturasclientesdescuento_total: TFloatField;
    qfacturasclientestotaliva: TFloatField;
    qfacturasclientesobservaciones: TWideStringField;
    qfacturasclientesbultos: TFloatField;
    qfacturasclienteskilos: TFloatField;
    qfacturasclientesidformapago: TIntegerField;
    qfacturasclientesserie_1: TWideStringField;
    qfacturasclientesidfactura: TIntegerField;
    qfacturasclienteside: TIntegerField;
    qfacturasclientesbase: TFloatField;
    qfacturasclientestipo: TFloatField;
    qfacturasclientesiva: TFloatField;
    qfacturasclientescobrado: TIntegerField;
    qcuentas: TZReadOnlyQuery;
    qcuentaside: TIntegerField;
    qcuentasid: TIntegerField;
    qcuentasbanco: TWideStringField;
    qcuentascciban: TWideStringField;
    qcuentasccentidad: TWideStringField;
    qcuentasccoficina: TWideStringField;
    qcuentasccdc: TWideStringField;
    qcuentascccc: TWideStringField;
    dsqcuentas: TDataSource;
    dsqtiposiva: TDataSource;
    qtipos_iva: TZReadOnlyQuery;
    qtipos_ivaid: TIntegerField;
    qtipos_ivadescripcion: TWideStringField;
    qtipos_ivatipo: TIntegerField;
    qtipos_ivatipo_req: TFloatField;
    qclientesexcel: TZReadOnlyQuery;
    qclientesexcelid: TIntegerField;
    qclientesexcelIdempresa: TIntegerField;
    qclientesexcelnif: TWideStringField;
    qclientesexcelnombre: TWideStringField;
    qclientesexcelnombre_corto: TWideStringField;
    qclientesexceldireccion: TWideStringField;
    qclientesexcelpoblacion: TWideStringField;
    qclientesexcelcodpost: TWideStringField;
    qclientesexcelprovincia: TWideStringField;
    qclientesexceltelefono: TWideStringField;
    qclientesexceltelefono2: TWideStringField;
    qclientesexcelmovil: TWideStringField;
    qclientesexcelemail: TWideStringField;
    qclientesexcelpersonacontacto: TWideStringField;
    qclientesexcelcodigomercado: TIntegerField;
    qclientesexcelactivo: TIntegerField;
    qclientesexcelobservaciones: TWideStringField;
    qclientesexcelccontable: TIntegerField;
    qclientesexceldescuento: TFloatField;
    qclientesexcelpais: TWideStringField;
    qclientesexcelidformapago: TIntegerField;
    qclientesexcelexento_iva: TIntegerField;
    qclientesexcelcomision: TFloatField;
    qclientesexcelidcp: TIntegerField;
    qclientesexcelcodigo: TWideStringField;
    qclientesexcelidcliente: TIntegerField;
    qclientesexcelidempresa_1: TIntegerField;
    qclientesexceldescripcion: TWideStringField;
    qclientesexcelseleccionado: TIntegerField;
    qclientesexcelactivo_1: TIntegerField;
    qclientesexceldireccion_1: TWideStringField;
    qclientesexcelpoblacion_1: TWideStringField;
    qclientesexcelcodpost_1: TWideStringField;
    qclientesexcelprovincia_1: TWideStringField;
    qclientesexcelpais_1: TWideStringField;
    dsqclientesexcel: TDataSource;
    Panel3: TPanel;
    DatosClientes: TPageControl;
    TDatosClientes: TTabSheet;
    Panel14: TPanel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label25: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label38: TLabel;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText16: TDBText;
    DBText17: TDBText;
    DBText18: TDBText;
    Label33: TLabel;
    Label39: TLabel;
    DBCheckBox2: TDBCheckBox;
    DBEdit1: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBEdit13: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBMemo1: TDBMemo;
    DBEdit21: TDBEdit;
    DBEdit22: TDBEdit;
    DBEdit23: TDBEdit;
    comboformapago: TDBLookupComboBox;
    DBEdit25: TDBEdit;
    combocuenta: TDBLookupComboBox;
    DBLookupComboBox1: TDBLookupComboBox;
    gridclientesexcel: TDBGrid;
    listadatos: TCheckListBox;
    DBEdit26: TDBEdit;
    Panel6: TPanel;
    Label37: TLabel;
    BtCcancelar: TButton;
    btCmodificar: TButton;
    BtCborrar: TButton;
    BtCNuevo: TButton;
    BtCguardar: TButton;
    Button2: TButton;
    TDatosDestinos: TTabSheet;
    Panel12: TPanel;
    Label36: TLabel;
    btDcancelar: TButton;
    btDmodificar: TButton;
    btDborrar: TButton;
    btDnuevo: TButton;
    btDguardar: TButton;
    Panel15: TPanel;
    Panel18: TPanel;
    DBGrid4: TDBGrid;
    Panel20: TPanel;
    todosdestinos: TCheckBox;
    Panel19: TPanel;
    Label16: TLabel;
    Label17: TLabel;
    Label19: TLabel;
    Label21: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label26: TLabel;
    DBCheckBox4: TDBCheckBox;
    DBEdit14: TDBEdit;
    DBEdit15: TDBEdit;
    DBEdit16: TDBEdit;
    DBEdit17: TDBEdit;
    DBEdit18: TDBEdit;
    DBEdit20: TDBEdit;
    DBEdit24: TDBEdit;
    TDatosArticulos: TTabSheet;
    Panel7: TPanel;
    Panel17: TPanel;
    Panel22: TPanel;
    Panel23: TPanel;
    DBGrid2: TDBGrid;
    Panel24: TPanel;
    Label18: TLabel;
    btADcancelar: TButton;
    btADmodificar: TButton;
    btADborrar: TButton;
    btADnuevo: TButton;
    btADguardar: TButton;
    TabSheet1: TTabSheet;
    Detallesclientes: TPageControl;
    TabPedidos: TTabSheet;
    Panel8: TPanel;
    Label34: TLabel;
    DBGrid5: TDBGrid;
    TAbalbaranes: TTabSheet;
    Panel10: TPanel;
    Label32: TLabel;
    Button8: TButton;
    DBGrid7: TDBGrid;
    gridalbaranesaexcel: TDBGrid;
    TabFacturas: TTabSheet;
    Panel11: TPanel;
    Label31: TLabel;
    Button1: TButton;
    DBGrid8: TDBGrid;
    gridfacturasaexcel: TDBGrid;
    Panel4: TPanel;
    Label35: TLabel;
    btAcancelar: TButton;
    btAguardar: TButton;
    btAmodificar: TButton;
    btAborrar: TButton;
    btAnuevo: TButton;
    Panel9: TPanel;
    Label3: TLabel;
    btClcancelar: TButton;
    btClguardar: TButton;
    btClmodificar: TButton;
    btClborrar: TButton;
    btClnuevo: TButton;
    Panel16: TPanel;
    DBGrid9: TDBGrid;
    Panel21: TPanel;
    Label20: TLabel;
    btCAcancelar: TButton;
    btCAmodificar: TButton;
    btCAborrar: TButton;
    btCAnuevo: TButton;
    btCAguardar: TButton;
    Panel25: TPanel;
    DBGrid6: TDBGrid;
    Panel26: TPanel;
    DBGrid3: TDBGrid;
    DBCheckBox1: TDBCheckBox;
    Label24: TLabel;
    DBLookupComboBox2: TDBLookupComboBox;
    Label40: TLabel;
    DBEdit2: TDBEdit;
    Label41: TLabel;
    DBEdit19: TDBEdit;
    Label42: TLabel;
    DBEdit27: TDBEdit;
    Label43: TLabel;
    DBEdit28: TDBEdit;
    Label44: TLabel;
    DBEdit29: TDBEdit;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure BtCguardarClick(Sender: TObject);
    procedure BtCcancelarClick(Sender: TObject);
    procedure BtCNuevoClick(Sender: TObject);
    procedure btCmodificarClick(Sender: TObject);
    procedure todosclientesClick(Sender: TObject);
    procedure BtCborrarClick(Sender: TObject);
    procedure btDnuevoClick(Sender: TObject);
    procedure btDborrarClick(Sender: TObject);
    procedure btDmodificarClick(Sender: TObject);
    procedure btDguardarClick(Sender: TObject);
    procedure btDcancelarClick(Sender: TObject);
    procedure todosdestinosClick(Sender: TObject);
    procedure todosarticulosClick(Sender: TObject);
    procedure btAnuevoClick(Sender: TObject);
    procedure btAborrarClick(Sender: TObject);
    procedure btAmodificarClick(Sender: TObject);
    procedure btAguardarClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure DBEdit19Exit(Sender: TObject);
    procedure btADcancelarClick(Sender: TObject);
    procedure btAcancelarClick(Sender: TObject);
    procedure tbuscarChange(Sender: TObject);
    procedure btADmodificarClick(Sender: TObject);
    procedure btADguardarClick(Sender: TObject);
    procedure btADborrarClick(Sender: TObject);
    procedure btADnuevoClick(Sender: TObject);
    procedure DBGrid5DblClick(Sender: TObject);
    procedure DBGrid5TitleClick(Column: TColumn);
    procedure DBGrid7TitleClick(Column: TColumn);
    procedure DBGrid7DblClick(Sender: TObject);
    procedure DBGrid8DblClick(Sender: TObject);
    procedure DBGrid8TitleClick(Column: TColumn);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure Button1Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DBEdit26Enter(Sender: TObject);
    procedure listadatosClick(Sender: TObject);
    procedure listadatosExit(Sender: TObject);
    procedure btClnuevoClick(Sender: TObject);
    procedure btClborrarClick(Sender: TObject);
    procedure btClmodificarClick(Sender: TObject);
    procedure btClguardarClick(Sender: TObject);
    procedure btClcancelarClick(Sender: TObject);
    procedure btCAnuevoClick(Sender: TObject);
    procedure btCAborrarClick(Sender: TObject);
    procedure btCAmodificarClick(Sender: TObject);
    procedure btCAcancelarClick(Sender: TObject);
    procedure btCAguardarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  clientes: Tclientes;

implementation

{$R *.dfm}

uses fpedidos, falbaranes, ffacturas, datos;


procedure Tclientes.btAborrarClick(Sender: TObject);
begin
    dmclientes.qarticulos.delete;
end;

procedure Tclientes.btAcancelarClick(Sender: TObject);
begin
   dmclientes.qarticulos.Cancel;
   Panel25.Enabled:=false;

end;

procedure Tclientes.btADborrarClick(Sender: TObject);
begin
    dmclientes.dtarticulosformato.delete;
end;

procedure Tclientes.btADcancelarClick(Sender: TObject);
begin
   dmclientes.dtarticulosformato.Cancel;
   dmclientes.dtarticulosformato.MasterSource:=dmclientes.dsqclientes;
end;

procedure Tclientes.btADguardarClick(Sender: TObject);
var id,ide,idcliente:string;
begin
    id:=dmclientes.dtarticulosformatoid.AsString;
    ide:=dmclientes.dtarticulosformatoidempresa.AsString;
    idcliente:=dmclientes.dtarticulosformatoidcliente.AsString;
    dmclientes.dtarticulosformato.Post;
    dmclientes.dtarticulosformato.MasterSource:=dmclientes.dsqclientes;
    dmclientes.dtarticulosformato.Refresh;
    dmclientes.dtarticulosformato.Locate('idempresa,id,idcliente',vararrayof([ide,id,idcliente]),[locaseinsensitive]);

end;

procedure Tclientes.btADmodificarClick(Sender: TObject);
begin
//   dmclientes.dtarticulosformato.MasterSource:=nil;
   dmclientes.dtarticulosformato.edit;
   dbgrid2.SetFocus;
end;

procedure Tclientes.btADnuevoClick(Sender: TObject);
begin
   qaux.SQL.Clear;
   qaux.SQL.Add('select count(*)+1 from clientes_formatoarticulos');
   qaux.Open;
   dmclientes.dtarticulosformato.append;
   dmclientes.dtarticulosformatoid.value:=qaux.Fields[0].AsString;
   dmclientes.dtarticulosformatoidempresa.value:=dmclientes.qclientesIdempresa.AsInteger;
   dmclientes.dtarticulosformatoidcliente.value:=dmclientes.qclientesId.AsInteger;
   dbgrid2.SetFocus;
end;

procedure Tclientes.btAguardarClick(Sender: TObject);
var id,ide,idcliente:string;
begin
    dmclientes.qarticulos.Post;
    id:=dmclientes.qarticulosid.AsString;
    ide:=dmclientes.qarticulosidempresa.AsString;
    idcliente:=dmclientes.qarticulosidcliente.AsString;
    dmclientes.qarticulos.MasterSource:=dmclientes.dsqclientes;
    dmclientes.qarticulos.refresh;
    dmclientes.qarticulos.Locate('idempresa,id,idcliente',vararrayof([ide,id,idcliente]),[locaseinsensitive]);
    Panel25.Enabled:=false;


end;

procedure Tclientes.btAmodificarClick(Sender: TObject);
begin
//   dmclientes.dtarticulos.MasterSource:=nil;
   clientes.Panel25.Enabled:=false;
   dmclientes.qarticulos.edit;
end;

procedure Tclientes.btAnuevoClick(Sender: TObject);
begin
//   dmclientes.qarticulosx.MasterSource:=nil;
   clientes.Panel25.Enabled:=true;
   qaux.SQL.Clear;
   qaux.SQL.Add('select count(*)+1 from clientes_articulos');
   qaux.Open;
   dmclientes.qarticulos.append;
   dmclientes.qarticulosid.value:=qaux.Fields[0].AsString;
   dmclientes.qarticulosidempresa.value:=dmclientes.qclientesIdempresa.AsInteger;
   dmclientes.qarticulosidcliente.value:=dmclientes.qclientesId.AsInteger;
   dbgrid6.SetFocus;
end;

procedure Tclientes.btCAborrarClick(Sender: TObject);
begin
 dmclientes.qclientesacabados.delete;
end;

procedure Tclientes.btCAcancelarClick(Sender: TObject);
begin
   dmclientes.qclientesacabados.Cancel;
end;

procedure Tclientes.btCAguardarClick(Sender: TObject);
var id,ide,idcliente:string;
begin
    id:=dmclientes.qclientesacabadosid.AsString;
    ide:=dmclientes.qclientesacabadosidempresa.AsString;
    idcliente:=dmclientes.qclientesacabadosidcliente.AsString;
    dmclientes.qclientesacabados.Post;
    dmclientes.qclientesacabados.MasterSource:=dmclientes.dsqclientes;
    dmclientes.qclientesacabados.Refresh;
    dmclientes.qclientesacabados.Locate('idempresa,id,idcliente',vararrayof([ide,id,idcliente]),[locaseinsensitive]);
end;

procedure Tclientes.btCAmodificarClick(Sender: TObject);
begin
    dmclientes.qclientesacabados.Edit;
    dbgrid9.SetFocus;
end;

procedure Tclientes.btCAnuevoClick(Sender: TObject);
begin
   qaux.SQL.Clear;
   qaux.SQL.Add('select count(*)+1 from clientes_acabados');
   qaux.Open;
   dmclientes.qclientesacabados.append;
   dmclientes.qclientesacabadosid.value:=qaux.Fields[0].AsString;
   dmclientes.qclientesacabadosidempresa.value:=dmclientes.qclientesIdempresa.AsInteger;
   dmclientes.qclientesacabadosidcliente.value:=dmclientes.qclientesId.AsInteger;
   dbgrid9.SetFocus;
end;

procedure Tclientes.BtCborrarClick(Sender: TObject);
begin
    dmclientes.dtclientes.delete;
end;

procedure Tclientes.BtCcancelarClick(Sender: TObject);
begin
    dmclientes.dtclientes.cancel;
    dmclientes.dtclientes.MasterSource:=dmclientes.dsqclientes;

end;

procedure Tclientes.BtCguardarClick(Sender: TObject);
begin
    dmclientes.dtclientesactivo.value:=1;
    dmclientes.dtclientes.Post;
    dmclientes.qclientes.Refresh;
    dmclientes.dtclientes.MasterSource:=dmclientes.dsqclientes;

end;

procedure Tclientes.btClborrarClick(Sender: TObject);
begin
    dmclientes.qclientescalidad.delete;
end;

procedure Tclientes.btClcancelarClick(Sender: TObject);
begin
 dmclientes.qclientescalidad.Cancel;
end;

procedure Tclientes.btClguardarClick(Sender: TObject);
var id,ide,idcliente:string;
begin
    id:=dmclientes.qclientescalidadid.AsString;
    ide:=dmclientes.qclientescalidadidempresa.AsString;
    idcliente:=dmclientes.qclientescalidadidcliente.AsString;
    dmclientes.qclientescalidad.Post;
    dmclientes.qclientescalidad.MasterSource:=dmclientes.dsqclientes;
    dmclientes.qclientescalidad.refresh;
    dmclientes.qclientescalidad.Locate('idempresa,id,idcliente',vararrayof([ide,id,idcliente]),[locaseinsensitive]);

end;

procedure Tclientes.btClmodificarClick(Sender: TObject);
begin
//   dmclientes.qclientescalidad.MasterSource:=nil;
   dmclientes.qclientescalidad.edit;
end;

procedure Tclientes.btClnuevoClick(Sender: TObject);
begin
   dmclientes.qclientescalidad.MasterSource:=nil;
   qaux.SQL.Clear;
   qaux.SQL.Add('select count(*)+1 from clientes_calidad');
   qaux.Open;
   dmclientes.qclientescalidad.append;
   dmclientes.qclientescalidadid.value:=qaux.Fields[0].AsString;
   dmclientes.qclientescalidadidempresa.value:=dmclientes.qclientesIdempresa.AsInteger;
   dmclientes.qclientescalidadidcliente.value:=dmclientes.qclientesId.AsInteger;
   dbgrid3.SetFocus;
end;

procedure Tclientes.btCmodificarClick(Sender: TObject);
begin
   dmclientes.dtclientes.MasterSource:=nil;
   dmclientes.dtclientes.edit;
   dbedit1.SetFocus;
end;

procedure Tclientes.BtCNuevoClick(Sender: TObject);
begin
   qaux.close;
   qaux.sql.clear;
   qaux.sql.add('select max(id+1) from clientes ');
   qaux.Open;
   dmclientes.dtclientes.MasterSource:=nil;
   dmclientes.dtclientes.append;
   dmclientes.dtclientesid.Value:=qaux.Fields[0].AsInteger;
   dbedit1.SetFocus;
end;

procedure Tclientes.btDcancelarClick(Sender: TObject);
begin
    dmclientes.dtdestinos.cancel;
end;

procedure Tclientes.btDmodificarClick(Sender: TObject);
begin
   dmclientes.dtdestinos.MasterSource:=nil;
   dmclientes.dtdestinos.edit;
   dbedit15.SetFocus;
end;

procedure Tclientes.btDborrarClick(Sender: TObject);
begin
    dmclientes.dtdestinos.delete;
    dmclientes.qdestinos.Refresh;
end;

procedure Tclientes.btDnuevoClick(Sender: TObject);
begin
   dmclientes.dtdestinos.MasterSource:=nil;
   dmclientes.dtdestinos.append;
   dbedit15.SetFocus;
end;

procedure Tclientes.Button1Click(Sender: TObject);
var  archivo:string;
begin
    qfacturasclientes.Close;
    qfacturasclientes.SQL.Clear;
    qfacturasclientes.SQL.Add('select * from facturas f,facturas_iva fi where f.idcliente='+dmclientes.dtclientesid.asstring+' and f.idempresa='+dmclientes.dtclientesidempresa.asstring+' and f.idempresa=fi.ide and f.serie=fi.serie and f.id=fi.idfactura order by f.serie,fecha desc,f.id desc');
    qfacturasclientes.open;
    savedialog1.FileName:='FACTURAS CLIENTES.xls';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;
    try
    base.Exportaraexcel(archivo,'facturas',gridfacturasaexcel);
    finally
      showmessage('Los datos han sido exportados correctamente');

    end;
end;

procedure Tclientes.Button2Click(Sender: TObject);
var archivo:string;
begin
    qclientesexcel.Close;
    qclientesexcel.open;
    savedialog1.FileName:='CLIENTES.xls';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;
    try
    base.Exportaraexcel(archivo,'clientes',gridclientesexcel);
    finally
      showmessage('Los datos han sido exportados correctamente');

    end;
end;

procedure Tclientes.Button8Click(Sender: TObject);
var  archivo:string;
begin
    savedialog1.FileName:='ALBARANES CLIENTES.xls';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;
    try
    base.Exportaraexcel(archivo,'ALBARANES',gridalbaranesaexcel);
    finally
      showmessage('Los datos han sido exportados correctamente');

    end;

end;

procedure Tclientes.DBEdit19Exit(Sender: TObject);
begin
    if dmclientes.dsarticulos.State in [dsedit,dsinsert] then btAguardar.Click;

end;

procedure Tclientes.DBEdit26Enter(Sender: TObject);
var x,y:integer;
  tipo,tipocli:string;
begin
   tipo:='';
   tipocli:=dmclientes.dtclientestipocliente.AsString;
   if length(tipocli)>0 then
   begin
       for x := 1 to length(tipocli) do
       begin
         if tipocli[x]<>',' then
         begin
          tipo:=tipo+tipocli[x];
         end;
         if (tipocli[x]=',') or (x=length(tipocli)) then
         begin
             for y := 0 to listadatos.Items.Count-1 do
             begin
                if listadatos.Items[y]=tipo then listadatos.Checked[y]:=true;
             end;
             tipo:='';
         end;
       end;
   end;
   listadatos.Visible:=true;

end;

procedure Tclientes.DBGrid1TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=dmclientes.qclientes.SortType;
  dmclientes.qclientes.SortedFields:=Column.FieldName;
  If st = stAscending then dmclientes.qclientes.SortType:=stDescending else dmclientes.qclientes.SortType:=stAscending;
  dmclientes.dsqclientes.DataSet.First;
end;

procedure Tclientes.DBGrid5DblClick(Sender: TObject);
begin
      pedidos.showmodal();
end;

procedure Tclientes.DBGrid5TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=dmclientes.qpedidos.SortType;
  dmclientes.qpedidos.SortedFields:=Column.FieldName;
  If st = stAscending then dmclientes.qpedidos.SortType:=stDescending else dmclientes.qpedidos.SortType:=stAscending;
  dmclientes.dsqpedidos.DataSet.First;

end;

procedure Tclientes.DBGrid7DblClick(Sender: TObject);
var tserie,tid,tidempresa,tidcliente:string;
begin
    tserie:=dmclientes.qalbaranesserie.AsString;
    tid:=dmclientes.qalbaranesid.AsString;
    tidempresa:=dmclientes.qalbaranesidempresa.AsString;
    tidcliente:=dmclientes.qalbaranesidcliente.AsString;
    albaranes := Talbaranes.Create(nil);
    try
      albaranes.albaranes.filter:='id='+tid+'and idempresa='+tidempresa+' and idcliente='+tidcliente+' and serie='+''''+tserie+'''';
      albaranes.albaranes.filtered:=true;
      albaranes.showmodal();

    finally
      albaranes.albaranes.filtered:=false;
      albaranes.Free;
    end;
end;

procedure Tclientes.DBGrid7TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=dmclientes.qalbaranes.SortType;
  dmclientes.qalbaranes.SortedFields:=Column.FieldName;
  If st = stAscending then dmclientes.qalbaranes.SortType:=stDescending else dmclientes.qalbaranes.SortType:=stAscending;
  dmclientes.dsqalbaranes.DataSet.First;
end;

procedure Tclientes.DBGrid8DblClick(Sender: TObject);
var tserie,tid,tidempresa,tidcliente:string;
begin
    tserie:=dmclientes.qfacturasserie.AsString;
    tid:=dmclientes.qfacturasid.AsString;
    tidempresa:=dmclientes.qfacturasidempresa.AsString;
    tidcliente:=dmclientes.qfacturasidcliente.AsString;
    facturas := Tfacturas.Create(nil);
    try
      facturas.facturas.filter:='id='+tid+'and idempresa='+tidempresa+' and idcliente='+tidcliente+' and serie='+''''+tserie+'''';
      facturas.facturas.filtered:=true;
      facturas.showmodal();
    finally
      facturas.facturas.filtered:=false;
      facturas.facturas.Filter:='';
      facturas.Free;
    end;
end;

procedure Tclientes.DBGrid8TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=dmclientes.qfacturas.SortType;
  dmclientes.qfacturas.SortedFields:=Column.FieldName;
  If st = stAscending then dmclientes.qfacturas.SortType:=stDescending else dmclientes.qfacturas.SortType:=stAscending;
  dmclientes.dsqfacturas.DataSet.First;
end;

procedure Tclientes.todosdestinosClick(Sender: TObject);
begin
    if todosdestinos.Checked=true then
    begin
        dmclientes.qdestinos.Close;
        dmclientes.qdestinos.SQL.Clear;
        dmclientes.qdestinos.SQL.add('select * from clientes_destinos order by descripcion asc');
        dmclientes.qdestinos.Open;
    end else
    begin
        dmclientes.qdestinos.Close;
        dmclientes.qdestinos.SQL.Clear;
        dmclientes.qdestinos.SQL.add('select * from clientes_destinos where activo=1 order by descripcion asc');
        dmclientes.qdestinos.Open;
    end;
end;

procedure Tclientes.btDguardarClick(Sender: TObject);
begin
    dmclientes.dtdestinosidcliente.Value:=dmclientes.dtclientesid.AsInteger;
    dmclientes.dtdestinosidempresa.Value:=dmclientes.dtclientesidempresa.AsInteger;
    dmclientes.dtdestinos.Post;
    dmclientes.qdestinos.close;
    dmclientes.qdestinos.Open;
    dmclientes.dtdestinos.MasterSource:=dmclientes.dsqdestinos;
end;

procedure Tclientes.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   dmclientes.qclientes.close;
end;

procedure Tclientes.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then Key :=9;
    end;

end;

procedure Tclientes.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 tdbedit) then
        begin
           if  (activecontrol as tdbedit).Field.DataType in [ftfloat,ftCurrency,ftbcd,ftfmtbcd] then key:=','
        end;
        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 Tclientes.FormShow(Sender: TObject);
begin
    detallesclientes.ActivePageIndex:=0;
    datosclientes.activepageindex:=0;
    dm.tempresa.open;
    dmclientes.qclientes.close;
    dmclientes.qpedidosclientes.Close;
    dmclientes.qalbaranes.close;
    dmclientes.qfacturas.close;
    dmclientes.qarticulosx.Close;
    dmclientes.qarticulos.Close;
    dmclientes.qclientescalidad.Close;
    dmclientes.dtarticulosformato.Close;
    dmclientes.qclientesacabados.close;
    dmclientes.qdestinos.Close;
    dmclientes.dtdestinos.Close;
    qformaspago.Close;
    qcuentas.close;
    qtipos_iva.close;
    qformaspago.Open;
    qcuentas.Open;
    qtipos_iva.open;
    dmclientes.qarticulosx.open;
    dmclientes.qarticulos.open;
    dmclientes.qclientes.Open;
    dmclientes.dtclientes.Open;
    if dmclientes.qclientes.RecordCount>0 then
    begin
      dmclientes.qdestinos.open;
      dmclientes.qclientescalidad.open;
      dmclientes.dtarticulosformato.open;
      dmclientes.qclientesacabados.open;
      dmclientes.dtdestinos.open;
      dmclientes.qalbaranes.Open;
      dmclientes.qfacturas.open;
    end;


end;

procedure Tclientes.listadatosClick(Sender: TObject);
var tipocli:string;
    x:integer;
begin
    for x:=0 to listadatos.Items.Count-1 do
    begin
        if listadatos.Checked[x] then if tipocli='' then tipocli:=listadatos.Items[x] else tipocli:=tipocli+','+listadatos.Items[x];
    end;
    dmclientes.dtclientestipocliente.Value:=tipocli;
end;

procedure Tclientes.listadatosExit(Sender: TObject);
begin
    listadatos.Visible:=false;
    dbedit9.SetFocus;
end;

procedure Tclientes.tbuscarChange(Sender: TObject);
begin
    dmclientes.filtro:='%'+tbuscar.Text+'%';
    if todosclientes.Checked then dmclientes.vertodos:=1 else dmclientes.vertodos:=0;
    dmclientes.qclientes.Close;
    dmclientes.qclientes.open;
end;

procedure Tclientes.todosarticulosClick(Sender: TObject);
begin
    dmclientes.qarticulos.Close;
    dmclientes.qarticulos.SQL.Clear;
    dmclientes.qarticulos.SQL.add('select * from clientes_articulos order by desc_cliente asc');
    dmclientes.qarticulos.Open;
end;

procedure Tclientes.todosclientesClick(Sender: TObject);
begin
    if todosclientes.Checked=true then
    begin
        dmclientes.vertodos:=1;
        dmclientes.qclientes.Close;
        dmclientes.qclientes.SQL.Clear;
        dmclientes.qclientes.SQL.add('select * from clientes order by nombre asc');
        dmclientes.qclientes.Open;
    end else
    begin
        dmclientes.vertodos:=0;
        dmclientes.qclientes.Close;
        dmclientes.qclientes.SQL.Clear;
        dmclientes.qclientes.SQL.add('select * from clientes where activo=1 order by nombre asc');
        dmclientes.qclientes.Open;
    end;
end;

end.
