{ =============================================================================== Copyright (©) 2005. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 08-06-2005 Versión actual: 1.0.0 Fecha versión actual: 08-06-2005 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit TablaTareas; interface uses //Generales SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB, //Particulares Contnrs, RxMemDS, //Aplicacion Framework, StrFunc, Entidades, Constantes, BaseDatos, //Contador Contadores, RdxGestorContadores; type TDatosTarea = class(TObjeto) public Codigo : String; FechaAlta : String; UsuarioAlta : String; Usuario : String; Tipo : String; FechaIni : String; HoraIni : String; FechaFin : String; HoraFin : String; Descripcion : String; Observaciones : String; FechaAviso : String; Completada : String; EntryId : String; Borrado : String; UltimoCambio : String; constructor Create; overload; constructor Create(CodigoObra, Codigo : String); overload; procedure ObtenerDatos; override; destructor Destroy; override; end; type TdmTablaTareas = class(TDataModule) private procedure IniciarSQL; public sqlInsertar : TStrings; sqlModificar : TStrings; sqlConsultar : TStrings; sqlEliminar : TStrings; sqlGrid : TStrings; sqlTareasObrasGrid : TStrings; //Metodos que llamaran a contador function DarNuevoCodigo : String; function IncrementarCodigo: boolean; function InsertarContador : boolean; function ValidarCodigo(Codigo : String) : Boolean; function FormatearCodigo(Codigo : String) : String; constructor Create (AOwner : TComponent); override; destructor Destroy; override; function insertarTareaPedidoObra(CodigoContrato, CodigoPedido, CodigoTarea: Variant): Boolean; function eliminarTareasPedidoObra(CodigoContrato: Variant): Boolean; procedure rellenarTareasFase(TablaMem : TRxMemoryData; Codigo: Variant); function insertarTareaInstaladorObra(CodigoContrato, Codigoinstalador, CodigoTarea: Variant): Boolean; function eliminarTareasInstaladorObra(CodigoContrato: Variant): Boolean; procedure InicializarGridTareasObras(var vGrid: TcxGridDBTableView); //Temporal procedure InicializarGrid(var vGrid: TcxGridDBTableView); end; var dmTablaTareas: TdmTablaTareas; implementation {$R *.DFM} uses IBErrorCodes, IB, Literales, Mensajes, Excepciones, cxCheckBox, cxDBLookupComboBox; constructor TdmTablaTareas.Create (AOwner : TComponent); begin inherited; sqlInsertar := TStringList.Create; sqlModificar := TStringList.Create; sqlConsultar := TStringList.Create; sqlEliminar := TStringList.Create; sqlGrid := TStringList.Create; sqlTareasObrasGrid := TStringList.Create; IniciarSQL; end; destructor TdmTablaTareas.Destroy; begin sqlInsertar.Free; sqlModificar.Free; sqlConsultar.Free; sqlEliminar.Free; sqlGrid.Free; sqlTareasObrasGrid.Free; inherited; end; procedure TdmTablaTareas.IniciarSQL; begin with sqlInsertar do begin Add('INSERT INTO TAREAS ('); Add('CODIGO, FECHAALTA, USUARIOALTA, USUARIO, TIPO, FECHAINI, HORAINI, '); Add('FECHAFIN, HORAFIN, DESCRIPCION, OBSERVACIONES, FECHAAVISO, COMPLETADA,'); Add('ENTRYID, BORRADO, ULTIMOCAMBIO)'); Add('VALUES (:CODIGO, :FECHAALTA, :USUARIOALTA, :USUARIO, :TIPO, :FECHAINI, :HORAINI, '); Add(':FECHAFIN, :HORAFIN, :DESCRIPCION, :OBSERVACIONES, :FECHAAVISO, :COMPLETADA,'); Add(':ENTRYID, :BORRADO, :ULTIMOCAMBIO)'); end; with sqlModificar do begin Add('UPDATE TAREAS SET'); Add('FECHAINI = :FECHAINI,'); Add('HORAINI = :HORAINI,'); Add('FECHAFIN = :FECHAFIN,'); Add('HORAFIN = :HORAFIN,'); Add('DESCRIPCION = :DESCRIPCION,'); Add('OBSERVACIONES = :OBSERVACIONES,'); Add('FECHAAVISO = :FECHAAVISO,'); Add('COMPLETADA = :COMPLETADA,'); Add('ENTRYID = :ENTRYID,'); Add('BORRADO = :BORRADO,'); Add('ULTIMOCAMBIO = :ULTIMOCAMBIO'); Add('WHERE (CODIGO = :CODIGO)'); end; with sqlEliminar do begin Add('delete from TAREAS '); Add('WHERE (CODIGO = :CODIGO)'); end; with sqlConsultar do begin Add('select CODIGO, FECHAALTA, USUARIOALTA, USUARIO, TIPO, FECHAINI, HORAINI, '); Add('FECHAFIN, HORAFIN, DESCRIPCION, OBSERVACIONES, FECHAAVISO, COMPLETADA,'); Add('ENTRYID, BORRADO, ULTIMOCAMBIO'); Add('from TAREAS, OBRASTAREAS'); Add('WHERE (OBRASTAREAS.CODIGOTAREA = TAREAS.CODIGO)'); Add('AND (CODIGOCONTRATO = :CODIGOCONTRATO)'); Add('AND (CODIGOPEDIDO = :CODIGOPEDIDO)'); end; with sqlGrid do begin Add('select CODIGOPEDIDO, CODIGO, FECHAALTA, USUARIOALTA, USUARIO, TIPO, FECHAINI, HORAINI, '); Add('FECHAFIN, HORAFIN, DESCRIPCION, OBSERVACIONES, FECHAAVISO, COMPLETADA,'); Add('ENTRYID, BORRADO, ULTIMOCAMBIO'); Add('from TAREAS, OBRASTAREAS'); Add('WHERE (OBRASTAREAS.CODIGOTAREA = TAREAS.CODIGO)'); Add('AND (CODIGOCONTRATO = :CODIGOCONTRATO)'); Add('AND (CODIGOINSTALADOR is null)'); Add('order by CODIGOPEDIDO, CODIGO'); end; with sqlTareasObrasGrid do begin Add('select CODIGO, CODIGOINSTALADOR, FECHAALTA, USUARIOALTA, USUARIO, TIPO, FECHAINI, HORAINI, '); Add('FECHAFIN, HORAFIN, DESCRIPCION, OBSERVACIONES, FECHAAVISO, COMPLETADA,'); Add('ENTRYID, BORRADO, ULTIMOCAMBIO'); Add('from TAREAS, OBRASTAREAS'); Add('WHERE (OBRASTAREAS.CODIGOTAREA = TAREAS.CODIGO)'); Add('AND (CODIGOCONTRATO = :CODIGOCONTRATO)'); Add('AND (CODIGOPEDIDO is null)'); Add('order by CODIGOINSTALADOR, CODIGO'); end; end; { TDatosTarea } constructor TDatosTarea.Create(CodigoObra, Codigo: String); begin inherited Create; Codigo := CodigoObra; // Recuperar los datos ObtenerDatos; end; constructor TDatosTarea.Create; begin inherited Create; end; destructor TDatosTarea.Destroy; begin inherited; end; procedure TDatosTarea.ObtenerDatos; var oSQL : TIBSQL; begin if EsCadenaVacia(Codigo) then raise Exception.Create(msgObrFaltaObr); oSQL := TIBSQL.Create(NIL); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select CODIGO, FECHAALTA, USUARIOALTA, USUARIO, TIPO, FECHAINI,'); SQL.Add('HORAINI, FECHAFIN, HORAFIN, DESCRIPCION, OBSERVACIONES, FECHAAVISO,'); SQL.Add('COMPLETADA, ENTRYID, BORRADO, ULTIMOCAMBIO'); SQL.Add('from TAREAS'); SQL.Add('where CODIGO = :CODIGO'); ParamByName('CODIGO').AsString := Codigo; try Prepare; ExecQuery; // Compruebo si se han recuperado datos if (RecordCount > 0) then begin Codigo := FieldByName('CODIGO').AsString; FechaAlta := FieldByName('FECHAALTA').AsString; UsuarioAlta := FieldByName('USUARIOALTA').AsString; Usuario := FieldByName('USUARIO').AsString; Tipo := FieldByName('TIPO').AsString; FechaIni := FieldByName('FECHAINI').AsString; HoraIni := FieldByName('HORAINI').AsString; FechaFin := FieldByName('FECHAFIN').AsString; HoraFin := FieldByName('HORAFIN').AsString; Descripcion := FieldByName('DESCRIPCION').AsString; Observaciones := FieldByName('OBSERVACIONES').AsString; FechaAviso := FieldByName('FECHAAVISO').AsString; Completada := FieldByName('COMPLETADA').AsString; EntryId := FieldByName('ENTRYID').AsString; Borrado := FieldByName('BORRADO').AsString; UltimoCambio := FieldByName('ULTIMOCAMBIO').AsString; end; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaTareas.DarNuevoCodigo: String; begin Result := GestorContadores.darNuevoCodigo(contTareas); end; function TdmTablaTareas.FormatearCodigo(Codigo: String): String; begin Result := GestorContadores.formatearCodigo(contTareas, Codigo); end; function TdmTablaTareas.IncrementarCodigo: boolean; begin Result := GestorContadores.IncrementarValor(contTareas); end; function TdmTablaTareas.InsertarContador: boolean; begin Result := GestorContadores.InsertarContador(contTareas); end; function TdmTablaTareas.ValidarCodigo(Codigo: String): Boolean; begin Result := GestorContadores.validarCodigo(contTareas, Codigo); end; procedure TdmTablaTareas.InicializarGrid(var vGrid: TcxGridDBTableView); var Columna : TcxGridDBColumn; begin with vGrid do begin OptionsView.Footer := True; {Columna CODIGOPEDIDO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGOPEDIDO'; Columna.Caption := 'Código ped.'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; {Columna CODIGO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGO'; Columna.Caption := 'CODIGO'; Columna.Width := tamColNombre; Columna.Options.Filtering := False; {Columna TIPO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'TIPO'; Columna.Caption := 'Tipo'; Columna.Width := tamColTelefono; Columna.Options.Filtering := False; {Columna FECHAINI} Columna := CreateColumn; Columna.DataBinding.FieldName := 'FECHAINI'; Columna.Caption := 'FechaIni'; Columna.Width := tamColTelefono; Columna.Options.Filtering := False; {Columna FECHAFIN} Columna := CreateColumn; Columna.DataBinding.FieldName := 'FECHAFIN'; Columna.Caption := 'FechaFin'; Columna.Width := tamColTelefono; Columna.Options.Filtering := False; {Columna DESCRIPCION} Columna := CreateColumn; Columna.DataBinding.FieldName := 'DESCRIPCION'; Columna.Caption := 'Descripcion'; Columna.Width := tamColTelefono; Columna.Options.Filtering := False; {Columna COMPLETADA} Columna := CreateColumn; Columna.DataBinding.FieldName := 'COMPLETADA'; Columna.Caption := 'Completada'; Columna.Width := tamColTelefono; Columna.Options.Filtering := False; end; end; function TdmTablaTareas.insertarTareaPedidoObra(CodigoContrato, CodigoPedido, CodigoTarea: Variant): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(CodigoContrato) or EsCadenaVacia(CodigoPedido) or EsCadenaVacia(CodigoTarea) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('insert into OBRASTAREAS '); SQL.Add('(CODIGOCONTRATO, CODIGOPEDIDO, CODIGOTAREA)'); SQL.Add('values(:CODIGOCONTRATO, :CODIGOPEDIDO, :CODIGOTAREA)'); ParamByName('CODIGOCONTRATO').AsString := CodigoContrato; ParamByName('CODIGOPEDIDO').AsString := CodigoPedido; ParamByName('CODIGOTAREA').AsString := CodigoTarea; try Prepare; ExecQuery; Result := True; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaTareas.eliminarTareasPedidoObra(CodigoContrato: Variant): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(CodigoContrato) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('delete from OBRASTAREAS '); SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO'); SQL.Add('and CODIGOPEDIDO is not null'); ParamByName('CODIGOCONTRATO').AsString := CodigoContrato; try Prepare; ExecQuery; Result := True; finally Close; Transaction := NIL; Free; end; end; end; procedure TdmTablaTareas.rellenarTareasFase(TablaMem: TRxMemoryData; Codigo: Variant); var oSQL : TIBSQL; begin if (EsCadenaVacia(Codigo)) or (TablaMem = Nil) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('select CODIGO, NOMBRE, TIPO'); SQL.Add('from TAREASFASES'); try Prepare; ExecQuery; while not EOF do begin TablaMem.Append; TablaMem.FieldByName('CODIGOPEDIDO').AsInteger := Codigo; TablaMem.FieldByName('CODIGO').AsInteger := FieldByName('CODIGO').AsInteger; TablaMem.FieldByName('TIPO').AsString := FieldByName('TIPO').AsString; TablaMem.FieldByName('DESCRIPCION').AsString := FieldByName('NOMBRE').AsString; TablaMem.FieldByName('COMPLETADA').AsInteger := 0; Next; end; finally Close; Transaction := NIL; Free; end; end; end; procedure TdmTablaTareas.InicializarGridTareasObras(var vGrid: TcxGridDBTableView); var Columna : TcxGridDBColumn; begin with vGrid do begin OptionsView.Footer := False; {Columna ID} Columna := CreateColumn; Columna.DataBinding.FieldName := 'ID'; Columna.Caption := 'CODIGO'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; Columna.Visible := False; {Columna CODIGOCONTRATO} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CODIGOCONTRATO'; Columna.Caption := 'CODIGOCONTRATO'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; Columna.Visible := False; {Columna TIPOTAREA} Columna := CreateColumn; Columna.DataBinding.FieldName := 'TIPOTAREA'; Columna.Caption := 'Tipo'; Columna.Width := tamColCodigo; Columna.Options.Filtering := False; Columna.Visible := False; {Columna COMPLETADA} { Columna := CreateColumn; Columna.DataBinding.FieldName := 'COMPLETADA'; Columna.Caption := ' '; Columna.Width := 20; Columna.PropertiesClassName := 'TcxCheckBoxProperties'; Columna.Options.Filtering := False; with TcxCheckBoxProperties(Columna.Properties) do begin DisplayUnchecked := 'False'; ImmediatePost := True; ValueChecked := 1; ValueUnchecked := 0; end;} {Columna FECHAINI} Columna := CreateColumn; Columna.DataBinding.FieldName := 'START'; Columna.Caption := 'Fecha'; Columna.Width := tamColFecha; Columna.Options.Filtering := False; Columna.SortOrder := soAscending; {Columna CODIGOINSTALADOR} Columna := CreateColumn; Columna.DataBinding.FieldName := 'RESOURCEID'; Columna.Caption := 'Instalador'; Columna.Width := tamColNombre; Columna.PropertiesClassName := 'TcxLookupComboBoxProperties'; Columna.Options.Filtering := False; with TcxLookupComboBoxProperties(Columna.Properties) do begin KeyFieldNames := 'CODIGO'; ListColumns.Add.FieldName := 'NOMBRE'; ListOptions.AnsiSort := True; ListOptions.ShowHeader := False; end; {Columna DESCRIPCION} Columna := CreateColumn; Columna.DataBinding.FieldName := 'CAPTION'; Columna.Caption := 'Material entregado'; Columna.Width := tamColNombre; Columna.Options.Filtering := False; {Columna OBSERVACIONES} { Columna := CreateColumn; Columna.DataBinding.FieldName := 'OBSERVACIONES'; Columna.Caption := 'Observaciones'; Columna.Width := tamColNombre; Columna.Options.Filtering := False;} end; end; function TdmTablaTareas.eliminarTareasInstaladorObra(CodigoContrato: Variant): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(CodigoContrato) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('delete from OBRASTAREAS '); SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO'); SQL.Add('and CODIGOINSTALADOR is not null'); ParamByName('CODIGOCONTRATO').AsString := CodigoContrato; try Prepare; ExecQuery; Result := True; finally Close; Transaction := NIL; Free; end; end; end; function TdmTablaTareas.insertarTareaInstaladorObra(CodigoContrato, Codigoinstalador, CodigoTarea: Variant): Boolean; var oSQL : TIBSQL; begin Result := False; if EsCadenaVacia(CodigoContrato) or EsCadenaVacia(CodigoInstalador) or EsCadenaVacia(CodigoTarea) then Exit; oSQL := TIBSQL.Create(Self); with oSQL do begin Database := dmBaseDatos.BD; Transaction := dmBaseDatos.Transaccion; SQL.Add('insert into OBRASTAREAS '); SQL.Add('(CODIGOCONTRATO, CODIGOINSTALADOR, CODIGOTAREA)'); SQL.Add('values(:CODIGOCONTRATO, :CODIGOINSTALADOR, :CODIGOTAREA)'); ParamByName('CODIGOCONTRATO').AsString := CodigoContrato; ParamByName('CODIGOINSTALADOR').AsString := CodigoInstalador; ParamByName('CODIGOTAREA').AsString := CodigoTarea; try Prepare; ExecQuery; Result := True; finally Close; Transaction := NIL; Free; end; end; end; end.