GARANTIR DESCONTO

Fórum DevExpress PivotGrid #536375

04/11/2015

0

Boa tarde

Preciso gerar um fluxo de caixa utilizando o Pivot. Quando eu monto e mostro dia a dia não tenho problemas, porém quando o usuário agrupa por mes não estou conseguindo montar o saldo final. Exemplo:

[img:descricao=Fluxo aberto por dia]http://arquivo.devmedia.com.br/forum/imagem/462290-20151104-164718.png[/img]

[img:descricao=Fluxo por mês]http://arquivo.devmedia.com.br/forum/imagem/462290-20151104-164749.png[/img]

A linha do saldo inicial eu consegui sempre fazer com que busque o primeiro registro de cada agrupamento (não pode somar porque o saldo inicial do dia 02 deve ser o saldo final do dia 01 e assim por diante). Porém o saldo final não pode ser a soma de todos os saldos finais (o que seria o normal do Pivot), tem que ser o saldo inicial + entradas - Saídas.

E pra completar cada dia pode ter até duas colunas (previsto e realizado).

Alguém sabe como posso fazer isso?


Editado em 04/11/2015 às 17:07
Solução para buscar o saldo inicial:

1) Criar uma procedure para calcular os sumários customizada.
procedure MyCustomSummary(Sender: TcxPivotGridField; ASummary: TcxPivotGridCrossCellSummary);


2) No procedimento verifico se é a linha do saldo inicial (como tá escrito) e verifico se o campo que está listado não for o da data (caso quando está agrupado por mês ou ano) e pego o valor do primeiro registro:
procedure TFINCN029.MyCustomSummary(Sender: TcxPivotGridField;
  ASummary: TcxPivotGridCrossCellSummary);
var
  ARow, AColumn: TcxPivotGridGroupItem;
begin
  if ASummary.Records.Count = 0 then
    Exit;

  ARow := ASummary.Owner.Row;
  AColumn := ASummary.Owner.Column;
  if (ARow.DisplayText = 'SALDO INICIAL') and (AColumn.Field.Caption <> 'Data') then
  begin
    ASummary.Custom := ASummary.GetValue(ASummary.Records.Items[0]);
  end
  else
     ASummary.Custom := ASummary.Sum;
end;


3) No campo do PivotGrid coloco o módulo de totalização do sumário como customizada:
GridPivot.GetFieldByName('Valor').SummaryType := stcustom;


4) Seto o procedimento que vai efetuar o calculo customizado ao campo:
GridPivot.GetFieldByName('Valor').OnCalculateCustomSummary  := MyCustomSummary;


Espero que ajude.

Um abraço
Fernando Vicari

Fernando Vicari

Responder

Posts

05/11/2015

Fernando Vicari

Alguém?
Responder

Gostei + 0

09/11/2016

Wilson Neto

Amigo, estou precisando realizar o mesmo processo utilizando o pivot grid, porem estou encontrando dificuldades, vc pode me informar a estrutura de tabelas utilizada?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar