unit uDetallesFacturaProveedorController; interface uses uDADataTable, uControllerDetallesArticulos, uBizDetallesFacturaProveedor, uIDataModuleFacturasProveedor, uBizContactos, uBizArticulos; type IDetallesFacturaProveedorController = interface(IControllerDetallesArticulos) ['{49F6199E-E031-42F5-AEA5-E70C3E3479A1}'] procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); overload; procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia: String; AFecha: String); end; TDetallesFacturaProveedorController = class(TControllerDetallesArticulos, IDetallesFacturaProveedorController) private FDataModule : IDataModuleFacturasProveedor; protected procedure AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer); override; procedure RellenarDescuentos(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); overload; 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; procedure AnadirDetalleFacturaAsociadaAbono(ADetalles: IBizDetallesFacturaProveedor; AReferencia: String; AFecha: String); constructor Create; override; destructor Destroy; override; end; implementation { TDetallesFacturaProveedorController } uses Variants, uControllerDetallesDTO, uDataModuleFacturasProveedor, uArticulosFacturaProveedorController, uControllerDetallesBase, Dialogs, SysUtils; procedure TDetallesFacturaProveedorController.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); var AArticulos : IBizArticulo; begin if Assigned(ADetalles) then begin try AArticulos := (FArticulosController.BuscarTodos(AProveedor) as IBizArticulo); ActualizarDetalles(ADetalles, AArticulos); ShowMessage('Se han actualizado los descuentos para el Proveedor seleccionado'); finally AArticulos := Nil; end; end; end; procedure TDetallesFacturaProveedorController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; AProveedor: IBizProveedor); var AArticulos: IBizArticulo; begin if Assigned(ADetalles) then begin AArticulos := (FArticulosController.BuscarTodos(AProveedor) as IBizArticulo); try AArticulos := (FArticulosController as IArticulosFacturaProveedorController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a esta factura de Proveedor', True); Add(ADetalles, AArticulos); finally AArticulos := Nil; end; end; end; procedure TDetallesFacturaProveedorController.AnadirDetalleFacturaAsociadaAbono( ADetalles: IBizDetallesFacturaProveedor; AReferencia, AFecha: String); begin AnadirConceptoInicial(ADetalles, 'ABONO DE FACTURA ' + AReferencia + ' con fecha ' + AFecha); end; procedure TDetallesFacturaProveedorController.AsignarController; begin FArticulosController := TArticulosFacturaProveedorController.Create; end; procedure TDetallesFacturaProveedorController.AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer); begin inherited; with (ADetalles as IBizDetallesFacturaProveedor) do begin Edit; ID := FDataModule.GetNextID(DataTable.LogicalName); ID_FACTURA := IDCabecera; Post end; end; constructor TDetallesFacturaProveedorController.Create; begin inherited; FDataModule := TDataModuleFacturasProveedor.Create(Nil); end; destructor TDetallesFacturaProveedorController.Destroy; begin FDataModule := Nil; inherited; end; procedure TDetallesFacturaProveedorController.RellenarDescuentos(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); begin if Assigned(AArticulos) then RellenarDescuento(ADetalles, AArticulos.DESCUENTO) else RellenarDescuento(ADetalles, 0) end; procedure TDetallesFacturaProveedorController.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.