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.
LuisLeon_FactuGES/Modulos/Articulos proveedor/Controller/uArticulosProveedorController.pas
2007-06-11 15:35:41 +00:00

224 lines
7.0 KiB
ObjectPascal
Raw Blame History

unit uArticulosProveedorController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
uIDataModuleArticulos, uBizArticulos,
uArticulosController, uDatosProveedorController, uBizArticulosProveedor,
uIEditorArticulosProveedor;
type
IArticulosProveedorController = interface(IArticulosController)
['{EDE29989-1B67-4BAE-A575-45872F41F7BD}']
function GetDatosProveedoresController: IDatosProveedoresController;
procedure SetDatosProveedoresController(const Value: IDatosProveedoresController);
property DatosProveedoresController: IDatosProveedoresController read GetDatosProveedoresController write SetDatosProveedoresController;
function ElegirArticulos(AArticulos : IBizArticuloProveedor; AMensaje: String; AMultiSelect: Boolean): IBizArticuloProveedor;
//function ExtraerSeleccionados(AArticulos: IBizArticuloProveedor) : IBizArticuloProveedor;
end;
TArticulosProveedorController = class(TArticulosController, IArticulosProveedorController)
protected
FDatosProveedoresController: IDatosProveedoresController;
function GetDatosProveedoresController: IDatosProveedoresController;
procedure SetDatosProveedoresController(const Value: IDatosProveedoresController);
procedure AssignarID(AArticulo: IBizArticulo; ADataModule : IDataModuleArticulos); override;
function ValidarArticulo(AArticulo: IBizArticulo): Boolean; override;
procedure AsignarDataModule; override;
procedure Ver(AArticulo : IBizArticulo); override;
procedure VerTodos(AArticulos: IBizArticulo); override;
public
property DatosProveedoresController: IDatosProveedoresController read GetDatosProveedoresController
write SetDatosProveedoresController;
constructor Create;
destructor Destroy; override;
function ElegirArticulos(AArticulos : IBizArticuloProveedor; AMensaje: String; AMultiSelect: Boolean): IBizArticuloProveedor;
// function ExtraerSeleccionados(AArticulos: IBizArticuloProveedor) : IBizArticuloProveedor;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils, schArticulosClient_Intf,
uDataModuleUsuarios, uDAInterfaces, uDataTableUtils,
uDateUtils, uROTypes, DateUtils, Controls, Windows,
uIDataModuleArticulosProveedor, uDataModuleArticulosProveedor,
uIEditorArticuloProveedor, uIEditorElegirArticulosProveedor;
{ TArticulosProveedorController }
procedure TArticulosProveedorController.AsignarDataModule;
begin
// inherited;
FDataModule := TDataModuleArticulosProveedor.Create(Nil);
end;
procedure TArticulosProveedorController.AssignarID(AArticulo: IBizArticulo;
ADataModule: IDataModuleArticulos);
var
NuevoIDCabecera : Integer;
begin
// inherited; <- NO DESCOMENTAR
if not Assigned(AArticulo) then
raise Exception.Create ('Montaje no asignada');
if not Assigned(FDatosProveedoresController) then
raise Exception.Create ('Controller datos proveedor no asignado');
{ <20><><EFBFBD> OJO !!!
Primero cambiamos el ID de las tablas detalles
porque si cambiamos antes el ID de la cabecera
deja de funcionar la relacion M/D y no
encontrar<61>amos las filas detalle.
--> MASTER.ID = DETAIL.ID_MONTAJE <--
}
NuevoIDCabecera := ADataModule.GetNextID(AArticulo.DataTable.LogicalName);
FDatosProveedoresController.AssignarID((AArticulo as IBizArticuloProveedor).DatosProveedores, NuevoIDCabecera, False);
AArticulo.Edit;
AArticulo.ID := NuevoIDCabecera;
AArticulo.Post;
end;
constructor TArticulosProveedorController.Create;
begin
inherited;
FDatosProveedoresController := TDatosProveedoresController.Create;
FDatosProveedoresController.addObservador(Self);
end;
destructor TArticulosProveedorController.Destroy;
begin
FDatosProveedoresController := Nil;
inherited;
end;
function TArticulosProveedorController.ElegirArticulos(AArticulos: IBizArticuloProveedor; AMensaje: String;
AMultiSelect: Boolean): IBizArticuloProveedor;
var
AEditor : IEditorElegirArticulosProveedor;
begin
Result := NIL;
CreateEditor('EditorElegirArticulosProveedor', IEditorElegirArticulosProveedor, AEditor);
try
with AEditor do
begin
Controller := Self;
Articulos := AArticulos;
MultiSelect := AMultiSelect;
if IsPositiveResult(ShowModal) then
Result := ArticulosSeleccionados;
end;
finally
AEditor := NIL;
end;
end;
{function TArticulosProveedorController.ExtraerSeleccionados(AArticulos: IBizArticuloProveedor): IBizArticuloProveedor;
var
ASeleccionados : IBizArticuloProveedor;
begin
ASeleccionados := (Self.Buscar(ID_NULO) as IBizArticuloProveedor);
CopyDataTable(AArticulos.DataTable, ASeleccionados.DataTable, True);
Result := ASeleccionados;
end;}
function TArticulosProveedorController.GetDatosProveedoresController: IDatosProveedoresController;
begin
Result := FDatosProveedoresController;
end;
{procedure TArticulosProveedorController.RecuperarDatosProveedor(AArticulo: IBizArticuloProveedor);
begin
AArticulo.DatosProveedor := FDatosProveedoresController.Buscar(AArticulo.ID_ARTICULO);
end;}
procedure TArticulosProveedorController.SetDatosProveedoresController(const Value: IDatosProveedoresController);
begin
FDatosProveedoresController := Value;
end;
function TArticulosProveedorController.ValidarArticulo(
AArticulo: IBizArticulo): Boolean;
var
AReferencia : String;
begin
Result := False;
if not Assigned(FDatosProveedoresController) then
raise Exception.Create ('Controller datos proveedor no asignado');
Result := inherited ValidarArticulo(AArticulo);
// Forzar refresco de la tabla art<72>culos haciendo una modificaci<63>n
AArticulo.Edit;
AReferencia := AArticulo.REFERENCIA;
AArticulo.REFERENCIA := '';
AArticulo.Post;
AArticulo.Edit;
AArticulo.REFERENCIA := AReferencia;
AArticulo.Post;
end;
procedure TArticulosProveedorController.Ver(AArticulo: IBizArticulo);
var
AEditor : IEditorArticuloProveedor;
begin
// inherited; <- No descomentar
AEditor := NIL;
ShowHourglassCursor;
try
RecuperarObjetos(AArticulo);
CreateEditor('EditorArticuloProveedor', IEditorArticuloProveedor, AEditor);
with (AEditor as IEditorArticuloProveedor) do
begin
Controller := Self; //OJO ORDEN MUY IMPORTANTE
Articulo := AArticulo;
end;
finally
HideHourglassCursor;
end;
if Assigned(AEditor) then
AEditor.ShowModal;
end;
procedure TArticulosProveedorController.VerTodos(AArticulos: IBizArticulo);
var
AEditor : IEditorArticulosProveedor;
begin
// inherited; <- No descomentar
AEditor := NIL;
ShowHourglassCursor;
try
RecuperarObjetos(AArticulos);
CreateEditor('EditorArticulosProveedor', IEditorArticulosProveedor, AEditor);
with (AEditor as IEditorArticulosProveedor) do
begin
Controller := Self; //OJO ORDEN MUY IMPORTANTE
Articulos := AArticulos;
end;
finally
HideHourglassCursor;
end;
if Assigned(AEditor) then
AEditor.ShowEmbedded;
end;
end.