Changeset 8 for trunk/Ean.pas


Ignore:
Timestamp:
Apr 13, 2026, 11:12:39 PM (2 weeks ago)
Author:
chronos
Message:
  • Fixed: Data tab populating and refreshing.
  • Fixed: Used currency as decimal type for measured values instead inaccurate double type.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ean.pas

    r7 r8  
    1313  TEanValue = record
    1414    Time: TDateTime;
    15     ValueIn: Single;
    16     ValueOut: Single;
    17     class function Create(Time: TDateTime; ValueIn, ValueOut: Single): TEanValue; static;
     15    ValueIn: Currency;
     16    ValueOut: Currency;
     17    class function Create(Time: TDateTime; ValueIn, ValueOut: Currency): TEanValue; static;
    1818    function GetShared: Double;
    1919    procedure LoadFromXmlNode(Node: TDOMNode);
     
    4545    function GetTotalOut(TimeFrom, TimeTo: TDateTime): Double;
    4646    function GetShared(TimeFrom, TimeTo: TDateTime): Double;
     47    function GetSavings(TimeFrom, TimeTo: TDateTime): Integer;
    4748    procedure LoadFromXmlNode(Node: TDOMNode);
    4849    procedure SaveToXmlNode(Node: TDOMNode);
     
    8788{ TEanValue }
    8889
    89 class function TEanValue.Create(Time: TDateTime; ValueIn, ValueOut: Single
     90class function TEanValue.Create(Time: TDateTime; ValueIn, ValueOut: Currency
    9091  ): TEanValue;
    9192begin
     
    104105begin
    105106  Time := ReadDateTime(Node, 'Time', Time);
    106   ValueIn := ReadDouble(Node, 'ValueIn', ValueIn);
    107   ValueOut := ReadDouble(Node, 'ValueOut', ValueOut);
     107  ValueIn := ReadCurrency(Node, 'ValueIn', 0);
     108  ValueOut := ReadCurrency(Node, 'ValueOut', 0);
    108109end;
    109110
     
    111112begin
    112113  if Time <> 0 then WriteDateTime(Node, 'Time', Time);
    113   if ValueIn <> 0 then WriteDouble(Node, 'ValueIn', ValueIn);
    114   if ValueOut <> 0 then WriteDouble(Node, 'ValueOut', ValueOut);
     114  if ValueIn <> 0 then WriteCurrency(Node, 'ValueIn', ValueIn);
     115  if ValueOut <> 0 then WriteCurrency(Node, 'ValueOut', ValueOut);
    115116end;
    116117
     
    176177  if TotalIn <> 0 then Result := (1 - GetTotalOut(TimeFrom, TimeTo) / TotalIn) * 100
    177178    else Result := 0;
     179end;
     180
     181function TEan.GetSavings(TimeFrom, TimeTo: TDateTime): Integer;
     182var
     183  TotalIn: Double;
     184  TotalOut: Double;
     185begin
     186  TotalIn := GetTotalIn(TimeFrom, TimeTo);
     187  TotalOut := GetTotalOut(TimeFrom, TimeTo);
     188  Result := Trunc((TotalIn - TotalOut) * PriceLow);
    178189end;
    179190
Note: See TracChangeset for help on using the changeset viewer.