unit fdatos;

interface

uses
  System.SysUtils, System.Classes, ZAbstractConnection, ZConnection, Data.DB,bde.dbtables,
  ZAbstractRODataset, ZAbstractDataset, ZDataset,
  Winapi.Windows, Winapi.Messages,  Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus, Vcl.ExtCtrls,
  Vcl.Grids, Vcl.DBGrids,
  Vcl.Tabs, Vcl.ComCtrls, Vcl.Mask, Vcl.DBCtrls,
  Vcl.ExtDlgs, Vcl.Imaging.jpeg, frxClass, frxDBSet,
  frxExportPDF, frxBarcode, Vcl.Buttons,

  System.Variants,ZAbstractTable;

type
  TDM = class(TDataModule)
    dsqmovimientos: TDataSource;
    qmovimientos: TZQuery;
    qcalendario: TZQuery;
    qcalendariofecha: TDateField;
    qcalendariofestivo: TIntegerField;
    qcalendarioalmuerzo: TIntegerField;
    qcalendariomerienda: TIntegerField;
    qempresas: TZQuery;
    qempresasid: TIntegerField;
    qempresascif: TWideStringField;
    qempresasnombre: TWideStringField;
    qempresasdireccion: TWideStringField;
    qempresascodpost: TWideStringField;
    qempresaspoblacion: TWideStringField;
    qempresasprovincia: TWideStringField;
    qempresasemail: TWideStringField;
    qempresastelefono1: TWideStringField;
    qempresastelefono2: TWideStringField;
    qempresascontacto: TWideStringField;
    qempresascontingenciacomfij: TFloatField;
    qempresassalariobasedia: TFloatField;
    qempresascontingenciasdia: TFloatField;
    qempresasirpf: TFloatField;
    qempresasdesempleo: TFloatField;
    qempresasformacion: TFloatField;
    qempresascontingencias: TFloatField;
    qempresasirpf2: TFloatField;
    qempresasdesempleo2: TFloatField;
    qempresasformacion2: TFloatField;
    qempresascontingencias2: TFloatField;
    qempresascc_iban: TWideStringField;
    qempresascc_entidad: TWideStringField;
    qempresascc_oficina: TWideStringField;
    qempresascc_dc: TWideStringField;
    qempresascc_cc: TWideStringField;
    qempresasajusteentrada: TIntegerField;
    qempresasajustesalida: TIntegerField;
    qempresasporcbloqueo: TIntegerField;
    qempresasactive: TIntegerField;
    qempresasult_envio: TIntegerField;
    qempresasregistro_sanitario: TWideStringField;
    qempresascoste_kg_gen: TFloatField;
    qempresasporc_segsocial: TFloatField;
    qempresasprecio_venta_desperdicios: TFloatField;
    trabajadores: TZQuery;
    qaux2: TZQuery;
    dbcontrol: TZConnection;
    qticados: TZQuery;
    qticadosid: TLargeintField;
    qticadoside: TSmallintField;
    qticadosfecha: TDateField;
    qticadosidt: TIntegerField;
    qticadosTRABAJADOR: TWideStringField;
    qmovimientos2: TZQuery;
    qmovimientosid: TLargeintField;
    qmovimientoside: TSmallintField;
    qmovimientosfecha: TDateField;
    qmovimientosidt: TIntegerField;
    qmovimientosTRABAJADOR: TWideStringField;
    qmovimientosentradam: TTimeField;
    qmovimientossalidam: TTimeField;
    qmovimientossalidam_m: TTimeField;
    qmovimientoshorasm: TFloatField;
    qmovimientoshorasm_m: TFloatField;
    qmovimientosentradat: TTimeField;
    qmovimientossalidat: TTimeField;
    qmovimientossalidat_m: TTimeField;
    qmovimientoshorast: TFloatField;
    qmovimientoshorast_m: TFloatField;
    qmovimientosnum_horas: TFloatField;
    qmovimientosnum_horas_m: TFloatField;
    qmovimientosimprimir: TIntegerField;
    qmovimientosobservaciones: TWideStringField;
    qmovimientosfestivo: TIntegerField;
    qmovimientos2fecha: TDateField;
    qmovimientos2idt: TIntegerField;
    qmovimientos2entrada: TTimeField;
    qmovimientos2salida: TTimeField;
    dsqmovimientos2: TDataSource;
    qmovimientos2trabajador: TWideStringField;
    qaux2id: TLargeintField;
    qaux2ide: TSmallintField;
    qaux2fecha: TDateField;
    qaux2idt: TIntegerField;
    qaux2TRABAJADOR: TWideStringField;
    qempleados: TZReadOnlyQuery;
    dsempleados: TDataSource;
    dsqempleados: TDataSource;
    qtrabajadores: TZReadOnlyQuery;
    dsqtrabajadores: TDataSource;
    trabajadoreside: TIntegerField;
    trabajadoresID: TSmallintField;
    trabajadoresNIF: TWideStringField;
    trabajadoresnombre: TWideStringField;
    trabajadoresactivo: TIntegerField;
    trabajadoresNOMBRECORTO: TWideStringField;
    trabajadoresAPELLIDOS: TWideStringField;
    trabajadoresDIRECCION: TWideStringField;
    trabajadoresCP: TWideStringField;
    trabajadoresPOBLACION: TWideStringField;
    trabajadoresPROVINCIA: TWideStringField;
    trabajadoresFECHANACIMIENTO: TDateField;
    trabajadoresPAISNAC: TWideStringField;
    trabajadoresNACIONALIDAD: TWideStringField;
    trabajadoresSEXO: TWideStringField;
    trabajadoresCBIBAN: TWideStringField;
    trabajadoresCBBANCO: TWideStringField;
    trabajadoresCBOFICINA: TWideStringField;
    trabajadoresCBDC: TWideStringField;
    trabajadoresCBCC: TWideStringField;
    trabajadoresPAGARPORBANCO: TIntegerField;
    trabajadoresTELEFONO1: TWideStringField;
    trabajadoresTELEFONO2: TWideStringField;
    trabajadoresTELEFONO3: TWideStringField;
    trabajadoresTELEFONO4: TWideStringField;
    trabajadoresREGIMEN_COT: TWideStringField;
    trabajadoresNUMSEGSOCIAL: TWideStringField;
    trabajadoresIRPF: TFloatField;
    trabajadoresIRPF2: TFloatField;
    trabajadoresDESEMPLEO: TFloatField;
    trabajadoresDESEMPLEO2: TFloatField;
    trabajadoresFORMACION: TFloatField;
    trabajadoresFORMACION2: TFloatField;
    trabajadoresOBSERVACIONES: TWideStringField;
    trabajadoresFECHAALTA: TDateField;
    trabajadoresFECHABAJA: TDateField;
    trabajadoresCONTINGENCIAS: TFloatField;
    trabajadoresempresa: TIntegerField;
    trabajadoresseleccionado: TIntegerField;
    trabajadorescodart: TWideStringField;
    qempleadosnombre: TWideStringField;
    qempleadoside: TIntegerField;
    qempleadosid: TSmallintField;
    qtrabajadoreside: TIntegerField;
    qtrabajadoresID: TSmallintField;
    qtrabajadoresNIF: TWideStringField;
    qtrabajadoresnombre: TWideStringField;
    qtrabajadoresactivo: TIntegerField;
    qtrabajadoresNOMBRECORTO: TWideStringField;
    qtrabajadoresAPELLIDOS: TWideStringField;
    qtrabajadoresDIRECCION: TWideStringField;
    qtrabajadoresCP: TWideStringField;
    qtrabajadoresPOBLACION: TWideStringField;
    qtrabajadoresPROVINCIA: TWideStringField;
    qtrabajadoresFECHANACIMIENTO: TDateField;
    qtrabajadoresPAISNAC: TWideStringField;
    qtrabajadoresNACIONALIDAD: TWideStringField;
    qtrabajadoresSEXO: TWideStringField;
    qtrabajadoresCBIBAN: TWideStringField;
    qtrabajadoresCBBANCO: TWideStringField;
    qtrabajadoresCBOFICINA: TWideStringField;
    qtrabajadoresCBDC: TWideStringField;
    qtrabajadoresCBCC: TWideStringField;
    qtrabajadoresPAGARPORBANCO: TIntegerField;
    qtrabajadoresTELEFONO1: TWideStringField;
    qtrabajadoresTELEFONO2: TWideStringField;
    qtrabajadoresTELEFONO3: TWideStringField;
    qtrabajadoresTELEFONO4: TWideStringField;
    qtrabajadoresREGIMEN_COT: TWideStringField;
    qtrabajadoresNUMSEGSOCIAL: TWideStringField;
    qtrabajadoresIRPF: TFloatField;
    qtrabajadoresIRPF2: TFloatField;
    qtrabajadoresDESEMPLEO: TFloatField;
    qtrabajadoresDESEMPLEO2: TFloatField;
    qtrabajadoresFORMACION: TFloatField;
    qtrabajadoresFORMACION2: TFloatField;
    qtrabajadoresOBSERVACIONES: TWideStringField;
    qtrabajadoresFECHAALTA: TDateField;
    qtrabajadoresFECHABAJA: TDateField;
    qtrabajadoresCONTINGENCIAS: TFloatField;
    qtrabajadoresempresa: TIntegerField;
    qtrabajadoresseleccionado: TIntegerField;
    qtrabajadorescodart: TWideStringField;
    qaux2ENTRADA_REAL: TTimeField;
    qaux2SALIDA_REAL: TTimeField;
    qticadosENTRADA_REAL: TTimeField;
    qticadosSALIDA_REAL: TTimeField;
    trabajadoresIMAGEN: TIntegerField;
    qtrabajadoresIMAGEN: TIntegerField;
    trabajadoresFIJO: TSmallintField;
    trabajadoresFIJODISCONTINUO: TSmallintField;
    trabajadoresTEMPORAL: TSmallintField;
    trabajadorescontrolcalidad: TIntegerField;
    trabajadoreshorascontrato: TFloatField;
    qtrabajadorescontrolcalidad: TIntegerField;
    qtrabajadoreshorascontrato: TFloatField;
    qtrabajadoresFIJO: TIntegerField;
    qtrabajadoresFIJODISCONTINUO: TIntegerField;
    qtrabajadoresTEMPORAL: TIntegerField;
    qticadostiempo: TFloatField;
    qticadoscentro: TWideStringField;
    trabajadoresgrupo: TIntegerField;
    trabajadoresnum_taquilla: TIntegerField;
    trabajadoresemail: TWideStringField;
    trabajadoresconvocatoria: TWideStringField;
    trabajadoresresponsable: TIntegerField;
    trabajadoresfumigador: TIntegerField;
    trabajadoresjornada_continua: TSmallintField;
    trabajadoressalariobasedia: TFloatField;
    trabajadoresretencion_me: TFloatField;
    procedure DataModuleCreate(Sender: TObject);
    procedure dsempleadosStateChange(Sender: TObject);
    procedure trabajadoresAfterPost(DataSet: TDataSet);
    procedure trabajadoresAfterDelete(DataSet: TDataSet);
    procedure qempleadosAfterClose(DataSet: TDataSet);
    procedure dsqempleadosDataChange(Sender: TObject; Field: TField);
  private
    { Private declarations }
  public
    { Public declarations }
    var filtro:string;
        vertodos:integer;
        centrotrabajo:string;
  end;

