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;
|
|||
|
|
|
|||
|
|
{ <EFBFBD><EFBFBD><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<EFBFBD>n de la relacion:
|
|||
|
|
Master.ID = Detail.ID_MONTAJE.
|
|||
|
|
|
|||
|
|
Por esa raz<EFBFBD>n no sirve hacer un recorrido
|
|||
|
|
desde el principio hasta el final porque
|
|||
|
|
las Gastos van desapareciendo seg<EFBFBD>n asignamos
|
|||
|
|
el valor al campo ID y nos mueve aleatoriamente
|
|||
|
|
la posici<EFBFBD>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<EFBFBD> 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.
|