unit uViewAlbaranesProveedor; interface uses uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxImageComboBox, ImgList, Controls, PngImageList, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridCustomPopupMenu, cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes, cxGrid, uBizAlbaranesProveedor, cxCurrencyEdit, Forms, uViewFiltroBase, ActnList, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, cxTextEdit, uDAInterfaces; type IViewAlbaranesProveedor = interface(IViewGrid) ['{DFD9B90C-E3AE-48E1-A13F-AA75A05BBF3E}'] function GetAlbaranes: IBizAlbaranProveedor; procedure SetAlbaranes(const Value: IBizAlbaranProveedor); property Albaranes: IBizAlbaranProveedor read GetAlbaranes write SetAlbaranes; end; TfrViewAlbaranesProveedor = class(TfrViewGrid, IViewAlbaranesProveedor) PngImageList: TPngImageList; cxGridViewREFERENCIA: TcxGridDBColumn; cxGridViewFECHA_ALBARAN: TcxGridDBColumn; cxGridViewINCIDENCIAS_ACTIVAS: TcxGridDBColumn; cxGridViewNOMBRE: TcxGridDBColumn; cxGridViewCALLE: TcxGridDBColumn; cxGridViewCODIGO_POSTAL: TcxGridDBColumn; cxGridViewPOBLACION: TcxGridDBColumn; cxGridViewPROVINCIA: TcxGridDBColumn; cxGridViewPERSONA_CONTACTO: TcxGridDBColumn; cxGridViewTELEFONO: TcxGridDBColumn; cxGridViewNOMBRE_ALMACEN: TcxGridDBColumn; cxGridViewREF_PED_PROVEEDOR: TcxGridDBColumn; cxGridViewREF_FACTURA: TcxGridDBColumn; cxGridViewIMPORTE_TOTAL: TcxGridDBColumn; actProveedor: TAction; actAlmacen: TAction; TBXItem2: TTBXItem; TBXSeparatorItem1: TTBXSeparatorItem; TBXItem3: TTBXItem; TBXSeparatorItem2: TTBXSeparatorItem; cxGridViewREFERENCIA_PROVEEDOR: TcxGridDBColumn; cxGridViewREF_FACTURA_PROV: TcxGridDBColumn; cxGridViewTIENDA: TcxGridDBColumn; 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); procedure actProveedorExecute(Sender: TObject); procedure actProveedorUpdate(Sender: TObject); procedure actAlmacenExecute(Sender: TObject); procedure actAlmacenUpdate(Sender: TObject); procedure cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private //Filtros relativos a la vista procedure AnadirFiltroFechas; protected FAlbaranes: IBizAlbaranProveedor; function GetAlbaranes: IBizAlbaranProveedor; procedure SetAlbaranes(const Value: IBizAlbaranProveedor); public procedure AnadirOtrosFiltros; override; property Albaranes: IBizAlbaranProveedor read GetAlbaranes write SetAlbaranes; end; implementation uses SysUtils, variants, windows, uDataModuleAlbaranesProveedor, schAlbaranesProveedorClient_Intf, uViewGridBase; {$R *.dfm} procedure TfrViewAlbaranesProveedor.actAlmacenExecute(Sender: TObject); begin if (cxGridViewNOMBRE_ALMACEN.GroupIndex < 0) then begin cxGridViewNOMBRE_ALMACEN.GroupIndex := cxGridView.GroupedColumnCount; cxGridViewNOMBRE_ALMACEN.Visible := False; end else begin cxGridViewNOMBRE_ALMACEN.GroupIndex := -1; cxGridViewNOMBRE_ALMACEN.Visible := True; end; end; procedure TfrViewAlbaranesProveedor.actAlmacenUpdate(Sender: TObject); begin inherited; (Sender as TAction).Checked := not (cxGridViewNOMBRE_ALMACEN.GroupIndex < 0); end; procedure TfrViewAlbaranesProveedor.actProveedorExecute(Sender: TObject); begin if (cxGridViewNOMBRE.GroupIndex < 0) then begin cxGridViewNOMBRE.GroupIndex := cxGridView.GroupedColumnCount; cxGridViewNOMBRE.Visible := False; end else begin cxGridViewNOMBRE.GroupIndex := -1; cxGridViewNOMBRE.Visible := True; end; end; procedure TfrViewAlbaranesProveedor.actProveedorUpdate(Sender: TObject); begin inherited; (Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0); end; procedure TfrViewAlbaranesProveedor.AnadirFiltroFechas; var Columna: TcxGridDBColumn; Fecha1, Fecha2: Variant; FFiltro : TcxFilterCriteriaItemList; begin Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue; Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue; if not VarIsNull(Fecha1) and not VarIsNull(Fecha2) then begin cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare]; FFiltro := AddFilterGrid(fboAnd); Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_ALBARAN'); FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); end; end; procedure TfrViewAlbaranesProveedor.AnadirOtrosFiltros; begin inherited; AnadirFiltroFechas; //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; procedure TfrViewAlbaranesProveedor.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; RefrescarFiltro; end; procedure TfrViewAlbaranesProveedor.cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var R: TRect; begin inherited; R := AViewInfo.ContentBounds; ACanvas.FillRect(R); ACanvas.DrawImage(PngImageList, R.Left, R.Top, 2); ADone := True; end; procedure TfrViewAlbaranesProveedor.cxGridViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Site : TcxGridSite; HitTest : TcxCustomGridHitTest; Item : TcxCustomGridTableItem; Rec : TcxCustomGridRecord; sNewHint : string; begin {Este método desaparecerá cuando se migre la aplicación, es para sacar la causa de la incidencia sin necesidad de entrar en el documento} Site := Sender as TcxGridSite; HitTest := Site.GridView.ViewInfo.GetHitTest(X, Y); if HitTest is TcxGridRecordCellHitTest then begin Item := TcxGridRecordCellHitTest(HitTest).Item; Rec := TcxGridRecordCellHitTest(HitTest).GridRecord; if (Item.Index = cxGridView.GetColumnByFieldName(fld_AlbaranesProveedorINCIDENCIAS_ACTIVAS).Index) and (Rec.Selected) and (Albaranes.DataTable.FieldByName(fld_AlbaranesProveedorINCIDENCIAS_ACTIVAS).AsInteger = 1) then begin sNewHint := Albaranes.DataTable.FieldByName(fld_AlbaranesProveedorINCIDENCIAS).AsString; if (cxGrid.Hint <> sNewHint) then begin cxGrid.ShowHint := false; cxGrid.Hint := sNewHint; end else cxGrid.ShowHint := true; end else begin cxGrid.ShowHint := false; end; end; end; procedure TfrViewAlbaranesProveedor.cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); {var IndiceCol: Integer; ASituacion: string;} begin { inherited; if Assigned(ARecord) then begin IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosSITUACION).Index; ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); if ASituacion = SITUACION_ACEPTADO then AStyle := cxStyleAceptado else if ASituacion = SITUACION_RECHAZADO then AStyle := cxStyleRechazado; end; } end; function TfrViewAlbaranesProveedor.GetAlbaranes: IBizAlbaranProveedor; begin Result := FAlbaranes; end; procedure TfrViewAlbaranesProveedor.SetAlbaranes(const Value: IBizAlbaranProveedor); begin FAlbaranes := Value; if Assigned(FAlbaranes) then dsDataSource.DataTable := FAlbaranes.DataTable; end; end.