353 lines
11 KiB
ObjectPascal
353 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: 01-10-2001
|
|||
|
|
Versi<EFBFBD>n actual: 1.0.4
|
|||
|
|
Fecha versi<EFBFBD>n actual: 04-10-2004
|
|||
|
|
===============================================================================
|
|||
|
|
Modificaciones:
|
|||
|
|
|
|||
|
|
Fecha Comentarios
|
|||
|
|
---------------------------------------------------------------------------
|
|||
|
|
27-11-2001 Cambio de los titulos respectivos a obra y almacenes en el
|
|||
|
|
procedimiento CambiarEntidad.
|
|||
|
|
|
|||
|
|
07-04-2002 Se ha adaptado a una unica transacci<EFBFBD>n.
|
|||
|
|
|
|||
|
|
15-04-2004 p272. Adaptaci<EFBFBD>n a multiempresa.
|
|||
|
|
|
|||
|
|
04-10-2004 Cambio CambiarEntidad para que soporte otro color.
|
|||
|
|
===============================================================================
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
unit ArticuloAlmacen;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|||
|
|
StdCtrls, ExtCtrls, Db, IBCustomDataSet, Mask, DBCtrls, Buttons, ToolEdit,
|
|||
|
|
IB, IBDatabase, RdxBarras, RdxBotones, RdxCampos, RdxMemo, RdxComboBox,
|
|||
|
|
RdxCheckBox, RdxTitulos, RdxPaneles, Mensajes, Tipos,
|
|||
|
|
RdxFrameArticulosAlmacen;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TfrArticuloAlmacen = class(TRdxFrameArticulosAlmacen)
|
|||
|
|
pnlScroll: TRdxScrollPanel;
|
|||
|
|
brSimple: TRdxBarraInferior;
|
|||
|
|
bSalir: TRdxBoton;
|
|||
|
|
pnlAlmacen: TRdxPanel;
|
|||
|
|
eAlmacen: TLabel;
|
|||
|
|
cAlmacen: TRdxCabecera;
|
|||
|
|
pnlStock: TRdxPanel;
|
|||
|
|
cStock: TRdxCabecera;
|
|||
|
|
Existencias: TRdxDBEdit;
|
|||
|
|
eStockActual: TLabel;
|
|||
|
|
eStockMax: TLabel;
|
|||
|
|
StockMaximo: TRdxDBEdit;
|
|||
|
|
ePendRecibir: TLabel;
|
|||
|
|
eStockMin: TLabel;
|
|||
|
|
StockMinimo: TRdxDBEdit;
|
|||
|
|
pnlMaterial: TRdxPanel;
|
|||
|
|
RdxCabecera1: TRdxCabecera;
|
|||
|
|
Codigo: TRdxDBEdit;
|
|||
|
|
eCodigo: TLabel;
|
|||
|
|
cbxFamilia: TRdxDBComboBox;
|
|||
|
|
eFamilia: TLabel;
|
|||
|
|
Precio: TRdxDBEdit;
|
|||
|
|
ePrecioEuros: TLabel;
|
|||
|
|
cbxUnidadesMedida: TRdxDBComboBox;
|
|||
|
|
eUnidades: TLabel;
|
|||
|
|
eDescripcion: TLabel;
|
|||
|
|
Descripcion: TRdxDBEdit;
|
|||
|
|
eObservaciones: TLabel;
|
|||
|
|
Observaciones: TRdxDBMemo;
|
|||
|
|
dsArticulosAlmacen: TDataSource;
|
|||
|
|
Titulo: TRdxPanelTituloOperacion;
|
|||
|
|
cbxAlmacen: TRdxDBComboBox;
|
|||
|
|
brDoble: TRdxBarraInferior;
|
|||
|
|
bAceptar: TRdxBoton;
|
|||
|
|
bCancelar: TRdxBoton;
|
|||
|
|
PendRecibir: TRdxEdit;
|
|||
|
|
procedure bAceptarClick(Sender: TObject);
|
|||
|
|
procedure bCancelarGuardarClick(Sender: TObject);
|
|||
|
|
procedure bSalirClick(Sender: TObject);
|
|||
|
|
procedure CodigoButtonClick(Sender: TObject);
|
|||
|
|
protected
|
|||
|
|
function CambiarEntidad (EntidadAnterior, Entidad : TRdxEntidad): Boolean; override;
|
|||
|
|
procedure ActivarModoConsultar; override;
|
|||
|
|
procedure ActivarModoEliminar; override;
|
|||
|
|
function EliminarDatos : Boolean; override;
|
|||
|
|
function CancelarEliminar : Boolean; override;
|
|||
|
|
procedure VerModal; override;
|
|||
|
|
procedure FreeContenido; override;
|
|||
|
|
procedure BuscarAlmacen; override;
|
|||
|
|
procedure BuscarArticulo; override;
|
|||
|
|
function ComprobarDatos: Boolean; override;
|
|||
|
|
public
|
|||
|
|
constructor Create(AOwner : TComponent); override;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
published
|
|||
|
|
property TablaArticulosAlmacen;
|
|||
|
|
property CodigoAlmacen;
|
|||
|
|
property CodigoArticulo;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
var
|
|||
|
|
frArticuloAlmacen: TfrArticuloAlmacen;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
{$R *.DFM}
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
BaseDatos, TablaArticulos, Articulos, TablaArticulosAlmacen, ArticulosAlmacen,
|
|||
|
|
TablaAlmacenes, Excepciones, Configuracion, RdxEmpresaActiva, Literales;
|
|||
|
|
|
|||
|
|
constructor TfrArticuloAlmacen.Create(AOwner : TComponent);
|
|||
|
|
var
|
|||
|
|
i : Integer;
|
|||
|
|
begin
|
|||
|
|
inherited Create(AOwner);
|
|||
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|||
|
|
BaseDatos := dmBaseDatos.BD;
|
|||
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|||
|
|
TablaArticulosAlmacen := TIBDataSet.Create(Self);
|
|||
|
|
dsArticulosAlmacen.DataSet := TablaArticulosAlmacen;
|
|||
|
|
with TablaArticulosAlmacen do
|
|||
|
|
begin
|
|||
|
|
Database := BaseDatos;
|
|||
|
|
Transaction := Transaccion;
|
|||
|
|
SelectSQL.Assign(dmTablaArticulosAlmacen.sqlConsultar);
|
|||
|
|
DeleteSQL.Assign(dmTablaArticulosAlmacen.sqlEliminar);
|
|||
|
|
RefreshSQL.Assign(dmTablaArticulosAlmacen.sqlConsultar);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{Carga todos los almacenes en el combox, como no habra posibilidad de cambio,
|
|||
|
|
da igual la entidad que sea}
|
|||
|
|
dmTablaAlmacenes.DarAlmacenes(EmpresaActiva.Codigo, FListaAlmacenesCodigo,FListaCodigosAlmacen);
|
|||
|
|
for i:=0 to FListaAlmacenesCodigo.Count-1 do
|
|||
|
|
cbxAlmacen.Items.Add(FListaAlmacenesCodigo.Names[i]);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
destructor TfrArticuloAlmacen.Destroy;
|
|||
|
|
begin
|
|||
|
|
TablaArticulosAlmacen.Close;
|
|||
|
|
TablaArticulosAlmacen.UnPrepare;
|
|||
|
|
TablaArticulosAlmacen.Free;
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.bAceptarClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if (RealizarOperacion) then
|
|||
|
|
CloseFrame;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.BuscarAlmacen;
|
|||
|
|
begin
|
|||
|
|
cbxAlmacen.ItemIndex := cbxAlmacen.Items.IndexOf(FListaCodigosAlmacen.Values[CodigoAlmacen]);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.BuscarArticulo;
|
|||
|
|
begin
|
|||
|
|
if Transaccion = NIL then
|
|||
|
|
exit;
|
|||
|
|
try
|
|||
|
|
with TablaArticulosAlmacen do
|
|||
|
|
begin
|
|||
|
|
Close;
|
|||
|
|
|
|||
|
|
// Buscar la fila a tratar si es necesario
|
|||
|
|
if (not VarIsNull(CodigoAlmacen)) and (not VarIsNull(CodigoArticulo)) then
|
|||
|
|
begin
|
|||
|
|
Params.ByName('CODIGOALMACEN').AsString := CodigoAlmacen;
|
|||
|
|
Params.ByName('CODIGOARTICULO').AsString := CodigoArticulo;
|
|||
|
|
end;
|
|||
|
|
Params.ByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|||
|
|
Prepare;
|
|||
|
|
Open;
|
|||
|
|
end;
|
|||
|
|
dmTablaArticulos.InicializarTablaArticulos(@TablaArticulosAlmacen);
|
|||
|
|
if (not VarIsNull(CodigoAlmacen)) and (not VarIsNull(CodigoArticulo)) then
|
|||
|
|
PendRecibir.Text := dmTablaArticulosAlmacen.DarUnidadesPendRecibirArticuloAlmacen(EmpresaActiva.Codigo, CodigoAlmacen,CodigoArticulo);
|
|||
|
|
except
|
|||
|
|
on E : EIBError do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
on E : Exception do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.ActivarModoConsultar;
|
|||
|
|
begin
|
|||
|
|
dsArticulosAlmacen.AutoEdit := False;
|
|||
|
|
Codigo.VerBoton := True;
|
|||
|
|
try
|
|||
|
|
TablaArticulosAlmacen.Open;
|
|||
|
|
if TablaArticulosAlmacen.RecordCount = 0 then
|
|||
|
|
begin
|
|||
|
|
VerMensajeFmt(msgArtNoExisteArtAlm, [CodigoArticulo]);
|
|||
|
|
CloseFrame;
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
TablaArticulosAlmacen.Cancel;
|
|||
|
|
Visible := True;
|
|||
|
|
except
|
|||
|
|
on E : EIBError do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
on E : Exception do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.ActivarModoEliminar;
|
|||
|
|
begin
|
|||
|
|
dsArticulosAlmacen.AutoEdit := False;
|
|||
|
|
Codigo.VerBoton := True;
|
|||
|
|
try
|
|||
|
|
TablaArticulosAlmacen.Open;
|
|||
|
|
if TablaArticulosAlmacen.RecordCount = 0 then
|
|||
|
|
begin
|
|||
|
|
VerMensajeFmt(msgArtNoExisteArtAlm, [CodigoArticulo]);
|
|||
|
|
CancelarEliminar;
|
|||
|
|
CloseFrame;
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
TablaArticulosAlmacen.Cancel;
|
|||
|
|
Visible := True;
|
|||
|
|
except
|
|||
|
|
on E : EIBError do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
on E : Exception do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.FreeContenido;
|
|||
|
|
begin
|
|||
|
|
if (ContenidoModal is TRdxFrameArticulosAlmacen) then begin
|
|||
|
|
CodigoAlmacen := (ContenidoModal as TRdxFrameArticulosAlmacen).CodigoAlmacen;
|
|||
|
|
CodigoArticulo := (ContenidoModal as TRdxFrameArticulosAlmacen).CodigoArticulo;
|
|||
|
|
end;
|
|||
|
|
inherited FreeContenido;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.CodigoButtonClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
if (TratarCambios = IDCANCEL) then
|
|||
|
|
exit;
|
|||
|
|
|
|||
|
|
Case Entidad of
|
|||
|
|
entArticuloAlmacen : EntidadModal := entArticulosAlmacen;
|
|||
|
|
entArticuloAlmacenFisico : EntidadModal := entArticulosAlmacenFisico;
|
|||
|
|
entArticuloAlmacenObra : EntidadModal := entArticulosAlmacenObra;
|
|||
|
|
end;
|
|||
|
|
ContenidoModal := TfrArticulosAlmacen.Create(Self);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.VerModal;
|
|||
|
|
begin
|
|||
|
|
if (ContenidoModal is TRdxFrameArticulosAlmacen) then
|
|||
|
|
(ContenidoModal as TRdxFrameArticulosAlmacen).CodigoAlmacen := FCodigoAlmacen;
|
|||
|
|
inherited VerModal;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrArticuloAlmacen.EliminarDatos: Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
try
|
|||
|
|
TablaArticulosAlmacen.Delete;
|
|||
|
|
Commit;
|
|||
|
|
TablaArticulosAlmacen.Close;
|
|||
|
|
Result := True;
|
|||
|
|
except
|
|||
|
|
on E : EIBError do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
on E : Exception do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrArticuloAlmacen.CancelarEliminar: Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
try
|
|||
|
|
RollBack;
|
|||
|
|
TablaArticulosAlmacen.Close;
|
|||
|
|
Result := True;
|
|||
|
|
except
|
|||
|
|
on E : EIBError do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
on E : Exception do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.bCancelarGuardarClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if (TratarCambios = IDOK) then
|
|||
|
|
CloseFrame;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrArticuloAlmacen.bSalirClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
try
|
|||
|
|
Rollback;
|
|||
|
|
CloseFrame;
|
|||
|
|
except
|
|||
|
|
on E : EIBError do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
on E : Exception do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrArticuloAlmacen.ComprobarDatos: Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
Case Modo of
|
|||
|
|
Eliminar : if dmTablaArticulosAlmacen.ArticuloAlmacenTieneExistencias(EmpresaActiva.Codigo, CodigoAlmacen,CodigoArticulo) then
|
|||
|
|
begin
|
|||
|
|
VerMensaje(msgArtTieneExistencias);
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
Result := True;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TfrArticuloAlmacen.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean;
|
|||
|
|
begin
|
|||
|
|
if not inherited CambiarEntidad(EntidadAnterior, Entidad) then
|
|||
|
|
Exit;
|
|||
|
|
|
|||
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|||
|
|
|
|||
|
|
Case Entidad of
|
|||
|
|
//entArticuloAlmac<61>nFisico no lo ponemos porque por defecto el frame tiene los
|
|||
|
|
//titulos adaptados para <20>l.
|
|||
|
|
entArticuloAlmacenObra : begin
|
|||
|
|
cAlmacen.Caption := 'Obra';
|
|||
|
|
eAlmacen.Caption := 'Obra:';
|
|||
|
|
cStock.Caption := 'Stock del material en la obra'
|
|||
|
|
end;
|
|||
|
|
entArticuloAlmacen : begin
|
|||
|
|
cAlmacen.Caption := 'Almac<61>n/Obra';
|
|||
|
|
eAlmacen.Caption := 'Almac<61>n/Obra:';
|
|||
|
|
cStock.Caption := 'Stock del material en el almac<61>n u obra'
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|