unit fproductores;

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, Vcl.StdCtrls, Vcl.DBCtrls, Vcl.Mask,
  Vcl.ComCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls,  Data.DB,
   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: TFDQuery;
    qsocios: TFDQuery;
    dssocios: TDataSource;
    qsociosid: TIntegerField;
    qsocioside: TIntegerField;
    parcelas: TFDQuery;
    dsparcelas: TDataSource;
    dsqenvasados: TDataSource;
    dsqparcelas: TDataSource;
    qparcelas: TFDQuery;
    Panel147: TPanel;
    DBGrid20: TDBGrid;
    Panel148: TPanel;
    Label298: TLabel;
    todasparcelas: TCheckBox;
    tbuscarparcelas: TEdit;
    dsqcampanyas: TDataSource;
    qcampanyas: TFDQuery;
    qcampanyasid: TIntegerField;
    qcampanyasdescripcion: TWideStringField;
    qcampanyasfechainicio: TDateField;
    qcampanyasfechafin: TDateField;
    qaux: TFDQuery;
    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: TFDQuery;
    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: TFDQuery;
    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: TFDQuery;
    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: TFDQuery;
    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: TFDQuery;
    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: TFDQuery;
    Edit1: TEdit;
    Label18: TLabel;
    qentradasdetalle: TFDQuery;
    qenvasadosdetalle: TFDQuery;
    qdesechosdetalle: TFDQuery;
    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_mpeIniciorecoleccin: TDateField;
    qestadisticas_mpeFinrecoleccin: TDateField;
    qestadisticas_mpeMermaVenta: TFloatField;
    qentradasdetalleId: TIntegerField;
    qentradasdetalleLote: TIntegerField;
    qentradasdetalleFecha: TDateField;
    qentradasdetalleParcela: TWideStringField;
    qentradasdetalleMatriaPrima: TWideStringField;
    qentradasdetalleEnvase: TWideStringField;
    qentradasdetalleNEnvases: TIntegerField;
    qentradasdetalleUbicacinactual: TWideStringField;
    qentradasdetallePesoneto: TFloatField;
    qentradasdetallePesoFacturable: TFloatField;
    qenvasadosdetalleId: TIntegerField;
    qenvasadosdetalleLote: TIntegerField;
    qenvasadosdetalleFecha: TDateField;
    qenvasadosdetalleParcela: TWideStringField;
    qenvasadosdetalleMatriaPrima: TWideStringField;
    qenvasadosdetalleEnvase: TWideStringField;
    qenvasadosdetalleNEnvases: TIntegerField;
    qenvasadosdetalleUbicacinactual: TWideStringField;
    qenvasadosdetallePesoneto: TFloatField;
    qenvasadosdetallePesoFacturable: TFloatField;
    qdesechosdetalleId: TIntegerField;
    qdesechosdetalleLote: TIntegerField;
    qdesechosdetalleFecha: TDateField;
    qdesechosdetalleParcela: TWideStringField;
    qdesechosdetalleMatriaPrima: TWideStringField;
    qdesechosdetalleEnvase: TWideStringField;
    qdesechosdetalleNEnvases: TIntegerField;
    qdesechosdetalleUbicacinactual: TWideStringField;
    qdesechosdetallePesoneto: TFloatField;
    qdesechosdetallePesoFacturable: TFloatField;
    dsqdesechos: TDataSource;
    dsqentradas: TDataSource;
    qestadisticas_p: TFDQuery;
    qestadisticas_mp: TFDQuery;
    qestadisticas_mpMateriaPrima: TWideStringField;
    qestadisticas_mpKgRecolectados: TFloatField;
    qestadisticas_mpKgEnvasados: TFloatField;
    qestadisticas_mpKgFacturables: TFloatField;
    qestadisticas_mpKgFacturados: TFloatField;
    qestadisticas_mpDesechos: TFloatField;
    qestadisticas_mpIniciorecoleccin: TDateField;
    qestadisticas_mpFinrecoleccin: 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_pIniciorecoleccin: TDateField;
    qestadisticas_pFinrecoleccin: TDateField;
    qestadisticas_pmermaVenta: TFloatField;
    qestadisticas_pMermaRecoleccion: TFloatField;
    Button7: TButton;
    tdesde: TDateTimePicker;
    thasta: TDateTimePicker;
    Label24: TLabel;
    Label25: TLabel;
    DBLookupComboBox2: TDBLookupComboBox;
    Label26: TLabel;
    qtipospropiedad: TFDQuery;
    Label27: TLabel;
    dsqtipospropiedad: TDataSource;
    combotipouso: TDBLookupComboBox;
    qtipospropiedadpropiedad: TWideStringField;
    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,vparcela,vpropiedad: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
      vparcela:=qparcelascodpar.AsString;
      if vparcela='-1' then vparcela:='%%';
      vpropiedad:=qtipospropiedad.FieldByName('propiedad').AsString;
      if vpropiedad=' TODAS' then vpropiedad:='%%';

      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.paramByname('PARCELA').ASSTRING:=vparcela;
      qestadisticas_p.paramByname('PROPIEDAD').ASSTRING:=vpropiedad;
      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 posicin 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 aplicacin 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 estn 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 segn su tipo
    for J := 0 to DBGrid.FieldCount -1 do
      case DBGrid.Fields[J].DataType of
        ftAutoInc, ftBytes, ftInteger, ftSmallint, ftWord: // Auto o Numrico
          WorkSheet.Cells[I +2, J +1] := DBGrid.Fields[J].AsInteger;
        ftBCD, ftFloat, ftCurrency: // Numrico 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 segn su tamao
  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 aadir 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 pondran todos los controles que usamos en la
       // aplicacin y necesitamos cambiar el tab por intro.
       // de esta forma te despreocupas de cuantos aades y es ms
       // limpio el cdigo

       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;
    qtipospropiedad.Open;
    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 vparcelasactivas,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')
 }
 if tbuscarparcelas.Text='' then tbuscarparcelas.Text:='%';
 if todasparcelas.Checked then vparcelasactivas:='%' else vparcelasactivas:='1';


 qparcelas.Prepare;
 qparcelas.ParamByName('NOMBRE').AsString:=tbuscarparcelas.Text;
 qparcelas.ParamByName('CODPAR').AsString:=tbuscarparcelas.text;
 qparcelas.ParamByName('ACTIVO').AsString:=vparcelasactivas;

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.
