647 lines
18 KiB
ObjectPascal
647 lines
18 KiB
ObjectPascal
|
|
unit uInventarioController;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
|
|||
|
|
uIDataModuleInventario, uBizInventario, uArticulosProveedorController,
|
|||
|
|
uAlmacenesController;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
IInventarioController = interface(IObservador)
|
|||
|
|
['{FB1DE6BA-ADCC-4A83-B4D4-37DC5892766B}']
|
|||
|
|
|
|||
|
|
procedure Anadir(AInventario : IBizInventario);
|
|||
|
|
function Eliminar(AInventario : IBizInventario; Todos: Boolean; ApplyUpdates: Boolean): Boolean;
|
|||
|
|
function Trasladar(AInventario : IBizInventario; Todos: Boolean): Boolean;
|
|||
|
|
// procedure RecibirArticulos(Const APedido: IBizPedidosProveedor; Const CodigoAlmacenDes: Integer); overload;
|
|||
|
|
procedure RecibirArticulos(Const CodigoAlmacenDes: Integer); overload;
|
|||
|
|
procedure GuardarArticulosUnitarios(AInventario : IBizInventario);
|
|||
|
|
// function Trasladar: Boolean;
|
|||
|
|
// function Liberar: Boolean;
|
|||
|
|
// function Reservar(Const AMontaje: IBizMontaje): Boolean; overload;
|
|||
|
|
// function Reservar(Const CodigoMontaje: Integer): Boolean; overload;
|
|||
|
|
// function Eliminar: Boolean;
|
|||
|
|
|
|||
|
|
function Buscar(const ID: Integer): IBizInventario;
|
|||
|
|
function BuscarTodos: IBizInventario;
|
|||
|
|
procedure VerTodos(AInventario: IBizInventario);
|
|||
|
|
procedure Ver(AInventario : IBizInventario);
|
|||
|
|
|
|||
|
|
function ExtraerSeleccionados(AArticulos: IBizInventario) : IBizInventario;
|
|||
|
|
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
function Nuevo : IBizArticulo; overload;
|
|||
|
|
procedure Anadir(AArticulo : IBizArticulo);
|
|||
|
|
procedure Eliminar(const ID : Integer); overload;
|
|||
|
|
function Eliminar(AArticulo : IBizArticulo): Boolean; overload;
|
|||
|
|
procedure Guardar(AArticulo : IBizArticulo);
|
|||
|
|
procedure DescartarCambios(AArticulo : IBizArticulo);
|
|||
|
|
function Existe(const ID: Integer) : Boolean;
|
|||
|
|
function Duplicar(AArticulo: IBizArticulo): IBizArticulo;
|
|||
|
|
procedure Preview(AArticulo : IBizArticulo);
|
|||
|
|
procedure Print(AArticulo : IBizArticulo);
|
|||
|
|
}
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
TInventarioController = class(TObservador, IInventarioController)
|
|||
|
|
private
|
|||
|
|
FAlmacenesController: IAlmacenesController;
|
|||
|
|
FArticulosController : IArticulosProveedorController;
|
|||
|
|
function GetAlmacenesController: IAlmacenesController;
|
|||
|
|
function GetArticulosController: IArticulosProveedorController;
|
|||
|
|
procedure SetAlmacenesController(const Value: IAlmacenesController);
|
|||
|
|
procedure SetArticulosController(const Value: IArticulosProveedorController);
|
|||
|
|
|
|||
|
|
protected
|
|||
|
|
FDataModule : IDataModuleInventario;
|
|||
|
|
|
|||
|
|
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
|
|||
|
|
procedure AssignarID(AInventario: IBizInventario; ADataModule : IDataModuleInventario); virtual;
|
|||
|
|
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
|
|||
|
|
function _Vacio : IBizInventario;
|
|||
|
|
|
|||
|
|
procedure FiltrarEmpresa(AInventario: IBizInventario);
|
|||
|
|
function ValidarInventario(AInventario: IBizInventario): Boolean;
|
|||
|
|
|
|||
|
|
//Estos son los tres m<>todos a sobre escribir si se desea heredar toda la logica de
|
|||
|
|
//este controller
|
|||
|
|
procedure AsignarDataModule; virtual;
|
|||
|
|
procedure RecuperarObjetos(AInventario: IBizInventario); virtual;
|
|||
|
|
procedure AsignarEditor(out AEditor: IEditorDBItem); virtual;
|
|||
|
|
|
|||
|
|
procedure ValidarObjetos; virtual;
|
|||
|
|
procedure AsignarCodigo(AInventario: IBizInventario); virtual;
|
|||
|
|
|
|||
|
|
public
|
|||
|
|
property AlmacenesController: IAlmacenesController read GetAlmacenesController write SetAlmacenesController;
|
|||
|
|
property ArticulosController: IArticulosProveedorController read GetArticulosController write SetArticulosController;
|
|||
|
|
|
|||
|
|
constructor Create;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
|
|||
|
|
procedure Anadir(AInventario : IBizInventario);
|
|||
|
|
function Eliminar(AInventario : IBizInventario; Todos: Boolean; ApplyUpdates: Boolean): Boolean;
|
|||
|
|
function Trasladar(AInventario : IBizInventario; Todos: Boolean): Boolean;
|
|||
|
|
procedure RecibirArticulos(Const CodigoAlmacenDes: Integer); overload;
|
|||
|
|
procedure GuardarArticulosUnitarios(AInventario : IBizInventario);
|
|||
|
|
// function Liberar: Boolean;
|
|||
|
|
// function Reservar(Const AMontaje: IBizMontaje): Boolean; overload;
|
|||
|
|
// function Reservar(Const CodigoMontaje: Integer): Boolean; overload;
|
|||
|
|
// function Eliminar: Boolean;
|
|||
|
|
|
|||
|
|
function Buscar(const ID: Integer): IBizInventario;
|
|||
|
|
function BuscarTodos: IBizInventario;
|
|||
|
|
procedure VerTodos(AInventario: IBizInventario);
|
|||
|
|
procedure Ver(AInventario : IBizInventario);
|
|||
|
|
function ExtraerSeleccionados(AArticulos: IBizInventario) : IBizInventario;
|
|||
|
|
{
|
|||
|
|
procedure Eliminar(const ID : Integer); overload;
|
|||
|
|
|
|||
|
|
procedure Guardar(AArticulo : IBizArticulo); virtual;
|
|||
|
|
procedure DescartarCambios(AArticulo : IBizArticulo); virtual;
|
|||
|
|
function Existe(const ID: Integer) : Boolean; virtual;
|
|||
|
|
|
|||
|
|
function Buscar(const ID: Integer): IBizArticulo;
|
|||
|
|
function BuscarTodos: IBizArticulo;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
function Duplicar(AArticulo: IBizArticulo): IBizArticulo;
|
|||
|
|
procedure Preview(AArticulo : IBizArticulo);
|
|||
|
|
procedure Print(AArticulo : IBizArticulo);
|
|||
|
|
}
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
cxControls, DB, schInventarioClient_Intf, uEditorRegistryUtils,
|
|||
|
|
uIEditorInventario, uDataModuleInventario,
|
|||
|
|
uDataModuleUsuarios, uDAInterfaces, uDataTableUtils,
|
|||
|
|
uDateUtils, uROTypes, DateUtils, Controls, Windows,
|
|||
|
|
dialogs,
|
|||
|
|
uBizAlmacenes, uBizArticulosProveedor, uIEditorEntradaArticulosInventario;
|
|||
|
|
|
|||
|
|
{ TInventarioController }
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
procedure TInventarioController.Anadir(AArticulo: IBizArticulo);
|
|||
|
|
begin
|
|||
|
|
AArticulo.Insert;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
procedure TInventarioController.Anadir(AInventario: IBizInventario);
|
|||
|
|
var
|
|||
|
|
AArticulos: IBizArticuloProveedor;
|
|||
|
|
begin
|
|||
|
|
//Todos los cambios ser<65>n en cach<63> hasta que el usuario decida guardar
|
|||
|
|
AArticulos := (FArticulosController.BuscarTodos as IBizArticuloProveedor);
|
|||
|
|
AArticulos := FArticulosController.ElegirArticulos(AArticulos, '', True);
|
|||
|
|
if Assigned(AArticulos) then
|
|||
|
|
AInventario.Copiar(AArticulos)
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.AsignarCodigo(AInventario: IBizInventario);
|
|||
|
|
begin
|
|||
|
|
if (AInventario.EsNuevo) then
|
|||
|
|
AssignarID(AInventario, (FDataModule as IDataModuleInventario));
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.AsignarDataModule;
|
|||
|
|
begin
|
|||
|
|
FDataModule := TDataModuleInventario.Create(Nil);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.AsignarEditor(out AEditor: IEditorDBItem);
|
|||
|
|
begin
|
|||
|
|
CreateEditor('EditorEntradaArticulosInventario', IEditorEntradaArticulosInventario, AEditor);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.AssignarID(AInventario: IBizInventario; ADataModule : IDataModuleInventario);
|
|||
|
|
var
|
|||
|
|
NuevoIDCabecera : Integer;
|
|||
|
|
begin
|
|||
|
|
if not Assigned(AInventario) then
|
|||
|
|
raise Exception.Create ('Inventario no asignada');
|
|||
|
|
|
|||
|
|
NuevoIDCabecera := ADataModule.GetNextID(AInventario.DataTable.LogicalName);
|
|||
|
|
|
|||
|
|
AInventario.Edit;
|
|||
|
|
AInventario.ID := NuevoIDCabecera;
|
|||
|
|
AInventario.Post;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.Buscar(const ID: Integer): IBizInventario;
|
|||
|
|
begin
|
|||
|
|
Result := (FDataModule as IDataModuleInventario).GetItem(ID);
|
|||
|
|
FiltrarEmpresa(Result);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.BuscarTodos: IBizInventario;
|
|||
|
|
begin
|
|||
|
|
Result := FDataModule.GetItems;
|
|||
|
|
FiltrarEmpresa(Result);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
constructor TInventarioController.Create;
|
|||
|
|
begin
|
|||
|
|
AsignarDataModule;
|
|||
|
|
FArticulosController := TArticulosProveedorController.Create;
|
|||
|
|
FAlmacenesController := TAlmacenesController.Create;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
procedure TInventarioController.DescartarCambios(AArticulo: IBizArticulo);
|
|||
|
|
begin
|
|||
|
|
if not Assigned(AArticulo) then
|
|||
|
|
raise Exception.Create ('Articulo no asignado');
|
|||
|
|
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
if (AArticulo.State in dsEditModes) then
|
|||
|
|
AArticulo.Cancel;
|
|||
|
|
|
|||
|
|
AArticulo.DataTable.CancelUpdates;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
destructor TInventarioController.Destroy;
|
|||
|
|
begin
|
|||
|
|
FDataModule := Nil;
|
|||
|
|
FArticulosController := Nil;
|
|||
|
|
FAlmacenesController := Nil;
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.Eliminar(AInventario: IBizInventario; Todos: Boolean; ApplyUpdates: Boolean): Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
if Assigned(AInventario) then
|
|||
|
|
begin
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
if Todos
|
|||
|
|
then AInventario.DataTable.ClearRows
|
|||
|
|
else AInventario.DataTable.Delete;
|
|||
|
|
|
|||
|
|
if ApplyUpdates then
|
|||
|
|
AInventario.DataTable.ApplyUpdates;
|
|||
|
|
Result := True;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.ExtraerSeleccionados(AArticulos: IBizInventario): IBizInventario;
|
|||
|
|
var
|
|||
|
|
ASeleccionados : IBizInventario;
|
|||
|
|
begin
|
|||
|
|
ASeleccionados := (Self.Buscar(ID_NULO) as IBizInventario);
|
|||
|
|
CopyDataTable(AArticulos.DataTable, ASeleccionados.DataTable, True);
|
|||
|
|
Result := ASeleccionados;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
function TInventarioController.Eliminar: Boolean;
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.Liberar: Boolean;
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
{
|
|||
|
|
function TInventarioController.Duplicar(AArticulo: IBizArticulo): IBizArticulo;
|
|||
|
|
begin
|
|||
|
|
Result := Self._Vacio;
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
DuplicarRegistros(AArticulo.DataTable, Result.DataTable, mdrActual);
|
|||
|
|
|
|||
|
|
// Hay que dejar algunos campos como si fuera un art<72>culo nuevo
|
|||
|
|
Result.Edit;
|
|||
|
|
with Result do
|
|||
|
|
begin
|
|||
|
|
ID_EMPRESA := dmUsuarios.IDEmpresaActual;
|
|||
|
|
USUARIO := dmUsuarios.LoginInfo.Usuario;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
Result.Post;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function TInventarioController.ValidarInventario(AInventario: IBizInventario): Boolean;
|
|||
|
|
begin
|
|||
|
|
{ Result := False;
|
|||
|
|
|
|||
|
|
// Asegurarse de valores en campos "autom<6F>ticos"
|
|||
|
|
AInventario.Edit;
|
|||
|
|
try
|
|||
|
|
AInventario.USUARIO := dmUsuarios.LoginInfo.Usuario;
|
|||
|
|
}
|
|||
|
|
Result := True;
|
|||
|
|
{ finally
|
|||
|
|
AInventario.Post;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.ValidarObjetos;
|
|||
|
|
begin
|
|||
|
|
//
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
procedure TInventarioController.Ver(AArticulo: IBizArticulo);
|
|||
|
|
var
|
|||
|
|
AEditor : IEditorDBItem;
|
|||
|
|
begin
|
|||
|
|
AEditor := NIL;
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
RecuperarObjetos(AArticulo);
|
|||
|
|
AsignarEditor(AEditor);
|
|||
|
|
|
|||
|
|
with (AEditor as IEditorArticulo) do
|
|||
|
|
begin
|
|||
|
|
Controller := Self; //OJO ORDEN MUY IMPORTANTE
|
|||
|
|
Articulo := AArticulo;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if Assigned(AEditor) then
|
|||
|
|
AEditor.ShowModal;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
procedure TInventarioController.Ver(AInventario: IBizInventario);
|
|||
|
|
var
|
|||
|
|
AEditor : IEditorDBItem;
|
|||
|
|
begin
|
|||
|
|
AEditor := NIL;
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
RecuperarObjetos(AInventario);
|
|||
|
|
AsignarEditor(AEditor);
|
|||
|
|
|
|||
|
|
with (AEditor as IEditorEntradaArticulosInventario) do
|
|||
|
|
begin
|
|||
|
|
Controller := Self; //OJO ORDEN MUY IMPORTANTE
|
|||
|
|
Articulos := AInventario;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if Assigned(AEditor) then
|
|||
|
|
AEditor.ShowModal;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.VerTodos(AInventario: IBizInventario);
|
|||
|
|
var
|
|||
|
|
AEditor : IEditorInventario;
|
|||
|
|
begin
|
|||
|
|
AEditor := NIL;
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
CreateEditor('EditorInventario', IEditorInventario, AEditor);
|
|||
|
|
with AEditor do
|
|||
|
|
begin
|
|||
|
|
Controller := Self; //OJO ORDEN MUY IMPORTANTE
|
|||
|
|
Inventario := AInventario;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if Assigned(AEditor) then
|
|||
|
|
AEditor.ShowEmbedded;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController._Vacio: IBizInventario;
|
|||
|
|
begin
|
|||
|
|
Result := Buscar(ID_NULO);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
procedure TInventarioController.Eliminar(const ID: Integer);
|
|||
|
|
var
|
|||
|
|
AArticulo : IBizArticulo;
|
|||
|
|
begin
|
|||
|
|
AArticulo := Buscar(ID);
|
|||
|
|
|
|||
|
|
if not Assigned(AArticulo) then
|
|||
|
|
raise Exception.Create(Format('No se ha encontrado el art<72>culo con ID = %d', [ID]));
|
|||
|
|
|
|||
|
|
Eliminar(AArticulo);
|
|||
|
|
AArticulo := NIL;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.Eliminar(AArticulo: IBizArticulo): Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
|
|||
|
|
if not Assigned(AArticulo) then
|
|||
|
|
raise Exception.Create ('Articulo no asignada');
|
|||
|
|
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
if (AArticulo.State in dsEditModes) then
|
|||
|
|
AArticulo.Cancel;
|
|||
|
|
|
|||
|
|
AArticulo.Delete;
|
|||
|
|
AArticulo.DataTable.ApplyUpdates;
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
Result := True;
|
|||
|
|
except
|
|||
|
|
on E: Exception do
|
|||
|
|
begin
|
|||
|
|
AArticulo.DataTable.CancelUpdates;
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
if (Pos('FOREIGN KEY', E.Message) > 0) then
|
|||
|
|
MessageBox(0, 'No se puede borrar este art<72>culo porque tiene art<72>culos', 'Atenci<63>n', MB_ICONWARNING or MB_OK);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
procedure TInventarioController.RecibirArticulos(const CodigoAlmacenDes: Integer);
|
|||
|
|
var
|
|||
|
|
AInventario: IBizInventario;
|
|||
|
|
begin
|
|||
|
|
try
|
|||
|
|
AInventario := Buscar(ID_NULO);
|
|||
|
|
if not AInventario.DataTable.Active then
|
|||
|
|
AInventario.DataTable.Active := True;
|
|||
|
|
|
|||
|
|
AInventario.IDAlmacenEntrada := CodigoAlmacenDes;
|
|||
|
|
Ver(AInventario);
|
|||
|
|
finally
|
|||
|
|
AInventario := Nil;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
//
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.RecuperarObjetos(AInventario: IBizInventario);
|
|||
|
|
begin
|
|||
|
|
//
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.SetAlmacenesController(const Value: IAlmacenesController);
|
|||
|
|
begin
|
|||
|
|
FAlmacenesController := Value;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.SetArticulosController(const Value: IArticulosProveedorController);
|
|||
|
|
begin
|
|||
|
|
FArticulosController := Value
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.Trasladar(AInventario: IBizInventario; Todos: Boolean): Boolean;
|
|||
|
|
var
|
|||
|
|
AAlmacenes : IBizAlmacen;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
if Assigned(AInventario) then
|
|||
|
|
begin
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
//Seleccionamos almac<61>n
|
|||
|
|
AAlmacenes := FAlmacenesController.BuscarTodos;
|
|||
|
|
if not AAlmacenes.DataTable.Active then
|
|||
|
|
AAlmacenes.DataTable.Active := True;
|
|||
|
|
|
|||
|
|
AAlmacenes := FAlmacenesController.VerLista(AAlmacenes);
|
|||
|
|
|
|||
|
|
//Aginamos el nuevo almac<61>n
|
|||
|
|
if Assigned(AAlmacenes) then
|
|||
|
|
begin
|
|||
|
|
if not AInventario.DataTable.Editing then
|
|||
|
|
AInventario.Edit;
|
|||
|
|
AInventario.ID_ALMACEN := AAlmacenes.ID;
|
|||
|
|
AInventario.Post;
|
|||
|
|
|
|||
|
|
AInventario.DataTable.ApplyUpdates;
|
|||
|
|
Result := True;
|
|||
|
|
// if Todos
|
|||
|
|
// then AInventario.DataTable.ClearRows
|
|||
|
|
// else AInventario.DataTable.Delete;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
function TInventarioController.Trasladar: Boolean;
|
|||
|
|
begin
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.Existe(const ID: Integer): Boolean;
|
|||
|
|
var
|
|||
|
|
AArticulo : IBizArticulo;
|
|||
|
|
begin
|
|||
|
|
try
|
|||
|
|
AArticulo := Buscar(ID);
|
|||
|
|
Result := Assigned(AArticulo) and (AArticulo.ID = ID);
|
|||
|
|
finally
|
|||
|
|
AArticulo := NIL;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
procedure TInventarioController.FiltrarEmpresa(AInventario: IBizInventario);
|
|||
|
|
begin
|
|||
|
|
if AInventario.DataTable.Active then
|
|||
|
|
AInventario.DataTable.Active := False;
|
|||
|
|
|
|||
|
|
// Filtrar los inventario actuales por empresa
|
|||
|
|
with AInventario.DataTable.Where do
|
|||
|
|
begin
|
|||
|
|
if NotEmpty then
|
|||
|
|
AddOperator(opAND);
|
|||
|
|
|
|||
|
|
OpenBraket;
|
|||
|
|
AddText('ALMACENES.' + fld_InventarioID_EMPRESA + ' = ' + IntToStr(dmUsuarios.IDEmpresaActual));
|
|||
|
|
CloseBraket;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.GetAlmacenesController: IAlmacenesController;
|
|||
|
|
begin
|
|||
|
|
Result := FAlmacenesController;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.GetArticulosController: IArticulosProveedorController;
|
|||
|
|
begin
|
|||
|
|
Result := FArticulosController;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.GuardarArticulosUnitarios(AInventario : IBizInventario);
|
|||
|
|
var
|
|||
|
|
AArticulosUnitarios: IBizInventario;
|
|||
|
|
i: Integer;
|
|||
|
|
begin
|
|||
|
|
AArticulosUnitarios := Buscar(ID_NULO);
|
|||
|
|
if not AArticulosUnitarios.DataTable.Active then
|
|||
|
|
AArticulosUnitarios.DataTable.Active := True;
|
|||
|
|
|
|||
|
|
with AInventario do
|
|||
|
|
begin
|
|||
|
|
DataTable.First;
|
|||
|
|
while not DataTable.EOF do
|
|||
|
|
begin
|
|||
|
|
for i:=0 to (CANTIDAD - 1) do
|
|||
|
|
begin
|
|||
|
|
AArticulosUnitarios.Insert;
|
|||
|
|
AArticulosUnitarios.ID_ALMACEN := ID_ALMACEN;
|
|||
|
|
AArticulosUnitarios.ID_ARTICULO := ID_ARTICULO;
|
|||
|
|
if not DataTable.FieldByName(fld_INVENTARIOID_PEDIDO_PROVEEDOR).IsNull then
|
|||
|
|
AArticulosUnitarios.ID_PEDIDO_PROVEEDOR := ID_PEDIDO_PROVEEDOR;
|
|||
|
|
if not DataTable.FieldByName(fld_INVENTARIOID_PEDIDO_CLIENTE).IsNull then
|
|||
|
|
AArticulosUnitarios.ID_PEDIDO_CLIENTE := ID_PEDIDO_CLIENTE;
|
|||
|
|
AArticulosUnitarios.DESCRIPCION := DESCRIPCION;
|
|||
|
|
AArticulosUnitarios.Post;
|
|||
|
|
|
|||
|
|
AssignarID(AArticulosUnitarios, (FDataModule as IDataModuleInventario));
|
|||
|
|
end;
|
|||
|
|
DataTable.Next;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
DataTable.CancelUpdates;
|
|||
|
|
AArticulosUnitarios.DataTable.ApplyUpdates;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
procedure TInventarioController.Guardar(AArticulo: IBizArticulo);
|
|||
|
|
begin
|
|||
|
|
if not Assigned(AArticulo) then
|
|||
|
|
raise Exception.Create ('Art<72>culo no asignada');
|
|||
|
|
|
|||
|
|
ValidarObjetos;
|
|||
|
|
|
|||
|
|
if ValidarArticulo(AArticulo) then
|
|||
|
|
begin
|
|||
|
|
ShowHourglassCursor;
|
|||
|
|
try
|
|||
|
|
if (AArticulo.DataTable.State in dsEditModes) then
|
|||
|
|
AArticulo.DataTable.Post;
|
|||
|
|
|
|||
|
|
AsignarCodigo(AArticulo);
|
|||
|
|
|
|||
|
|
AArticulo.DataTable.ApplyUpdates;
|
|||
|
|
finally
|
|||
|
|
HideHourglassCursor;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TInventarioController.Nuevo: IBizArticulo;
|
|||
|
|
var
|
|||
|
|
AArticulo : IBizArticulo;
|
|||
|
|
begin
|
|||
|
|
AArticulo := FDataModule.NewItem;
|
|||
|
|
FiltrarEmpresa(AArticulo);
|
|||
|
|
AArticulo.DataTable.Active := True;
|
|||
|
|
AArticulo.Insert;
|
|||
|
|
Result := AArticulo;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
procedure TInventarioController.Preview(AArticulo: IBizArticulo);
|
|||
|
|
var
|
|||
|
|
AReportController : IArticulosReportController;
|
|||
|
|
begin
|
|||
|
|
AReportController := TArticulosReportController.Create;
|
|||
|
|
try
|
|||
|
|
AReportController.Preview(AArticulo.ID);
|
|||
|
|
finally
|
|||
|
|
AReportController := NIL;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TInventarioController.Print(AArticulo: IBizArticulo);
|
|||
|
|
var
|
|||
|
|
AReportController : IArticulosReportController;
|
|||
|
|
begin
|
|||
|
|
AReportController := TArticulosReportController.Create;
|
|||
|
|
try
|
|||
|
|
AReportController.Print(AArticulo.ID);
|
|||
|
|
finally
|
|||
|
|
AReportController := NIL;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
end.
|