git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
481 lines
16 KiB
ObjectPascal
481 lines
16 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.7
|
|
Fecha versión actual: 04-10-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
02-11-2001 En CambiarEntidad tengo que cambiar manualmante la entidad de
|
|
la barra de titulo ArticulosAlmacen, ya que no está incluida
|
|
dentro del frame y no se entera de la entidad en la que está,
|
|
que puede ser ArticulosAlmacen, ArticulosAlmacenFisico o
|
|
ArticulosAlmacenObra, 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.
|
|
|
|
Añadir el botón finalizar obra que solo será visible cuando
|
|
la entidad en la que nos encontremos sea
|
|
entArticulosAlmacenObra.
|
|
|
|
02-03-2002 En el contenido se pueden añadir muchos materiales a la vez.
|
|
|
|
07-04-2002 Se ha adaptado a una unica transacción.
|
|
|
|
11-08-2002 p223. Se ha modificado finalizar obra para la ampliacion de
|
|
historico de obras.
|
|
|
|
07-09-2002 Adaptada la función 'CambiarEntidad'.
|
|
|
|
15-04-2004 Al hacer doble click sobre el grid, se pasará a modificar el
|
|
registro o se seleccionará, dependiendo del modo en el que
|
|
se encuentre la pantalla.
|
|
|
|
15-04-2004 p272. Adaptación a multiempresa.
|
|
|
|
04-10-2004 Se ha añadido el metodo cambiarEntidad para que cambie de color
|
|
en funcion del modulo desde el que se la llame
|
|
===============================================================================
|
|
}
|
|
|
|
unit ListadoArticulosAlmacen;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
ListadoBase, ExtCtrls, StdCtrls, RdxTitulos, RdxPaneles, RdxCampos,
|
|
cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit,
|
|
cxDropDownEdit, RdxRadioButton, RdxShape, TablaArticulos, Tipos;
|
|
|
|
type
|
|
TfrListadoArticulosAlmacen = class(TfrListadoBase)
|
|
eAlmacen: TLabel;
|
|
CodAlmacen: TcxButtonEdit;
|
|
NombreAlmacen: TRdxEdit;
|
|
Separador: TRdxShape;
|
|
eInfoCriterios: TLabel;
|
|
rbTodos: TRdxRadioButton;
|
|
rbArticulos: TRdxRadioButton;
|
|
DescripcionIni: TcxButtonEdit;
|
|
DescripcionFin: TcxButtonEdit;
|
|
rbFamilias: TRdxRadioButton;
|
|
cbFamiliaIni: TcxComboBox;
|
|
Label1: TLabel;
|
|
cbFamiliaFin: TcxComboBox;
|
|
procedure DescripcionIniPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
procedure CodAlmacenPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure rbTodosClick(Sender: TObject);
|
|
procedure rbArticulosClick(Sender: TObject);
|
|
procedure rbFamiliasClick(Sender: TObject);
|
|
procedure RdxFrameShow(Sender: TObject);
|
|
procedure DescripcionIniPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure DescripcionFinPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
procedure DescripcionFinPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure cbFamiliaIniPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure cbFamiliaFinPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure CodAlmacenPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
private
|
|
FCodigoAlmacen: Variant;
|
|
FCodigoArticuloAux : Variant;
|
|
FArticuloIni : TDatosArticulo;
|
|
FArticuloFin : TDatosArticulo;
|
|
procedure ActivarNombres;
|
|
procedure ActivarFamilias;
|
|
procedure DesactivarNombres;
|
|
procedure DesactivarFamilias;
|
|
procedure SetCodigoAlmacen(const Value: Variant);
|
|
procedure RefrescarInforme; override;
|
|
protected
|
|
procedure ActualizarEstado; override;
|
|
procedure FreeContenido; override;
|
|
procedure VerModal; override;
|
|
function CambiarEntidad (EntidadAnterior, Entidad : TRdxEntidad): Boolean; override;
|
|
public
|
|
{ Public declarations }
|
|
property CodigoAlmacen : Variant read FCodigoAlmacen write SetCodigoAlmacen;
|
|
constructor Create(AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
var
|
|
frListadoArticulosAlmacen: TfrListadoArticulosAlmacen;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Configuracion, Almacenes, TablaAlmacenes, StrFunc, RdxEmpresaActiva, Mensajes,
|
|
InformeEstadoAlmacen, RdxFrameAlmacenes, Entidades, RdxFrameArticulos,
|
|
TablaFamilias, ArticulosAlmacen, Literales;
|
|
|
|
{$R *.DFM}
|
|
|
|
procedure TfrListadoArticulosAlmacen.DescripcionIniPropertiesButtonClick(
|
|
Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
Case Entidad of
|
|
entAlmacen : EntidadModal := entArticulosAlmacen;
|
|
entAlmacenFisico : EntidadModal := entArticulosAlmacenFisico;
|
|
entAlmacenObra : EntidadModal := entArticulosAlmacenObra;
|
|
end;
|
|
|
|
ContenidoModal := TfrArticulosAlmacen.Create(Self);
|
|
if not VarIsNull(FCodigoArticuloAux) then
|
|
begin
|
|
FArticuloIni.Codigo := FCodigoArticuloAux;
|
|
dmTablaArticulos.DarDatosArticulo(FArticuloIni);
|
|
DescripcionIni.EditingText := FArticuloIni.Descripcion;
|
|
PostMessage(DescripcionIni.Handle, WM_KEYDOWN, VK_RETURN, 0);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.SetCodigoAlmacen(const Value: Variant);
|
|
var
|
|
DatosAlmacen : TDatosAlmacen;
|
|
begin
|
|
if Value = Null then
|
|
Exit;
|
|
|
|
if FCodigoAlmacen <> Value then
|
|
begin
|
|
FCodigoAlmacen := Value;
|
|
DatosAlmacen := TDatosAlmacen.Create;
|
|
try
|
|
DatosAlmacen.CodigoEmpresa := EmpresaActiva.Codigo;
|
|
DatosAlmacen.Codigo := FCodigoAlmacen;
|
|
if dmTablaAlmacenes.DarDatosAlmacen(DatosAlmacen) then
|
|
begin
|
|
CodAlmacen.Text := FCodigoAlmacen;
|
|
NombreAlmacen.Text := DatosAlmacen.Nombre
|
|
end
|
|
else
|
|
raise Exception.CreateFmt(msgAlmCodAlmNoExiste, [CodigoAlmacen]);
|
|
finally
|
|
DatosAlmacen.Free;
|
|
end;
|
|
RefrescarInforme;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.CodAlmacenPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
if EsCadenaVacia (DisplayValue) then
|
|
begin
|
|
Error := True;
|
|
ErrorText := msgInfFaltaAlmacen;
|
|
Exit;
|
|
end;
|
|
|
|
try
|
|
StrToInt(DisplayValue);
|
|
except
|
|
Error := True;
|
|
ErrorText := Format(msgAlmCodAlmIncorrecto, [DisplayValue]);
|
|
Exit;
|
|
end;
|
|
|
|
if (dmTablaAlmacenes.ValidarCodigo(DisplayValue)) then
|
|
begin
|
|
if (not dmTablaAlmacenes.ExisteAlmacen(EmpresaActiva.Codigo, StrToInt(DisplayValue))) then
|
|
begin
|
|
Error := True;
|
|
ErrorText := Format(msgAlmCodAlmNoExiste, [DisplayValue]);
|
|
Exit;
|
|
end;
|
|
end
|
|
else begin
|
|
Error := True;
|
|
ErrorText := Format(msgAlmCodAlmIncorrecto, [DisplayValue]);
|
|
Exit;
|
|
end;
|
|
|
|
CodigoAlmacen := StrToInt(DisplayValue);
|
|
end;
|
|
|
|
constructor TfrListadoArticulosAlmacen.Create(AOwner: TComponent);
|
|
var
|
|
DescripcionAux : String;
|
|
begin
|
|
inherited;
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|
|
|
FCodigoAlmacen := NULL;
|
|
FArticuloIni := TDatosArticulo.Create;
|
|
FArticuloFin := TDatosArticulo.Create;
|
|
FCodigoArticuloAux := NULL;
|
|
|
|
DescripcionAux := dmTablaArticulos.DarArticuloMin;
|
|
FArticuloIni.Codigo := '';
|
|
FArticuloIni.Descripcion := DescripcionAux;
|
|
DescripcionIni.EditingText := FArticuloIni.Descripcion;
|
|
|
|
DescripcionAux := dmTablaArticulos.DarArticuloMax;
|
|
FArticuloFin.Codigo := '';
|
|
FArticuloFin.Descripcion := DescripcionAux;
|
|
DescripcionFin.EditingText := FArticuloFin.Descripcion;
|
|
|
|
cbFamiliaIni.Properties.Items := dmTablaFamilias.darFamilias;
|
|
cbFamiliaIni.Properties.Items.Delete(0); //Borro el item en blanco.
|
|
cbFamiliaIni.ItemIndex := 0;
|
|
cbFamiliaFin.Properties.Items := dmTablaFamilias.darFamilias;
|
|
cbFamiliaFin.Properties.Items.Delete(0); //Borro el item en blanco.
|
|
cbFamiliaFin.ItemIndex := cbFamiliaFin.Properties.Items.Count - 1;
|
|
|
|
FInforme := TdmInformeEstadoAlmacen.Create(Self);
|
|
FInforme.Preview := FVistaPrevia.Preview;
|
|
end;
|
|
|
|
destructor TfrListadoArticulosAlmacen.Destroy;
|
|
begin
|
|
FreeAndNil(FArticuloIni);
|
|
FreeAndNil(FArticuloFin);
|
|
// El informe se destruye en el padre
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.RefrescarInforme;
|
|
begin
|
|
with (FInforme as TdmInformeEstadoAlmacen) do
|
|
begin
|
|
CodigoAlmacen := FCodigoAlmacen;
|
|
NombreAlmacen := Self.NombreAlmacen.Text;
|
|
|
|
if rbTodos.Checked then
|
|
Tipo := tiTodo
|
|
else begin
|
|
if rbArticulos.Checked then
|
|
begin
|
|
Tipo := tiPorDescripcion;
|
|
DescripcionIni := FArticuloIni.Descripcion;
|
|
DescripcionFin := FArticuloFin.Descripcion;
|
|
end
|
|
else begin
|
|
Tipo := tiPorFamilias;
|
|
FamiliaIni := cbFamiliaIni.Text;
|
|
FamiliaFin := cbFamiliaFin.Text;
|
|
end;
|
|
end;
|
|
Previsualizar;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.FreeContenido;
|
|
begin
|
|
if (ContenidoModal is TfrArticulosAlmacen) then
|
|
FCodigoArticuloAux := (ContenidoModal as TfrArticulosAlmacen).CodigoArticulo;
|
|
if (ContenidoModal is TRdxFrameAlmacenes) then
|
|
CodigoAlmacen := (ContenidoModal as TRdxFrameAlmacenes).CodigoAlmacen;
|
|
inherited FreeContenido;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.ActualizarEstado;
|
|
var
|
|
CadenaAux : string;
|
|
begin
|
|
CadenaAux := DarNombreEntidad(Entidad);
|
|
eAlmacen.Caption := CadenaAux + ':';
|
|
|
|
CadenaAux := AnsiLowerCase(CadenaAux);
|
|
cDatos.Caption := 'Parámetros para el listado de material de ' + CadenaAux;
|
|
|
|
eInformacion.Caption := 'Elija ';
|
|
if CadenaAux = 'almacen' then
|
|
eInformacion.Caption := eInformacion.Caption + 'el ' + CadenaAux + ' en el cual '
|
|
else
|
|
eInformacion.Caption := eInformacion.Caption + 'la ' + CadenaAux + ' en la cual ';
|
|
eInformacion.Caption := eInformacion.Caption + 'se generará el listado de su estado:';
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.ActivarFamilias;
|
|
begin
|
|
cbFamiliaIni.Enabled := True;
|
|
cbFamiliaIni.SetFocus;
|
|
cbFamiliaFin.Enabled := True;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.ActivarNombres;
|
|
begin
|
|
DescripcionIni.Enabled := True;
|
|
DescripcionIni.SetFocus;
|
|
DescripcionFin.Enabled := True;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.DesactivarFamilias;
|
|
begin
|
|
cbFamiliaIni.Enabled := False;
|
|
cbFamiliaFin.Enabled := False;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.DesactivarNombres;
|
|
begin
|
|
DescripcionIni.Enabled := False;
|
|
DescripcionFin.Enabled := False;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.rbTodosClick(Sender: TObject);
|
|
begin
|
|
DesactivarNombres;
|
|
DesactivarFamilias;
|
|
RefrescarInforme;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.rbArticulosClick(Sender: TObject);
|
|
begin
|
|
ActivarNombres;
|
|
DesactivarFamilias;
|
|
RefrescarInforme;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.rbFamiliasClick(Sender: TObject);
|
|
begin
|
|
ActivarFamilias;
|
|
DesactivarNombres;
|
|
RefrescarInforme;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.RdxFrameShow(Sender: TObject);
|
|
begin
|
|
DesactivarNombres;
|
|
DesactivarFamilias;
|
|
CodAlmacen.SetFocus;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.DescripcionIniPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
if EsCadenaVacia(DisplayValue) then
|
|
DisplayValue := dmTablaArticulos.DarArticuloMin
|
|
else
|
|
if AnsiCompareText(DisplayValue, DescripcionFin.Text) > 0 then
|
|
begin
|
|
ErrorText := msgInfArticuloIniMayor;
|
|
Error := True;
|
|
Exit;
|
|
end;
|
|
FArticuloIni.Descripcion := DisplayValue;
|
|
FArticuloIni.Codigo := '';
|
|
RefrescarInforme;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.DescripcionFinPropertiesButtonClick(
|
|
Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
case Entidad of
|
|
entAlmacen : EntidadModal := entArticulosAlmacen;
|
|
entAlmacenFisico : EntidadModal := entArticulosAlmacenFisico;
|
|
entAlmacenObra : EntidadModal := entArticulosAlmacenObra;
|
|
end;
|
|
|
|
ContenidoModal := TfrArticulosAlmacen.Create(Self);
|
|
if not VarIsNull(FCodigoArticuloAux) then
|
|
begin
|
|
FArticuloFin.Codigo := FCodigoArticuloAux;
|
|
dmTablaArticulos.DarDatosArticulo(FArticuloFin);
|
|
DescripcionFin.EditingText := FArticuloFin.Descripcion;
|
|
PostMessage(DescripcionFin.Handle, WM_KEYDOWN, VK_RETURN, 0);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.DescripcionFinPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
if EsCadenaVacia(DisplayValue) then
|
|
DisplayValue := dmTablaArticulos.DarArticuloMax
|
|
else
|
|
if AnsiCompareText(DisplayValue, DescripcionIni.Text) < 0 then
|
|
begin
|
|
ErrorText := msgInfArticuloIniMayor;
|
|
Error := True;
|
|
Exit;
|
|
end;
|
|
FArticuloFin.Descripcion := DisplayValue;
|
|
FArticuloFin.Codigo := '';
|
|
RefrescarInforme;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.cbFamiliaIniPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
if AnsiCompareText(DisplayValue, cbFamiliaFin.Text) > 0 then
|
|
begin
|
|
ErrorText := msgInfFamiliaIniMayor;
|
|
Error := True;
|
|
Exit;
|
|
end;
|
|
RefrescarInforme;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.cbFamiliaFinPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
begin
|
|
if AnsiCompareText(DisplayValue, cbFamiliaIni.Text) < 0 then
|
|
begin
|
|
ErrorText := msgInfFamiliaIniMayor;
|
|
Error := True;
|
|
Exit;
|
|
end;
|
|
RefrescarInforme;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.VerModal;
|
|
begin
|
|
if (ContenidoModal is TfrArticulosAlmacen) then
|
|
begin
|
|
(ContenidoModal as TfrArticulosAlmacen).CodigoAlmacen := CodigoAlmacen;
|
|
//Aunque desactive Almacen no se asegura que pueda darse un cambio de almacen
|
|
(ContenidoModal as TfrArticulosAlmacen).cbxAlmacen.Enabled := False;
|
|
(ContenidoModal as TfrArticulosAlmacen).bFinalizar.Visible := False;
|
|
end;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrListadoArticulosAlmacen.CodAlmacenPropertiesButtonClick(
|
|
Sender: TObject; AButtonIndex: Integer);
|
|
begin
|
|
EntidadModal := Entidad;
|
|
ContenidoModal := TfrAlmacenes.Create(Self);
|
|
end;
|
|
|
|
function TfrListadoArticulosAlmacen.CambiarEntidad(EntidadAnterior,
|
|
Entidad: TRdxEntidad): Boolean;
|
|
begin
|
|
if not inherited CambiarEntidad(EntidadAnterior, Entidad) then
|
|
Exit;
|
|
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|
end;
|
|
|
|
end.
|