unit fclientes;

interface

uses
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client, uFireDacHelper,
  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,
     Vcl.CheckLst;

type
  Tclientes = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel5: TPanel;
    DBGrid1: TDBGrid;
    todosclientes: TCheckBox;
    tbuscar: TEdit;
    Label1: TLabel;
    dsqformaspago: TDataSource;
    qformaspago: TFDQuery;
    qformaspagoide: TIntegerField;
    qformaspagoid: TIntegerField;
    qformaspagocodigo: TWideStringField;
    qformaspagodescripcion: TWideStringField;
    qformaspagodias: TIntegerField;
    qaux: TFDQuery;
    SaveDialog1: TSaveDialog;
    dsqfacturasclientes: TDataSource;
    qfacturasclientes: TFDQuery;
    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: TFDQuery;
    qcuentaside: TIntegerField;
    qcuentasid: TIntegerField;
    qcuentasbanco: TWideStringField;
    qcuentascciban: TWideStringField;
    qcuentasccentidad: TWideStringField;
    qcuentasccoficina: TWideStringField;
    qcuentasccdc: TWideStringField;
    qcuentascccc: TWideStringField;
    dsqcuentas: TDataSource;
    dsqtiposiva: TDataSource;
    qtipos_iva: TFDQuery;
    qtipos_ivaid: TIntegerField;
    qtipos_ivadescripcion: TWideStringField;
    qtipos_ivatipo: TIntegerField;
    qtipos_ivatipo_req: TFloatField;
    qclientesexcel: TFDQuery;
    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:TFDQuerySortType;
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:TFDQuerySortType;
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:TFDQuerySortType;
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:TFDQuerySortType;
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.
