This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Miguelo_FactuGES/Almacenes/ListadoArticulosAlmacen.pas

504 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,
ExtCtrls, StdCtrls, RdxTitulos, RdxPaneles, RdxCampos,
cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit,
cxDropDownEdit, RdxRadioButton, RdxShape, TablaArticulos, Tipos,
RdxFrame, cxGraphics, Entidades, InformeEstadoAlmacen, VistaPrevia;
type
TfrListadoArticulosAlmacen = class(TRdxFrame)
eAlmacen: TLabel;
CodAlmacen: TcxButtonEdit;
NombreAlmacen: TRdxEdit;
Separador: TRdxShape;
pnlVistaPrevia: TPanel;
eInfoCriterios: TLabel;
rbTodos: TRdxRadioButton;
rbArticulos: TRdxRadioButton;
DescripcionIni: TcxButtonEdit;
DescripcionFin: TcxButtonEdit;
rbFamilias: TRdxRadioButton;
cbFamiliaIni: TcxComboBox;
Label1: TLabel;
eInformacion: TLabel;
cDatos: TRdxCabecera;
cbFamiliaFin: TcxComboBox;
pnlTitulo: TRdxPanelTituloOperacion;
pnlCuerpo: TPanel;
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
FVistaPrevia : TfrVistaPrevia;
FCodigoAlmacen: Variant;
FCodigoArticuloAux : Variant;
FArticuloIni : TDatosArticulo;
FArticuloFin : TDatosArticulo;
FInforme : TdmInformeEstadoAlmacen;
procedure ActivarNombres;
procedure ActivarFamilias;
procedure DesactivarNombres;
procedure DesactivarFamilias;
procedure SetCodigoAlmacen(const Value: Variant);
procedure RefrescarInforme;
protected
procedure ActualizarEstado; override;
procedure FreeContenido; override;
procedure VerModal; override;
function CloseFrame : Boolean; 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,
RdxFrameAlmacenes, RdxFrameArticulos,
TablaFamilias, ArticulosAlmacen, Literales, Variants;
{$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);
dmTablaArticulos.ArtModelo := entArticulo;
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;
FVistaPrevia := TfrVistaPrevia.Create(Self);
FVistaPrevia.Parent := pnlVistaPrevia;
FInforme := TdmInformeEstadoAlmacen.Create(Self);
FInforme.Preview := FVistaPrevia.Preview;
RefrescarInforme;
end;
destructor TfrListadoArticulosAlmacen.Destroy;
begin
FInforme.Free;
FArticuloIni.Free;
FArticuloFin.Free;
inherited;
end;
procedure TfrListadoArticulosAlmacen.RefrescarInforme;
begin
if VarIsNull(FCodigoAlmacen) then
Exit;
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;
function TfrListadoArticulosAlmacen.CloseFrame: Boolean;
begin
FInforme.Preview := NIL;
(FVistaPrevia as TRdxFrame).CloseFrame;
Result := inherited CloseFrame;
end;
end.