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/ArticulosObraHistorica.pas

340 lines
11 KiB
ObjectPascal
Raw Permalink Normal View History

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