unit uViewDetallesSinRecibir; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, frxClass, frxPreview, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, StdCtrls, ExtCtrls, cxLabel, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, cxImage, cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, cxDBLookupComboBox, cxButtonEdit, cxGridCustomPopupMenu, cxGridPopupMenu, uViewGrid, uBizInventario, uBizAlmacenes, cxSpinEdit, uViewFiltroBase, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, cxCurrencyEdit, uAlmacenesController; type IViewDetalleSinRecibir = interface(IViewGrid) ['{AC8507FF-B6FB-48D3-9FEA-2380FE2F7699}'] function GetDetalles: IBizDetalleSinRecibir; procedure SetDetalles(const Value: IBizDetalleSinRecibir); property Detalles: IBizDetalleSinRecibir read GetDetalles write SetDetalles; // function GetAlmacenes: IBizAlmacen; // procedure SetAlmacenes(const Value: IBizAlmacen); // property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes; end; TfrViewDetallesSinRecibir = class(TfrViewGrid, IViewDetalleSinRecibir) cxGridDBTableView1: TcxGridDBTableView; PngImageList: TPngImageList; cxStyleArticuloSinStock: TcxStyle; cxGridViewRecID: TcxGridDBColumn; cxGridViewREFERENCIA_PEDIDO: TcxGridDBColumn; cxGridViewFECHA_PEDIDO: TcxGridDBColumn; cxGridViewFECHA_CONFIRMACION: TcxGridDBColumn; cxGridViewID_PROVEEDOR: TcxGridDBColumn; cxGridViewPROVEEDOR: TcxGridDBColumn; cxGridViewID_ARTICULO: TcxGridDBColumn; cxGridViewFAMILIA: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewCANTIDAD_PEDIDA: TcxGridDBColumn; cxGridViewCANTIDAD_RECIBIDA: TcxGridDBColumn; cxGridViewCANTIDAD_PENDIENTE: TcxGridDBColumn; TBXItem2: TTBXItem; TBXItem3: TTBXItem; actProveedores: TAction; actPedidos: TAction; TBXSeparatorItem1: TTBXSeparatorItem; TBXSeparatorItem2: TTBXSeparatorItem; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure actProveedoresExecute(Sender: TObject); procedure actProveedoresUpdate(Sender: TObject); procedure actPedidosExecute(Sender: TObject); procedure actPedidosUpdate(Sender: TObject); private // FAlmacenesController: IAlmacenesController; // FAlmacenes: IBizAlmacen; // function GetAlmacenes: IBizAlmacen; // procedure SetAlmacenes(const Value: IBizAlmacen); //Filtros relativos a la vista // procedure AnadirFiltroAlmacenes; protected FDetalles: IBizDetalleSinRecibir; function GetDetalles: IBizDetalleSinRecibir; procedure SetDetalles(const Value: IBizDetalleSinRecibir); procedure AnadirOtrosFiltros; override; public // property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes; // property DetalleReservas: IBizDetalleReservas read GetDetalleReservas write SetDetalleReservas; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} uses uDataModuleInventario, schInventarioClient_Intf; { procedure TfrViewDetallesSinRecibir.AnadirFiltroAlmacenes; var FFiltro : TcxFilterCriteriaItemList; CodigoAlmacen: String; begin FFiltro := AddFilterGrid(fboAnd); CodigoAlmacen := IntToStr(cxGrid.Levels.Items[cxGrid.ActiveLevel.Index].Tag); if CodigoAlmacen <> '-1' then begin FFiltro.AddItem(cxGridViewID_ALMACEN_ALB, foEqual, CodigoAlmacen, CodigoAlmacen); cxGridViewALMACEN_ALB.Visible := False; end else cxGridViewALMACEN_ALB.Visible := True; end; } procedure TfrViewDetallesSinRecibir.actProveedoresExecute(Sender: TObject); begin if (cxGridViewPROVEEDOR.GroupIndex < 0) then begin cxGridViewPROVEEDOR.GroupIndex := cxGridView.GroupedColumnCount; cxGridViewPROVEEDOR.Visible := False; end else begin cxGridViewPROVEEDOR.GroupIndex := -1; cxGridViewPROVEEDOR.Visible := True; end; end; procedure TfrViewDetallesSinRecibir.actProveedoresUpdate(Sender: TObject); begin inherited; (Sender as TAction).Checked := not (cxGridViewPROVEEDOR.GroupIndex < 0); end; procedure TfrViewDetallesSinRecibir.actPedidosExecute(Sender: TObject); begin if (cxGridViewREFERENCIA_PEDIDO.GroupIndex < 0) then begin cxGridViewREFERENCIA_PEDIDO.GroupIndex := cxGridView.GroupedColumnCount; cxGridViewREFERENCIA_PEDIDO.Visible := False; end else begin cxGridViewREFERENCIA_PEDIDO.GroupIndex := -1; cxGridViewREFERENCIA_PEDIDO.Visible := True; end; end; procedure TfrViewDetallesSinRecibir.actPedidosUpdate(Sender: TObject); begin inherited; (Sender as TAction).Checked := not (cxGridViewREFERENCIA_PEDIDO.GroupIndex < 0); end; procedure TfrViewDetallesSinRecibir.AnadirOtrosFiltros; begin inherited; // AnadirFiltroAlmacenes; //Finalmente activamos el filtro si tenemos algo if cxGridView.DataController.Filter.IsEmpty then cxGridView.DataController.Filter.Active := False else cxGridView.DataController.Filter.Active := True; cxGrid.ActiveLevel.GridView := cxGridView; end; constructor TfrViewDetallesSinRecibir.Create(AOwner: TComponent); begin inherited; // FAlmacenesController := TAlmacenesController.Create; // Almacenes := FAlmacenesController.BuscarTodos; end; procedure TfrViewDetallesSinRecibir.cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var IndiceCol: Integer; AStock: Variant; begin inherited; { if Assigned(ARecord) then begin IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_DetalleReservasSTOCK).Index; AStock := ARecord.DisplayTexts[IndiceCol]; if (AStock < 0) then AStyle := cxStyleArticuloSinStock; end; } end; destructor TfrViewDetallesSinRecibir.Destroy; begin // FAlmacenesController := Nil; // FAlmacenes := Nil; FDetalles := Nil; inherited; end; {function TfrViewDetallesSinRecibir.GetAlmacenes: IBizAlmacen; begin Result := FAlmacenes; end; } function TfrViewDetallesSinRecibir.GetDetalles: IBizDetalleSinRecibir; begin Result := FDetalles; end; { procedure TfrViewDetallesSinRecibir.SetAlmacenes(const Value: IBizAlmacen); var Nivel: TcxGridLevel; begin FAlmacenes := Value; if Assigned(FAlmacenes) then begin if not FAlmacenes.DataTable.Active then FAlmacenes.DataTable.Active := True; FAlmacenes.First; while not FAlmacenes.EOF do begin Nivel := cxGrid.Levels.Add; Nivel.Caption := FAlmacenes.NOMBRE; Nivel.Tag := FAlmacenes.ID; FAlmacenes.Next; end; end; end; } procedure TfrViewDetallesSinRecibir.SetDetalles(const Value: IBizDetalleSinRecibir); begin FDetalles := Value; if Assigned(FDetalles) then dsDataSource.DataTable := FDetalles.DataTable else dsDataSource.DataTable := Nil; end; end.