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');
|
|||
|
|
|
|||
|
|
{ <EFBFBD><EFBFBD><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<EFBFBD>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.
|