var
  DM: TDM;
implementation
  uses fempleados;
{%CLASSGROUP 'Vcl.Controls.TControl'}

{$R *.dfm}

procedure TDM.DataModuleCreate(Sender: TObject);
Var F: TextFile;
    sLinea,thost,tuser,tpass,tdb: String;
    hora1,hora2,hora3:ttime;
    configuracion:array of string;
    linea,x:integer;

begin
  inherited;
  AssignFile( F, 'c:\windows\system\config.ini' );
  Reset( F );
  linea:=0;
  setlength (configuracion,5);
  for x:=1 to 5 do
  begin
    ReadLn( F, sLinea );
    configuracion[linea]:=sLinea;
    linea:=linea+1;
  end;

  CloseFile( F );
    thost:=configuracion[0];
    tuser:=configuracion[1];
    tpass:=configuracion[2];
    tdb:=configuracion[3];
    centrotrabajo:=configuracion[4];
    dbcontrol.Connected:=false;
    dbcontrol.HostName:=thost;
    dbcontrol.User:=tuser;
    dbcontrol.Database:=tdb;
    dbcontrol.Password:=tpass;
    try
      dbcontrol.connected:=true;
    except
      showmessage('Error de conexion a la base de datos');
    end;
end;

procedure TDM.dsempleadosStateChange(Sender: TObject);
begin
   if trabajadores.State in [dsedit,dsinsert] then
   begin
       empleados.btenuevo.Enabled:=false;
       empleados.bteborrar.Enabled:=false;
       empleados.btemodificar.Enabled:=false;
       empleados.bteguardar.Enabled:=true;
       empleados.btecancelar.Enabled:=true;
       empleados.Pempleadosdatos.Enabled:=true;
   end else
   begin
       empleados.btenuevo.Enabled:=true;
       empleados.bteborrar.Enabled:=true;
       empleados.btemodificar.Enabled:=true;
       empleados.bteguardar.Enabled:=false;
       empleados.btecancelar.Enabled:=false;
       empleados.Pempleadosdatos.Enabled:=false;

   end;
