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

481 lines
16 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: 01-10-2001
Versi<EFBFBD>n actual: 1.0.7
Fecha versi<EFBFBD>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<EFBFBD> incluida
dentro del frame y no se entera de la entidad en la que est<EFBFBD>,
que puede ser ArticulosAlmacen, ArticulosAlmacenFisico o
ArticulosAlmacenObra, y en cada uno tendr<EFBFBD> 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<EFBFBD>adir el bot<EFBFBD>n finalizar obra que solo ser<EFBFBD> visible cuando
la entidad en la que nos encontremos sea
entArticulosAlmacenObra.
02-03-2002 En el contenido se pueden a<EFBFBD>adir muchos materiales a la vez.
07-04-2002 Se ha adaptado a una unica transacci<EFBFBD>n.
11-08-2002 p223. Se ha modificado finalizar obra para la ampliacion de
historico de obras.
07-09-2002 Adaptada la funci<EFBFBD>n 'CambiarEntidad'.
15-04-2004 Al hacer doble click sobre el grid, se pasar<EFBFBD> a modificar el
registro o se seleccionar<EFBFBD>, dependiendo del modo en el que
se encuentre la pantalla.
15-04-2004 p272. Adaptaci<EFBFBD>n a multiempresa.
04-10-2004 Se ha a<EFBFBD>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<61>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<61> 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.