unit uViewArticulosProveedores; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, uViewDetallesGenerico, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, ImgList, PngImageList, uDADataTable, ComCtrls, ToolWin, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxDBLookupComboBox, cxSpinEdit, uBizContactos, uProveedoresController, uDAInterfaces, uBizArticulos, uArticulosController, cxTextEdit, cxCalendar; type IViewArticulosProveedores = interface(IViewBase) ['{65206152-786D-47AE-A037-5EF480BC056C}'] function GetArticulo: IBizArticulo; procedure SetArticulo(const Value: IBizArticulo); property Articulo: IBizArticulo read GetArticulo write SetArticulo; function GetController : IArticulosController; procedure SetController (const Value : IArticulosController); property Controller : IArticulosController read GetController write SetController; end; TfrViewArticulosProveedores = class(TfrViewDetallesGenerico, IViewArticulosProveedores) dsProveedores: TDADataSource; cxGridViewPROVEEDOR: TcxGridDBColumn; cxGridViewDESCUENTO: TcxGridDBColumn; cxGridViewREFERENCIA_PROV: TcxGridDBColumn; cxGridViewPRECIO_COSTE: TcxGridDBColumn; cxGridViewPRECIO_NETO: TcxGridDBColumn; cxGridViewPRECIO_PORTE: TcxGridDBColumn; cxGridViewPRECIO_PVP_VENTA: TcxGridDBColumn; cxGridViewPRECIO_PVP_TOTAL: TcxGridDBColumn; cxGridViewID_PROVEEDOR: TcxGridDBColumn; cxGridViewID_ARTICULO: TcxGridDBColumn; cxGridViewFECHA_ACTUALIZACION: TcxGridDBColumn; procedure cxGridViewPROVEEDORPropertiesEditValueChanged(Sender: TObject); procedure CustomViewShow(Sender: TObject); protected FArticulo: IBizArticulo; FController: IArticulosController; FProvController : IProveedoresController; FProveedores : IBizProveedor; function GetArticulo: IBizArticulo; procedure SetArticulo(const Value: IBizArticulo); function GetController : IArticulosController; procedure SetController (const Value : IArticulosController); procedure AnadirInterno; override; public property Articulo: IBizArticulo read GetArticulo write SetArticulo; property Controller : IArticulosController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} procedure TfrViewArticulosProveedores.AnadirInterno; begin dsDetalles.DataTable.Append; end; constructor TfrViewArticulosProveedores.Create(AOwner: TComponent); begin inherited; FProvController := TProveedoresController.Create; FProveedores := (FProvController.BuscarTodos as IBizProveedor); dsProveedores.DataTable := FProveedores.DataTable; if not dsProveedores.DataTable.Active then dsProveedores.DataTable.Active := True; end; procedure TfrViewArticulosProveedores.CustomViewShow(Sender: TObject); begin inherited; cxGridView.ApplyBestFit; end; procedure TfrViewArticulosProveedores.cxGridViewPROVEEDORPropertiesEditValueChanged(Sender: TObject); begin inherited; //Signamos el descuento del proveedor seleccionado if not Articulo.Proveedores.DataTable.Editing then Articulo.Proveedores.DataTable.Edit; Articulo.Proveedores.DESCUENTO := FProveedores.DESCUENTO; end; destructor TfrViewArticulosProveedores.Destroy; begin if dsProveedores.DataTable.Active then dsProveedores.DataTable.Active := False; FProveedores := NIL; FProvController := NIL; inherited; end; function TfrViewArticulosProveedores.GetArticulo: IBizArticulo; begin Result := FArticulo; end; function TfrViewArticulosProveedores.GetController: IArticulosController; begin Result := FController; end; procedure TfrViewArticulosProveedores.SetArticulo(const Value: IBizArticulo); begin FArticulo := Value; dsDetalles.DataTable := FArticulo.Proveedores.DataTable; end; procedure TfrViewArticulosProveedores.SetController(const Value: IArticulosController); begin FController := Value; end; end.