unit uViewInventario; 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, dxPScxGridLnk, cxImage, cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, cxDBLookupComboBox, cxButtonEdit, cxGridCustomPopupMenu, cxGridPopupMenu, uViewGrid, uBizInventario, uAlmacenesController; type IViewInventario = interface(IViewGrid) ['{4BAE6CBE-4CBB-4103-B85E-80BE5310723A}'] function GetInventario: IBizInventario; procedure SetInventario(const Value: IBizInventario); property Inventario: IBizInventario read GetInventario write SetInventario; end; TfrViewInventario = class(TfrViewGrid, IViewInventario) cxGridDBTableView1: TcxGridDBTableView; PngImageList: TPngImageList; cxStyleArticuloReservado: TcxStyle; cxGridViewRecID: TcxGridDBColumn; cxGridViewID: TcxGridDBColumn; cxGridViewID_ALMACEN: TcxGridDBColumn; cxGridViewID_ARTICULO: TcxGridDBColumn; cxGridViewCANTIDAD: TcxGridDBColumn; cxGridViewID_PEDIDO_PROVEEDOR: TcxGridDBColumn; cxGridViewID_PEDIDO_CLIENTE: TcxGridDBColumn; cxGridViewREFERENCIA_PED_CLI: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewID_EMPRESA: TcxGridDBColumn; cxGridViewREFERENCIA_CLIENTE: TcxGridDBColumn; cxGridViewFAMILIA: TcxGridDBColumn; cxGridViewALMACEN: TcxGridDBColumn; cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn; // procedure SelectionChanged(Sender: TcxCustomGridTableView); override; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); { procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); } procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); private FAlmacenesController : IAlmacenesController; protected FNivelFiltrado : TcxFilterCriteriaItemList; FInventario: IBizInventario; function GetInventario: IBizInventario; procedure SetInventario(const Value: IBizInventario); procedure FilterChanged(Sender : TObject); override; public property Inventario: IBizInventario read GetInventario write SetInventario; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uDataModuleInventario, schInventarioClient_Intf, uBizAlmacenes; //, uDBSelectionList, uBizAlmacenes, uDataModuleAlmacenes; {$R *.dfm} constructor TfrViewInventario.Create(AOwner: TComponent); begin inherited; // Self.MultiSelection := True; FAlmacenesController := TAlmacenesController.Create; end; procedure TfrViewInventario.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; FreeAndNil(FNivelFiltrado); FilterChanged(self); end; {procedure TfrViewInventario.cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var R: TRect; begin inherited; R := AViewInfo.ContentBounds; ACanvas.FillRect(R); if Length(AViewInfo.Text) = 0 then ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0) else ACanvas.DrawImage(PngImageList, R.Left, R.Top, 1); ADone := True; end;} procedure TfrViewInventario.cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var IndiceCol: Integer; AMontaje: string; begin inherited; { if Assigned(ARecord) then begin IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_ARTICULOSREFERENCIAMONTAJE).Index; AMontaje := VarToStr(ARecord.DisplayTexts[IndiceCol]); if (Length(AMontaje) > 0) then AStyle := cxStyleArticuloReservado; end; } end; destructor TfrViewInventario.Destroy; begin FAlmacenesController := Nil; FInventario := Nil; inherited; end; function TfrViewInventario.GetInventario: IBizInventario; begin Result := FInventario; end; procedure TfrViewInventario.SetInventario(const Value: IBizInventario); var Nivel: TcxGridLevel; i: Integer; AAlmacenes : IBizAlmacen; begin FInventario := Value; if Assigned(FInventario) then begin dsDataSource.DataTable := FInventario.DataTable; try if Assigned(FAlmacenesController) then begin AAlmacenes := FAlmacenesController.BuscarTodos; AAlmacenes.DataTable.Active := True; AAlmacenes.First; while not AAlmacenes.EOF do begin Nivel := cxGrid.Levels.Add; Nivel.Caption := AAlmacenes.NOMBRE; Nivel.Tag := AAlmacenes.ID; AAlmacenes.Next; end; end; finally AAlmacenes := Nil; end; end; end; {procedure TfrViewInventario.SelectionChanged(Sender: TcxCustomGridTableView); var ABookmark : Pointer; i, pos: Integer; begin inherited; pos := (Sender as TcxGridDBTableView).GetColumnByFieldName('ID').Index; if FInventario <> NIL then begin FInventario.DataTable.DisableControls; ABookmark := FInventario.DataTable.GetBookMark; (FInventario as ISelectedRowList).SelectedRows.Clear; for i:=0 to Sender.Controller.SelectedRecordCount-1 do begin FInventario.DataTable.Locate('ID', Sender.Controller.SelectedRecords[i].Values[pos],[]); (FInventario as ISelectedRowList).SelectedRows.CurrentRowSelected := True; end; (FInventario as ISelectedRowList).SelectedRows.Count; FInventario.DataTable.GotoBookmark(ABookmark); FInventario.DataTable.FreeBookmark(ABookmark); FInventario.DataTable.EnableControls; end; end; } procedure TfrViewInventario.FilterChanged(Sender: TObject); var AItemList: TcxFilterCriteriaItemList; AItemList2: TcxFilterCriteriaItemList; CodigoAlmacen: String; begin inherited; cxGridView.DataController.Filter.BeginUpdate; AItemList := cxGridView.DataController.Filter.Root; AItemList2 := AItemList.AddItemList(fboAnd); FNivelFiltrado := AItemList2; CodigoAlmacen := IntToStr(cxGrid.Levels.Items[cxGrid.ActiveLevel.Index].Tag); if CodigoAlmacen <> '-1' then AItemList2.AddItem(cxGridViewID_ALMACEN, foEqual, CodigoAlmacen, CodigoAlmacen); AItemList := AItemList2; if cxGridView.DataController.Filter.IsEmpty then cxGridView.DataController.Filter.Active := False else cxGridView.DataController.Filter.Active := True; cxGridView.DataController.Filter.EndUpdate; cxGrid.ActiveLevel.GridView := cxGridView; end; end.