unit uViewInfVentasAlbArticulo; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewInformeBase, ActnList, ImgList, PngImageList, uViewGrid, uViewInformeBaseGrid, uViewSumarios, TBXDkPanels, StdCtrls, uViewAgrupaciones, uCustomView, uViewBase, uViewColumnas, ComCtrls, TB2Dock, uViewInformeBaseParametros, uBizInformes, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, cxTextEdit, uViewFiltros, uBizInfVentasArticulo, uInfVentasAlbArticuloController, uViewPeriodoFechasInforme, uViewInfVentasAlbArticuloGrid, uDADataTable, uViewFiltroBase, uDAInterfaces; type IViewInfVentasAlbArticulo = interface(IViewInformeBase) ['{B8B9105B-E833-4E7D-BA36-EB9A7EBDCE69}'] function GetDatos : IBizInfVentasAlbArticulo; procedure SetDatos (const Value : IBizInfVentasAlbArticulo); property Datos : IBizInfVentasAlbArticulo read GetDatos write SetDatos; function GetController : IInfVentasAlbArticuloController; procedure SetController (const Value : IInfVentasAlbArticuloController); property Controller: IInfVentasAlbArticuloController read GetController write SetController; end; TfrViewInfVentasAlbArticulo = class(TfrViewInformeBase, IViewInfVentasAlbArticulo) frViewPeriodoFechasInforme1: TfrViewPeriodoFechasInforme; actPeriodoFechas: TAction; frViewInfVentasAlbArticuloGrid1: TfrViewInfVentasAlbArticuloGrid; dsVentasTerminadas: TDADataSource; procedure actRefrescarExecute(Sender: TObject); procedure actPeriodoFechasExecute(Sender: TObject); procedure frViewInfVentasAlbArticuloGrid1cxGridViewIMPORTE_TOTAL_VENTAHeaderClick(Sender: TObject); procedure frViewInfVentasAlbArticuloGrid1cxGridViewCANTIDADHeaderClick(Sender: TObject); protected FDatos : IBizInfVentasAlbArticulo; FController : IInfVentasAlbArticuloController; FModificado : Boolean; procedure OnViewInformeBaseGridChanged(Sender : TObject); procedure OnFilterChanged(Sender : TObject); procedure ActivarTarea(const ATarea: Integer); override; function GetFocusedView: TcxGridDBTableView; override; function GetDatos : IBizInfVentasAlbArticulo; procedure SetDatos (const Value : IBizInfVentasAlbArticulo); function GetController : IInfVentasAlbArticuloController; procedure SetController (const Value : IInfVentasAlbArticuloController); public property Controller: IInfVentasAlbArticuloController read GetController write SetController; property Datos : IBizInfVentasAlbArticulo read GetDatos write SetDatos; constructor Create(AOwner: TComponent); override; procedure Refresh; override; end; implementation {$R *.dfm} { TfrViewInfVentasAlbArticulo } uses schInfVentasArticuloClient_Intf, StrUtils; const PERIODO = 0; constructor TfrViewInfVentasAlbArticulo.Create(AOwner: TComponent); begin inherited; frViewInfVentasAlbArticuloGrid1.OnViewChanged := OnViewInformeBaseGridChanged; frViewInfVentasAlbArticuloGrid1.OnFilterChanged := OnFilterChanged; frViewColumnas1.ViewInformeBaseGrid := frViewInfVentasAlbArticuloGrid1; frViewAgrupaciones1.ViewInformeBaseGrid := frViewInfVentasAlbArticuloGrid1; frViewSumarios1.ViewInformeBaseGrid := frViewInfVentasAlbArticuloGrid1; frViewFiltros1.ViewInformeBaseGrid := frViewInfVentasAlbArticuloGrid1; pcParametros.ActivePage := TabSheet5; end; procedure TfrViewInfVentasAlbArticulo.frViewInfVentasAlbArticuloGrid1cxGridViewCANTIDADHeaderClick(Sender: TObject); begin inherited; frViewInfVentasAlbArticuloGrid1.cxGridView.DataController.Groups.DataController.BeginUpdate; frViewInfVentasAlbArticuloGrid1.cxGridView.GetColumnByFieldName(fld_InfVentasAlbArticuloCANTIDAD).SortIndex := 1; frViewInfVentasAlbArticuloGrid1.cxGridView.GetColumnByFieldName(fld_InfVentasAlbArticuloCANTIDAD).Summary.SortByGroupFooterSummary := True; frViewInfVentasAlbArticuloGrid1.cxGridView.DataController.Groups.DataController.EndUpdate; end; procedure TfrViewInfVentasAlbArticulo.frViewInfVentasAlbArticuloGrid1cxGridViewIMPORTE_TOTAL_VENTAHeaderClick(Sender: TObject); begin inherited; frViewInfVentasAlbArticuloGrid1.cxGridView.DataController.Groups.DataController.BeginUpdate; frViewInfVentasAlbArticuloGrid1.cxGridView.GetColumnByFieldName(fld_InfVentasAlbArticuloIMPORTE_TOTAL_VENTA).SortOrder := soAscending; frViewInfVentasAlbArticuloGrid1.cxGridView.GetColumnByFieldName(fld_InfVentasAlbArticuloIMPORTE_TOTAL_VENTA).Summary.SortByGroupFooterSummary := True; frViewInfVentasAlbArticuloGrid1.cxGridView.DataController.Groups.DataController.EndUpdate; end; function TfrViewInfVentasAlbArticulo.GetController: IInfVentasAlbArticuloController; begin Result := FController; end; function TfrViewInfVentasAlbArticulo.GetDatos: IBizInfVentasAlbArticulo; begin Result := FDatos; end; function TfrViewInfVentasAlbArticulo.GetFocusedView: TcxGridDBTableView; begin Result := frViewInfVentasAlbArticuloGrid1.cxGridView; end; procedure TfrViewInfVentasAlbArticulo.Refresh; var AColumns : TStringList; AColumnsGroup : TStringList; i: Integer; Condicion: TDAWhereExpression; AWhere : String; begin inherited; ShowHourglassCursor; actRefrescar.Enabled := False; AWhere := ' ( ' + fld_InfVentasAlbArticuloFECHA_ALBARAN + ' between ''' + ReplaceStr(DateToStr(frViewPeriodoFechasInforme1.FechaInicial),'/','.') + ''' and ''' + ReplaceStr(DateToStr(frViewPeriodoFechasInforme1.FechaFinal),'/','.') + ''') '; frViewInfVentasAlbArticuloGrid1.OnViewChanged := nil; frViewInfVentasAlbArticuloGrid1.OnFilterChanged := nil; try // Calcular las columnas a pedir al servidor AColumns := frViewColumnas1.GetCheckedColumns; AColumns.sorted := true; AColumns.Duplicates := dupIgnore; //Aņadimos el nombre de los campos a los que referencia los captions de agrupacion AColumnsGroup := frViewAgrupaciones1.GetAgrupaciones; for i:= 0 to AColumnsGroup.Count - 1 do AColumns.Add((frViewInfVentasAlbArticuloGrid1 as IViewInformeBaseGrid).GetColumnByCaption(AColumnsGroup.Strings[i]).DataBinding.FieldName); FDatos := FController.BuscarTodos(AColumns.CommaText, Awhere); dsVentasTerminadas.DataTable := FDatos.Datatable; frViewInfVentasAlbArticuloGrid1.FocusedView.DataController.DataSource := dsVentasTerminadas; with Datos.DataTable do begin DisableControls; try Active := False; Active := True; frViewColumnas1.Execute; frViewAgrupaciones1.Execute; frViewSumarios1.Refresh; frViewFiltros1.Refresh; pnlTareas.Visible := True; if Assigned(FOnViewChanged) then FOnViewChanged(Self); finally EnableControls; frViewInfVentasAlbArticuloGrid1.Refresh; frViewInfVentasAlbArticuloGrid1.ExpandirTodo; frViewInfVentasAlbArticuloGrid1.GotoFirst; end; end; finally FreeAndNil(AColumns); actRefrescar.Enabled := True; HideHourglassCursor; end; end; procedure TfrViewInfVentasAlbArticulo.SetController(const Value: IInfVentasAlbArticuloController); begin FController := Value; end; procedure TfrViewInfVentasAlbArticulo.SetDatos(const Value: IBizInfVentasAlbArticulo); begin FDatos := Value; end; procedure TfrViewInfVentasAlbArticulo.actRefrescarExecute(Sender: TObject); begin inherited; Refresh; end; procedure TfrViewInfVentasAlbArticulo.OnViewInformeBaseGridChanged( Sender: TObject); begin if Assigned(Self.OnViewChanged) then Self.OnViewChanged(Self); end; procedure TfrViewInfVentasAlbArticulo.OnFilterChanged(Sender: TObject); begin frViewFiltros1.Refresh; end; procedure TfrViewInfVentasAlbArticulo.actPeriodoFechasExecute( Sender: TObject); begin inherited; ActivarTarea(PERIODO); end; procedure TfrViewInfVentasAlbArticulo.ActivarTarea(const ATarea: Integer); begin inherited; case ATarea of PERIODO : pcParametros.ActivePage := TabSheet5; end; end; end.