From b8e251ab7e6742b88924507dba20d2351e61dae5 Mon Sep 17 00:00:00 2001 From: david Date: Thu, 19 Jun 2008 13:31:40 +0000 Subject: [PATCH] =?UTF-8?q?Arreglo=20de=20c=C3=A1lculo=20de=20porcentaje?= =?UTF-8?q?=20de=20m=C3=A1rgenes=20en=20informe=20de=20margen=20por=20art?= =?UTF-8?q?=C3=ADculo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@253 c93665c3-c93d-084d-9b98-7d5f4a9c3376 --- .../Views/uViewInfMargenArticuloGrid.dfm | 15 ++-- .../Views/uViewInfMargenArticuloGrid.pas | 82 +++++++++++++++++-- 2 files changed, 84 insertions(+), 13 deletions(-) diff --git a/Source/Modulos/Informe margen por articulo/Views/uViewInfMargenArticuloGrid.dfm b/Source/Modulos/Informe margen por articulo/Views/uViewInfMargenArticuloGrid.dfm index 0b60af57..0aa8bf5e 100644 --- a/Source/Modulos/Informe margen por articulo/Views/uViewInfMargenArticuloGrid.dfm +++ b/Source/Modulos/Informe margen por articulo/Views/uViewInfMargenArticuloGrid.dfm @@ -1,17 +1,19 @@ inherited frViewInfMargenArticuloGrid: TfrViewInfMargenArticuloGrid - Width = 583 - Height = 378 - ExplicitWidth = 583 - ExplicitHeight = 378 + Width = 774 + Height = 480 + ExplicitWidth = 774 + ExplicitHeight = 480 object cxGrid: TcxGrid [0] Left = 0 Top = 0 - Width = 583 - Height = 378 + Width = 774 + Height = 480 Align = alClient TabOrder = 0 LookAndFeel.Kind = lfStandard LookAndFeel.NativeStyle = True + ExplicitWidth = 583 + ExplicitHeight = 378 object cxGridView: TcxGridDBTableView NavigatorButtons.ConfirmDelete = False FilterBox.CustomizeDialog = False @@ -20,6 +22,7 @@ inherited frViewInfMargenArticuloGrid: TfrViewInfMargenArticuloGrid DataController.Filter.OnChanged = cxGridViewDataControllerFilterChanged DataController.KeyFieldNames = 'RecID' DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText] + DataController.Summary.DefaultGroupSummaryItems.OnSummary = cxGridViewDataControllerSummaryDefaultGroupSummaryItemsSummary DataController.Summary.DefaultGroupSummaryItems = < item Format = ',0.00 %;-,0.00 %' diff --git a/Source/Modulos/Informe margen por articulo/Views/uViewInfMargenArticuloGrid.pas b/Source/Modulos/Informe margen por articulo/Views/uViewInfMargenArticuloGrid.pas index 1d68d8f8..36dfaa0b 100644 --- a/Source/Modulos/Informe margen por articulo/Views/uViewInfMargenArticuloGrid.pas +++ b/Source/Modulos/Informe margen por articulo/Views/uViewInfMargenArticuloGrid.pas @@ -95,11 +95,15 @@ type AColumn: TcxGridColumn); procedure cxGridViewDataControllerGroupingChanged(Sender: TObject); procedure cxGridViewDataControllerSortingChanged(Sender: TObject); - procedure cxGridViewDataControllerSummaryAfterSummary(ASender: TcxDataSummary); procedure cxGridViewDataControllerFilterChanged(Sender: TObject); procedure cxGridViewDataControllerSummaryFooterSummaryItemsSummary( ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments; var OutArguments: TcxSummaryEventOutArguments); + procedure cxGridViewDataControllerSummaryAfterSummary( + ASender: TcxDataSummary); + procedure cxGridViewDataControllerSummaryDefaultGroupSummaryItemsSummary( + ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments; + var OutArguments: TcxSummaryEventOutArguments); protected procedure ActivarEventos; override; procedure DesactivarEventos; override; @@ -113,7 +117,7 @@ type implementation uses - cxVariants, uDateUtils; + cxVariants, uDateUtils, cxGridDBDataDefinitions; {$R *.dfm} @@ -230,12 +234,76 @@ end; procedure TfrViewInfMargenArticuloGrid.cxGridViewDataControllerSummaryAfterSummary( ASender: TcxDataSummary); + + procedure CalcGropSummaries; + + function Groups: TcxDataControllerGroups; + begin + Result := cxGridView.DataController.Groups; + end; + + procedure CalcGroupSummary(ADataGroupIndex: Integer); + var + V1, V2, AResult: Variant; + ASummaryItems: TcxDataSummaryItems; + begin + ASummaryItems := ASender.GroupSummaryItems[Groups.Level[ADataGroupIndex]]; + + V1 := ASender.GroupSummaryValues[ADataGroupIndex, + ASummaryItems.IndexOfItemLink(cxGridViewIMP_TOTAL)]; + + V2 := ASender.GroupSummaryValues[ADataGroupIndex, + ASummaryItems.IndexOfItemLink(cxGridViewIMP_MARGEN_PRO_COMP_TOTAL)]; + + AResult := 0; + + if (V1 > 0) then + begin + AResult := (V2 * 100) / V1; + end; + + ASender.GroupSummaryValues[ADataGroupIndex, + ASummaryItems.IndexOfItemLink(cxGridViewPOR_MARGEN_PRO_COMP)] := AResult + end; + + procedure CalcGroupSummariesByDataGroupIndex(ADataGroupIndex: Integer); + var + I: Integer; + begin + if Groups.Level[ADataGroupIndex] >= Groups.GroupingItemCount - 1 then + Exit; + for I := 0 to Groups.ChildCount[ADataGroupIndex] - 1 do + begin + CalcGroupSummary(Groups.ChildDataGroupIndex[ADataGroupIndex, I]); + CalcGroupSummariesByDataGroupIndex(Groups.ChildDataGroupIndex[ADataGroupIndex, I]); + end; + end; + + begin + CalcGroupSummariesByDataGroupIndex(-1); + end; + +begin + if ASender.DataController.RecordCount > 0 then + begin + DesactivarEventos; + try + CalcGropSummaries; + finally + ActivarEventos; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); + end; + end; +end; + +procedure TfrViewInfMargenArticuloGrid.cxGridViewDataControllerSummaryDefaultGroupSummaryItemsSummary( + ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments; + var OutArguments: TcxSummaryEventOutArguments); begin inherited; - - // - if Assigned(FOnViewChanged) then - FOnViewChanged(Self); + if Arguments.SummaryItem.ItemLink = cxGridViewPOR_MARGEN_PRO_COMP then + OutArguments.Value := 111; end; procedure TfrViewInfMargenArticuloGrid.cxGridViewDataControllerSummaryFooterSummaryItemsSummary( @@ -251,7 +319,7 @@ begin if cxGridViewIMP_TOTAL.Visible and cxGridViewIMP_MARGEN_PRO_COMP_TOTAL.Visible then begin - ACalculo:=0; + ACalculo := 0; AIndex := ASender.IndexOfItemLink(cxGridViewIMP_MARGEN_PRO_COMP_TOTAL); if not VarIsNull(cxGridView.DataController.Summary.FooterSummaryValues[AIndex]) then ACalculo := cxGridView.DataController.Summary.FooterSummaryValues[AIndex] * 100;