unit fproductores;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.DBCtrls, Vcl.Mask,
  Vcl.ComCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls, ZDataset, Data.DB,
  ZAbstractRODataset, ZAbstractDataset,Excel2000,ComObj,ShellApi, frxClass,
  frxExportBaseDialog, frxExportPDF, frxDBSet, frxCross;

type
  TSociosProductores = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel5: TPanel;
    Label1: TLabel;
    todosclientes: TCheckBox;
    tbuscar: TEdit;
    DBGrid1: TDBGrid;
    Panel3: TPanel;
    Panel4: TPanel;
    DatosProductores: 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;
    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;
    Panel6: TPanel;
    Label37: TLabel;
    BtScancelar: TButton;
    btSmodificar: TButton;
    BtSborrar: TButton;
    BtSNuevo: TButton;
    BtSguardar: TButton;
    TDatosDestinos: TTabSheet;
    Panel12: TPanel;
    Label36: TLabel;
    btPcancelar: TButton;
    btPmodificar: TButton;
    btPborrar: TButton;
    btPnuevo: TButton;
    btPguardar: TButton;
    Panel15: TPanel;
    Panel19: TPanel;
    Detallesproductores: TPageControl;
    TPedidos: TTabSheet;
    Panel8: TPanel;
    Label34: TLabel;
    TAlbaranes: TTabSheet;
    Panel10: TPanel;
    dsqsocios: TDataSource;
    socios: TZQuery;
    qsocios: TZReadOnlyQuery;
    dssocios: TDataSource;
    qsociosid: TIntegerField;
    qsocioside: TIntegerField;
    parcelas: TZQuery;
    dsparcelas: TDataSource;
    dsqenvasados: TDataSource;
    dsqparcelas: TDataSource;
    qparcelas: TZReadOnlyQuery;
    Panel147: TPanel;
    DBGrid20: TDBGrid;
    Panel148: TPanel;
    Label298: TLabel;
    todasparcelas: TCheckBox;
    tbuscarparcelas: TEdit;
    dsqcampanyas: TDataSource;
    qcampanyas: TZReadOnlyQuery;
    qcampanyasid: TIntegerField;
    qcampanyasdescripcion: TWideStringField;
    qcampanyasfechainicio: TDateField;
    qcampanyasfechafin: TDateField;
    qaux: TZReadOnlyQuery;
    Button16: TButton;
    Button15: TButton;
    sociosid: TIntegerField;
    socioside: TIntegerField;
    sociosnif: TWideStringField;
    sociosnombre: TWideStringField;
    sociosnombre_corto: TWideStringField;
    sociosdireccion: TWideStringField;
    sociospoblacion: TWideStringField;
    socioscp: TWideStringField;
    sociosprovincia: TWideStringField;
    sociostelefono: TWideStringField;
    sociosmovil: TWideStringField;
    sociosfax: TWideStringField;
    sociosemail: TWideStringField;
    sociospersonacontacto: TWideStringField;
    sociosccontable: TWideStringField;
    sociosobservaciones: TWideStringField;
    sociosactivo: TIntegerField;
    qsociosnombre_corto: TWideStringField;
    dsqsocios2: TDataSource;
    qsocios2: TZReadOnlyQuery;
    qsocios2id: TIntegerField;
    qsocios2ide: TIntegerField;
    qsocios2nombre_corto: TWideStringField;
    parcelascodpar: TWideStringField;
    parcelasempresa: TIntegerField;
    parcelasnombre: TWideStringField;
    parcelasvariedad: TWideStringField;
    parcelasnum_plantas: TIntegerField;
    parcelasfecha_plantacion: TDateField;
    parcelasmarco_plantacion: TWideStringField;
    parcelasnum_goteros: TFloatField;
    parcelasgastosgenerales: TIntegerField;
    parcelasref_catastro: TWideStringField;
    parcelassigpac_prov: TIntegerField;
    parcelassigpac_muni: TIntegerField;
    parcelassigpac_agre: TIntegerField;
    parcelassigpac_zona: TIntegerField;
    parcelassigpac_poli: TIntegerField;
    parcelassigpac_pacr: TIntegerField;
    parcelasx: TWideStringField;
    parcelasy: TWideStringField;
    parcelasdatum: TWideStringField;
    parcelashuso: TIntegerField;
    parcelaspropiedad: TWideStringField;
    parcelasactivo: TIntegerField;
    parcelasseleccionado: TIntegerField;
    parcelassuperficie: TFloatField;
    parcelasest_meteo: TWideStringField;
    parcelascoste_kg_ref: TFloatField;
    parcelasactivo_almacen: TIntegerField;
    parcelasporc_desperdicio: TFloatField;
    parcelasporc_merma: TFloatField;
    parcelases_centrotrabajo: TIntegerField;
    parcelassigpac_recinto: TIntegerField;
    parcelaspie_planta: TWideStringField;
    parcelasnumero: TWideStringField;
    parcelastiene_gg: TIntegerField;
    parcelastiene_dop: TIntegerField;
    parcelasc_calidad: TIntegerField;
    parcelasc_espcliente: TIntegerField;
    parcelasc_etiquetado: TIntegerField;
    parcelassello_gg: TWideStringField;
    parcelassello_dop: TWideStringField;
    parcelassello_igp: TWideStringField;
    parcelastiene_igp: TIntegerField;
    parcelastiene_ifs: TIntegerField;
    parcelassello_ifs: TWideStringField;
    parcelaspropietario: TIntegerField;
    qparcelasempresa: TIntegerField;
    qparcelascodpar: TWideStringField;
    qparcelasnombre: TWideStringField;
    qparcelasvariedad: TWideStringField;
    qparcelaspropietario: TIntegerField;
    qcultivos: TZReadOnlyQuery;
    dsqcultivos: TDataSource;
    qcultivosidempresa: TIntegerField;
    qcultivosid: TWideStringField;
    qcultivosvariedad: TWideStringField;
    qcultivosdescripcion: TWideStringField;
    qcultivosobservaciones: TWideStringField;
    qcultivosimagen: TBlobField;
    qcultivosEAN: TWideStringField;
    qcultivosbasculas: TIntegerField;
    qcultivosmesas: TIntegerField;
    qcultivosactivo: TIntegerField;
    qcultivosusar_precio_parcela: TIntegerField;
    qcultivosdesechos: TIntegerField;
    qcultivosgenerico: TWideStringField;
    qcultivoscompuesto: TIntegerField;
    DBGrid46: TDBGrid;
    DBGrid69: TDBGrid;
    dsqinfsalidas: TDataSource;
    qinfenvasados: TZQuery;
    qinfenvasadosid: TIntegerField;
    qinfenvasadosfecha: TDateField;
    qinfenvasadosfechatrabajo: TDateField;
    qinfenvasadosparcela: TWideStringField;
    qinfenvasadosmprima: TWideStringField;
    qinfenvasadosmprima_p: TWideStringField;
    qinfenvasadosid_envase: TWideStringField;
    qinfenvasadosnum_envases: TIntegerField;
    qinfenvasadoscliente: TWideStringField;
    qinfenvasadosciudad: TWideStringField;
    qinfenvasadospeso_neto: TFloatField;
    qinfenvasadospeso_neto_teorico: TFloatField;
    qinfenvasadospeso_medio: TFloatField;
    qinfenvasadostemperatura: TFloatField;
    qinfenvasadoslote: TIntegerField;
    qinfenvasadosidalbaran: TIntegerField;
    dsqinfentradas: TDataSource;
    qinfentradas: TZQuery;
    qinfentradasid: TIntegerField;
    qinfentradasfecha: TDateField;
    qinfentradasfechatrabajo: TDateField;
    qinfentradasparcela: TWideStringField;
    qinfentradasmprima: TWideStringField;
    qinfentradasid_envase: TWideStringField;
    qinfentradasnum_envases: TIntegerField;
    qinfentradascliente: TWideStringField;
    qinfentradasciudad: TWideStringField;
    qinfentradaspeso_neto: TFloatField;
    qinfentradaspeso_neto_teorico: TFloatField;
    qinfentradaspeso_medio: TFloatField;
    qinfentradastemperatura: TFloatField;
    qinfentradaslote: TIntegerField;
    qinfentradasidalbaran: TIntegerField;
    qinfentradasmprima_p: TWideStringField;
    Label17: TLabel;
    DBEdit2: TDBEdit;
    socioscodproductor: TWideStringField;
    sociospais: TWideStringField;
    parcelas_recintos: TZQuery;
    parcelas_recintosid: TIntegerField;
    parcelas_recintoscodpar: TWideStringField;
    parcelas_recintosempresa: TIntegerField;
    parcelas_recintosref_catastro: TWideStringField;
    parcelas_recintossigpac_prov: TIntegerField;
    parcelas_recintossigpac_muni: TIntegerField;
    parcelas_recintossigpac_agre: TIntegerField;
    parcelas_recintossigpac_zona: TIntegerField;
    parcelas_recintossigpac_poli: TIntegerField;
    parcelas_recintossigpac_pacr: TIntegerField;
    parcelas_recintosx: TWideStringField;
    parcelas_recintosy: TWideStringField;
    parcelas_recintosdatum: TWideStringField;
    parcelas_recintoshuso: TIntegerField;
    parcelas_recintossuperficie: TFloatField;
    parcelas_recintossigpac_recinto: TIntegerField;
    DBGrid2: TDBGrid;
    dsparcelasrecintos: TDataSource;
    Panel7: TPanel;
    Label139: TLabel;
    Label140: TLabel;
    Label141: TLabel;
    Label142: TLabel;
    Label143: TLabel;
    Label144: TLabel;
    Label145: TLabel;
    Label159: TLabel;
    Label197: TLabel;
    Label198: TLabel;
    Label201: TLabel;
    Label208: TLabel;
    Label299: TLabel;
    Label16: TLabel;
    DBEdit79: TDBEdit;
    DBEdit80: TDBEdit;
    DBEdit82: TDBEdit;
    DBEdit83: TDBEdit;
    DBEdit84: TDBEdit;
    DBEdit85: TDBEdit;
    DBComboBox1: TDBComboBox;
    DBCheckBox19: TDBCheckBox;
    DBEdit104: TDBEdit;
    DBEdit105: TDBEdit;
    DBEdit108: TDBEdit;
    DBEdit115: TDBEdit;
    DBCheckBox27: TDBCheckBox;
    DBCheckBox28: TDBCheckBox;
    DBCheckBox29: TDBCheckBox;
    DBCheckBox32: TDBCheckBox;
    DBCheckBox39: TDBCheckBox;
    DBEdit117: TDBEdit;
    DBEdit118: TDBEdit;
    DBEdit119: TDBEdit;
    DBCheckBox41: TDBCheckBox;
    DBLookupComboBox15: TDBLookupComboBox;
    DBCheckBox42: TDBCheckBox;
    DBEdit81: TDBEdit;
    DBCheckBox17: TDBCheckBox;
    DBLookupComboBox1: TDBLookupComboBox;
    Button3: TButton;
    SaveDialog1: TSaveDialog;
    TabSheet1: TTabSheet;
    DBGrid4: TDBGrid;
    Panel11: TPanel;
    Label20: TLabel;
    dsqestadisticas: TDataSource;
    DBCheckBox1: TDBCheckBox;
    DBEdit14: TDBEdit;
    parcelastiene_brc: TIntegerField;
    parcelassello_brc: TWideStringField;
    Panel13: TPanel;
    Label21: TLabel;
    combocampanyas: TDBLookupComboBox;
    btactualizar: TButton;
    Button9: TButton;
    RadioGroup1: TRadioGroup;
    tkparcela: TRadioButton;
    tkmprima: TRadioButton;
    dbaestadisticas: TfrxDBDataset;
    dbaenvasados: TfrxDBDataset;
    dbaentradas: TfrxDBDataset;
    frxPDFExport1: TfrxPDFExport;
    infproductores: TfrxReport;
    frxCrossObject1: TfrxCrossObject;
    dbdesechos: TfrxDBDataset;
    dbpropietarios: TfrxDBDataset;
    tkmprimaenv: TRadioButton;
    qestadisticas_mpe: TZReadOnlyQuery;
    Edit1: TEdit;
    Label18: TLabel;
    qentradasdetalle: TZReadOnlyQuery;
    qenvasadosdetalle: TZReadOnlyQuery;
    qdesechosdetalle: TZReadOnlyQuery;
    Label19: TLabel;
    tdesechos: TTabSheet;
    DBGrid3: TDBGrid;
    Panel9: TPanel;
    Label3: TLabel;
    qestadisticas_mpeMateriaPrima: TWideStringField;
    qestadisticas_mpeEnvase: TWideStringField;
    qestadisticas_mpeKgRecolectados: TFloatField;
    qestadisticas_mpeKgEnvasados: TFloatField;
    qestadisticas_mpeKgFacturables: TFloatField;
    qestadisticas_mpeKgFacturados: TFloatField;
    qestadisticas_mpeDesechos: TFloatField;
    qestadisticas_mpeIniciorecolección: TDateField;
    qestadisticas_mpeFinrecolección: TDateField;
    qestadisticas_mpeMermaVenta: TFloatField;
    qentradasdetalleId: TIntegerField;
    qentradasdetalleLote: TIntegerField;
    qentradasdetalleFecha: TDateField;
    qentradasdetalleParcela: TWideStringField;
    qentradasdetalleMatériaPrima: TWideStringField;
    qentradasdetalleEnvase: TWideStringField;
    qentradasdetalleNºEnvases: TIntegerField;
    qentradasdetalleUbicaciónactual: TWideStringField;
    qentradasdetallePesoneto: TFloatField;
    qentradasdetallePesoFacturable: TFloatField;
    qenvasadosdetalleId: TIntegerField;
    qenvasadosdetalleLote: TIntegerField;
    qenvasadosdetalleFecha: TDateField;
    qenvasadosdetalleParcela: TWideStringField;
    qenvasadosdetalleMatériaPrima: TWideStringField;
    qenvasadosdetalleEnvase: TWideStringField;
    qenvasadosdetalleNºEnvases: TIntegerField;
    qenvasadosdetalleUbicaciónactual: TWideStringField;
    qenvasadosdetallePesoneto: TFloatField;
    qenvasadosdetallePesoFacturable: TFloatField;
    qdesechosdetalleId: TIntegerField;
    qdesechosdetalleLote: TIntegerField;
    qdesechosdetalleFecha: TDateField;
    qdesechosdetalleParcela: TWideStringField;
    qdesechosdetalleMatériaPrima: TWideStringField;
    qdesechosdetalleEnvase: TWideStringField;
    qdesechosdetalleNºEnvases: TIntegerField;
    qdesechosdetalleUbicaciónactual: TWideStringField;
    qdesechosdetallePesoneto: TFloatField;
    qdesechosdetallePesoFacturable: TFloatField;
    dsqdesechos: TDataSource;
    dsqentradas: TDataSource;
    qestadisticas_p: TZReadOnlyQuery;
    qestadisticas_mp: TZReadOnlyQuery;
    qestadisticas_mpMateriaPrima: TWideStringField;
    qestadisticas_mpKgRecolectados: TFloatField;
    qestadisticas_mpKgEnvasados: TFloatField;
    qestadisticas_mpKgFacturables: TFloatField;
    qestadisticas_mpKgFacturados: TFloatField;
    qestadisticas_mpDesechos: TFloatField;
    qestadisticas_mpIniciorecolección: TDateField;
    qestadisticas_mpFinrecolección: TDateField;
    qestadisticas_mpMermaVenta: TFloatField;
    qestadisticas_mpMermaRecoleccion: TFloatField;
    qestadisticas_pParcela: TWideStringField;
    qestadisticas_pKgRecolectados: TFloatField;
    qestadisticas_pKgEnvasados: TFloatField;
    qestadisticas_pKgFacturables: TFloatField;
    qestadisticas_pKgFacturados: TFloatField;
    qestadisticas_pDesechos: TFloatField;
    qestadisticas_pIniciorecolección: TDateField;
    qestadisticas_pFinrecolección: TDateField;
    qestadisticas_pmermaVenta: TFloatField;
    qestadisticas_pMermaRecoleccion: TFloatField;
    Button7: TButton;
    tdesde: TDateTimePicker;
    thasta: TDateTimePicker;
    Label24: TLabel;
    Label25: TLabel;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure BtSNuevoClick(Sender: TObject);
    procedure BtSborrarClick(Sender: TObject);
    procedure btSmodificarClick(Sender: TObject);
    procedure BtSguardarClick(Sender: TObject);
    procedure BtScancelarClick(Sender: TObject);
    procedure dssociosStateChange(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure tbuscarChange(Sender: TObject);
    procedure qsociosBeforeOpen(DataSet: TDataSet);
    procedure todosclientesClick(Sender: TObject);
    procedure btPnuevoClick(Sender: TObject);
    procedure btPmodificarClick(Sender: TObject);
    procedure btPborrarClick(Sender: TObject);
    procedure btPcancelarClick(Sender: TObject);
    procedure btPguardarClick(Sender: TObject);
    procedure dsparcelasStateChange(Sender: TObject);
    procedure tbuscarparcelasChange(Sender: TObject);
    procedure qparcelasBeforeOpen(DataSet: TDataSet);
    procedure Button3Click(Sender: TObject);
    procedure btJexcelClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure btactualizarClick(Sender: TObject);
    procedure tkparcelaClick(Sender: TObject);
    procedure dsqsociosDataChange(Sender: TObject; Field: TField);
    procedure Button9Click(Sender: TObject);
    procedure qestadisticas_mpCalcFields(DataSet: TDataSet);
    procedure qestadisticas_pCalcFields(DataSet: TDataSet);
    procedure Button7Click(Sender: TObject);
    procedure qestadisticas_mpeCalcFields(DataSet: TDataSet);
    procedure Button6Click(Sender: TObject);
    procedure dsqcampanyasDataChange(Sender: TObject; Field: TField);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure AppMessage(var Msg: Tmsg; var Handled:Boolean);
    procedure ExportaraExcel(FileNameXLS, SheetName: String; DBGrid: TDBGrid; ProgressBarXls: TProgressBar = nil);
    var   filtro,tparcelascodigo:string;
          tsociosid,tsocioside,vertodos:integer;
  end;

var
  SociosProductores: TSociosProductores;

implementation

{$R *.dfm}

uses datos, pesadas;
procedure TSociosProductores.btJexcelClick(Sender: TObject);
var  archivo:string;
begin
    savedialog1.FileName:='ENTRADAS CAMPO.xls';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;

    try
    Exportaraexcel(archivo,'ENTRADAS CAMPO',DBGRID46);
    finally
      showmessage('Los datos han sido exportados correctamente a '+archivo);
    end;
end;
procedure TSociosProductores.btPborrarClick(Sender: TObject);
begin
    parcelas.Delete;
    qparcelas.Refresh;
    qparcelas.First
end;

procedure TSociosProductores.btPcancelarClick(Sender: TObject);
begin
    parcelas.cancel;
    parcelas.refresh;
end;

procedure TSociosProductores.btPguardarClick(Sender: TObject);
begin
    tparcelascodigo:=parcelascodpar.asstring;
    tsociosid:=parcelaspropietario.AsInteger;
    parcelas.post;
    qsocios.close;
    qsocios.open;
    qsocios.Locate('id',tsociosid,[locaseinsensitive]);
    qparcelas.Close;
    qparcelas.Open;
    qparcelas.Locate('codpar',tparcelascodigo,[locaseinsensitive]);
    qsocios2.close;
    qsocios2.open;
end;

procedure TSociosProductores.btPmodificarClick(Sender: TObject);
begin
    parcelas.edit;
    dbedit79.SetFocus;

end;

procedure TSociosProductores.btPnuevoClick(Sender: TObject);
begin
    parcelas.append;
    parcelaspropietario.Value:=qsociosid.AsInteger;
    dbedit79.SetFocus;
end;

procedure TSociosProductores.BtSborrarClick(Sender: TObject);
begin
    socios.Delete;
end;

procedure TSociosProductores.BtScancelarClick(Sender: TObject);
begin
    socios.cancel;
    qsocios.Refresh;
    socios.MasterSource:=dsqsocios;
end;

procedure TSociosProductores.BtSguardarClick(Sender: TObject);
begin
    socioside.Value:=tsocioside;
    if socios.state in [dsedit,dsinsert] then socios.Post;
    qsocios.close;
    qsocios.open;
    qsocios.Locate('id',tsociosid,[locaseinsensitive,lopartialkey]);
    qsocios2.close;
    qsocios2.open;
    qparcelas.Close;
    qparcelas.Open;
    socios.MasterSource:=dsqsocios;
end;

procedure TSociosProductores.btSmodificarClick(Sender: TObject);
begin
   tsociosid:=qsociosid.asinteger;
   socios.MasterSource:=nil;
   socios.edit;
   dbedit1.SetFocus;
end;

procedure TSociosProductores.BtSNuevoClick(Sender: TObject);
begin
   qaux.SQL.Clear;
   qaux.SQL.Add('select max(id)+1 from propietarios');
   qaux.Open;
   socios.MasterSource:=nil;
   socios.append;
   dbedit1.SetFocus;
   if qaux.Fields[0].Asinteger>0 then
   begin
       dbedit1.Text:=qaux.Fields[0].AsString;
   end else
       begin
           dbedit1.Text:='0';
       end;
end;

procedure TSociosProductores.Button15Click(Sender: TObject);
var url:array[0..255] of WideChar;
    cadena,x,y:string;
begin
   x:=parcelasx.Asstring;
   y:=parcelasy.Asstring;
   stringreplace(x,'.',',',[rfReplaceAll]);
   stringreplace(y,',','.',[rfReplaceAll]);
   cadena:='https://www.google.es/maps/place/'+x+','+y;
   stringtowidechar(cadena,url,256);
   ShellExecute(Handle,'open','iexplore.exe',URL,nil,SW_NORMAL);

end;

procedure TSociosProductores.Button16Click(Sender: TObject);
var url:array[0..255] of WideChar;
    cadena:string;
begin
   cadena:='http://sigpac.mapa.es/fega/visor/?provincia='+parcelas_recintossigpac_prov.AsString+'&municipio='+parcelas_recintossigpac_muni.AsString+'&AGREGADO='+parcelas_recintossigpac_agre.AsString+'&zona='+parcelas_recintossigpac_zona.AsString+'&poligono='+parcelas_recintossigpac_poli.AsString+'&parcela='+parcelas_recintossigpac_pacr.AsString+'&recinto='+parcelas_recintossigpac_recinto.AsString;
   stringtowidechar(cadena,url,256);
   ShellExecute(Handle,'open','iexplore.exe',URL,nil,SW_NORMAL);
end;

procedure TSociosProductores.Button2Click(Sender: TObject);
var  archivo:string;
begin
    savedialog1.FileName:='ENVASADOS.xls';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;

    try
    Exportaraexcel(archivo,'ENVASADOS',DBGRID69);
    finally
      showmessage('Los datos han sido exportados correctamente a '+archivo);
    end;
end;

procedure TSociosProductores.Button3Click(Sender: TObject);
begin
    parcelas_recintos.Delete;
end;

procedure TSociosProductores.Button5Click(Sender: TObject);
var  archivo:string;
begin
    savedialog1.FileName:='ESTADISTICAS DE '+sociosnombre.AsString+'.xlsx';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;

    try
    Exportaraexcel(archivo,'ESTADISTICAS',DBGRID4);
    finally
      showmessage('Los datos han sido exportados correctamente a '+archivo);
    end;
end;

procedure TSociosProductores.Button6Click(Sender: TObject);
begin
 {   infproductoresran.Datasource:=dsalbaranes;
    infdetallealbaran.Datasource:=dsalbaranesdetalle;
    infalbaranivas.Datasource:=dsqalbaranesiva;
    informe.Report.Clear;
    informe.LoadFromFile('c:\agrigest\informes\'+documento+'.fr3');
    informe.Variables.Variables['FORMAPAGO']:=QUOTEDSTR(formapago);
    informe.Variables.Variables['PEDIDOS']:=QUOTEDSTR(pedidos);
    informe.Variables.Variables['FECHACARGA']:=QUOTEDSTR(fechacarga);

    informe.ShowReport();
    informe.Clear;   }

end;

procedure TSociosProductores.Button7Click(Sender: TObject);
var  archivo:string;
begin
    savedialog1.FileName:='ESTADISTICAS DE '+sociosnombre.AsString+'.xlsx';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;

    try
    Exportaraexcel(archivo,'ESTADISTICAS',DBGRID4);
    finally
      showmessage('Los datos han sido exportados correctamente a '+archivo);
    end;
    savedialog1.FileName:='DETALLE DE ENTRADAS DE '+sociosnombre.AsString+'.xlsx';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;

    try
    Exportaraexcel(archivo,'DETALLE',DBGRID46);
    finally
      showmessage('Los datos han sido exportados correctamente a '+archivo);
    end;
    savedialog1.FileName:='DETALLE DE ENVASADOS DE '+sociosnombre.AsString+'.xlsx';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;

    try
    Exportaraexcel(archivo,'DETALLE',DBGRID69);
    finally
      showmessage('Los datos han sido exportados correctamente a '+archivo);
    end;
    savedialog1.FileName:='DETALLE DE DESECHOS DE '+sociosnombre.AsString+'.xlsx';
    savedialog1.Execute();
    archivo:=savedialog1.FileName;

    try
    Exportaraexcel(archivo,'DETALLE',DBGRID3);
    finally
      showmessage('Los datos han sido exportados correctamente a '+archivo);
    end;

end;

procedure TSociosProductores.Button9Click(Sender: TObject);
begin
{    if dbgrid4.SelectedRows.Count>0 then
      for i := 0 to dbgrid4.Selectedrows.Count - 1 do
      begin
        qacuentradas.GotoBookmark ((dbgrid4.selectedrows[i]));
        qaux.ParamByName('ID').AsInteger:=qlistaempleadosid.asinteger;
        qaux.Execsql;
      end
    else
    begin
      qlistaemplea.First;
      while not qlistaempleados.Eof do
      begin
        qaux.ParamByName('ID').AsInteger:=qlistaempleadosid.asinteger;
        qaux.Execsql;
        qlistaempleados.Next;
      end
    end;
            qinftrabajadores.Close;
            qinftrabajadores.SQL.Clear;
            qinftrabajadores.SQL.Add('select t.* ,f.imagen from trabajadores t left join emp_fotos f on t.ide=f.ide and t.id=f.idt where  t.seleccionado=1 order by nombre');
            qinftrabajadores.Open;
            informedb.Datasource:=dsqinftrabajadores;
            informes.Report.Clear;
            informes.LoadFromFile('c:\agrigest\informes\infproductor.fr3');
            informes.ShowReport();   }
end;

procedure TSociosProductores.btactualizarClick(Sender: TObject);
var vdesde,vhasta:tdate;
    vpropietario:integer;
    vgenerico:string;
begin
    vdesde:=tdesde.Date;// qcampanyasfechainicio.AsDatetime;
    vhasta:=thasta.date;// qcampanyasfechafin.AsDatetime;
    vpropietario:=qsociosid.AsInteger;
    vgenerico:='%'+edit1.Text+'%';
    dsqentradas.DataSet:=qentradasdetalle;
    dsqenvasados.DataSet:=qenvasadosdetalle;
    dsqdesechos.DataSet:=qdesechosdetalle;

    qentradasdetalle.Close;
    qentradasdetalle.Prepare;
    qentradasdetalle.ParamByName('PDESDE').AsDate:=vdesde;
    qentradasdetalle.ParamByName('PHASTA').AsDate:=vhasta;
    qentradasdetalle.ParamByName('PPROPIETARIO').Asinteger:=vpropietario;
    qentradasdetalle.paramByname('PGENERICO').ASSTRING:=vgenerico;
    qentradasdetalle.Open;

    qenvasadosdetalle.Close;
    qenvasadosdetalle.Prepare;
    qenvasadosdetalle.ParamByName('PDESDE').AsDate:=vdesde;
    qenvasadosdetalle.ParamByName('PHASTA').AsDate:=vhasta;
    qenvasadosdetalle.ParamByName('PPROPIETARIO').Asinteger:=vpropietario;
    qenvasadosdetalle.paramByname('PGENERICO').ASSTRING:=vgenerico;
    qenvasadosdetalle.Open;

    qdesechosdetalle.Close;
    qdesechosdetalle.Prepare;
    qdesechosdetalle.ParamByName('PDESDE').AsDate:=vdesde;
    qdesechosdetalle.ParamByName('PHASTA').AsDate:=vhasta;
    qdesechosdetalle.ParamByName('PPROPIETARIO').Asinteger:=vpropietario;
    qdesechosdetalle.paramByname('PGENERICO').ASSTRING:=vgenerico;
    qdesechosdetalle.Open;


    if tkparcela.Checked then
    begin
      dsqestadisticas.DataSet:=qestadisticas_p;
      qestadisticas_p.close;
      qestadisticas_p.Prepare;
      qestadisticas_p.ParamByName('PDESDE').AsDate:=vdesde;
      qestadisticas_p.ParamByName('PHASTA').AsDate:=vhasta;
      qestadisticas_p.ParamByName('PPROPIETARIO').AsInteger:=vpropietario;
      qestadisticas_p.paramByname('PGENERICO').ASSTRING:=vgenerico;
      qestadisticas_p.Open;
    end;

    if tkmprima.Checked then
    begin
      dsqestadisticas.DataSet:=qestadisticas_mp;
      qestadisticas_mp.close;
      qestadisticas_mp.Prepare;
      qestadisticas_mp.ParamByName('PDESDE').AsDate:=vdesde;
      qestadisticas_mp.ParamByName('PHASTA').AsDate:=vhasta;
      qestadisticas_mp.ParamByName('PPROPIETARIO').AsInteger:=vpropietario;
      qestadisticas_mp.paramByname('PGENERICO').ASSTRING:=vgenerico;
      qestadisticas_mp.Open;
    end;
    if tkmprimaenv.Checked then
    begin
      dsqestadisticas.DataSet:=qestadisticas_mpe;
      qestadisticas_mpe.close;
      qestadisticas_mpe.Prepare;
      qestadisticas_mpe.ParamByName('PDESDE').AsDate:=vdesde;
      qestadisticas_mpe.ParamByName('PHASTA').AsDate:=vhasta;
      qestadisticas_mpe.ParamByName('PPROPIETARIO').AsInteger:=vpropietario;
      qestadisticas_mpe.paramByname('PGENERICO').ASSTRING:=vgenerico;
      qestadisticas_mpe.Open;
    end;

    {


    qenvasados.Close;
    qenvasados.prepare;
    qenvasados.ParamByName('PDESDE').AsDate:=pdesde;
    qenvasados.ParamByName('PHASTA').AsDate:=phasta;
    qenvasados.ParamByName('PAGRUPACION').Asstring:=pagrupacion;
    qenvasados.Open;


    qenvasadosdetalle.Close;
    qenvasadosdetalle.prepare;
    qenvasadosdetalle.ParamByName('PDESDE').AsDate:=pdesde;
    qenvasadosdetalle.ParamByName('PHASTA').AsDate:=phasta;
    qenvasadosdetalle.Open;
    qinfenvasados.Close;
    qinfenvasados.Prepare;
    qinfenvasados.ParamByName('PDESDE').AsDate:=pdesde;
    qinfenvasados.ParamByName('PHASTA').AsDate:=phasta;}

end;

procedure TSociosProductores.dsparcelasStateChange(Sender: TObject);
begin
    if parcelas.State in [dsedit,dsinsert] then
    begin
       Panel7.Enabled:=true;
       btpnuevo.enabled:=false;
       btpborrar.enabled:=false;
       btpmodificar.enabled:=false;
       btpguardar.enabled:=true;
       btpcancelar.enabled:=true;
    end;
    if parcelas.State in [dsbrowse] then
    begin
       Panel7.Enabled:=false;
       btpnuevo.enabled:=true;
       btpborrar.enabled:=true;
       btpmodificar.enabled:=true;
       btpguardar.enabled:=false;
       btpcancelar.enabled:=false;
    end;
end;

procedure TSociosProductores.dsqcampanyasDataChange(Sender: TObject;
  Field: TField);
begin
    tdesde.Date:=qcampanyasfechainicio.asdatetime;
    thasta.Date:=qcampanyasfechafin.asdatetime;
end;

procedure TSociosProductores.dsqsociosDataChange(Sender: TObject;
  Field: TField);
begin
  btactualizar.Click;
end;

procedure TSociosProductores.dssociosStateChange(Sender: TObject);
begin
    if socios.State in [dsedit,dsinsert] then
    begin
       Panel14.Enabled:=true;
       btsnuevo.enabled:=false;
       btsborrar.enabled:=false;
       btsmodificar.enabled:=false;
       btsguardar.enabled:=true;
       btscancelar.enabled:=true;
    end;
    if socios.State in [dsbrowse] then
    begin
       Panel14.Enabled:=false;
       btsnuevo.enabled:=true;
       btsborrar.enabled:=true;
       btsmodificar.enabled:=true;
       btsguardar.enabled:=false;
       btscancelar.enabled:=false;
    end;
end;

procedure Tsociosproductores.ExportaraExcel(FileNameXLS, SheetName: String; DBGrid: TDBGrid; ProgressBarXls: TProgressBar);

  procedure ProgressBarInit;
  begin
    ProgressBarXls.Max := DBGrid.DataSource.DataSet.RecordCount;
    ProgressBarXls.Position := 0;
    ProgressBarXls.Visible := True;
  end;

const
  xlWBATworksheet = -4167;
var
  Excel, WorkBook, WorkSheet: OleVariant;
  I, J: Integer;
  PBookmark: TBookmark;
begin
  // Guardar la posición en la DB y desactivar que se mueva el registro
  PBookmark := DBGrid.DataSource.DataSet.GetBookmark;
  DBGrid.DataSource.DataSet.DisableControls;
  DBGrid.DataSource.DataSet.First;

  // Comprobar si existe el component TProgressBar
  if (ProgressBarXls <> nil) then
    ProgressBarInit;

  // Crear instancia de la aplicación Excel
  Excel := CreateOleObject('Excel.Application');

  // Evitar que nos pregunte si deseamos sobreescribir el archivo
  Excel.DisplayAlerts := False;

  // Agregar libro de trabajo
  WorkBook := Excel.Workbooks.Add(xlWBATWorksheet);

  // Tomar una referencia a la hoja creada
  WorkSheet := WorkBook.WorkSheets[1];

  // Se  describe el nombre de la hoja
  WorkSheet.Name := SheetName;

  // Llenamos las celdas
  //    Toma en cuenta que las columnas y filas empiezan en 1, y que en el
  // WorkSheet.Cells[I, J], I es la fila y J es la columna.

  //   Extrae los nombres de los campos del DBGrid y los coloca en el primer registro,
  // excluyendo los campos que están ocultos
  for J := 0 to DBGrid.FieldCount -1 do
    if DBGrid.Fields[J].Visible then
    begin
      // Poner la fuente de letra en Negrita
      WorkSheet.Cells[1, J +1].Font.Bold := True;
      // Centrar la celda
//      WorkSheet.Cells[1, J +1].HorizontalAlignment := xlCenter;
      // Asignamos Valor del titulo del DBrid
      WorkSheet.Cells[1, J +1] := DBGrid.Columns[J].Title.Caption;
    end;

  // Guardar los registros
  for I := 0 to DBGrid.DataSource.DataSet.RecordCount -1 do
  begin
    // Identificamos los campos y lo grabamos según su tipo
    for J := 0 to DBGrid.FieldCount -1 do
      case DBGrid.Fields[J].DataType of
        ftAutoInc, ftBytes, ftInteger, ftSmallint, ftWord: // Auto o Numérico
          WorkSheet.Cells[I +2, J +1] := DBGrid.Fields[J].AsInteger;
        ftBCD, ftFloat, ftCurrency: // Numérico con decimales
          WorkSheet.Cells[I +2, J +1] := DBGrid.Fields[J].AsFloat;
        ftDateTime, ftDate, ftTime: // Fecha y Hora
          WorkSheet.Cells[I +2, J +1] := DBGrid.Fields[J].AsDateTime;
        else // Todo lo demas caracteres
          WorkSheet.Cells[I +2, J +1] := DBGrid.Fields[J].AsString;
      end;

    // Saltamos de registro
    DBGrid.DataSource.DataSet.Next;

    // Comprobar si existe el component TProgressBar
    if (ProgressBarXls <> nil) then
      ProgressBarXls.Position := ProgressBarXls.Position +1;
  end;

  // Comprobar si existe el component TProgressBar
  if (ProgressBarXls <> nil) then
    ProgressBarXls.Visible := False;

  // Redimensionar todas las celdas para que esten según su tamaño
  WorkSheet.Cells.Columns.AutoFit;

  // Guardar el archivo
  WorkBook.SaveAs(FileNameXLS);

  // Cierra el archivo
  WorkBook.Close(FileNameXLS);

  // Salir de Excel
  Excel.Quit;

  // posicionar el registro donde estaba
  DBGrid.DataSource.DataSet.GotoBookmark(PBookmark);
  DBGrid.DataSource.DataSet.FreeBookmark(PBookmark);
  DBGrid.DataSource.DataSet.EnableControls;
end;
procedure Tsociosproductores.AppMessage(var Msg: TMSg; Var Handled:Boolean);
 var
  actual : TWincontrol;
 begin
 if Msg.message = WM_KEYDOWN then
    begin

    // esto es para controlar que con la flecha abajo se desplegen las
    // listas

    if Msg.wParam = VK_DOWN then
      begin
      Actual := Screen.ActiveControl;
      if Actual is TDBLookupComboBox then
            if not TDBLookupComboBox(Screen.ActiveForm.ActiveControl).listVisible then
               TDBLookupComboBox(Screen.ActiveForm.ActiveControl).DropDown;

      // si utilizas las RX
   {   if Actual is TRxDBLookupCombo then
            if not TRxDBLookupCombo(Screen.ActiveForm.ActiveControl).listVisible then
               TRxDBLookupCombo(Screen.ActiveForm.ActiveControl).DropDown;

    }
      if Actual is TComboBox then
         SendMessage(TComboBox(Screen.ActiveForm.ActiveControl).Handle,CB_SHOWDROPDOWN,-1,0);

      if (Actual is TCustomEdit) then
          Msg.wParam := VK_TAB;
      // se pueden añadir mas controles....

      end;

    // y aqui es el control del intro.
    if Msg.wParam = VK_RETURN THEN
       begin
       Actual := Screen.ActiveControl;
       // para los edit.
       if (Actual is TCustomEdit) and
          not (Actual is TCustomMemo) then
          Msg.wParam := VK_TAB;

       // para los memo. Con ctrl + enter se salta de linea dentro del
       // memo, si solo es intro salta al siguiente control
       if (Actual is TCustomMemo) and
          (HiWord(GetKeyState(VK_CONTROL)) = 0)then
          Msg.wParam := VK_TAB;

       // para los lookup
       if Actual is TDBLookupComboBox then
          if not TDBLookupComboBox(Actual).listVisible then
             Msg.wParam := VK_TAB;

       // Si utilizas las RX
{       if Actual is TRxDBLookupCombo then
          if not TRxDBLookupCombo(Actual).listVisible then
             Msg.wParam := VK_TAB;
 }
       // Los combobox
       if Actual is TCustomComboBox then
          if not TCustomComboBox(Actual).DroppedDown then
             Msg.wParam := VK_TAB;

       // el radiobutton
       if Actual is TRadioButton then
          Msg.wParam := VK_TAB;

       // en el grid
       if Actual is TDBGrid then
          if (TDBGrid(Actual).ReadOnly) or
             (HiWord(GetKeyState(VK_CONTROL)) = 1)then
             Msg.wParam := VK_TAB;

       // o esto otro Con Ctrl + intro siguiente celda con
       // ctrl + shift + intro celda anterior
       // es complicado pero es por no liar con el intro solo
       // que siempre pasa de un control a otro.
       if Actual is TDBGrid then
          begin
          if (TDBGrid(Actual).ReadOnly) or
             (HiWord(GetKeyState(VK_CONTROL)) = 0) then
             Msg.wParam := VK_TAB
          else
             if not(HiWord(GetKeyState(VK_SHIFT)) = 0) then
                begin
                if TDBGrid(Actual).selectedindex > 0 then             { increment the field }
                   TDBGrid(Actual).selectedindex := TDBGrid(Actual).selectedindex -1
                else
                   TDBGrid(Actual).selectedindex := TDBGrid(Actual).fieldcount -1;
                end
             else
                begin
                if TDBGrid(Actual).selectedindex < (TDBGrid(Actual).fieldcount -1) then             { increment the field }
                   TDBGrid(Actual).selectedindex := TDBGrid(Actual).selectedindex +1
                else
                   TDBGrid(Actual).selectedindex := 0;
                end;
          end;


       // ListBox
       if Actual is TCustomListBox then
          Msg.wParam := VK_TAB;

       // TabControl
       if Actual is TCustomTabControl then
          Msg.wParam := VK_TAB;

       // Aqui se pondrían todos los controles que usamos en la
       // aplicación y necesitamos cambiar el tab por intro.
       // de esta forma te despreocupas de cuantos añades y es más
       // limpio el código

       end;
    end;
 end;

procedure TSociosProductores.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then Key :=9;
    end;

end;

procedure TSociosProductores.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 TSociosProductores.FormShow(Sender: TObject);
begin
    qsocios.Close;
    qsocios.Open;
    qsocios2.Close;
    qsocios2.Open;
    socios.Close;
    socios.Open;
    qparcelas.Close;
    qparcelas.Open;
    parcelas.Close;
    parcelas.Open;
    parcelas_recintos.Close;
    parcelas_recintos.Open;
    qcampanyas.Close;
    qcampanyas.Open;
    qcultivos.Close;
    qcultivos.Open;
    datosproductores.ActivePageIndex:=0;
    detallesproductores.ActivePageIndex:=0;
    tsocioside:=dm.tempresaid.asinteger;
    combocampanyas.KeyValue:=qcampanyasdescripcion.Asstring;
end;

procedure TSociosProductores.qestadisticas_mpCalcFields(DataSet: TDataSet);
var venvasados,vfacturables,vrecolectados,vdesechos:real;
begin
  if qestadisticas_mpkgenvasados.AsString='' then venvasados:=0 else venvasados:=qestadisticas_mpkgenvasados.asfloat;
  if qestadisticas_mpkgfacturables.AsString='' then vfacturables:=0 else vfacturables:=qestadisticas_mpkgfacturables.asfloat;;
  if qestadisticas_mpkgrecolectados.AsString='' then vrecolectados:=0 else vrecolectados:=qestadisticas_mpkgrecolectados.asfloat;
  if qestadisticas_mpdesechos.AsString='' then vdesechos:=0 else vdesechos:=qestadisticas_mpdesechos.asfloat;;

  if vrecolectados=0 then vrecolectados:=1;
  if venvasados=0 then venvasados:=1;

  qestadisticas_mpmermaventa.value:=((venvasados-vfacturables)*100)/venvasados;
  qestadisticas_mpmermarecoleccion.value:=(vrecolectados-venvasados-vdesechos)*100/vrecolectados;
end;

procedure TSociosProductores.qestadisticas_mpeCalcFields(DataSet: TDataSet);
var venvasados,vfacturables,vrecolectados,vdesechos:real;
begin
  if qestadisticas_mpekgenvasados.AsString='' then venvasados:=0 else venvasados:=qestadisticas_mpekgenvasados.asfloat;
  if qestadisticas_mpekgfacturables.AsString='' then vfacturables:=0 else vfacturables:=qestadisticas_mpekgfacturables.asfloat;;
  if qestadisticas_mpekgrecolectados.AsString='' then vrecolectados:=0 else vrecolectados:=qestadisticas_mpekgrecolectados.asfloat;
  if qestadisticas_mpedesechos.AsString='' then vdesechos:=0 else vdesechos:=qestadisticas_mpedesechos.asfloat;;

  if vrecolectados=0 then vrecolectados:=1;
  if venvasados=0 then venvasados:=1;

  qestadisticas_mpemermaventa.value:=((venvasados-vfacturables)*100)/venvasados;
end;

procedure TSociosProductores.qestadisticas_pCalcFields(DataSet: TDataSet);
var venvasados,vfacturables,vrecolectados,vdesechos:real;
begin
  if qestadisticas_pkgenvasados.AsString='' then venvasados:=0 else venvasados:=qestadisticas_pkgenvasados.asfloat;
  if qestadisticas_pkgfacturables.AsString='' then vfacturables:=0 else vfacturables:=qestadisticas_pkgfacturables.asfloat;;
  if qestadisticas_pkgrecolectados.AsString='' then vrecolectados:=0 else vrecolectados:=qestadisticas_pkgrecolectados.asfloat;
  if qestadisticas_pdesechos.AsString='' then vdesechos:=0 else vdesechos:=qestadisticas_pdesechos.asfloat;;

  if vrecolectados=0 then vrecolectados:=1;
  if venvasados=0 then venvasados:=1;

  qestadisticas_pmermaventa.value:=((venvasados-vfacturables)*100)/venvasados;
  qestadisticas_pmermarecoleccion.value:=(vrecolectados-venvasados-vdesechos)*100/vrecolectados;

end;

procedure TSociosProductores.qparcelasBeforeOpen(DataSet: TDataSet);
var filtrolocal:string;
begin
    if filtro<>'' then
    begin
       begin
         filtrolocal:=' where nombre like('+''''+filtro+''''+') or codpar like('+''''+filtro+''''+')';
       end;
      if vertodos=0 then
      begin
         filtrolocal:=' where (nombre like('+''''+filtro+''''+') or codpar like('+''''+filtro+''''+')';
         filtrolocal:=filtrolocal+') and activo=1 ';
      end;
      if vertodos=1 then
      begin
         filtrolocal:=' where (nombre like('+''''+filtro+''''+') or codpar like('+''''+filtro+''''+')';
         filtrolocal:=filtrolocal+')';
      end;
    end;

    if filtro='' then
    begin
      filtrolocal:='';
      if vertodos=0 then
      begin
          filtrolocal:=' where activo=1 ';
      end;
      if vertodos=1 then
      begin
          filtrolocal:='';
      end;
    end;


    qparcelas.SQL.Clear;
    qparcelas.SQL.Add('select empresa,codpar,nombre,variedad,propietario from parcelas ' + filtrolocal +' order by codpar,nombre')


