unit uDetallesAlbaranProveedorController; interface uses uDADataTable, uControllerDetallesArticulos, uBizDetallesAlbaranProveedor, uIDataModuleAlbaranesProveedor, uBizArticulos, uBizContactos; type IDetallesAlbaranProveedorController = interface(IControllerDetallesArticulos) ['{6E35D49A-C78D-481D-93E9-859CD27EB79F}'] procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload; procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload; end; TDetallesAlbaranProveedorController = class(TControllerDetallesArticulos, IDetallesAlbaranProveedorController) private FDataModule : IDataModuleAlbaranesProveedor; protected procedure AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer); override; procedure RellenarDescuentos(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); override; procedure RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); override; procedure AsignarController; override; public procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload; procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload; constructor Create; override; destructor Destroy; override; end; implementation uses Variants, uControllerDetallesBase, uControllerDetallesDTO, uDataModuleAlbaranesProveedor, uArticulosAlbaranProveedorController; { TDetallesAlbaranProveedorController } procedure TDetallesAlbaranProveedorController.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); var AArticulos : IBizArticulo; begin if Assigned(ADetalles) then begin try AArticulos := (FArticulosController.BuscarTodos(AProveedor) as IBizArticulo); ActualizarDetalles(ADetalles, AArticulos); EliminarArticulosProveedor(ADetalles); finally AArticulos := Nil; end; end; end; procedure TDetallesAlbaranProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); var AArticulos: IBizArticulo; begin if Assigned(ADetalles) then begin try AArticulos := (FArticulosController.BuscarTodos(AProveedor) as IBizArticulo); AArticulos := (FArticulosController as IArticulosAlbaranProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este albarán de proveedor', True); Add(ADetalles, AArticulos); finally AArticulos := Nil; end; end; end; procedure TDetallesAlbaranProveedorController.AsignarController; begin FArticulosController := TArticulosAlbaranProveedorController.Create; end; procedure TDetallesAlbaranProveedorController.AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer); begin inherited; with (ADetalles as IBizDetallesAlbaranProveedor) do begin Edit; ID := FDataModule.GetNextID(DataTable.LogicalName); ID_ALBARAN := IDCabecera; Post end; end; constructor TDetallesAlbaranProveedorController.Create; begin inherited; FDataModule := TDataModuleAlbaranesProveedor.Create(Nil); end; destructor TDetallesAlbaranProveedorController.Destroy; begin FDataModule := Nil; inherited; end; procedure TDetallesAlbaranProveedorController.RellenarDescuentos(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); begin if Assigned(AArticulos) then RellenarDescuento(ADetalles, AArticulos.DESCUENTO) else RellenarDescuento(ADetalles, 0) end; procedure TDetallesAlbaranProveedorController.RellenarImportes(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); begin if Assigned(AArticulos) then begin ADetalles.DataTable.FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := AArticulos.PRECIO_COSTE; ADetalles.DataTable.FieldByName(CAMPO_IMPORTE_PORTE).AsVariant := AArticulos.PRECIO_PORTE; end else begin ADetalles.DataTable.FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := Null; ADetalles.DataTable.FieldByName(CAMPO_IMPORTE_PORTE).AsVariant := Null; end; end; end.