git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
340 lines
11 KiB
ObjectPascal
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: 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.
|
|
|