unit uViewDetallesSinAlbaran; 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 IViewDetalleSinAlbaran = interface(IViewGrid) ['{4417F53A-5BB1-4B99-8760-4C0E1D449582}'] function GetDetalles: IBizDetalleSinAlbaran; procedure SetDetalles(const Value: IBizDetalleSinAlbaran); property Detalles: IBizDetalleSinAlbaran read GetDetalles write SetDetalles; // function GetAlmacenes: IBizAlmacen; // procedure SetAlmacenes(const Value: IBizAlmacen); // property Almacenes: IBizAlmacen read GetAlmacenes write SetAlmacenes; end; TfrViewDetallesSinAlbaran = class(TfrViewGrid, IViewDetalleSinAlbaran) cxGridDBTableView1: TcxGridDBTableView; PngImageList: TPngImageList; cxStyleArticuloSinStock: TcxStyle; cxGridViewRecID: TcxGridDBColumn; cxGridViewREFERENCIA_PEDIDO: TcxGridDBColumn; cxGridViewFECHA_PEDIDO: TcxGridDBColumn; cxGridViewFECHA_PREVISTA_PEDIDO: TcxGridDBColumn; cxGridViewID_CLIENTE: TcxGridDBColumn; cxGridViewCLIENTE: TcxGridDBColumn; cxGridViewID_ARTICULO: TcxGridDBColumn; cxGridViewFAMILIA: TcxGridDBColumn; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewCANTIDAD_PEDIDA: TcxGridDBColumn; cxGridViewCANTIDAD_RESERVADA: TcxGridDBColumn; cxGridViewCANTIDAD_ENVIADA: TcxGridDBColumn; cxGridViewCANTIDAD_SERVIDA: TcxGridDBColumn; cxGridViewCANTIDAD_PENDIENTE: TcxGridDBColumn; TBXItem2: TTBXItem; TBXItem3: TTBXItem; actClientes: TAction; actPedidos: TAction; TBXSeparatorItem1: TTBXSeparatorItem; TBXSeparatorItem2: TTBXSeparatorItem; procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure actClientesExecute(Sender: TObject); procedure actClientesUpdate(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: IBizDetalleSinAlbaran; function GetDetalles: IBizDetalleSinAlbaran; procedure SetDetalles(const Value: IBizDetalleSinAlbaran); 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 TfrViewDetallesSinAlbaran.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 TfrViewDetallesSinAlbaran.actClientesExecute(Sender: TObject); begin if (cxGridViewCLIENTE.GroupIndex < 0) then begin cxGridViewCLIENTE.GroupIndex := cxGridView.GroupedColumnCount; cxGridViewCLIENTE.Visible := False; end else begin cxGridViewCLIENTE.GroupIndex := -1; cxGridViewCLIENTE.Visible := True; end; end; procedure TfrViewDetallesSinAlbaran.actClientesUpdate(Sender: TObject); begin inherited; (Sender as TAction).Checked := not (cxGridViewCLIENTE.GroupIndex < 0); end; procedure TfrViewDetallesSinAlbaran.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 TfrViewDetallesSinAlbaran.actPedidosUpdate(Sender: TObject); begin inherited; (Sender as TAction).Checked := not (cxGridViewREFERENCIA_PEDIDO.GroupIndex < 0); end; procedure TfrViewDetallesSinAlbaran.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 TfrViewDetallesSinAlbaran.Create(AOwner: TComponent); begin inherited; // FAlmacenesController := TAlmacenesController.Create; // Almacenes := FAlmacenesController.BuscarTodos; end; procedure TfrViewDetallesSinAlbaran.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 TfrViewDetallesSinAlbaran.Destroy; begin // FAlmacenesController := Nil; // FAlmacenes := Nil; FDetalles := Nil; inherited; end; {function TfrViewDetallesSinAlbaran.GetAlmacenes: IBizAlmacen; begin Result := FAlmacenes; end; } function TfrViewDetallesSinAlbaran.GetDetalles: IBizDetalleSinAlbaran; begin Result := FDetalles; end; { procedure TfrViewDetallesSinAlbaran.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 TfrViewDetallesSinAlbaran.SetDetalles(const Value: IBizDetalleSinAlbaran); begin FDetalles := Value; if Assigned(FDetalles) then dsDataSource.DataTable := FDetalles.DataTable else dsDataSource.DataTable := Nil; end; end.