git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/tags/1.2.0@6 c93665c3-c93d-084d-9b98-7d5f4a9c3376
200 lines
6.0 KiB
ObjectPascal
200 lines
6.0 KiB
ObjectPascal
unit uDatosProveedorController;
|
||
|
||
interface
|
||
|
||
uses
|
||
Classes, uDADataTable, uControllerBase, uProveedoresController,
|
||
uBizDatosProveedores, uIDataModuleArticulosProveedor;
|
||
|
||
type
|
||
IDatosProveedoresController = interface(ISujeto)
|
||
['{43A5AEDA-9DD2-4520-9AC1-5AB7F37336A7}']
|
||
procedure AssignarID(ADatosProveedores: IBizDatosProveedores; IDCabecera: Integer; EsModificacion:Boolean);
|
||
|
||
procedure Anadir(ADatosProveedores : IBizDatosProveedores);
|
||
procedure Eliminar(ADatosProveedores : IBizDatosProveedores);
|
||
|
||
procedure ElegirProveedor(ADatosProveedores : IBizDatosProveedores);
|
||
procedure AnadirProveedor(ADatosProveedores : IBizDatosProveedores);
|
||
procedure VerProveedor(ADatosProveedores : IBizDatosProveedores);
|
||
end;
|
||
|
||
TDatosProveedoresController = class(TSujeto, IDatosProveedoresController)
|
||
private
|
||
FProveedoresController: IProveedoresController;
|
||
protected
|
||
FDataModule : IDataModuleArticulosProveedor;
|
||
public
|
||
procedure Anadir(ADatosProveedores : IBizDatosProveedores);
|
||
procedure Eliminar(ADatosProveedores : IBizDatosProveedores);
|
||
|
||
procedure AssignarID(ADatosProveedores: IBizDatosProveedores; IDCabecera: Integer; EsModificacion:Boolean);
|
||
constructor Create;
|
||
destructor Destroy; override;
|
||
|
||
procedure ElegirProveedor(ADatosProveedores : IBizDatosProveedores);
|
||
procedure AnadirProveedor(ADatosProveedores : IBizDatosProveedores);
|
||
procedure VerProveedor(ADatosProveedores : IBizDatosProveedores);
|
||
end;
|
||
|
||
implementation
|
||
|
||
uses
|
||
DB, SysUtils, uDAInterfaces, Variants, uDataModuleArticulosProveedor,
|
||
uBizContactos, cxControls;
|
||
|
||
{ TDatosProveedorController }
|
||
|
||
|
||
procedure TDatosProveedoresController.Anadir(ADatosProveedores: IBizDatosProveedores);
|
||
begin
|
||
ADatosProveedores.Insert;
|
||
end;
|
||
|
||
procedure TDatosProveedoresController.AnadirProveedor(ADatosProveedores: IBizDatosProveedores);
|
||
var
|
||
AProveedor : IBizContacto;
|
||
begin
|
||
inherited;
|
||
AProveedor := (FProveedoresController.Nuevo as IBizProveedor);
|
||
FProveedoresController.Ver(AProveedor);
|
||
if Assigned(AProveedor) then
|
||
begin
|
||
if not ADatosProveedores.DataTable.Editing then
|
||
ADatosProveedores.Edit;
|
||
ADatosProveedores.ID_PROVEEDOR := AProveedor.ID;
|
||
ADatosProveedores.NOMBRE := AProveedor.NOMBRE;
|
||
end;
|
||
AProveedor := Nil;
|
||
end;
|
||
|
||
procedure TDatosProveedoresController.AssignarID(ADatosProveedores: IBizDatosProveedores;
|
||
IDCabecera: Integer; EsModificacion:Boolean);
|
||
begin
|
||
with ADatosProveedores do
|
||
begin
|
||
DataTable.DisableControls;
|
||
try
|
||
if not DataTable.Active then
|
||
DataTable.Active := True;
|
||
|
||
{ <20><><EFBFBD><EFBFBD> OJO !!!!
|
||
Para asignar el ID en los Gastos hay
|
||
que tener en cuenta una cosa:
|
||
Si se cambia el ID, ese detalle ya no
|
||
pertenece a esa cabecera porque ya no se
|
||
cumple la condici<63>n de la relacion:
|
||
Master.ID = Detail.ID_MONTAJE.
|
||
|
||
Por esa raz<61>n no sirve hacer un recorrido
|
||
desde el principio hasta el final porque
|
||
las Gastos van desapareciendo seg<65>n asignamos
|
||
el valor al campo ID y nos mueve aleatoriamente
|
||
la posici<63>n del registro actual.
|
||
|
||
Es mejor hacer un bucle sencillo hasta que
|
||
"se gasten" todos los Gastos. Cuando el
|
||
RecordCount llegue a 0 quiere decir que hemos
|
||
tratado todos los Gastos.
|
||
|
||
El bucle cambia en el caso de ser llamada esta funcion desde modificar
|
||
un montaje ya que en ese caso s<> que hay que hacer un recorrido
|
||
total de las tuplas de detalle.
|
||
}
|
||
|
||
if not EsModificacion then
|
||
begin
|
||
while RecordCount > 0 do
|
||
begin
|
||
DataTable.First;
|
||
Edit;
|
||
ID := FDataModule.GetNextID(DataTable.LogicalName);
|
||
ID_ARTICULO := IDCabecera;
|
||
Post
|
||
end
|
||
end
|
||
else
|
||
begin
|
||
DataTable.First;
|
||
while not DataTable.EOF do
|
||
begin
|
||
if EsNuevo then
|
||
begin
|
||
Edit;
|
||
ID := FDataModule.GetNextID(DataTable.LogicalName);
|
||
ID_ARTICULO := IDCabecera;
|
||
Post
|
||
end;
|
||
DataTable.Next
|
||
end;
|
||
end;
|
||
finally
|
||
DataTable.EnableControls;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
constructor TDatosProveedoresController.Create;
|
||
begin
|
||
inherited;
|
||
FDataModule := TDataModuleArticulosProveedor.Create(Nil);
|
||
FProveedoresController := TProveedoresController.Create;
|
||
end;
|
||
|
||
destructor TDatosProveedoresController.Destroy;
|
||
begin
|
||
FDataModule := Nil;
|
||
FProveedoresController := Nil;
|
||
inherited;
|
||
end;
|
||
|
||
procedure TDatosProveedoresController.ElegirProveedor(ADatosProveedores: IBizDatosProveedores);
|
||
var
|
||
AProveedor : IBizContacto;
|
||
begin
|
||
inherited;
|
||
AProveedor := (FProveedoresController.ElegirContacto(FProveedoresController.BuscarTodos, '', False) as IBizProveedor);
|
||
if Assigned(AProveedor) then
|
||
begin
|
||
if not ADatosProveedores.DataTable.Editing then
|
||
ADatosProveedores.Edit;
|
||
ADatosProveedores.ID_PROVEEDOR := AProveedor.ID;
|
||
ADatosProveedores.NOMBRE := AProveedor.NOMBRE;
|
||
end;
|
||
AProveedor := Nil;
|
||
end;
|
||
|
||
procedure TDatosProveedoresController.Eliminar(ADatosProveedores: IBizDatosProveedores);
|
||
begin
|
||
if not Assigned(ADatosProveedores) then
|
||
raise Exception.Create ('Datos proveedor no asignado');
|
||
|
||
ShowHourglassCursor;
|
||
try
|
||
if (ADatosProveedores.State in dsEditModes) then
|
||
ADatosProveedores.Cancel;
|
||
|
||
ADatosProveedores.Delete;
|
||
finally
|
||
HideHourglassCursor;
|
||
end;
|
||
end;
|
||
|
||
procedure TDatosProveedoresController.VerProveedor(ADatosProveedores: IBizDatosProveedores);
|
||
var
|
||
AProveedor : IBizContacto;
|
||
begin
|
||
AProveedor := FProveedoresController.Buscar(ADatosProveedores.ID_PROVEEDOR);
|
||
FProveedoresController.Ver(AProveedor);
|
||
if Assigned(AProveedor) then
|
||
begin
|
||
if not ADatosProveedores.DataTable.Editing then
|
||
ADatosProveedores.Edit;
|
||
ADatosProveedores.ID_PROVEEDOR := AProveedor.ID;
|
||
ADatosProveedores.NOMBRE := AProveedor.NOMBRE;
|
||
end;
|
||
AProveedor := Nil;
|
||
end;
|
||
|
||
end.
|