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

353 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: 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.