- Timestamp:
- Apr 14, 2026, 12:57:08 PM (2 weeks ago)
- Location:
- trunk
- Files:
-
- 8 edited
-
Ean.pas (modified) (4 diffs)
-
EdcProject.pas (modified) (3 diffs)
-
FormMain.lfm (modified) (7 diffs)
-
FormMain.lrj (modified) (2 diffs)
-
FormMain.pas (modified) (16 diffs)
-
Languages/EdcStats.cs.po (modified) (3 diffs)
-
Languages/EdcStats.pot (modified) (3 diffs)
-
SpotPrice.pas (modified) (10 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 -
trunk/EdcProject.pas
r8 r9 20 20 SpotPrices: TSpotPrices; 21 21 Eans: TEans; 22 procedure Import (ReportsDir: string);22 procedure ImportReports(ReportsDir: string); 23 23 procedure LoadFromFile(FileName: string); 24 24 procedure SaveToFile(FileName: string); … … 43 43 end; 44 44 45 procedure TEdcProject.Import (ReportsDir: string);45 procedure TEdcProject.ImportReports(ReportsDir: string); 46 46 var 47 47 Reports: TStringList; … … 62 62 for I := 0 to Eans.Count - 1 do 63 63 Eans[I].Values.Sort(TComparer<TEanValue>.Construct(Eans[I].Values.Comparer)); 64 65 64 66 65 CreateEan('', STotalSupply, ekSupply); -
trunk/FormMain.lfm
r8 r9 1 1 object FormMain: TFormMain 2 Left = 36 72 Left = 362 3 3 Height = 884 4 Top = 3 614 Top = 356 5 5 Width = 1203 6 6 Caption = 'EDC Stats' … … 20 20 Top = 56 21 21 Width = 1176 22 ActivePage = TabSheet Data22 ActivePage = TabSheetSpotPrices 23 23 Anchors = [akTop, akLeft, akRight, akBottom] 24 TabIndex = 324 TabIndex = 4 25 25 TabOrder = 0 26 26 object TabSheetOverview: TTabSheet … … 29 29 ClientWidth = 1166 30 30 OnShow = TabSheetOverviewShow 31 object ListView 1: TListView31 object ListViewOverview: TListView 32 32 Left = 8 33 33 Height = 763 … … 50 50 end 51 51 item 52 Caption = ' Result'52 Caption = 'Shared' 53 53 Width = 100 54 54 end … … 74 74 end 75 75 item 76 Caption = 'Price [Kč]' 77 Width = 100 78 end 79 item 76 80 Caption = 'Savings [Kč]' 81 Width = 100 82 end 83 item 84 Caption = 'Tariff' 85 Width = 100 77 86 end> 78 87 PopupMenu = PopupMenuOverview … … 220 229 ClientWidth = 1166 221 230 OnShow = TabSheetDataShow 222 object ListView 2: TListView231 object ListViewData: TListView 223 232 Left = 16 224 233 Height = 696 … … 266 275 TabOrder = 1 267 276 OnSelect = ComboBoxEanDataSelect 277 end 278 end 279 object TabSheetSpotPrices: TTabSheet 280 Caption = 'Spot prices' 281 ClientHeight = 779 282 ClientWidth = 1166 283 OnShow = TabSheetSpotPricesShow 284 object ListViewSpotPrices: TListView 285 Left = 16 286 Height = 760 287 Top = 8 288 Width = 1144 289 Align = alCustom 290 Anchors = [akTop, akLeft, akRight, akBottom] 291 BorderSpacing.Around = 8 292 Columns = < 293 item 294 Caption = 'Time' 295 Width = 200 296 end 297 item 298 Caption = 'Value [Kč]' 299 Width = 929 300 end> 301 ReadOnly = True 302 RowSelect = True 303 TabOrder = 0 304 ViewStyle = vsReport 268 305 end 269 306 end -
trunk/FormMain.lrj
r8 r9 2 2 {"hash":89841971,"name":"tformmain.caption","sourcebytes":[69,68,67,32,83,116,97,116,115],"value":"EDC Stats"}, 3 3 {"hash":214551207,"name":"tformmain.tabsheetoverview.caption","sourcebytes":[79,118,101,114,118,105,101,119],"value":"Overview"}, 4 {"hash":18782,"name":"tformmain.listview1.columns[0].caption","sourcebytes":[69,65,78],"value":"EAN"}, 5 {"hash":5694658,"name":"tformmain.listview1.columns[1].caption","sourcebytes":[79,119,110,101,114],"value":"Owner"}, 6 {"hash":193645956,"name":"tformmain.listview1.columns[2].caption","sourcebytes":[77,101,97,115,117,114,101,100],"value":"Measured"}, 7 {"hash":93105204,"name":"tformmain.listview1.columns[3].caption","sourcebytes":[82,101,115,117,108,116],"value":"Result"}, 8 {"hash":145998637,"name":"tformmain.listview1.columns[4].caption","sourcebytes":[83,104,97,114,101,100,32,91,37,93],"value":"Shared [%]"}, 9 {"hash":335940,"name":"tformmain.listview1.columns[5].caption","sourcebytes":[75,105,110,100],"value":"Kind"}, 10 {"hash":237609437,"name":"tformmain.listview1.columns[6].caption","sourcebytes":[76,111,119,32,112,114,105,99,101,32,91,75,196,141,93],"value":"Low price [K\u010D]"}, 11 {"hash":221060461,"name":"tformmain.listview1.columns[7].caption","sourcebytes":[72,105,103,104,32,112,114,105,99,101,32,91,75,196,141,93],"value":"High price [K\u010D]"}, 12 {"hash":19813853,"name":"tformmain.listview1.columns[8].caption","sourcebytes":[83,112,111,116,32,112,114,105,99,101,32,91,75,196,141,93],"value":"Spot price [K\u010D]"}, 13 {"hash":215185821,"name":"tformmain.listview1.columns[9].caption","sourcebytes":[83,97,118,105,110,103,115,32,91,75,196,141,93],"value":"Savings [K\u010D]"}, 4 {"hash":18782,"name":"tformmain.listviewoverview.columns[0].caption","sourcebytes":[69,65,78],"value":"EAN"}, 5 {"hash":5694658,"name":"tformmain.listviewoverview.columns[1].caption","sourcebytes":[79,119,110,101,114],"value":"Owner"}, 6 {"hash":193645956,"name":"tformmain.listviewoverview.columns[2].caption","sourcebytes":[77,101,97,115,117,114,101,100],"value":"Measured"}, 7 {"hash":94275764,"name":"tformmain.listviewoverview.columns[3].caption","sourcebytes":[83,104,97,114,101,100],"value":"Shared"}, 8 {"hash":145998637,"name":"tformmain.listviewoverview.columns[4].caption","sourcebytes":[83,104,97,114,101,100,32,91,37,93],"value":"Shared [%]"}, 9 {"hash":335940,"name":"tformmain.listviewoverview.columns[5].caption","sourcebytes":[75,105,110,100],"value":"Kind"}, 10 {"hash":237609437,"name":"tformmain.listviewoverview.columns[6].caption","sourcebytes":[76,111,119,32,112,114,105,99,101,32,91,75,196,141,93],"value":"Low price [K\u010D]"}, 11 {"hash":221060461,"name":"tformmain.listviewoverview.columns[7].caption","sourcebytes":[72,105,103,104,32,112,114,105,99,101,32,91,75,196,141,93],"value":"High price [K\u010D]"}, 12 {"hash":19813853,"name":"tformmain.listviewoverview.columns[8].caption","sourcebytes":[83,112,111,116,32,112,114,105,99,101,32,91,75,196,141,93],"value":"Spot price [K\u010D]"}, 13 {"hash":118092989,"name":"tformmain.listviewoverview.columns[9].caption","sourcebytes":[80,114,105,99,101,32,91,75,196,141,93],"value":"Price [K\u010D]"}, 14 {"hash":215185821,"name":"tformmain.listviewoverview.columns[10].caption","sourcebytes":[83,97,118,105,110,103,115,32,91,75,196,141,93],"value":"Savings [K\u010D]"}, 15 {"hash":94932934,"name":"tformmain.listviewoverview.columns[11].caption","sourcebytes":[84,97,114,105,102,102],"value":"Tariff"}, 14 16 {"hash":21335,"name":"tformmain.tabsheetlog.caption","sourcebytes":[76,111,103],"value":"Log"}, 15 17 {"hash":4843668,"name":"tformmain.tabsheetchart.caption","sourcebytes":[67,104,97,114,116],"value":"Chart"}, … … 19 21 {"hash":223734467,"name":"tformmain.checkboxshowresult.caption","sourcebytes":[83,104,111,119,32,114,101,115,117,108,116,115],"value":"Show results"}, 20 22 {"hash":305313,"name":"tformmain.tabsheetdata.caption","sourcebytes":[68,97,116,97],"value":"Data"}, 21 {"hash":372789,"name":"tformmain.listview 2.columns[0].caption","sourcebytes":[84,105,109,101],"value":"Time"},22 {"hash":193645956,"name":"tformmain.listview 2.columns[1].caption","sourcebytes":[77,101,97,115,117,114,101,100],"value":"Measured"},23 {"hash":93105204,"name":"tformmain.listview 2.columns[2].caption","sourcebytes":[82,101,115,117,108,116],"value":"Result"},24 {"hash":145998637,"name":"tformmain.listview 2.columns[3].caption","sourcebytes":[83,104,97,114,101,100,32,91,37,93],"value":"Shared [%]"},23 {"hash":372789,"name":"tformmain.listviewdata.columns[0].caption","sourcebytes":[84,105,109,101],"value":"Time"}, 24 {"hash":193645956,"name":"tformmain.listviewdata.columns[1].caption","sourcebytes":[77,101,97,115,117,114,101,100],"value":"Measured"}, 25 {"hash":93105204,"name":"tformmain.listviewdata.columns[2].caption","sourcebytes":[82,101,115,117,108,116],"value":"Result"}, 26 {"hash":145998637,"name":"tformmain.listviewdata.columns[3].caption","sourcebytes":[83,104,97,114,101,100,32,91,37,93],"value":"Shared [%]"}, 25 27 {"hash":300570,"name":"tformmain.label4.caption","sourcebytes":[69,65,78,58],"value":"EAN:"}, 28 {"hash":119705507,"name":"tformmain.tabsheetspotprices.caption","sourcebytes":[83,112,111,116,32,112,114,105,99,101,115],"value":"Spot prices"}, 29 {"hash":372789,"name":"tformmain.listviewspotprices.columns[0].caption","sourcebytes":[84,105,109,101],"value":"Time"}, 30 {"hash":117768349,"name":"tformmain.listviewspotprices.columns[1].caption","sourcebytes":[86,97,108,117,101,32,91,75,196,141,93],"value":"Value [K\u010D]"}, 26 31 {"hash":19081,"name":"tformmain.comboboxperiod.text","sourcebytes":[68,97,121],"value":"Day"}, 27 32 {"hash":113837354,"name":"tformmain.label2.caption","sourcebytes":[80,101,114,105,111,100,58],"value":"Period:"}, -
trunk/FormMain.pas
r8 r9 41 41 Label5: TLabel; 42 42 Label6: TLabel; 43 ListView1: TListView; 44 ListView2: TListView; 43 ListViewOverview: TListView; 44 ListViewData: TListView; 45 ListViewSpotPrices: TListView; 45 46 MainMenu1: TMainMenu; 46 47 Memo1: TMemo; … … 55 56 PersistentForm1: TPersistentForm; 56 57 PopupMenuOverview: TPopupMenu; 58 TabSheetSpotPrices: TTabSheet; 57 59 TabSheetOverview: TTabSheet; 58 60 TabSheetData: TTabSheet; … … 83 85 procedure TabSheetDataShow(Sender: TObject); 84 86 procedure TabSheetLogShow(Sender: TObject); 87 procedure TabSheetSpotPricesShow(Sender: TObject); 85 88 procedure TimeEdit1Change(Sender: TObject); 86 89 procedure Translator1Translate(Sender: TObject); … … 91 94 Period: TPeriod; 92 95 ReportsDir: string; 96 SpotPricesDir: string; 93 97 ProjectFileName: string; 94 98 ShowResult: Boolean; … … 100 104 procedure ReloadListViewOverview; 101 105 procedure ReloadListViewData; 106 procedure ReloadListViewSpotPrices; 102 107 procedure ReloadChart; 103 108 function GetIntervalLength: TDateTime; … … 209 214 procedure TFormMain.MenuItemImportReportsClick(Sender: TObject); 210 215 begin 211 EdcProject.Import (ReportsDir);216 EdcProject.ImportReports(ReportsDir); 212 217 213 218 if (EdcProject.Eans.Count > 0) and (EdcProject.Eans[0].Values.Count > 0) then … … 219 224 procedure TFormMain.MenuItemImportSpotPricesClick(Sender: TObject); 220 225 begin 221 EdcProject.SpotPrices.LoadSpotPrices(StrToDate('1.4.2026')); 226 EdcProject.SpotPrices.Import(SpotPricesDir); 227 //EdcProject.SpotPrices.LoadSpotPricesFromWeb(StrToDate('1.4.2026')); 228 ShowActiveTab; 222 229 end; 223 230 … … 234 241 procedure TFormMain.MenuItemRemoveClick(Sender: TObject); 235 242 begin 236 if Assigned(ListView 1.Selected) then237 EdcProject.Eans.Remove(ListView 1.Selected.Data);243 if Assigned(ListViewOverview.Selected) then 244 EdcProject.Eans.Remove(ListViewOverview.Selected.Data); 238 245 ReloadListViewOverview; 239 246 end; … … 272 279 end; 273 280 281 procedure TFormMain.TabSheetSpotPricesShow(Sender: TObject); 282 begin 283 ReloadListViewSpotPrices; 284 end; 285 274 286 procedure TFormMain.TimeEdit1Change(Sender: TObject); 275 287 var … … 305 317 function TFormMain.MeasureToStr(Value: Double): string; 306 318 begin 307 Result := IntToStr(Trunc(MeasureToFloat(Value, GetIntervalLength * 24)));319 Result := CurrToStr(MeasureToFloat(Value, GetIntervalLength * 24)); 308 320 end; 309 321 … … 325 337 Memo1.Lines.Add(SResult + ': ' + IntToStr(Trunc(TotalOut))); 326 338 if TotalIn <> 0 then 327 Memo1.Lines.Add(SShared + ': ' + IntToStr(Trunc(GetShared (IntervalFrom, IntervalTo))) + ' %');339 Memo1.Lines.Add(SShared + ': ' + IntToStr(Trunc(GetSharedPercent(IntervalFrom, IntervalTo))) + ' %'); 328 340 Memo1.Lines.Add(''); 329 341 end; … … 338 350 I: Integer; 339 351 begin 340 ListView 1.BeginUpdate;352 ListViewOverview.BeginUpdate; 341 353 try 342 ListView 1.Items.Clear;354 ListViewOverview.Items.Clear; 343 355 for I := 0 to EdcProject.Eans.Count - 1 do 344 356 with EdcProject.Eans[I] do begin 345 ListItem := ListView 1.Items.Add;357 ListItem := ListViewOverview.Items.Add; 346 358 ListItem.Caption := Number; 347 359 ListItem.Data := EdcProject.Eans[I]; 348 360 ListItem.SubItems.Add(Owner); 349 361 ListItem.SubItems.Add(MeasureToStr(GetTotalIn(IntervalFrom, IntervalTo))); 350 ListItem.SubItems.Add(MeasureToStr(Get TotalOut(IntervalFrom, IntervalTo)));351 ListItem.SubItems.Add(IntToStr(Trunc(GetShared (IntervalFrom, IntervalTo))));362 ListItem.SubItems.Add(MeasureToStr(GetShared(IntervalFrom, IntervalTo))); 363 ListItem.SubItems.Add(IntToStr(Trunc(GetSharedPercent(IntervalFrom, IntervalTo)))); 352 364 ListItem.SubItems.Add(EanKindText[Kind]); 353 365 ListItem.SubItems.Add(FloatToStr(PriceLow)); 354 366 ListItem.SubItems.Add(FloatToStr(PriceHigh)); 355 367 ListItem.SubItems.Add(FloatToStr(PriceSpot)); 356 ListItem.SubItems.Add(IntToStr(GetSavings(IntervalFrom, IntervalTo))); 368 ListItem.SubItems.Add(CurrToStr(GetPrice(IntervalFrom, IntervalTo, EdcProject.SpotPrices))); 369 ListItem.SubItems.Add(CurrToStr(GetSavings(IntervalFrom, IntervalTo, EdcProject.SpotPrices))); 370 ListItem.SubItems.Add(DistributionTariff); 357 371 end; 358 372 finally 359 ListView 1.EndUpdate;373 ListViewOverview.EndUpdate; 360 374 end; 361 375 end; … … 367 381 Ean: TEan; 368 382 begin 369 ListView 2.Items.Clear;383 ListViewData.Items.Clear; 370 384 if ComboBoxEanData.ItemIndex = -1 then Exit; 371 385 Ean := TEan(ComboBoxEanData.Items.Objects[ComboBoxEanData.ItemIndex]); 372 386 373 387 if Assigned(Ean) then begin 374 ListView 2.BeginUpdate;388 ListViewData.BeginUpdate; 375 389 try 376 390 for I := 0 to Ean.Values.Count - 1 do 377 391 with Ean.Values[I] do 378 392 if (Time >= IntervalFrom) and (Time < IntervalTo) then begin 379 ListItem := ListView 2.Items.Add;393 ListItem := ListViewData.Items.Add; 380 394 ListItem.Caption := DateTimeToStr(Time); 381 395 ListItem.SubItems.Add(FloatToStr(ValueIn)); … … 384 398 end; 385 399 finally 386 ListView2.EndUpdate; 387 end; 400 ListViewData.EndUpdate; 401 end; 402 end; 403 end; 404 405 procedure TFormMain.ReloadListViewSpotPrices; 406 var 407 ListItem: TListItem; 408 I: Integer; 409 begin 410 ListViewSpotPrices.Items.Clear; 411 412 ListViewSpotPrices.BeginUpdate; 413 try 414 for I := 0 to EdcProject.SpotPrices.Count - 1 do 415 with EdcProject.SpotPrices[I] do 416 if (Time >= IntervalFrom) and (Time < IntervalTo) then 417 begin 418 ListItem := ListViewSpotPrices.Items.Add; 419 ListItem.Caption := DateTimeToStr(Time); 420 ListItem.SubItems.Add(FloatToStr(Value)); 421 end; 422 finally 423 ListViewSpotPrices.EndUpdate; 388 424 end; 389 425 end; … … 506 542 Period := TPeriod(ReadIntegerWithDefault('Period', Integer(Period))); 507 543 ReportsDir := ReadStringWithDefault('ReportsDir', ReportsDir); 544 SpotPricesDir := ReadStringWithDefault('SpotPricesDir', SpotPricesDir); 508 545 ProjectFileName := ReadStringWithDefault('ProjectFileName', ProjectFileName); 509 546 PageControl1.TabIndex := ReadIntegerWithDefault('ActiveTab', PageControl1.TabIndex); … … 528 565 WriteInteger('Period', Integer(Period)); 529 566 WriteString('ReportsDir', ReportsDir); 567 WriteString('SpotPricesDir', SpotPricesDir); 530 568 WriteString('ProjectFileName', ProjectFileName); 531 569 WriteInteger('ActiveTab', PageControl1.TabIndex); -
trunk/Languages/EdcStats.cs.po
r8 r9 65 65 66 66 #: formmain.sshared 67 msgctxt "formmain.sshared" 67 68 msgid "Shared" 68 69 msgstr "Sdíleno" … … 123 124 msgstr "EAN 3:" 124 125 125 #: tformmain.listview1.columns[0].caption 126 msgctxt "tformmain.listview1.columns[0].caption" 126 #: tformmain.listviewdata.columns[0].caption 127 msgctxt "tformmain.listviewdata.columns[0].caption" 128 msgid "Time" 129 msgstr "Čas" 130 131 #: tformmain.listviewdata.columns[1].caption 132 msgctxt "tformmain.listviewdata.columns[1].caption" 133 msgid "Measured" 134 msgstr "Měřeno" 135 136 #: tformmain.listviewdata.columns[2].caption 137 msgctxt "tformmain.listviewdata.columns[2].caption" 138 msgid "Result" 139 msgstr "Výsledek" 140 141 #: tformmain.listviewdata.columns[3].caption 142 msgctxt "tformmain.listviewdata.columns[3].caption" 143 msgid "Shared [%]" 144 msgstr "Sdíleno [%]" 145 146 #: tformmain.listviewoverview.columns[0].caption 147 msgctxt "tformmain.listviewoverview.columns[0].caption" 127 148 msgid "EAN" 128 149 msgstr "EAN" 129 150 130 #: tformmain.listview1.columns[1].caption 131 msgctxt "tformmain.listview1.columns[1].caption" 151 #: tformmain.listviewoverview.columns[10].caption 152 msgctxt "tformmain.listviewoverview.columns[10].caption" 153 msgid "Savings [Kč]" 154 msgstr "Úspory [Kč]" 155 156 #: tformmain.listviewoverview.columns[11].caption 157 msgid "Tariff" 158 msgstr "Tarif" 159 160 #: tformmain.listviewoverview.columns[1].caption 161 msgctxt "tformmain.listviewoverview.columns[1].caption" 132 162 msgid "Owner" 133 163 msgstr "Vlastník" 134 164 135 #: tformmain.listview 1.columns[2].caption136 msgctxt "tformmain.listview 1.columns[2].caption"165 #: tformmain.listviewoverview.columns[2].caption 166 msgctxt "tformmain.listviewoverview.columns[2].caption" 137 167 msgid "Measured" 138 168 msgstr "Měřeno" 139 169 140 #: tformmain.listview 1.columns[3].caption141 msgctxt "tformmain.listview 1.columns[3].caption"142 msgid " Result"143 msgstr " Výsledek"144 145 #: tformmain.listview 1.columns[4].caption146 msgctxt "tformmain.listview 1.columns[4].caption"170 #: tformmain.listviewoverview.columns[3].caption 171 msgctxt "tformmain.listviewoverview.columns[3].caption" 172 msgid "Shared" 173 msgstr "Sdíleno" 174 175 #: tformmain.listviewoverview.columns[4].caption 176 msgctxt "tformmain.listviewoverview.columns[4].caption" 147 177 msgid "Shared [%]" 148 178 msgstr "Sdíleno [%]" 149 179 150 #: tformmain.listview 1.columns[5].caption151 msgctxt "tformmain.listview 1.columns[5].caption"180 #: tformmain.listviewoverview.columns[5].caption 181 msgctxt "tformmain.listviewoverview.columns[5].caption" 152 182 msgid "Kind" 153 183 msgstr "Druh" 154 184 155 #: tformmain.listview1.columns[6].caption 185 #: tformmain.listviewoverview.columns[6].caption 186 msgctxt "tformmain.listviewoverview.columns[6].caption" 156 187 msgid "Low price [Kč]" 157 188 msgstr "Nízká cena [Kč]" 158 189 159 #: tformmain.listview1.columns[7].caption 190 #: tformmain.listviewoverview.columns[7].caption 191 msgctxt "tformmain.listviewoverview.columns[7].caption" 160 192 msgid "High price [Kč]" 161 193 msgstr "Vysoká cena [Kč]" 162 194 163 #: tformmain.listview1.columns[8].caption 195 #: tformmain.listviewoverview.columns[8].caption 196 msgctxt "tformmain.listviewoverview.columns[8].caption" 164 197 msgid "Spot price [Kč]" 165 198 msgstr "Spotová cena [Kč]" 166 199 167 #: tformmain.listview1.columns[9].caption 168 msgid "Savings [Kč]" 169 msgstr "Úspory [Kč]" 170 171 #: tformmain.listview2.columns[0].caption 172 msgctxt "tformmain.listview2.columns[0].caption" 200 #: tformmain.listviewoverview.columns[9].caption 201 msgctxt "tformmain.listviewoverview.columns[9].caption" 202 msgid "Price [Kč]" 203 msgstr "Cena [Kč]" 204 205 #: tformmain.listviewspotprices.columns[0].caption 206 msgctxt "tformmain.listviewspotprices.columns[0].caption" 173 207 msgid "Time" 174 208 msgstr "Čas" 175 209 176 #: tformmain.listview2.columns[1].caption 177 msgctxt "tformmain.listview2.columns[1].caption" 178 msgid "Measured" 179 msgstr "Měřeno" 180 181 #: tformmain.listview2.columns[2].caption 182 msgctxt "tformmain.listview2.columns[2].caption" 183 msgid "Result" 184 msgstr "Výsledek" 185 186 #: tformmain.listview2.columns[3].caption 187 msgctxt "tformmain.listview2.columns[3].caption" 188 msgid "Shared [%]" 189 msgstr "Sdíleno [%]" 210 #: tformmain.listviewspotprices.columns[1].caption 211 msgid "Value [Kč]" 212 msgstr "Hodnota [Kč]" 190 213 191 214 #: tformmain.menuitemfile.caption … … 235 258 msgid "Overview" 236 259 msgstr "Přehled" 260 261 #: tformmain.tabsheetspotprices.caption 262 msgid "Spot prices" 263 msgstr "Spotové ceny" -
trunk/Languages/EdcStats.pot
r8 r9 55 55 56 56 #: formmain.sshared 57 msgctxt "formmain.sshared" 57 58 msgid "Shared" 58 59 msgstr "" … … 113 114 msgstr "" 114 115 115 #: tformmain.listview1.columns[0].caption 116 msgctxt "tformmain.listview1.columns[0].caption" 116 #: tformmain.listviewdata.columns[0].caption 117 msgctxt "tformmain.listviewdata.columns[0].caption" 118 msgid "Time" 119 msgstr "" 120 121 #: tformmain.listviewdata.columns[1].caption 122 msgctxt "tformmain.listviewdata.columns[1].caption" 123 msgid "Measured" 124 msgstr "" 125 126 #: tformmain.listviewdata.columns[2].caption 127 msgctxt "tformmain.listviewdata.columns[2].caption" 128 msgid "Result" 129 msgstr "" 130 131 #: tformmain.listviewdata.columns[3].caption 132 msgctxt "tformmain.listviewdata.columns[3].caption" 133 msgid "Shared [%]" 134 msgstr "" 135 136 #: tformmain.listviewoverview.columns[0].caption 137 msgctxt "tformmain.listviewoverview.columns[0].caption" 117 138 msgid "EAN" 118 139 msgstr "" 119 140 120 #: tformmain.listview1.columns[1].caption 121 msgctxt "tformmain.listview1.columns[1].caption" 141 #: tformmain.listviewoverview.columns[10].caption 142 msgctxt "tformmain.listviewoverview.columns[10].caption" 143 msgid "Savings [Kč]" 144 msgstr "" 145 146 #: tformmain.listviewoverview.columns[11].caption 147 msgid "Tariff" 148 msgstr "" 149 150 #: tformmain.listviewoverview.columns[1].caption 151 msgctxt "tformmain.listviewoverview.columns[1].caption" 122 152 msgid "Owner" 123 153 msgstr "" 124 154 125 #: tformmain.listview 1.columns[2].caption126 msgctxt "tformmain.listview 1.columns[2].caption"155 #: tformmain.listviewoverview.columns[2].caption 156 msgctxt "tformmain.listviewoverview.columns[2].caption" 127 157 msgid "Measured" 128 158 msgstr "" 129 159 130 #: tformmain.listview 1.columns[3].caption131 msgctxt "tformmain.listview 1.columns[3].caption"132 msgid " Result"133 msgstr "" 134 135 #: tformmain.listview 1.columns[4].caption136 msgctxt "tformmain.listview 1.columns[4].caption"160 #: tformmain.listviewoverview.columns[3].caption 161 msgctxt "tformmain.listviewoverview.columns[3].caption" 162 msgid "Shared" 163 msgstr "" 164 165 #: tformmain.listviewoverview.columns[4].caption 166 msgctxt "tformmain.listviewoverview.columns[4].caption" 137 167 msgid "Shared [%]" 138 168 msgstr "" 139 169 140 #: tformmain.listview 1.columns[5].caption141 msgctxt "tformmain.listview 1.columns[5].caption"170 #: tformmain.listviewoverview.columns[5].caption 171 msgctxt "tformmain.listviewoverview.columns[5].caption" 142 172 msgid "Kind" 143 173 msgstr "" 144 174 145 #: tformmain.listview1.columns[6].caption 175 #: tformmain.listviewoverview.columns[6].caption 176 msgctxt "tformmain.listviewoverview.columns[6].caption" 146 177 msgid "Low price [Kč]" 147 178 msgstr "" 148 179 149 #: tformmain.listview1.columns[7].caption 180 #: tformmain.listviewoverview.columns[7].caption 181 msgctxt "tformmain.listviewoverview.columns[7].caption" 150 182 msgid "High price [Kč]" 151 183 msgstr "" 152 184 153 #: tformmain.listview1.columns[8].caption 185 #: tformmain.listviewoverview.columns[8].caption 186 msgctxt "tformmain.listviewoverview.columns[8].caption" 154 187 msgid "Spot price [Kč]" 155 188 msgstr "" 156 189 157 #: tformmain.listview1.columns[9].caption 158 msgid "Savings [Kč]" 159 msgstr "" 160 161 #: tformmain.listview2.columns[0].caption 162 msgctxt "tformmain.listview2.columns[0].caption" 190 #: tformmain.listviewoverview.columns[9].caption 191 msgctxt "tformmain.listviewoverview.columns[9].caption" 192 msgid "Price [Kč]" 193 msgstr "" 194 195 #: tformmain.listviewspotprices.columns[0].caption 196 msgctxt "tformmain.listviewspotprices.columns[0].caption" 163 197 msgid "Time" 164 198 msgstr "" 165 199 166 #: tformmain.listview2.columns[1].caption 167 msgctxt "tformmain.listview2.columns[1].caption" 168 msgid "Measured" 169 msgstr "" 170 171 #: tformmain.listview2.columns[2].caption 172 msgctxt "tformmain.listview2.columns[2].caption" 173 msgid "Result" 174 msgstr "" 175 176 #: tformmain.listview2.columns[3].caption 177 msgctxt "tformmain.listview2.columns[3].caption" 178 msgid "Shared [%]" 200 #: tformmain.listviewspotprices.columns[1].caption 201 msgid "Value [Kč]" 179 202 msgstr "" 180 203 … … 226 249 msgstr "" 227 250 251 #: tformmain.tabsheetspotprices.caption 252 msgid "Spot prices" 253 msgstr "" 254 -
trunk/SpotPrice.pas
r7 r9 4 4 5 5 uses 6 Classes, SysUtils, Generics.Collections, XML, fphttpclient, opensslsockets,7 DOM;6 Classes, SysUtils, Generics.Collections, Generics.Defaults, XML, 7 fphttpclient, opensslsockets, DOM, Common, DateUtils, CsvDocument; 8 8 9 9 type … … 12 12 TSpotPrice = record 13 13 Time: TDateTime; 14 Value: Double;15 class function Create(Time: TDateTime; Value: Double): TSpotPrice; static;14 Value: Currency; 15 class function Create(Time: TDateTime; Value: Currency): TSpotPrice; static; 16 16 procedure LoadFromXmlNode(Node: TDOMNode); 17 17 procedure SaveToXmlNode(Node: TDOMNode); … … 21 21 22 22 TSpotPrices = class(TList<TSpotPrice>) 23 private 24 function FileNameFilter(FileName: string): Boolean; 25 function Comparer(constref Left, Right: TSpotPrice): Integer; 26 procedure LoadSpotReport(FileName: string); 23 27 public 24 28 function GetBlock(var Text: string; StartText, EndText: string): string; 25 procedure LoadSpotPrices(Date: TDate); 29 procedure LoadSpotPricesFromWeb(Date: TDate); 30 procedure Import(Directory: string); 26 31 procedure LoadFromXmlNode(Node: TDOMNode); 27 32 procedure SaveToXmlNode(Node: TDOMNode); 33 function SearchByTime(Time: TDateTime): TSpotPrice; 28 34 end; 29 35 … … 31 37 SpotPriceName = 'SpotPrice'; 32 38 SpotPricesName = 'SpotPrices'; 39 DPH = 1.21; 40 33 41 34 42 implementation … … 36 44 { TSpotPrice } 37 45 38 class function TSpotPrice.Create(Time: TDateTime; Value: Double): TSpotPrice;46 class function TSpotPrice.Create(Time: TDateTime; Value: Currency): TSpotPrice; 39 47 begin 40 48 Result.Time := Time; … … 54 62 end; 55 63 56 procedure TSpotPrices.LoadSpotPrices (Date: TDate);64 procedure TSpotPrices.LoadSpotPricesFromWeb(Date: TDate); 57 65 var 58 66 URL: string; … … 82 90 ValueText := StringReplace(ValueText, 'Kč', '', [rfReplaceAll]).Trim; 83 91 ValueText := StringReplace(ValueText, Chr($c2) + Chr($a0), '', [rfReplaceAll]); 84 Value := StrToInt(ValueText) / 1000 ;92 Value := StrToInt(ValueText) / 1000 * DPH; 85 93 end; 86 94 … … 94 102 end; 95 103 104 function TSpotPrices.FileNameFilter(FileName: string): Boolean; 105 begin 106 Result := ExtractFileExt(FileName) = '.csv'; 107 end; 108 109 function TSpotPrices.Comparer(constref Left, Right: TSpotPrice): Integer; 110 begin 111 Result := CompareDateTime(Left.Time, Right.Time); 112 end; 113 114 procedure TSpotPrices.LoadSpotReport(FileName: string); 115 var 116 CSVDoc: TCSVDocument; 117 R: Integer; 118 Date, Time: TDateTime; 119 Value: Currency; 120 begin 121 CSVDoc := TCSVDocument.Create; 122 try 123 CSVDoc.LoadFromFile(FileName); 124 125 for R := 1 to CSVDoc.RowCount - 1 do begin 126 Date := StrToDate(CSVDoc.Cells[0, R]); 127 Time := Date + StrToTime(Copy(CSVDoc.Cells[1, R], 1, Pos(' ', CSVDoc.Cells[1, R]) - 1)); 128 Value := StrToCurr(CSVDoc.Cells[3, R]) / 1000; 129 Add(TSpotPrice.Create(Time, Value)); 130 end; 131 finally 132 CSVDoc.Free; 133 end; 134 end; 135 136 procedure TSpotPrices.Import(Directory: string); 137 var 138 Reports: TStringList; 139 I: Integer; 140 begin 141 Clear; 142 143 Reports := TStringList.Create; 144 try 145 SearchFiles(Reports, Directory, FileNameFilter); 146 for I := 0 to Reports.Count - 1 do 147 LoadSpotReport(Reports[I]); 148 finally 149 Reports.Free; 150 end; 151 152 Sort(TComparer<TSpotPrice>.Construct(Comparer)); 153 end; 154 96 155 procedure TSpotPrices.LoadFromXmlNode(Node: TDOMNode); 97 156 var … … 117 176 Node.AppendChild(Node2); 118 177 end; 178 end; 179 180 function TSpotPrices.SearchByTime(Time: TDateTime): TSpotPrice; 181 var 182 I: Integer; 183 begin 184 I := 0; 185 while (I < Count) and (Items[I].Time <> Time) do Inc(I); 186 if I < Count then Result := Items[I] 187 else Result := TSpotPrice.Create(0, 0); 119 188 end; 120 189 … … 136 205 end; 137 206 138 139 207 end. 140 208
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)