end;

procedure TDM.dsqempleadosDataChange(Sender: TObject; Field: TField);
var img:TPicture;
    blob: TblobStream;
    ext:string;
    fichero:pwidechar;
begin
    empleados.imagee.Picture:=nil;
//    ext:=trabajadorestipoimagen.asstring;
//    trabajadoresimagen.savetofile('c:\controlgest\imagenes\temp'+ext);
    if (ext='.jpg') or (ext='.jpeg') or (ext='.bmp') then
    begin
        empleados.imagee.Picture.LoadFromFile('c:\controlgest\imagenes\temp'+ext);
    end;
//    fichero:= 'c:\controlgest\imagenes\temp'+ext;
//    if FileExists('c:\controlgest\imagenes\temp'+ext) then DeleteFile(fichero);

end;

procedure TDM.qempleadosAfterClose(DataSet: TDataSet);
var filtrolocal:string;
begin
    if filtro<>'' then
    begin
       begin
         filtrolocal:=' where nombre like('+''''+filtro+''''+') or id like('+''''+filtro+''''+')';
       end;
      if vertodos=0 then
      begin
          begin
            filtrolocal:=' where (nombre 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;
    qempleados.SQL.Clear;
    qempleados.SQL.Add('select id,nombre,ide from trabajadores ' + filtrolocal +' order by nombre')

end;

procedure TDM.trabajadoresAfterDelete(DataSet: TDataSet);
begin
    qempleados.Refresh;
end;

procedure TDM.trabajadoresAfterPost(DataSet: TDataSet);
var ide,id:string;
begin
    ide:=trabajadoreside.asstring;
    id:=trabajadoresid.asstring;
    qempleados.Refresh;
    qempleados.Locate('id',id,[locaseinsensitive,lopartialkey]);
    trabajadores.Close;
    trabajadores.MasterSource:=dsqempleados;
    trabajadores.Open;
end;

end.
