This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/Almacenes/Almacenes.pas
2007-06-21 15:47:20 +00:00

340 lines
11 KiB
ObjectPascal

{
===============================================================================
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.