{ =============================================================================== Copyright (©) 2001. 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: 11-08-2002 Versión actual: 1.0.1 Fecha versión actual: 14-04-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 14-04-2004 Al hacer doble click sobre el grid, se pasará a consultar el registro o se seleccionará, dependiendo del modo en el que se encuentre la pantalla. 14-04-2004 p272. Adaptación a multiempresa. =============================================================================== } unit ArticulosObraHistorica; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, RDXFRAME, Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls, StdCtrls, RdxComboBox, Tipos, Menus, am2000menuitem, IB, Db, am2000popupmenu, am2000, RdxBarras, RdxPaneles, RXDBCtrl, DBTables, IBCustomDataSet, RdxCampos, StrFunc, Mensajes, dxCntner, dxTL, dxDBCtrl, dxDBGrid, RdxFrameArticulosObraHistorica; type TfrArticulosObraHistorica = class(TRdxFrameArticulosObraHistorica) dsEstadoObra: TDataSource; BarraEstado: TRdxBarraSuperior; brSeleccion: TRdxBarraInferior; bSeleccionar: TRdxBoton; bCancelarGuardar: TRdxBoton; pnlCuerpo: TRdxPanel; pnlGridArticulos: TPanel; pnlDatos: TPanel; pnlExtra: TRdxBarraSuperior; eAlmacen: TLabel; cbxAlmacen: TRdxComboBox; bEliminar: TRdxBotonSuperior; bConsultar: TRdxBotonSuperior; bBuscar: TRdxBotonSuperior; bListar: TRdxBotonSuperior; gridArticulosObra: TdxDBGrid; imgSombra: TImage; procedure bConsultarClick(Sender: TObject); procedure bEliminarClick(Sender: TObject); procedure bBuscarClick(Sender: TObject); procedure bListadosClick(Sender: TObject); procedure cbxAlmacenChange(Sender: TObject); procedure bSeleccionarClick(Sender: TObject); procedure bCancelarGuardarClick(Sender: TObject); procedure gridArticulosObraRefreshButton(Sender: TObject); procedure gridArticulosObraDblClick(Sender: TObject); private FCodigoAlmacenInicial : TTipoCodigoFecha; FListaAlmacenesCodigo : TStringList; procedure ActualizarBotones; protected procedure SetCodigoAlmacen (Value : TTipoCodigoFecha); override; procedure BuscarAlmacen; override; procedure BuscarArticulo; override; procedure FreeContenido; override; procedure SetContenido (NuevoFrame : TRdxFrame); override; public constructor Create (AOwner : TComponent); override; destructor Destroy; override; published property TablaArticulosObraHistorica; property CodigoAlmacen; property CodigoArticulo; end; var frArticulosObraHistorica: TfrArticulosObraHistorica; implementation {$R *.DFM} uses BaseDatos, ArticuloObraHistorica, BuscarArticuloObraHistorica, ListadoArticulosObraHistorica, MovimientoAlmacenes, PedidosProveedores, TablaArticulosObraHistorica, Excepciones, Configuracion, RdxEmpresaActiva, Literales; constructor TfrArticulosObraHistorica.Create (AOwner : TComponent); var i:integer; liIndex :integer; begin inherited Create(AOwner); FCodigoAlmacenInicial := NIL; Entidad := entArticulosObraHistorica; ConfigurarFrame(Self, Self.Entidad); BaseDatos := dmBaseDatos.BD; Transaccion := dmBaseDatos.Transaccion; TablaArticulosObraHistorica := TIBDataSet.Create(Self); dsEstadoObra.DataSet := TablaArticulosObraHistorica; with TablaArticulosObraHistorica do begin Database := BaseDatos; Transaction := Transaccion; SelectSQL.Assign(dmTablaArticulosObraHistorica.sqlGrid); end; // Carga todas las obras y codigos FListaAlmacenesCodigo := dmTablaArticulosObraHistorica.DarObras(EmpresaActiva.Codigo); for i:=0 to FListaAlmacenesCodigo.Count-1 do cbxAlmacen.Items.Add(FListaAlmacenesCodigo.Strings[i]); // Carga la primera obra cbxAlmacen.ItemIndex := 0; liIndex := FListaAlmacenesCodigo.IndexOf(cbxAlmacen.Text); //Asigno el objeto codigo de almacen (CodigoObra, Nombre, FechaCierre) if (liIndex = -1) then ActualizarBotones else CodigoAlmacen := TTipoCodigoFecha(FListaAlmacenesCodigo.Objects[liIndex]); {Como FCodigoAlmacenInicial solo sirve para guardar el codigo de almacen del que se parte cuando se activa una ventana modal, reiniciamos a null su valor ya que el codigo que nos interesa es el que establecerá despues de la creacion el frame padre, en nuestro caso ArticuloAlmacen} FCodigoAlmacenInicial := NIL; dmTablaArticulosObraHistorica.InicializarGridArticulosObraHistorica(gridArticulosObra); end; destructor TfrArticulosObraHistorica.Destroy; begin TablaArticulosObraHistorica.Close; TablaArticulosObraHistorica.UnPrepare; TablaArticulosObraHistorica.Free; FListaAlmacenesCodigo.Free; FListaAlmacenesCodigo := NIL; inherited; end; procedure TfrArticulosObraHistorica.BuscarAlmacen; begin if Transaccion = NIL then exit; try with TablaArticulosObraHistorica do begin DisableControls; Close; if (CodigoAlmacen <> Nil) then begin Params.ByName('CODIGOOBRA').AsInteger := CodigoAlmacen.Codigo; Params.ByName('FECHACIERRE').AsString := CodigoAlmacen.Fecha; end; Params.ByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; Open; ActualizarBotones; dmTablaArticulosObraHistorica.InicializarTablaArticulosObraHistorica(@TablaArticulosObraHistorica); EnableControls; end; // Establece en el combox el almacen correspondiente al codigo a buscar cbxAlmacen.ItemIndex := FListaAlmacenesCodigo.IndexOf(CodigoAlmacen.darDescripcion); except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrArticulosObraHistorica.BuscarArticulo; begin with TablaArticulosObraHistorica do begin DisableControls; Close; Open; ActualizarBotones; dmTablaArticulosObraHistorica.InicializarTablaArticulosObraHistorica(@TablaArticulosObraHistorica); EnableControls; end; TablaArticulosObraHistorica.Locate('CODIGOARTICULO',CodigoArticulo,[]); end; procedure TfrArticulosObraHistorica.cbxAlmacenChange(Sender: TObject); begin CodigoAlmacen := TTipoCodigoFecha(FListaAlmacenesCodigo.Objects[FListaAlmacenesCodigo.IndexOf(cbxAlmacen.Text)]); //FListaAlmacenesCodigo.Values[cbxAlmacen.Text]; end; procedure TfrArticulosObraHistorica.FreeContenido; begin if (Contenido is TRdxFrameArticulosObraHistorica) then begin CodigoAlmacen := (Contenido as TRdxFrameArticulosObraHistorica).CodigoAlmacen; CodigoArticulo := (Contenido as TRdxFrameArticulosObraHistorica).CodigoArticulo; end; inherited; end; procedure TfrArticulosObraHistorica.bConsultarClick(Sender: TObject); begin CodigoArticulo := TablaArticulosObraHistorica.FieldByName('CODIGOARTICULO').AsString; Contenido := TfrArticuloObraHistorica.Create(Self); Contenido.Modo := Consultar; end; procedure TfrArticulosObraHistorica.bEliminarClick(Sender: TObject); begin CodigoArticulo := TablaArticulosObraHistorica.FieldByName('CODIGOARTICULO').AsString; Contenido := TfrArticuloObraHistorica.Create(Self); Contenido.Modo := Eliminar; end; procedure TfrArticulosObraHistorica.bBuscarClick(Sender: TObject); begin CodigoArticulo := TablaArticulosObraHistorica.FieldByName('CODIGOARTICULO').AsString; Contenido := TfrBuscarArticuloObraHistorica.Create(Self); end; procedure TfrArticulosObraHistorica.bListadosClick(Sender: TObject); begin CodigoArticulo := TablaArticulosObraHistorica.FieldByName('CODIGOARTICULO').AsString; Contenido := TfrListadoArticulosObraHistorica.Create(Self); end; procedure TfrArticulosObraHistorica.bSeleccionarClick(Sender: TObject); begin if TablaArticulosObraHistorica.RecordCount = 0 then begin VerMensaje(msgArtNoHayArtAlm); exit; end; {Codigo almacen no haria falta coger el valor porque ya lo tendríamos, porque se inicializa el crearlo el padre y cada vez que se selecciona un almacen distinto del combox CodigoAlmacen cambia} //FCodigoArticulo := TablaArticulosObraHistorica.FieldByName('CODIGOARTICULO').AsString; if gridArticulosObra.SelectedCount = 0 then FCodigoArticulo := TablaArticulosObraHistorica.FieldByName('CODIGOARTICULO').Value else FListaArticulos := dmTablaArticulosObraHistorica.darListaArticulos(gridArticulosObra, @TablaArticulosObraHistorica); CloseFrame; end; procedure TfrArticulosObraHistorica.bCancelarGuardarClick(Sender: TObject); begin {Se recupera el almacen inicial que ha sido guardado en la primera asignación del CodigoAlmacen del frame, para que no haga frMovimientos todo lo que hace cuando el codigo almacen es distinto. No se puede diferenciar desde otro sitio cuando se ha dado a seleccionar y cuando a cancelar} FCodigoAlmacen := FCodigoAlmacenInicial; FCodigoArticulo := Null; CloseFrame; end; procedure TfrArticulosObraHistorica.SetCodigoAlmacen(Value: TTipoCodigoFecha); begin if (Value = NIL) then Exit; {Se guarda el codigo de almacen que asigna inicialmente el padre} if (FCodigoAlmacenInicial = NIL) then FCodigoAlmacenInicial := Value; inherited; end; procedure TfrArticulosObraHistorica.ActualizarBotones; begin if BaseDatos.IsReadOnly then begin bEliminar.Enabled := False; bConsultar.Enabled := True; bBuscar.Enabled := True; bListar.Enabled := True; Exit; end; if TablaArticulosObraHistorica.RecordCount= 0 then begin bConsultar.Enabled := False; bEliminar.Enabled := False; bBuscar.Enabled := False; bListar.Enabled := False; end else begin bConsultar.Enabled := True; bEliminar.Enabled := True; bBuscar.Enabled := True; bListar.Enabled := True; end; end; procedure TfrArticulosObraHistorica.gridArticulosObraRefreshButton( Sender: TObject); begin //Porque no se va ha cambiar de almacen ya que es solo refresco BuscarArticulo; end; procedure TfrArticulosObraHistorica.gridArticulosObraDblClick( Sender: TObject); begin if Modo = Seleccionar then bSeleccionar.Click else bConsultar.Click; end; procedure TfrArticulosObraHistorica.SetContenido(NuevoFrame: TRdxFrame); begin inherited; if (Contenido is TfrListadoArticulosObraHistorica) then (Contenido as TfrListadoArticulosObraHistorica).CodigoAlmacen := CodigoAlmacen; end; end.