/Gedemin/Transaction/gdv_AvailAnalytics_unit.pas

http://gedemin.googlecode.com/ · Pascal · 195 lines · 164 code · 28 blank · 3 comment · 10 complexity · 9fa7c75149cceacc2f12f6d6fac16ed0 MD5 · raw file

  1. unit gdv_AvailAnalytics_unit;
  2. interface
  3. uses
  4. contnrs, at_classes, classes, AcctUtils, AcctStrings;
  5. type
  6. TgdvAnalytics = class
  7. private
  8. FFieldName: string;
  9. FCaption: string;
  10. FField: TatRelationField;
  11. FListField: TatRelationField;
  12. FAdditional: string;
  13. FTotal: boolean;
  14. procedure SetCaption(const Value: string);
  15. procedure SetField(const Value: TatRelationField);
  16. procedure SetFieldName(const Value: string);
  17. procedure SetAdditional(const Value: string);
  18. procedure SetTotal(const Value: boolean);
  19. procedure SetListField(const Value: TatRelationField);
  20. public
  21. procedure SetListFieldByFieldName(const Value: string); overload;
  22. property FieldName: string read FFieldName write SetFieldName;
  23. property Caption: string read FCaption write SetCaption;
  24. property Field: TatRelationField read FField write SetField;
  25. property ListField: TatRelationField read FListField write SetListField;
  26. property Additional: string read FAdditional write SetAdditional;
  27. property Total: boolean read FTotal write SetTotal;
  28. end;
  29. TgdvAvailAnalytics = class(TObjectList)
  30. private
  31. function GetAnalytics(Index: Integer): TgdvAnalytics;
  32. public
  33. procedure Refresh; virtual;
  34. procedure AddAnalytics(FieldName, Caption: string; Field: TatRelationField;
  35. Additional: string);
  36. function IndexOfByFieldName(FieldName: string): Integer;
  37. property Analytics[Index: Integer]: TgdvAnalytics read GetAnalytics; default;
  38. end;
  39. TgdvAnalyticsList = class(TList)
  40. private
  41. function GetAnalytics(Index: Integer): TgdvAnalytics;
  42. public
  43. property Analytics[Index: Integer]: TgdvAnalytics read GetAnalytics; default;
  44. end;
  45. implementation
  46. { TgdvAvailAnalytics }
  47. procedure TgdvAvailAnalytics.AddAnalytics(FieldName, Caption: string;
  48. Field: TatRelationField; Additional: string);
  49. var
  50. A: TgdvAnalytics;
  51. begin
  52. A := TgdvAnalytics.Create;
  53. A.Field := Field;
  54. A.FieldName := FieldName;
  55. A.Caption := Caption;
  56. A.Additional := Additional;
  57. Add(A);
  58. end;
  59. function TgdvAvailAnalytics.GetAnalytics(Index: Integer): TgdvAnalytics;
  60. begin
  61. Result := TgdvAnalytics(Items[Index]);
  62. end;
  63. function TgdvAvailAnalytics.IndexOfByFieldName(FieldName: string): Integer;
  64. var
  65. I: Integer;
  66. begin
  67. Result := -1;
  68. for I := 0 to Count - 1 do
  69. begin
  70. if Analytics[I].FieldName = FieldName then
  71. begin
  72. Result := I;
  73. Exit;
  74. end;
  75. end;
  76. end;
  77. procedure TgdvAvailAnalytics.Refresh;
  78. var
  79. L: TList;
  80. A: TgdvAnalytics;
  81. I: Integer;
  82. F: TatRelationField;
  83. begin
  84. Clear;
  85. L := TList.Create;
  86. try
  87. GetAnalyticsFields(L);
  88. for I := 0 to L.Count -1 do
  89. begin
  90. A := TgdvAnalytics.Create;
  91. A.Field := TatRelationField(L[I]);
  92. Add(A);
  93. end;
  94. finally
  95. L.Free;
  96. end;
  97. F := atDatabase.FindRelationField(AC_ENTRY, ENTRYDATE);
  98. if F <> nil then
  99. begin
  100. A := TgdvAnalytics.Create;
  101. A.Field := F;
  102. if A.Field.LName = ENTRYDATE then
  103. A.Caption := '????';
  104. Add(A);
  105. end;
  106. AddAnalytics(MONTH, '?????', nil, '1');
  107. AddAnalytics('QUARTER', '???????', nil, '4');
  108. AddAnalytics('YEAR', '???', nil, '3');
  109. F := atDatabase.FindRelationField(AC_ENTRY, 'ACCOUNTKEY');
  110. if F <> nil then
  111. begin
  112. AddAnalytics('ACCOUNTKEY', '????? ? ????????', F, '')
  113. end;
  114. F := atDatabase.FindRelationField(AC_ENTRY, 'CURRKEY');
  115. if F <> nil then
  116. begin
  117. AddAnalytics('CURRKEY', '??????', F, '')
  118. end;
  119. F := atDatabase.FindRelationField(AC_ENTRY, 'COMPANYKEY');
  120. if F <> nil then
  121. begin
  122. AddAnalytics('COMPANYKEY', '??????? ????????', F, '');
  123. end;
  124. end;
  125. { TgdvAnalytics }
  126. procedure TgdvAnalytics.SetAdditional(const Value: string);
  127. begin
  128. FAdditional := Value;
  129. end;
  130. procedure TgdvAnalytics.SetCaption(const Value: string);
  131. begin
  132. FCaption := Value;
  133. end;
  134. procedure TgdvAnalytics.SetField(const Value: TatRelationField);
  135. begin
  136. FField := Value;
  137. if Value <> nil then
  138. begin
  139. FFieldName := Value.FieldName;
  140. FCaption := Value.LName;
  141. end;
  142. end;
  143. procedure TgdvAnalytics.SetFieldName(const Value: string);
  144. begin
  145. FFieldName := Value;
  146. end;
  147. procedure TgdvAnalytics.SetListFieldByFieldName(const Value: string);
  148. begin
  149. if Assigned(FField) and (Value <> '') then
  150. ListField := FField.References.RelationFields.ByFieldName(Value)
  151. else
  152. ListField := nil;
  153. end;
  154. procedure TgdvAnalytics.SetListField(const Value: TatRelationField);
  155. begin
  156. FListField := Value;
  157. end;
  158. procedure TgdvAnalytics.SetTotal(const Value: boolean);
  159. begin
  160. FTotal := Value;
  161. end;
  162. { TgdvAnalyticsList }
  163. function TgdvAnalyticsList.GetAnalytics(Index: Integer): TgdvAnalytics;
  164. begin
  165. Result := TgdvAnalytics(Items[Index]);
  166. end;
  167. end.