{ =============================================================================== 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: 01-10-2001 Versión actual: 1.0.6 Fecha versión actual: 10-01-2005 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 02-11-2001 En CambiarEntidad tengo que cambiar manualmante la entidad de la barra de titulo Almacen, ya que no está incluida dentro del frame y no se entera de la entidad en la que está, que puede ser Almacen, AlmacenFisico o AlmacenObra, y en cada uno tendrá un titulo diferente. El no estar incluido en el panel era por un problema de barras en ciertos casos, que salian las dos barras a la vez. 07-04-2002 Se ha adaptado a una unica transacción. 09-05-2002 Cambio de grid en lugar de utilizar UltimDBGrid, utilizaremos dxDBGrid. 07-09-2002 Adaptada la función 'CambiarEntidad'. 07-03-2004 P272. Adaptación a multiempresa. 04-10-2004 Cambio CambiarEntidad para que soporte otro color. 10-01-2005 Añadimos una entidad más entObrasCerradas =============================================================================== } unit Almacenes; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, IB, IBSQL, IBDatabase, DBTables, Grids, DBGrids, ComCtrls, ToolWin, ExtCtrls, IBCustomDataSet, IBQuery, RdxPaneles, RdxBarras, RdxBotones, Tipos, RdxFrameAlmacenes, RXDBCtrl, Mensajes, dxCntner, dxTL, dxDBCtrl, dxDBGrid; type TfrAlmacenes = class(TRdxFrameAlmacenes) PanelPrincipal: TPanel; dsAlmacenes: TDataSource; BarraAlmacenes: TRdxBarraSuperior; bAnadir: TRdxBotonSuperior; bModificar: TRdxBotonSuperior; bEliminar: TRdxBotonSuperior; bConsultar: TRdxBotonSuperior; bBuscar: TRdxBotonSuperior; brSeleccion: TRdxBarraInferior; bSeleccionar: TRdxBoton; bCancelarGuardar: TRdxBoton; gridAlmacenes: TdxDBGrid; imgSombra: TImage; procedure bAnadirClick(Sender: TObject); procedure bModificarClick(Sender: TObject); procedure bEliminarClick(Sender: TObject); procedure bConsultarClick(Sender: TObject); procedure bBuscarClick(Sender: TObject); procedure bSeleccionarClick(Sender: TObject); procedure bCancelarGuardarClick(Sender: TObject); procedure gridAlmacenesRefreshButton(Sender: TObject); procedure gridAlmacenesDblClick(Sender: TObject); private FFechaCierre: TDateTime; FObraCierre: Variant; procedure ActualizarBotones; procedure VisualizarBotones; procedure NoVisualizarBotones; protected function CloseFrame : boolean; override; procedure BuscarAlmacen; override; function CambiarEntidad (EntidadAnterior, Entidad : TRdxEntidad): Boolean; override; procedure FreeContenido; override; public property FechaCierre: TDateTime read FFechaCierre write FFechaCierre; property ObraCierre: Variant read FObraCierre write FObraCierre; constructor Create (AOwner : TComponent); override; destructor Destroy; override; end; var frAlmacenes: TfrAlmacenes; implementation {$R *.DFM} uses BaseDatos, Almacen, BuscarAlmacen, TablaAlmacenes, Excepciones, Entidades, Configuracion, RdxEmpresaActiva, Literales, TablaArticulosObraHistorica; constructor TfrAlmacenes.Create (AOwner : TComponent); begin inherited Create(AOwner); BaseDatos := dmBaseDatos.BD; Transaccion := dmBaseDatos.Transaccion; TablaAlmacenes := TIBDataSet.Create(Self); dsAlmacenes.DataSet := TablaAlmacenes; // No asignamos ninguna sentencia sql hasta que no se le asigna una entidad with TablaAlmacenes do begin Database := BaseDatos; Transaction := Transaccion; end; Entidad := entAlmacen; ConfigurarFrame(Self, Self.Entidad); end; destructor TfrAlmacenes.Destroy; begin TablaAlmacenes.Close; TablaAlmacenes.UnPrepare; TablaAlmacenes.Free; inherited; end; procedure TfrAlmacenes.BuscarAlmacen; begin with TablaAlmacenes do begin DisableControls; Close; ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; Open; ActualizarBotones; EnableControls; end; TablaAlmacenes.Locate('ALMACENES.CODIGO',CodigoAlmacen,[]); end; procedure TfrAlmacenes.FreeContenido; begin if (Contenido is TRdxFrameAlmacenes) then CodigoAlmacen := (Contenido as TRdxFrameAlmacenes).CodigoAlmacen; inherited; end; procedure TfrAlmacenes.bAnadirClick(Sender: TObject); begin Contenido := TfrAlmacen.Create(Self); Contenido.Entidad := Entidad; Contenido.Modo := Anadir; end; procedure TfrAlmacenes.bModificarClick(Sender: TObject); begin CodigoAlmacen := TablaAlmacenes.FieldByName('ALMACENES.CODIGO').AsString; Contenido := TfrAlmacen.Create(Self); Contenido.Entidad := Entidad; Contenido.Modo := Modificar; end; procedure TfrAlmacenes.bEliminarClick(Sender: TObject); begin CodigoAlmacen := TablaAlmacenes.FieldByName('ALMACENES.CODIGO').AsString; Contenido := TfrAlmacen.Create(Self); Contenido.Entidad := Entidad; Contenido.Modo := Eliminar; end; procedure TfrAlmacenes.bConsultarClick(Sender: TObject); begin CodigoAlmacen := TablaAlmacenes.FieldByName('ALMACENES.CODIGO').AsString; Contenido := TfrAlmacen.Create(Self); Contenido.Entidad := Entidad; Contenido.Modo := Consultar; end; procedure TfrAlmacenes.bBuscarClick(Sender: TObject); begin CodigoAlmacen := TablaAlmacenes.FieldByName('ALMACENES.CODIGO').AsString; Contenido := TfrBuscarAlmacen.Create(Self); Contenido.Entidad := Entidad; end; procedure TfrAlmacenes.bSeleccionarClick(Sender: TObject); begin if TablaAlmacenes.RecordCount = 0 then begin VerMensaje(msgAlmNoHayAlm); exit; end; {El close frame por defecto lee el codigo del almacen seleccionado en el grid para asi al cambiar a estado almacen se haga el cambio de almacen} CloseFrame; end; procedure TfrAlmacenes.bCancelarGuardarClick(Sender: TObject); begin FCodigoAlmacen := Null; {Llama al close frame padre el cual no realiza lectura del codigo del almacen seleccionado} inherited CloseFrame; end; function TfrAlmacenes.CloseFrame: boolean; begin // Para no hacer un BuscarAlmacen que no es necesario FCodigoAlmacen := TablaAlmacenes.FieldByName('ALMACENES.CODIGO').Value; if Entidad = entObraCerrada then begin FechaCierre := TablaAlmacenes.FieldByName('FECHACIERRE').AsDateTime; ObraCierre := TablaAlmacenes.FieldByName('ALMACENES.NOMBRE').AsString; end; Result := inherited CloseFrame; end; function TfrAlmacenes.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin if not inherited CambiarEntidad(EntidadAnterior, Entidad) then Exit; ConfigurarFrame(Self, Self.Entidad); if Transaccion = NIL then exit; try with TablaAlmacenes do begin Close; case Entidad of entAlmacen : begin BarraAlmacenes.Caption := Entidades.darNombreEntidad(entAlmacen); VisualizarBotones; SelectSQL.Assign(dmTablaAlmacenes.sqlGrid); dmTablaAlmacenes.InicializarGridAlmacenes(gridAlmacenes); end; entAlmacenFisico : begin BarraAlmacenes.Caption := Entidades.darNombreEntidad(entAlmacenFisico); VisualizarBotones; SelectSQL.Assign(dmTablaAlmacenes.sqlGridFisicos); dmTablaAlmacenes.InicializarGridAlmacenes(gridAlmacenes); end; entAlmacenObra : begin BarraAlmacenes.Caption := Entidades.darNombreEntidad(entAlmacenObra); VisualizarBotones; SelectSQL.Assign(dmTablaAlmacenes.sqlGridObras); dmTablaAlmacenes.InicializarGridAlmacenes(gridAlmacenes); end; entObraCerrada : begin BarraAlmacenes.Caption := Entidades.darNombreEntidad(entObraCerrada); NoVisualizarBotones; SelectSQL.Assign(dmTablaArticulosObraHistorica.sqlGridObrasCerradas); dmTablaArticulosObraHistorica.InicializarGridObrasCerradas(gridAlmacenes); end; end; ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; BuscarAlmacen; end; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrAlmacenes.ActualizarBotones; begin if BaseDatos.IsReadOnly then begin bAnadir.Enabled := False; bModificar.Enabled := False; bEliminar.Enabled := False; bConsultar.Enabled := True; bBuscar.Enabled := True; Exit; end; if TablaAlmacenes.RecordCount = 0 then begin bAnadir.Enabled := True; bModificar.Enabled := False; bEliminar.Enabled := False; bConsultar.Enabled := False; bBuscar.Enabled := False; end else begin bAnadir.Enabled := True; bModificar.Enabled := True; bEliminar.Enabled := True; bConsultar.Enabled := True; bBuscar.Enabled := True; end; end; procedure TfrAlmacenes.gridAlmacenesRefreshButton(Sender: TObject); begin BuscarAlmacen; end; procedure TfrAlmacenes.gridAlmacenesDblClick(Sender: TObject); begin if Modo = Seleccionar then bSeleccionar.Click else bModificar.Click; end; procedure TfrAlmacenes.NoVisualizarBotones; begin bAnadir.Visible := False; bModificar.Visible := False; bEliminar.Visible := False; bConsultar.Visible := False; bBuscar.Visible := False; end; procedure TfrAlmacenes.VisualizarBotones; begin bAnadir.Visible := True; bModificar.Visible := True; bEliminar.Visible := True; bConsultar.Visible := True; bBuscar.Visible := True; end; end.