340 lines
11 KiB
ObjectPascal
340 lines
11 KiB
ObjectPascal
|
|
{
|
|||
|
|
===============================================================================
|
|||
|
|
Copyright (<EFBFBD>) 2001. Rodax Software.
|
|||
|
|
===============================================================================
|
|||
|
|
Los contenidos de este fichero son propiedad de Rodax Software titular del
|
|||
|
|
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
|
|||
|
|
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
|
|||
|
|
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
|
|||
|
|
bajo el que se suministra.
|
|||
|
|
-----------------------------------------------------------------------------
|
|||
|
|
Web: www.rodax-software.com
|
|||
|
|
===============================================================================
|
|||
|
|
Fecha primera versi<EFBFBD>n: 11-08-2002
|
|||
|
|
Versi<EFBFBD>n actual: 1.0.1
|
|||
|
|
Fecha versi<EFBFBD>n actual: 14-04-2004
|
|||
|
|
===============================================================================
|
|||
|
|
Modificaciones:
|
|||
|
|
|
|||
|
|
Fecha Comentarios
|
|||
|
|
---------------------------------------------------------------------------
|
|||
|
|
14-04-2004 Al hacer doble click sobre el grid, se pasar<EFBFBD> a consultar el
|
|||
|
|
registro o se seleccionar<EFBFBD>, dependiendo del modo en el que
|
|||
|
|
se encuentre la pantalla.
|
|||
|
|
|
|||
|
|
14-04-2004 p272. Adaptaci<EFBFBD>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<EFBFBD> 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<EFBFBD>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<EFBFBD>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.
|
|||
|
|
|