Changeset 9 for trunk/Ean.pas
- Timestamp:
- Apr 14, 2026, 12:57:08 PM (2 weeks ago)
- File:
-
- 1 edited
-
trunk/Ean.pas (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ean.pas
r8 r9 5 5 uses 6 6 Classes, SysUtils, Generics.Collections, Generics.Defaults, DateUtils, DOM, 7 XML ;7 XML, SpotPrice; 8 8 9 9 type … … 45 45 function GetTotalOut(TimeFrom, TimeTo: TDateTime): Double; 46 46 function GetShared(TimeFrom, TimeTo: TDateTime): Double; 47 function GetSavings(TimeFrom, TimeTo: TDateTime): Integer; 47 function GetSharedPercent(TimeFrom, TimeTo: TDateTime): Double; 48 function GetSavings(TimeFrom, TimeTo: TDateTime; SpotPrices: TSpotPrices): Currency; 49 function GetPrice(TimeFrom, TimeTo: TDateTime; SpotPrices: TSpotPrices): Currency; 48 50 procedure LoadFromXmlNode(Node: TDOMNode); 49 51 procedure SaveToXmlNode(Node: TDOMNode); … … 173 175 var 174 176 TotalIn: Double; 177 TotalOut: Double; 178 begin 179 TotalIn := GetTotalIn(TimeFrom, TimeTo); 180 TotalOut := GetTotalOut(TimeFrom, TimeTo); 181 if TotalIn <> 0 then Result := TotalIn - TotalOut 182 else Result := 0; 183 end; 184 185 function TEan.GetSharedPercent(TimeFrom, TimeTo: TDateTime): Double; 186 var 187 TotalIn: Double; 175 188 begin 176 189 TotalIn := GetTotalIn(TimeFrom, TimeTo); … … 179 192 end; 180 193 181 function TEan.GetSavings(TimeFrom, TimeTo: TDateTime ): Integer;194 function TEan.GetSavings(TimeFrom, TimeTo: TDateTime; SpotPrices: TSpotPrices): Currency; 182 195 var 183 196 TotalIn: Double; 184 197 TotalOut: Double; 185 begin 186 TotalIn := GetTotalIn(TimeFrom, TimeTo); 187 TotalOut := GetTotalOut(TimeFrom, TimeTo); 188 Result := Trunc((TotalIn - TotalOut) * PriceLow); 198 I: Integer; 199 SpotPrice: TSpotPrice; 200 begin 201 if PriceLow = 0 then begin 202 Result := 0; 203 for I := 0 to Values.Count - 1 do 204 if (Values[I].Time >= TimeFrom) and (Values[I].Time < TimeTo) then begin 205 SpotPrice := SpotPrices.SearchByTime(Values[I].Time); 206 if SpotPrice.Value <> 0 then 207 Result := Result + (Values[I].ValueIn - Values[I].ValueOut) * (SpotPrice.Value - PriceSpot); 208 end; 209 end else begin 210 TotalIn := GetTotalIn(TimeFrom, TimeTo); 211 TotalOut := GetTotalOut(TimeFrom, TimeTo); 212 Result := (TotalIn - TotalOut) * PriceLow; 213 end; 214 end; 215 216 function TEan.GetPrice(TimeFrom, TimeTo: TDateTime; SpotPrices: TSpotPrices): Currency; 217 var 218 I: Integer; 219 SpotPrice: TSpotPrice; 220 begin 221 if PriceLow = 0 then begin 222 Result := 0; 223 for I := 0 to Values.Count - 1 do 224 if (Values[I].Time >= TimeFrom) and (Values[I].Time < TimeTo) then begin 225 SpotPrice := SpotPrices.SearchByTime(Values[I].Time); 226 if SpotPrice.Value <> 0 then 227 Result := Result + Values[I].ValueIn * (SpotPrice.Value - PriceSpot); 228 end; 229 end else Result := GetTotalIn(TimeFrom, TimeTo) * PriceLow; 189 230 end; 190 231
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/edc-stats/chrome/site/your_project_logo.png)