end;

procedure TSociosProductores.qsociosBeforeOpen(DataSet: TDataSet);
var filtrolocal:string;
begin
    if filtro<>'' then
    begin
       begin
         filtrolocal:=' where nombre like('+''''+filtro+''''+') or nombre_corto like('+''''+filtro+''''+') or id like('+''''+filtro+''''+')';
       end;
      if vertodos=0 then
      begin
          begin
            filtrolocal:=' where (nombre like('+''''+filtro+''''+') or nombre_corto like('+''''+filtro+''''+') or id like('+''''+filtro+''''+')';
            filtrolocal:=filtrolocal+') and activo=1 ';
          end;
      end;
    end;

    if filtro='' then
    begin
      filtrolocal:='';
      if vertodos=0 then
      begin
          filtrolocal:=' where activo=1 ';
      end;
    end;


    qsocios.SQL.Clear;
    qsocios.SQL.Add('select id,nombre_corto,ide from propietarios ' + filtrolocal +' order by nombre_corto')



end;

procedure TSociosProductores.tbuscarChange(Sender: TObject);
begin
    filtro:='%'+tbuscar.Text+'%';
    if todosclientes.Checked then vertodos:=1 else vertodos:=0;
    qsocios.Close;
    qsocios.open;
end;

procedure TSociosProductores.tbuscarparcelasChange(Sender: TObject);
begin
    filtro:='%'+tbuscarparcelas.Text+'%';
    if todasparcelas.Checked then vertodos:=1 else vertodos:=0;
    qparcelas.Close;
    qparcelas.open;
end;

procedure TSociosProductores.tkparcelaClick(Sender: TObject);
begin
  btactualizar.Click;
end;

procedure TSociosProductores.todosclientesClick(Sender: TObject);
begin
    if todosclientes.Checked=true then
    begin
        vertodos:=1;
        qsocios.Close;
        qsocios.SQL.Clear;
        qsocios.SQL.add('select * from propietarios order by nombre asc');
        qsocios.Open;
    end else
    begin
        vertodos:=0;
        qsocios.Close;
        qsocios.SQL.Clear;
        qsocios.SQL.add('select * from propietarios where activo=1 order by nombre asc');
        qsocios.Open;
    end;
end;

end.
