Arreglo de cálculo de porcentaje de márgenes en informe de margen por artículo.
git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@253 c93665c3-c93d-084d-9b98-7d5f4a9c3376
This commit is contained in:
parent
762c3c5ddb
commit
b8e251ab7e
@ -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 %'
|
||||
|
||||
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user