git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/tags/1.2.0@6 c93665c3-c93d-084d-9b98-7d5f4a9c3376
224 lines
7.0 KiB
ObjectPascal
224 lines
7.0 KiB
ObjectPascal
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.
|