Add new calculate_price-projet.
This commit is contained in:
		
							
								
								
									
										5
									
								
								calculate_parking.pro
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								calculate_parking.pro
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
TEMPLATE = subdirs
 | 
			
		||||
CONFIG += ordered
 | 
			
		||||
SUBDIRS = calculate_parking_tickets main
 | 
			
		||||
 | 
			
		||||
main.depends = calculate_parking_tickets
 | 
			
		||||
							
								
								
									
										4
									
								
								calculate_parking_tickets/.gdb_history
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								calculate_parking_tickets/.gdb_history
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
p 24*60
 | 
			
		||||
p 24*60*7
 | 
			
		||||
p 24*60*7*2
 | 
			
		||||
quit
 | 
			
		||||
							
								
								
									
										5
									
								
								calculate_parking_tickets/calculate_parking_tickets.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								calculate_parking_tickets/calculate_parking_tickets.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
#include "calculate_parking_tickets.h"
 | 
			
		||||
 | 
			
		||||
Calculate_parking_tickets::Calculate_parking_tickets()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								calculate_parking_tickets/calculate_parking_tickets.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								calculate_parking_tickets/calculate_parking_tickets.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
#ifndef CALCULATE_PARKING_TICKETS_H
 | 
			
		||||
#define CALCULATE_PARKING_TICKETS_H
 | 
			
		||||
 | 
			
		||||
#include "calculate_parking_tickets_global.h"
 | 
			
		||||
 | 
			
		||||
class CALCULATE_PARKING_TICKETS_EXPORT Calculate_parking_tickets
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
  Calculate_parking_tickets();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // CALCULATE_PARKING_TICKETS_H
 | 
			
		||||
							
								
								
									
										46
									
								
								calculate_parking_tickets/calculate_parking_tickets.pro
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								calculate_parking_tickets/calculate_parking_tickets.pro
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
QT -= gui
 | 
			
		||||
 | 
			
		||||
TEMPLATE = lib
 | 
			
		||||
DEFINES += CALCULATE_PARKING_TICKETS_LIBRARY
 | 
			
		||||
 | 
			
		||||
CONFIG += c++11
 | 
			
		||||
 | 
			
		||||
QMAKE_CXXFLAGS += -Wno-deprecated-copy
 | 
			
		||||
 | 
			
		||||
INCLUDEPATH += ./rapidjson
 | 
			
		||||
 | 
			
		||||
# The following define makes your compiler emit warnings if you use
 | 
			
		||||
# any Qt feature that has been marked deprecated (the exact warnings
 | 
			
		||||
# depend on your compiler). Please consult the documentation of the
 | 
			
		||||
# deprecated API in order to know how to port your code away from it.
 | 
			
		||||
DEFINES += QT_DEPRECATED_WARNINGS
 | 
			
		||||
 | 
			
		||||
# You can also make your code fail to compile if it uses deprecated APIs.
 | 
			
		||||
# In order to do so, uncomment the following line.
 | 
			
		||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
 | 
			
		||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 | 
			
		||||
 | 
			
		||||
SOURCES += \
 | 
			
		||||
    calculate_parking_tickets.cpp \
 | 
			
		||||
    calculate_parking_tickets_utils.cpp \
 | 
			
		||||
    calculate_parking_tickets_day.cpp \
 | 
			
		||||
    calculate_parking_tickets_algorithms.cpp \
 | 
			
		||||
    calculate_parking_tickets_tariff.cpp \
 | 
			
		||||
    calculate_parking_tickets_tariff_step.cpp
 | 
			
		||||
 | 
			
		||||
HEADERS += \
 | 
			
		||||
    calculate_parking_tickets_global.h \
 | 
			
		||||
    calculate_parking_tickets.h \
 | 
			
		||||
    calculate_parking_tickets_utils.h \
 | 
			
		||||
    calculate_parking_tickets_tariff_step.h \
 | 
			
		||||
    calculate_parking_tickets_day.h \
 | 
			
		||||
    calculate_parking_tickets_algorithms.h \
 | 
			
		||||
    calculate_parking_tickets_tariff.h
 | 
			
		||||
 | 
			
		||||
OTHER_FILES += germersheim.conf
 | 
			
		||||
 | 
			
		||||
# Default rules for deployment.
 | 
			
		||||
unix {
 | 
			
		||||
    target.path = /usr/lib
 | 
			
		||||
}
 | 
			
		||||
!isEmpty(target.path): INSTALLS += target
 | 
			
		||||
							
								
								
									
										314
									
								
								calculate_parking_tickets/calculate_parking_tickets.pro.user
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										314
									
								
								calculate_parking_tickets/calculate_parking_tickets.pro.user
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,314 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE QtCreatorProject>
 | 
			
		||||
<!-- Written by QtCreator 4.11.0, 2022-12-23T20:06:58. -->
 | 
			
		||||
<qtcreator>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>EnvironmentId</variable>
 | 
			
		||||
  <value type="QByteArray">{c2bbab97-5376-485d-80a0-17f0450f5730}</value>
 | 
			
		||||
 </data>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>ProjectExplorer.Project.ActiveTarget</variable>
 | 
			
		||||
  <value type="int">0</value>
 | 
			
		||||
 </data>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>ProjectExplorer.Project.EditorSettings</variable>
 | 
			
		||||
  <valuemap type="QVariantMap">
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
 | 
			
		||||
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
 | 
			
		||||
    <value type="QString" key="language">Cpp</value>
 | 
			
		||||
    <valuemap type="QVariantMap" key="value">
 | 
			
		||||
     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
   </valuemap>
 | 
			
		||||
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
 | 
			
		||||
    <value type="QString" key="language">QmlJS</value>
 | 
			
		||||
    <valuemap type="QVariantMap" key="value">
 | 
			
		||||
     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
   </valuemap>
 | 
			
		||||
   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
 | 
			
		||||
   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
 | 
			
		||||
   <value type="int" key="EditorConfiguration.IndentSize">4</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
 | 
			
		||||
   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
 | 
			
		||||
   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
 | 
			
		||||
   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
 | 
			
		||||
   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
 | 
			
		||||
   <value type="int" key="EditorConfiguration.TabSize">8</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
 | 
			
		||||
   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
 | 
			
		||||
   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
 | 
			
		||||
  </valuemap>
 | 
			
		||||
 </data>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>ProjectExplorer.Project.PluginSettings</variable>
 | 
			
		||||
  <valuemap type="QVariantMap"/>
 | 
			
		||||
 </data>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>ProjectExplorer.Project.Target.0</variable>
 | 
			
		||||
  <valuemap type="QVariantMap">
 | 
			
		||||
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
 | 
			
		||||
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
 | 
			
		||||
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{fb1cff28-cc0f-4303-b6a9-21ad8289ece7}</value>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
 | 
			
		||||
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/linux/build-calculate_parking_tickets-Desktop-Debug</value>
 | 
			
		||||
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
 | 
			
		||||
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
 | 
			
		||||
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
 | 
			
		||||
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
 | 
			
		||||
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
 | 
			
		||||
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
 | 
			
		||||
   </valuemap>
 | 
			
		||||
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/linux/build-calculate_parking_tickets-Desktop-Release</value>
 | 
			
		||||
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
 | 
			
		||||
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
 | 
			
		||||
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
 | 
			
		||||
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
 | 
			
		||||
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
 | 
			
		||||
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
 | 
			
		||||
   </valuemap>
 | 
			
		||||
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/linux/build-calculate_parking_tickets-Desktop-Profile</value>
 | 
			
		||||
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
 | 
			
		||||
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
 | 
			
		||||
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
 | 
			
		||||
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
 | 
			
		||||
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
 | 
			
		||||
      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
 | 
			
		||||
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
 | 
			
		||||
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
 | 
			
		||||
   </valuemap>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
 | 
			
		||||
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
 | 
			
		||||
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
 | 
			
		||||
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
 | 
			
		||||
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
 | 
			
		||||
    </valuemap>
 | 
			
		||||
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
 | 
			
		||||
   </valuemap>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
 | 
			
		||||
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
 | 
			
		||||
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
 | 
			
		||||
    <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="Analyzer.Perf.Events">
 | 
			
		||||
     <value type="QString">cpu-cycles</value>
 | 
			
		||||
    </valuelist>
 | 
			
		||||
    <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
 | 
			
		||||
    <value type="int" key="Analyzer.Perf.Frequency">250</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
 | 
			
		||||
     <value type="QString">-e</value>
 | 
			
		||||
     <value type="QString">cpu-cycles</value>
 | 
			
		||||
     <value type="QString">--call-graph</value>
 | 
			
		||||
     <value type="QString">dwarf,4096</value>
 | 
			
		||||
     <value type="QString">-F</value>
 | 
			
		||||
     <value type="QString">250</value>
 | 
			
		||||
    </valuelist>
 | 
			
		||||
    <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
 | 
			
		||||
    <value type="int" key="Analyzer.Perf.StackSize">4096</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
 | 
			
		||||
    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
 | 
			
		||||
    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
 | 
			
		||||
    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
 | 
			
		||||
    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
 | 
			
		||||
    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
 | 
			
		||||
    <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
 | 
			
		||||
    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
 | 
			
		||||
    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
 | 
			
		||||
    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
 | 
			
		||||
    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
 | 
			
		||||
    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
 | 
			
		||||
     <value type="int">0</value>
 | 
			
		||||
     <value type="int">1</value>
 | 
			
		||||
     <value type="int">2</value>
 | 
			
		||||
     <value type="int">3</value>
 | 
			
		||||
     <value type="int">4</value>
 | 
			
		||||
     <value type="int">5</value>
 | 
			
		||||
     <value type="int">6</value>
 | 
			
		||||
     <value type="int">7</value>
 | 
			
		||||
     <value type="int">8</value>
 | 
			
		||||
     <value type="int">9</value>
 | 
			
		||||
     <value type="int">10</value>
 | 
			
		||||
     <value type="int">11</value>
 | 
			
		||||
     <value type="int">12</value>
 | 
			
		||||
     <value type="int">13</value>
 | 
			
		||||
     <value type="int">14</value>
 | 
			
		||||
    </valuelist>
 | 
			
		||||
    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
 | 
			
		||||
    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
 | 
			
		||||
    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
 | 
			
		||||
    <value type="QString" key="RunConfiguration.Arguments"></value>
 | 
			
		||||
    <value type="bool" key="RunConfiguration.Arguments.multi">false</value>
 | 
			
		||||
    <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
 | 
			
		||||
    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
 | 
			
		||||
    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
 | 
			
		||||
    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
 | 
			
		||||
    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
 | 
			
		||||
    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
 | 
			
		||||
    <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
 | 
			
		||||
    <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
 | 
			
		||||
   </valuemap>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
 | 
			
		||||
  </valuemap>
 | 
			
		||||
 </data>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>ProjectExplorer.Project.TargetCount</variable>
 | 
			
		||||
  <value type="int">1</value>
 | 
			
		||||
 </data>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
 | 
			
		||||
  <value type="int">22</value>
 | 
			
		||||
 </data>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>Version</variable>
 | 
			
		||||
  <value type="int">22</value>
 | 
			
		||||
 </data>
 | 
			
		||||
</qtcreator>
 | 
			
		||||
@@ -0,0 +1,323 @@
 | 
			
		||||
#include "calculate_parking_tickets_algorithms.h"
 | 
			
		||||
#include "calculate_parking_tickets_global.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff_step.h"
 | 
			
		||||
#include "calculate_parking_tickets_utils.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
#include "calculate_parking_tickets_day.h"
 | 
			
		||||
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
#include <cmath>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*  BEGRIFFE
 | 
			
		||||
    bezahltes Parken am Ende der Parkdauer vor Einsteigen ins Auto:
 | 
			
		||||
        pay on foot parking
 | 
			
		||||
    bezahltes Parken am Anfang der Parkdauer und Quittung an der Windschutzscheibe
 | 
			
		||||
        pay and display parking
 | 
			
		||||
    Parkdauer
 | 
			
		||||
        parking time
 | 
			
		||||
    Parkschein
 | 
			
		||||
        parking voucher
 | 
			
		||||
    Parkgutschein
 | 
			
		||||
        parking voucher
 | 
			
		||||
    Maximale Parkdauer
 | 
			
		||||
        maximal parking time
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    bool get_price(parking_tariff_t const *tariff, QDateTime const &qdt,
 | 
			
		||||
                   uint32_t &price_units) {
 | 
			
		||||
        QDate const &qdate = qdt.date();
 | 
			
		||||
        QTime const &qtime = qdt.time();
 | 
			
		||||
        qDebug() << qdate << qtime;
 | 
			
		||||
        if (!TUtils::isHoliday(tariff, qdate)) {
 | 
			
		||||
            int const dayOfWeek = qdate.dayOfWeek();
 | 
			
		||||
            switch (dayOfWeek) {
 | 
			
		||||
            case Qt::Monday:
 | 
			
		||||
                return Monday::price(tariff, qtime, &price_units);
 | 
			
		||||
            case Qt::Tuesday:
 | 
			
		||||
                return Tuesday::price(tariff, qtime, &price_units);
 | 
			
		||||
            case Qt::Wednesday:
 | 
			
		||||
                return Wednesday::price(tariff, qtime, &price_units);
 | 
			
		||||
            case Qt::Thursday:
 | 
			
		||||
                return Thursday::price(tariff, qtime, &price_units);
 | 
			
		||||
            case Qt::Friday:
 | 
			
		||||
                return Friday::price(tariff, qtime, &price_units);
 | 
			
		||||
            case Qt::Saturday:
 | 
			
		||||
                return Saturday::price(tariff, qtime, &price_units);
 | 
			
		||||
            case Qt::Sunday:
 | 
			
		||||
                return Sunday::price(tariff, qtime, &price_units);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
        // return Holiday::price(tariff, qtime, &price_units);
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern  "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static bool checkCalculatePreConditions(parking_tariff_t const* tariff,
 | 
			
		||||
                                        minute_t startMinute,   // CET
 | 
			
		||||
                                        minute_t endMinute,     // CET
 | 
			
		||||
                                        struct price_t *price) {
 | 
			
		||||
 | 
			
		||||
    if (startMinute > endMinute) {
 | 
			
		||||
        qCritical() << "startMinute > endMinute ("
 | 
			
		||||
                    << startMinute << endMinute << ")";
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    minute_t const parkingTime = endMinute - startMinute;
 | 
			
		||||
 | 
			
		||||
    if (parkingTime == 0) {
 | 
			
		||||
        qCritical() << "startMinute == endMinute => no parking time";
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (tariff->max_parking_time != -1) {
 | 
			
		||||
        if (parkingTime > tariff->max_parking_time) {
 | 
			
		||||
            qCritical() << "parkingTime" << parkingTime
 | 
			
		||||
                        << ">" << tariff->max_parking_time;
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    minute_t const effectiveStartMinute = startMinute + tariff->free_of_charge;
 | 
			
		||||
    QDateTime const start = TUtils::fromMinutes(startMinute);
 | 
			
		||||
    //QDateTime const effStart = TUtils::fromMinutes(effectiveStartMinute);
 | 
			
		||||
    QDateTime const end = TUtils::fromMinutes(endMinute);
 | 
			
		||||
 | 
			
		||||
    if (effectiveStartMinute > endMinute) {
 | 
			
		||||
        fprintf(stderr,
 | 
			
		||||
            "[start:%02d:%02d, ende:%02d:%02d]: %ld free minutes. no charge.\n",
 | 
			
		||||
            start.time().hour(), start.time().minute(),
 | 
			
		||||
            end.time().hour(), end.time().minute(), tariff->free_of_charge);
 | 
			
		||||
        memset(price, 0x00, sizeof(*price));
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // start algorithm
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define DEBUG_INTERNAL 1
 | 
			
		||||
 | 
			
		||||
TariffStep const *
 | 
			
		||||
compute_price_for_parking_ticket_internal(parking_tariff_t const *tariff,
 | 
			
		||||
                                          minute_t startMinute, // CET
 | 
			
		||||
                                          minute_t endMinute,   // CET
 | 
			
		||||
                                          struct price_t *price) {
 | 
			
		||||
    TariffStep const *stepDbg = nullptr;
 | 
			
		||||
 | 
			
		||||
    QDateTime const start = TUtils::fromMinutes(startMinute);
 | 
			
		||||
    QDateTime const end = TUtils::fromMinutes(endMinute);
 | 
			
		||||
 | 
			
		||||
    int const minute = start.time().minute();
 | 
			
		||||
    int const hour = start.time().hour();
 | 
			
		||||
    int const day = start.date().dayOfWeek()-Qt::Monday;
 | 
			
		||||
    int const week = 0;
 | 
			
		||||
 | 
			
		||||
//    printf("%d%d%04d\n", week, day, hour*60+minute);
 | 
			
		||||
 | 
			
		||||
    TariffStep const *step = &tariff->m_tariffSteps[week][day][hour*60+minute];
 | 
			
		||||
 | 
			
		||||
    // TODO: tageslimit muss beruecksichtigt werden
 | 
			
		||||
    stepDbg = step;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    uint32_t price_units = 0;
 | 
			
		||||
    if (tariff->max_price_for_24_hours == (uint32_t)(-1)) {
 | 
			
		||||
        while (step->dateTime() < end) {
 | 
			
		||||
            price_units += step->price();
 | 
			
		||||
            step = step->next();
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        QDateTime stepDateTime = step->dateTime();
 | 
			
		||||
        QDateTime nextStepDateTime;
 | 
			
		||||
        // QDateTime prevStepDateTime;
 | 
			
		||||
        QDateTime _24hDateTime = stepDateTime;
 | 
			
		||||
        uint32_t _24h_price_units = 0;
 | 
			
		||||
        long t0 = _24hDateTime.toSecsSinceEpoch();
 | 
			
		||||
        bool dbg = true;
 | 
			
		||||
        while (stepDateTime < end) {
 | 
			
		||||
            long const t1 = stepDateTime.toSecsSinceEpoch();
 | 
			
		||||
            uint32_t const price_units_tmp = step->price();
 | 
			
		||||
            step = step->next();
 | 
			
		||||
            nextStepDateTime = step->dateTime();
 | 
			
		||||
            long const diff = t1 - t0;
 | 
			
		||||
            if (diff < SECS_PER_DAY) {
 | 
			
		||||
                _24h_price_units += price_units_tmp;
 | 
			
		||||
                if (_24h_price_units > tariff->max_price_for_24_hours) {
 | 
			
		||||
                    _24h_price_units = tariff->max_price_for_24_hours;
 | 
			
		||||
                    if (dbg) {
 | 
			
		||||
#if DEBUG_INTERNAL
 | 
			
		||||
                        fprintf(stderr,
 | 
			
		||||
                            "[%s:%02d:%02d %d]\n",
 | 
			
		||||
                            stepDateTime.date().toString().toStdString().c_str(),
 | 
			
		||||
                            stepDateTime.time().hour(), stepDateTime.time().minute(),
 | 
			
		||||
                            _24h_price_units);
 | 
			
		||||
                        dbg = false;
 | 
			
		||||
#endif
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
#if DEBUG_INTERNAL
 | 
			
		||||
                    dbg = true;
 | 
			
		||||
                    fprintf(stderr,
 | 
			
		||||
                        "[%s:%02d:%02d %d]\n",
 | 
			
		||||
                        stepDateTime.date().toString().toStdString().c_str(),
 | 
			
		||||
                        stepDateTime.time().hour(), stepDateTime.time().minute(),
 | 
			
		||||
                        _24h_price_units);
 | 
			
		||||
#endif
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                price_units += _24h_price_units;
 | 
			
		||||
                _24h_price_units = price_units_tmp;
 | 
			
		||||
#if DEBUG_INTERNAL
 | 
			
		||||
                fprintf(stderr,
 | 
			
		||||
                    "[%s:%02d:%02d 24h max. %d]\n",
 | 
			
		||||
                    stepDateTime.date().toString().toStdString().c_str(),
 | 
			
		||||
                    stepDateTime.time().hour(), stepDateTime.time().minute(),
 | 
			
		||||
                    price_units);
 | 
			
		||||
                fprintf(stderr,
 | 
			
		||||
                    "[%s:%02d:%02d %d]\n",
 | 
			
		||||
                    stepDateTime.date().toString().toStdString().c_str(),
 | 
			
		||||
                    stepDateTime.time().hour(), stepDateTime.time().minute(),
 | 
			
		||||
                    _24h_price_units);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
                _24hDateTime = stepDateTime;
 | 
			
		||||
                t0 = _24hDateTime.toSecsSinceEpoch();
 | 
			
		||||
            }
 | 
			
		||||
            // prevStepDateTime = stepDateTime;
 | 
			
		||||
            stepDateTime = nextStepDateTime;
 | 
			
		||||
        }
 | 
			
		||||
        price_units += _24h_price_units;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    price->units = price_units;
 | 
			
		||||
    price->netto = roundf((price->units * tariff->unit_scale_factor) / tariff->unit_definition);
 | 
			
		||||
    price->vat_percentage = tariff->vat;
 | 
			
		||||
    price->vat = price->netto * price->vat_percentage;
 | 
			
		||||
    price->brutto = price->netto + price->vat;
 | 
			
		||||
 | 
			
		||||
    return stepDbg;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool compute_price_for_parking_ticket(parking_tariff_t const *tariff,
 | 
			
		||||
                                      minute_t startMinute, // CET
 | 
			
		||||
                                      minute_t endMinute,   // CET
 | 
			
		||||
                                      struct price_t *price) {
 | 
			
		||||
 | 
			
		||||
    if (!checkCalculatePreConditions(tariff, startMinute, endMinute, price)) {    // CET
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // minute_t const parkingTime = endMinute - startMinute;
 | 
			
		||||
    memset(price, 0x00, sizeof(*price));
 | 
			
		||||
 | 
			
		||||
    minute_t const effectiveStartMinute = startMinute + tariff->free_of_charge;
 | 
			
		||||
    QDateTime const start = TUtils::fromMinutes(startMinute);
 | 
			
		||||
    QDateTime const effStart = TUtils::fromMinutes(effectiveStartMinute);
 | 
			
		||||
    QDateTime const end = TUtils::fromMinutes(endMinute);
 | 
			
		||||
 | 
			
		||||
    //qDebug() << effStart;
 | 
			
		||||
    //qDebug() << end;
 | 
			
		||||
 | 
			
		||||
    TariffStep const *stepDbg =
 | 
			
		||||
        compute_price_for_parking_ticket_internal(tariff,
 | 
			
		||||
                                                  effectiveStartMinute,
 | 
			
		||||
                                                  endMinute, price);
 | 
			
		||||
    if (stepDbg) {
 | 
			
		||||
#if 0
 | 
			
		||||
        if (tariff->free_of_charge == 0) {
 | 
			
		||||
            fprintf(stderr,
 | 
			
		||||
                "[EINFAHRT: %s:%02d:%02d, AUSFAHRT: %s:%02d:%02d]\n\t",
 | 
			
		||||
                effStart.date().toString().toStdString().c_str(),
 | 
			
		||||
                effStart.time().hour(), effStart.time().minute(),
 | 
			
		||||
                end.date().toString().toStdString().c_str(),
 | 
			
		||||
                end.time().hour(), end.time().minute());
 | 
			
		||||
        } else {
 | 
			
		||||
            fprintf(stderr,
 | 
			
		||||
                "[EINFAHRT: %s:%02d:%02d, %ld Minuten frei -> "
 | 
			
		||||
                "EFF. EINFAHRT: %s:%02d:%02d, AUSFAHRT: %s:%02d:%02d]\n\t",
 | 
			
		||||
                start.date().toString().toStdString().c_str(),
 | 
			
		||||
                start.time().hour(), start.time().minute(),
 | 
			
		||||
                tariff->free_of_charge,
 | 
			
		||||
                effStart.date().toString().toStdString().c_str(),
 | 
			
		||||
                effStart.time().hour(), effStart.time().minute(),
 | 
			
		||||
                end.date().toString().toStdString().c_str(),
 | 
			
		||||
                end.time().hour(), end.time().minute());
 | 
			
		||||
        }
 | 
			
		||||
        int cnt = -1;
 | 
			
		||||
        while (stepDbg->dateTime() < end) {
 | 
			
		||||
            // qDebug() << price_units << step->price();
 | 
			
		||||
            fprintf(stderr, "%s %02d:%02d +%u |",
 | 
			
		||||
                    (++cnt == 0) ? "|" : "",
 | 
			
		||||
                    stepDbg->dateTime().time().hour(),
 | 
			
		||||
                    stepDbg->dateTime().time().minute(),
 | 
			
		||||
                    stepDbg->price());
 | 
			
		||||
            //price_units += stepDbg->price();
 | 
			
		||||
            //qDebug() << price_units << step->price();
 | 
			
		||||
            stepDbg = stepDbg->next();
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        if (price->units > tariff->max_parking_price_units) {
 | 
			
		||||
            qCritical() << "gesamt" << price->units
 | 
			
		||||
                        << ">" << tariff->max_parking_price_units;
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fprintf(stderr, " : gesamt %.2f (netto: %.2f)\n", price->brutto/100, price->netto/100);
 | 
			
		||||
        return true;
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
        qCritical() << "compute_price_for_parking_ticket";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool compute_duration_for_parking_ticket(parking_tariff_t const *tariff,
 | 
			
		||||
                                         minute_t start_parking_time,
 | 
			
		||||
                                         minute_t *end_parking_time,
 | 
			
		||||
                                         struct price_t const *price) {
 | 
			
		||||
    price_t p;
 | 
			
		||||
    for (int i = 0; i < tariff->max_parking_time; ++i) {
 | 
			
		||||
        minute_t end_time = start_parking_time + i;
 | 
			
		||||
        if (compute_price_for_parking_ticket(tariff, start_parking_time,
 | 
			
		||||
                                             end_time, &p)) {
 | 
			
		||||
            if (p.netto >= price->netto) {
 | 
			
		||||
                *end_parking_time = end_time;
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool compute_price_for_tages_ticket(parking_tariff_t *tariff,
 | 
			
		||||
                                    time_t parking_time_start, // minutes
 | 
			
		||||
                                    struct price_t *price) {
 | 
			
		||||
    QDateTime dateTime = TUtils::fromMinutes(parking_time_start).addDays(1);
 | 
			
		||||
    dateTime.setTime(QTime(0, 0));
 | 
			
		||||
    time_t parking_time_end = dateTime.toSecsSinceEpoch() / 60;
 | 
			
		||||
    return compute_price_for_parking_ticket(tariff, parking_time_start,
 | 
			
		||||
                                            parking_time_end, price);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool compute_price_for_24h_ticket(parking_tariff_t *tariff,
 | 
			
		||||
                                  time_t parking_time_start, // minutes
 | 
			
		||||
                                  struct price_t *price) {
 | 
			
		||||
    QDateTime dateTime = TUtils::fromMinutes(parking_time_start).addDays(1);
 | 
			
		||||
    time_t parking_time_end = dateTime.toSecsSinceEpoch() / 60;
 | 
			
		||||
    return compute_price_for_parking_ticket(tariff, parking_time_start,
 | 
			
		||||
                                            parking_time_end, price);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
@@ -0,0 +1,35 @@
 | 
			
		||||
#ifndef CALCULATE_PARKING_TICKETS_ALGORITHMS_H_INCLUDED
 | 
			
		||||
#define CALCULATE_PARKING_TICKETS_ALGORITHMS_H_INCLUDED
 | 
			
		||||
 | 
			
		||||
#include <ctime>
 | 
			
		||||
#include "calculate_parking_tickets_global.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool compute_price_for_parking_ticket(parking_tariff_t const *tariff,
 | 
			
		||||
                                      minute_t start_parking_time,
 | 
			
		||||
                                      minute_t end_parking_time,
 | 
			
		||||
                                      struct price_t *price);
 | 
			
		||||
 | 
			
		||||
bool compute_duration_for_parking_ticket(parking_tariff_t const *tariff,
 | 
			
		||||
                                         minute_t start_parking_time,
 | 
			
		||||
                                         minute_t *end_parking_time,
 | 
			
		||||
                                         struct price_t const *price);
 | 
			
		||||
 | 
			
		||||
bool compute_price_for_tages_ticket(parking_tariff_t *tariff,
 | 
			
		||||
                                    time_t parking_time_start,
 | 
			
		||||
                                    struct price_t *price);
 | 
			
		||||
 | 
			
		||||
bool compute_price_for_24h_ticket(parking_tariff_t *tariff,
 | 
			
		||||
                                  time_t start_parking_time,
 | 
			
		||||
                                  struct price_t *price);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // CALCULATE_PARKING_TICKETS_ALGORITHMS_H_INCLUDED
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
#include "calculate_parking_tickets_day.h"
 | 
			
		||||
#include <cstring>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										85
									
								
								calculate_parking_tickets/calculate_parking_tickets_day.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								calculate_parking_tickets/calculate_parking_tickets_day.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
#ifndef CALCULATE_PARKING_TICKETS_DAY_H_INCLUDED
 | 
			
		||||
#define CALCULATE_PARKING_TICKETS_DAY_H_INCLUDED
 | 
			
		||||
 | 
			
		||||
#include "calculate_parking_tickets_global.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff_step.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
#include "calculate_parking_tickets_utils.h"
 | 
			
		||||
 | 
			
		||||
#include <QTime>
 | 
			
		||||
#include <QVector>
 | 
			
		||||
#include <QPair>
 | 
			
		||||
#include <cinttypes>
 | 
			
		||||
#include <array>
 | 
			
		||||
 | 
			
		||||
struct DayInternal {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct parking_tariff_t;
 | 
			
		||||
template <class T>
 | 
			
		||||
struct Day {
 | 
			
		||||
    static bool price(parking_tariff_t const * /*tariff*/,
 | 
			
		||||
                      QTime const & /*time*/,
 | 
			
		||||
                      uint32_t * /*price_units*/) {
 | 
			
		||||
        // minute_t const minute = time.hour()*60 + time.minute();
 | 
			
		||||
        // for (int i = 0; i < MIN_PER_DAY; ++i) {
 | 
			
		||||
            //if (m_tariffSteps[i].isValid()) {
 | 
			
		||||
 | 
			
		||||
            //}
 | 
			
		||||
        //}
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    //std::array<TariffStep, MIN_PER_DAY> m_tariffSteps;
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    static bool price(parking_tariff_t const *tariff,
 | 
			
		||||
                      QTime const &time, uint32_t *price_units, int dayIndex) {
 | 
			
		||||
        minute_t const minute = time.hour()*60 + time.minute();
 | 
			
		||||
        for (int i = 0; i < tariff->m_tariffSteps[dayIndex].size(); ++i) {
 | 
			
		||||
            //if (minute >= tariff->m_tariff[dayIndex][i].first) {
 | 
			
		||||
            //    *price_units += tariff->m_tariff[dayIndex][i].second;
 | 
			
		||||
            //    return true;
 | 
			
		||||
            //}
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
        // return false;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Holiday : Day<Holiday> {
 | 
			
		||||
    enum { dayIndex = 0 };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Monday : Day<Monday> {
 | 
			
		||||
    enum { dayIndex = Qt::Monday };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Tuesday : Day<Tuesday> {
 | 
			
		||||
    enum { dayIndex = Qt::Tuesday };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Wednesday : Day<Wednesday> {
 | 
			
		||||
    enum { dayIndex = Qt::Wednesday };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Thursday : Day<Thursday> {
 | 
			
		||||
    enum { dayIndex = Qt::Thursday };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Friday : Day<Friday> {
 | 
			
		||||
    enum { dayIndex = Qt::Friday };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Saturday : Day<Saturday> {
 | 
			
		||||
    enum { dayIndex = Qt::Saturday };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Sunday : Day<Sunday> {
 | 
			
		||||
    enum { dayIndex = Qt::Sunday };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif // CALCULATE_PARKING_TICKETS_DAY_H_INCLUDED
 | 
			
		||||
							
								
								
									
										59
									
								
								calculate_parking_tickets/calculate_parking_tickets_global.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								calculate_parking_tickets/calculate_parking_tickets_global.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
#ifndef CALCULATE_PARKING_TICKETS_GLOBAL_H
 | 
			
		||||
#define CALCULATE_PARKING_TICKETS_GLOBAL_H
 | 
			
		||||
 | 
			
		||||
#include <QtCore/qglobal.h>
 | 
			
		||||
 | 
			
		||||
#if defined(CALCULATE_PARKING_TICKETS_LIBRARY)
 | 
			
		||||
#  define CALCULATE_PARKING_TICKETS_EXPORT Q_DECL_EXPORT
 | 
			
		||||
#else
 | 
			
		||||
#  define CALCULATE_PARKING_TICKETS_EXPORT Q_DECL_IMPORT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <cinttypes>
 | 
			
		||||
#include <ctime>
 | 
			
		||||
 | 
			
		||||
typedef time_t minute_t;
 | 
			
		||||
 | 
			
		||||
typedef struct price_t {
 | 
			
		||||
    uint32_t units;
 | 
			
		||||
    double netto;
 | 
			
		||||
    double brutto;
 | 
			
		||||
    double vat_percentage;
 | 
			
		||||
    double vat;
 | 
			
		||||
} price_t;
 | 
			
		||||
 | 
			
		||||
static constexpr uint16_t const MIN_PER_DAY = 1440;
 | 
			
		||||
static constexpr uint16_t const MINUTES_PER_DAY = 1440;
 | 
			
		||||
static constexpr uint32_t const SECS_PER_DAY = 1440*60;
 | 
			
		||||
 | 
			
		||||
//struct TariffLine {
 | 
			
		||||
//    uint32_t line;
 | 
			
		||||
    // obere 11 bit: 2 bit week, 3 bit day, 11 bit minute
 | 
			
		||||
//};
 | 
			
		||||
 | 
			
		||||
struct TariffMinute {
 | 
			
		||||
    uint32_t price_units;
 | 
			
		||||
    uint32_t next_minute;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static constexpr uint16_t const WEEKS = 3;
 | 
			
		||||
static constexpr uint16_t const DAYS = 7;
 | 
			
		||||
 | 
			
		||||
static constexpr uint32_t const MAX_OFFSET = (uint32_t)sizeof(TariffMinute[3][7][1440]);
 | 
			
		||||
static constexpr uint32_t const UNDEFINED_NEXT_MINUTE = MAX_OFFSET;
 | 
			
		||||
 | 
			
		||||
struct TariffDay {
 | 
			
		||||
    TariffMinute m[1];
 | 
			
		||||
    //TariffMinute m[MINUTES_PER_DAY];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct TariffWeek {
 | 
			
		||||
    TariffDay mon = {{}};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct TariffSteps {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif // CALCULATE_PARKING_TICKETS_GLOBAL_H
 | 
			
		||||
@@ -0,0 +1,184 @@
 | 
			
		||||
#include "calculate_parking_tickets_parse_tariff.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
 | 
			
		||||
#include <rapidjson/filereadstream.h>
 | 
			
		||||
#include <rapidjson/document.h>
 | 
			
		||||
#include <rapidjson/encodings.h>
 | 
			
		||||
#include <rapidjson/error/en.h>
 | 
			
		||||
#include "rapidjson/stringbuffer.h"
 | 
			
		||||
#include <rapidjson/writer.h>
 | 
			
		||||
#include <rapidjson/prettywriter.h>
 | 
			
		||||
 | 
			
		||||
using namespace rapidjson;
 | 
			
		||||
 | 
			
		||||
#define MAX_READ_BUFFER_SIZE 10000000
 | 
			
		||||
 | 
			
		||||
static const char *weekStr[] {
 | 
			
		||||
    "week1", "week2", "week3"
 | 
			
		||||
};
 | 
			
		||||
static const char *weekDayStr[] {
 | 
			
		||||
    "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
 | 
			
		||||
};
 | 
			
		||||
static const int constexpr STEP_PRICE = 1;
 | 
			
		||||
static const int constexpr STEP_NEXT = 2;
 | 
			
		||||
 | 
			
		||||
parking_tariff_t *parking_tariff_t::parseTariff(const char *confFile) {
 | 
			
		||||
    parking_tariff_t *tariff = 0;
 | 
			
		||||
 | 
			
		||||
    FILE* fp = fopen(confFile, "r");
 | 
			
		||||
    if (fp) {
 | 
			
		||||
        fseek(fp, 0 , SEEK_END);
 | 
			
		||||
        long const bufSize = ftell(fp) + 1024;
 | 
			
		||||
        fseek(fp, 0 , SEEK_SET);
 | 
			
		||||
        char *readBuffer = (char *)malloc(bufSize);
 | 
			
		||||
        if (readBuffer) {
 | 
			
		||||
            memset(readBuffer, 0x00, bufSize);
 | 
			
		||||
 | 
			
		||||
            FileReadStream is(fp, readBuffer, bufSize);
 | 
			
		||||
            Document d;
 | 
			
		||||
 | 
			
		||||
            if (d.ParseStream(is).HasParseError()) {
 | 
			
		||||
                fprintf(stderr, "\nError(offset %u): %s\n",
 | 
			
		||||
                    (unsigned)d.GetErrorOffset(),
 | 
			
		||||
                    GetParseError_En(d.GetParseError()));
 | 
			
		||||
                free(readBuffer);
 | 
			
		||||
                fclose(fp);
 | 
			
		||||
                return 0;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            tariff = new parking_tariff_t();
 | 
			
		||||
 | 
			
		||||
            if (d.HasMember(FREE_OF_CHARGE)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(FREE_OF_CHARGE);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string foc = o->value.GetString();
 | 
			
		||||
                tariff->free_of_charge = std::stoi(foc);
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(UNIT_SCALE_FACTOR)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(UNIT_SCALE_FACTOR);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string usf = o->value.GetString();
 | 
			
		||||
                tariff->unit_scale_factor = std::stof(usf);
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(UNIT_DEFINITION)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(UNIT_DEFINITION);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string udef = o->value.GetString();
 | 
			
		||||
                tariff->unit_definition = std::stoi(udef);
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(VAT)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(VAT);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string vat = o->value.GetString();
 | 
			
		||||
                tariff->vat = std::stof(vat);
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(MAX_PARKING_PRICE)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(MAX_PARKING_PRICE);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string mp = o->value.GetString();
 | 
			
		||||
                if (mp == "unlimited") {
 | 
			
		||||
                    tariff->max_parking_price_units = ~0;
 | 
			
		||||
                } else {
 | 
			
		||||
                    tariff->max_parking_price_units = (uint32_t)std::stoul(mp);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(MAX_PRICE_FOR_24_HOURS)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(MAX_PRICE_FOR_24_HOURS);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string mp = o->value.GetString();
 | 
			
		||||
                if (mp == "unlimited") {
 | 
			
		||||
                    tariff->max_price_for_24_hours = ~0;
 | 
			
		||||
                } else {
 | 
			
		||||
                    tariff->max_price_for_24_hours = (uint32_t)std::stoul(mp);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            QDate today = QDate::currentDate();
 | 
			
		||||
            int todayWeekDay = today.dayOfWeek();
 | 
			
		||||
            if (todayWeekDay > Qt::Monday) {
 | 
			
		||||
                int day = today.day() - todayWeekDay;
 | 
			
		||||
                if (!today.setDate(today.year(), today.month(), day)) {
 | 
			
		||||
                    qFatal("Setting today failed");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            QDate monday = today;
 | 
			
		||||
 | 
			
		||||
            // "week1" : {
 | 
			
		||||
            for (int w = 0; w < 3; ++w) {
 | 
			
		||||
                assert(d.HasMember(weekStr[w]));
 | 
			
		||||
 | 
			
		||||
                //    "Monday": {
 | 
			
		||||
                for (int j = Qt::Monday - 1; j < Qt::Sunday; ++j) {
 | 
			
		||||
                    QDateTime startMinute(monday.addDays(w*7+j), QTime( 0, 0));
 | 
			
		||||
 | 
			
		||||
                    Value::MemberIterator wObj = d.FindMember(weekStr[w]);
 | 
			
		||||
                    assert(wObj != d.MemberEnd());
 | 
			
		||||
                    assert(wObj->value.IsObject());
 | 
			
		||||
 | 
			
		||||
                    Value::MemberIterator stepsForDay = wObj->value.FindMember(weekDayStr[j]);
 | 
			
		||||
                    assert(stepsForDay != wObj->value.MemberEnd());
 | 
			
		||||
                    assert(stepsForDay->value.IsObject());
 | 
			
		||||
 | 
			
		||||
                    //      name             : time, price, next-tariff-step
 | 
			
		||||
                    //      "000000" : [ "00:00", "800000",  "000001" ],
 | 
			
		||||
                    //      "000001" : [ "07:00", "350000",  "000002" ],
 | 
			
		||||
                    //      ...
 | 
			
		||||
                    //      "000014" : [ "20:00", "800000",  "000011" ]
 | 
			
		||||
                    //  },
 | 
			
		||||
                    int k = 0;
 | 
			
		||||
                    for (Value::ConstMemberIterator step = stepsForDay->value.MemberBegin();
 | 
			
		||||
                         step != stepsForDay->value.MemberEnd(); ++step) {
 | 
			
		||||
 | 
			
		||||
                        assert(step->name.IsString());
 | 
			
		||||
                        assert(step->value.IsArray());
 | 
			
		||||
 | 
			
		||||
                        QString name(step->name.GetString());
 | 
			
		||||
 | 
			
		||||
                        int const week = name.midRef(0, 1).toInt();
 | 
			
		||||
                        int const weekDay = name.midRef(1, 1).toInt();
 | 
			
		||||
                        int const stepIndex = name.midRef(2).toInt();
 | 
			
		||||
 | 
			
		||||
                        assert(w == week);
 | 
			
		||||
                        assert(j == weekDay);
 | 
			
		||||
                        assert(k == stepIndex);
 | 
			
		||||
 | 
			
		||||
                        uint32_t price_units = QString(step->value[STEP_PRICE].GetString()).toUInt();
 | 
			
		||||
                        QString next = QString(step->value[STEP_NEXT].GetString());
 | 
			
		||||
 | 
			
		||||
                        int const nextWeek = next.midRef(0, 1).toInt();
 | 
			
		||||
                        int const nextWeekDay = next.midRef(1, 1).toInt();
 | 
			
		||||
                        int const nextStepIndex = next.midRef(2).toInt();
 | 
			
		||||
 | 
			
		||||
                        //qDebug() << startMinute.addSecs(stepIndex*60)
 | 
			
		||||
                        //         << "(" << week << weekDay << stepIndex << ")"
 | 
			
		||||
                        //         << "(" << nextWeek << nextWeekDay << nextStepIndex << ")";
 | 
			
		||||
 | 
			
		||||
                        tariff->m_tariffSteps[week][weekDay][stepIndex] =
 | 
			
		||||
                            TariffStep(startMinute.addSecs(stepIndex*60),
 | 
			
		||||
                                   price_units,
 | 
			
		||||
                                   &tariff->m_tariffSteps[nextWeek][nextWeekDay][nextStepIndex]);
 | 
			
		||||
 | 
			
		||||
                        ++k;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            free(readBuffer);
 | 
			
		||||
        }
 | 
			
		||||
        fclose(fp);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return tariff;
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,16 @@
 | 
			
		||||
#ifndef CALCULATE_PARKING_TICKETS_PARSE_TARIFF_H_INCLUDED
 | 
			
		||||
#define CALCULATE_PARKING_TICKETS_PARSE_TARIFF_H_INCLUDED
 | 
			
		||||
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
 | 
			
		||||
#define FREE_OF_CHARGE          "free_of_charge"
 | 
			
		||||
#define UNIT_SCALE_FACTOR       "unit_scale_factor"
 | 
			
		||||
#define UNIT_DEFINITION         "unit_definition"
 | 
			
		||||
#define VAT                     "vat"
 | 
			
		||||
#define MAX_PARKING_PRICE       "max_parking_price"
 | 
			
		||||
#define MAX_PRICE_FOR_24_HOURS  "max_price_for_24_hours"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
parking_tariff_t *parking_tariff_t::parseTariff(const char *confFile);
 | 
			
		||||
 | 
			
		||||
#endif // CALCULATE_PARKING_TICKETS_PARSE_TARIFF_H_INCLUDED
 | 
			
		||||
							
								
								
									
										217
									
								
								calculate_parking_tickets/calculate_parking_tickets_tariff.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								calculate_parking_tickets/calculate_parking_tickets_tariff.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,217 @@
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
 | 
			
		||||
#include <rapidjson/filereadstream.h>
 | 
			
		||||
#include <rapidjson/document.h>
 | 
			
		||||
#include <rapidjson/encodings.h>
 | 
			
		||||
#include <rapidjson/error/en.h>
 | 
			
		||||
#include "rapidjson/stringbuffer.h"
 | 
			
		||||
#include <rapidjson/writer.h>
 | 
			
		||||
#include <rapidjson/prettywriter.h>
 | 
			
		||||
 | 
			
		||||
using namespace rapidjson;
 | 
			
		||||
 | 
			
		||||
#define FREE_OF_CHARGE          "free_of_charge"
 | 
			
		||||
#define UNIT_SCALE_FACTOR       "unit_scale_factor"
 | 
			
		||||
#define UNIT_DEFINITION         "unit_definition"
 | 
			
		||||
#define VAT                     "vat"
 | 
			
		||||
#define MAX_PARKING_PRICE       "max_parking_price"
 | 
			
		||||
#define MAX_PRICE_FOR_24_HOURS  "max_price_for_24_hours"
 | 
			
		||||
#define MAX_PARKING_TIME        "max_parking_time"
 | 
			
		||||
 | 
			
		||||
static const char *weekStr[] {
 | 
			
		||||
    "week1", "week2", "week3"
 | 
			
		||||
};
 | 
			
		||||
static const char *weekDayStr[] {
 | 
			
		||||
    "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
 | 
			
		||||
};
 | 
			
		||||
static const int constexpr STEP_PRICE = 1;
 | 
			
		||||
static const int constexpr STEP_NEXT = 2;
 | 
			
		||||
 | 
			
		||||
parking_tariff_t *parking_tariff_t::parseTariff(const char *confFile) {
 | 
			
		||||
    parking_tariff_t *tariff = 0;
 | 
			
		||||
 | 
			
		||||
    FILE* fp = fopen(confFile, "r");
 | 
			
		||||
    if (fp) {
 | 
			
		||||
        fseek(fp, 0 , SEEK_END);
 | 
			
		||||
        long const bufSize = ftell(fp) + 1024;
 | 
			
		||||
        fseek(fp, 0 , SEEK_SET);
 | 
			
		||||
        char *readBuffer = (char *)malloc(bufSize);
 | 
			
		||||
        if (readBuffer) {
 | 
			
		||||
            memset(readBuffer, 0x00, bufSize);
 | 
			
		||||
 | 
			
		||||
            FileReadStream is(fp, readBuffer, bufSize);
 | 
			
		||||
            Document d;
 | 
			
		||||
 | 
			
		||||
            if (d.ParseStream(is).HasParseError()) {
 | 
			
		||||
                fprintf(stderr, "\nError(offset %u): %s\n",
 | 
			
		||||
                    (unsigned)d.GetErrorOffset(),
 | 
			
		||||
                    GetParseError_En(d.GetParseError()));
 | 
			
		||||
                free(readBuffer);
 | 
			
		||||
                fclose(fp);
 | 
			
		||||
                return 0;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            tariff = new parking_tariff_t();
 | 
			
		||||
 | 
			
		||||
            if (d.HasMember(FREE_OF_CHARGE)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(FREE_OF_CHARGE);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string foc = o->value.GetString();
 | 
			
		||||
                tariff->free_of_charge = std::stoi(foc);
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(UNIT_SCALE_FACTOR)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(UNIT_SCALE_FACTOR);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string usf = o->value.GetString();
 | 
			
		||||
                tariff->unit_scale_factor = std::stof(usf);
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(UNIT_DEFINITION)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(UNIT_DEFINITION);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string udef = o->value.GetString();
 | 
			
		||||
                tariff->unit_definition = std::stoi(udef);
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(VAT)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(VAT);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string vat = o->value.GetString();
 | 
			
		||||
                tariff->vat = std::stof(vat);
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(MAX_PARKING_PRICE)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(MAX_PARKING_PRICE);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string mp = o->value.GetString();
 | 
			
		||||
                if (mp == "unlimited") {
 | 
			
		||||
                    tariff->max_parking_price_units = ~0;
 | 
			
		||||
                } else {
 | 
			
		||||
                    tariff->max_parking_price_units = (uint32_t)std::stoul(mp);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(MAX_PRICE_FOR_24_HOURS)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(MAX_PRICE_FOR_24_HOURS);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string mp = o->value.GetString();
 | 
			
		||||
                if (mp == "unlimited") {
 | 
			
		||||
                    tariff->max_price_for_24_hours = ~0;
 | 
			
		||||
                } else {
 | 
			
		||||
                    tariff->max_price_for_24_hours = (uint32_t)std::stoul(mp);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (d.HasMember(MAX_PARKING_TIME)) {
 | 
			
		||||
                Value::MemberIterator o = d.FindMember(MAX_PARKING_TIME);
 | 
			
		||||
                assert(o != d.MemberEnd());
 | 
			
		||||
                assert(o->value.IsString());
 | 
			
		||||
                std::string mp = o->value.GetString();
 | 
			
		||||
                if (mp == "unlimited") {
 | 
			
		||||
                    tariff->max_parking_time = ~0;
 | 
			
		||||
                } else {
 | 
			
		||||
                    tariff->max_parking_time = (uint32_t)std::stoul(mp);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            QDate today = QDate::currentDate();
 | 
			
		||||
 | 
			
		||||
            int const todayWeekDay = today.dayOfWeek(); // qt: 1 (mon) - 7 (sun)
 | 
			
		||||
            if (todayWeekDay > Qt::Monday) {
 | 
			
		||||
                int day = today.day();
 | 
			
		||||
                day -= (todayWeekDay - Qt::Monday);
 | 
			
		||||
                if (!today.setDate(today.year(), today.month(), day)) {
 | 
			
		||||
                    qFatal("Setting today failed");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            assert(today.dayOfWeek() == Qt::Monday);
 | 
			
		||||
            QDate monday = today;
 | 
			
		||||
 | 
			
		||||
            // "week1" : {
 | 
			
		||||
            for (int w = 0; w < 3; ++w) {
 | 
			
		||||
                assert(d.HasMember(weekStr[w]));
 | 
			
		||||
 | 
			
		||||
                //    "Monday": {
 | 
			
		||||
                for (int j = Qt::Monday - 1; j < Qt::Sunday; ++j) {
 | 
			
		||||
                    QDateTime startMinute(monday.addDays(w*7+j), QTime( 0, 0));
 | 
			
		||||
 | 
			
		||||
                    Value::MemberIterator wObj = d.FindMember(weekStr[w]);
 | 
			
		||||
                    assert(wObj != d.MemberEnd());
 | 
			
		||||
                    assert(wObj->value.IsObject());
 | 
			
		||||
 | 
			
		||||
                    Value::MemberIterator stepsForDay = wObj->value.FindMember(weekDayStr[j]);
 | 
			
		||||
                    assert(stepsForDay != wObj->value.MemberEnd());
 | 
			
		||||
                    assert(stepsForDay->value.IsObject());
 | 
			
		||||
 | 
			
		||||
                    //      name             : time, price, next-tariff-step
 | 
			
		||||
                    //      "000000" : [ "00:00", "800000",  "000001" ],
 | 
			
		||||
                    //      "000001" : [ "07:00", "350000",  "000002" ],
 | 
			
		||||
                    //      ...
 | 
			
		||||
                    //      "000014" : [ "20:00", "800000",  "000011" ]
 | 
			
		||||
                    //  },
 | 
			
		||||
                    int k = 0;
 | 
			
		||||
                    for (Value::ConstMemberIterator step = stepsForDay->value.MemberBegin();
 | 
			
		||||
                         step != stepsForDay->value.MemberEnd(); ++step) {
 | 
			
		||||
 | 
			
		||||
                        assert(step->name.IsString());
 | 
			
		||||
                        assert(step->value.IsArray());
 | 
			
		||||
 | 
			
		||||
                        QString name(step->name.GetString());
 | 
			
		||||
 | 
			
		||||
                        int const week = name.midRef(0, 1).toInt();
 | 
			
		||||
                        int const weekDay = name.midRef(1, 1).toInt();
 | 
			
		||||
                        int const stepIndex = name.midRef(2).toInt();
 | 
			
		||||
 | 
			
		||||
                        assert(w == week);
 | 
			
		||||
                        assert(j == weekDay);
 | 
			
		||||
                        assert(k == stepIndex);
 | 
			
		||||
 | 
			
		||||
                        uint32_t price_units = QString(step->value[STEP_PRICE].GetString()).toUInt();
 | 
			
		||||
                        QString next = QString(step->value[STEP_NEXT].GetString());
 | 
			
		||||
 | 
			
		||||
                        int const nextWeek = next.midRef(0, 1).toInt();
 | 
			
		||||
                        int const nextWeekDay = next.midRef(1, 1).toInt();
 | 
			
		||||
                        int const nextStepIndex = next.midRef(2).toInt();
 | 
			
		||||
 | 
			
		||||
                        //qDebug() << startMinute.addSecs(stepIndex*60)
 | 
			
		||||
                        //         << "(" << week << weekDay << stepIndex << ")"
 | 
			
		||||
                        //         << "(" << nextWeek << nextWeekDay << nextStepIndex << ")";
 | 
			
		||||
 | 
			
		||||
                        tariff->m_tariffSteps[week][weekDay][stepIndex] =
 | 
			
		||||
                            TariffStep(startMinute.addSecs(stepIndex*60),
 | 
			
		||||
                                   price_units,
 | 
			
		||||
                                   &tariff->m_tariffSteps[nextWeek][nextWeekDay][nextStepIndex]);
 | 
			
		||||
 | 
			
		||||
                        ++k;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            free(readBuffer);
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
            for (int w = 0; w < 3; ++w) {
 | 
			
		||||
                for (int j = Qt::Monday - 1; j < Qt::Sunday; ++j) {
 | 
			
		||||
                    for (int k = 0; k < MIN_PER_DAY; ++k) {
 | 
			
		||||
                        //if (tariff->m_tariffSteps[w][j][k].next()) {
 | 
			
		||||
                        TariffStep const *s = &tariff->m_tariffSteps[w][j][k];
 | 
			
		||||
                        qDebug() << s->dateTime() << s->price() << "next:" << s->next()->dateTime();
 | 
			
		||||
                    //}
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
        fclose(fp);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return tariff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										218
									
								
								calculate_parking_tickets/calculate_parking_tickets_tariff.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										218
									
								
								calculate_parking_tickets/calculate_parking_tickets_tariff.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,218 @@
 | 
			
		||||
#ifndef CALCULATE_PARKING_TICKETS_TARIFF_H_INCLUDED
 | 
			
		||||
#define CALCULATE_PARKING_TICKETS_TARIFF_H_INCLUDED
 | 
			
		||||
 | 
			
		||||
#include "calculate_parking_tickets_global.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff_step.h"
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
#include <QVector>
 | 
			
		||||
#include <QSet>
 | 
			
		||||
#include <QPair>
 | 
			
		||||
#include <QList>
 | 
			
		||||
 | 
			
		||||
struct parking_tariff_t {
 | 
			
		||||
    // parking_tariff_t();
 | 
			
		||||
    static parking_tariff_t *parseTariff(const char *confFile);
 | 
			
		||||
 | 
			
		||||
    /// \brief Express computational units in cent.
 | 
			
		||||
    ///
 | 
			
		||||
    /// The internal computations do not use the unit "cent" \n
 | 
			
		||||
    /// directly. Rather virtual integer value <b>unit_definition</b> is used, expressing \n
 | 
			
		||||
    /// how many cents correspond to <b>unit_definition</b> units.
 | 
			
		||||
    uint32_t unit_definition;
 | 
			
		||||
 | 
			
		||||
    /// \brief Scale units to cent.
 | 
			
		||||
    ///
 | 
			
		||||
    double unit_scale_factor;
 | 
			
		||||
 | 
			
		||||
    /// \brief VAT (Mehrwertsteuer) in percent.
 | 
			
		||||
    ///
 | 
			
		||||
    double vat;
 | 
			
		||||
 | 
			
		||||
    QSet<QDate> holidays;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief m_tariffSteps
 | 
			
		||||
    ///
 | 
			
		||||
    TariffStep m_tariffSteps[3][7][MIN_PER_DAY];
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief waiting_period
 | 
			
		||||
    /// @note Also called "Karenzzeit". Allowed values: [0, 3]
 | 
			
		||||
    // minute_t waiting_period;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief free_of_charge
 | 
			
		||||
    ///
 | 
			
		||||
    minute_t free_of_charge;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief max_parking_time
 | 
			
		||||
    ///
 | 
			
		||||
    minute_t max_parking_time = -1;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief max_parking_price_units
 | 
			
		||||
    ///
 | 
			
		||||
    uint32_t max_parking_price_units;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief max_price_for_24_hours
 | 
			
		||||
    ///
 | 
			
		||||
    uint32_t max_price_for_24_hours;    // 24h limit (default -1)
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    /// Minimal amount of money for buying a ticket.
 | 
			
		||||
    ///
 | 
			
		||||
    /// The minimal amount of money a user has to provide \n
 | 
			
		||||
    /// to get a valid (parking) ticket.
 | 
			
		||||
    uint32_t money_min;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief Minimal parking time.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Minimal parking time. The full parking time must be \n
 | 
			
		||||
    /// a multiple of @see parking_time_min.
 | 
			
		||||
    minute_t parking_time_min;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief Maximal parking time. Must be a multiple of @see parking_time_min.
 | 
			
		||||
    ///
 | 
			
		||||
    minute_t parking_time_max;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief integration_time_max
 | 
			
		||||
    /// Maximal possible integration time, i.e. the time after which all tickets
 | 
			
		||||
    /// will be closed.
 | 
			
		||||
    /// \note parking_time_max <= integration_time_max.
 | 
			
		||||
    minute_t integration_time_max;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief tages_ticket_uebertrag
 | 
			
		||||
    ///
 | 
			
		||||
    bool tages_ticket_uebertrag;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief free_of_charge_uebertrag
 | 
			
		||||
    /// Carry FOC (usually at midnight) or not.
 | 
			
		||||
    /// The default setting is true.
 | 
			
		||||
    bool free_of_charge_uebertrag;
 | 
			
		||||
 | 
			
		||||
    /// \brief Time for optionally changing tariff-table.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Depending on the configuration, a table in the tariff can be swapped
 | 
			
		||||
    /// in, typically at midnight. But it is also possible that this event happens
 | 
			
		||||
    /// during the day.
 | 
			
		||||
    /// @note 0 ≤ tariff_deadline $lt; 1440
 | 
			
		||||
    minute_t tages_ticket_offset;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief vorkauf
 | 
			
		||||
    ///
 | 
			
		||||
    /// Maximal time in minutes before business hours where a presales
 | 
			
		||||
    /// ("vorkauf") operation is possible.
 | 
			
		||||
    minute_t vorkauf;
 | 
			
		||||
 | 
			
		||||
    /// \brief Memory consumption of calculate price algorithm
 | 
			
		||||
    uint32_t memory_consumption;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// Time-range which is free of charge.
 | 
			
		||||
    ///
 | 
			
		||||
    struct free_of_charge_range_t free_of_charge;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief business_hours
 | 
			
		||||
    ///
 | 
			
		||||
    struct business_hours_range_t business_hours;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /// Array of possible days: DEFAULT, SUN - SAT plus HOLIDAY.
 | 
			
		||||
    ///
 | 
			
		||||
    day_t *day[DAYS];
 | 
			
		||||
 | 
			
		||||
    /// Pointer to current day in tariff-table.
 | 
			
		||||
    ///
 | 
			
		||||
    day_t *current_day;
 | 
			
		||||
 | 
			
		||||
    /// Array of holiday dates. Format: YYYY:MM:DD
 | 
			
		||||
    ///
 | 
			
		||||
    holiday_date_t *holiday_date;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief algorithm_features
 | 
			
		||||
    ///
 | 
			
		||||
    uint16_t algorithm_features;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief tariff_features
 | 
			
		||||
    ///
 | 
			
		||||
    /// @todo: add comment
 | 
			
		||||
    uint64_t tariff_features;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief _tariff_features
 | 
			
		||||
    ///
 | 
			
		||||
    /// @todo: add comment
 | 
			
		||||
    uint64_t _tariff_features[64];
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// @brief closed_tickets_local_end_times
 | 
			
		||||
    ///
 | 
			
		||||
    /// @note The end times of all closed tickets: the possible values are
 | 
			
		||||
    ///       0 <= end_time <= 168h.
 | 
			
		||||
    ///
 | 
			
		||||
    bool closed_tickets_sorted;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief closed_tickets_count
 | 
			
		||||
    ///
 | 
			
		||||
    /// @note Used internally for optimizations.
 | 
			
		||||
    int closed_tickets_count;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief closed_tickets
 | 
			
		||||
    /// @todo: add comment
 | 
			
		||||
    ticket_t *closed_tickets[NUMBER_OF_TICKETS];
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief tariff_step_min
 | 
			
		||||
    ///
 | 
			
		||||
    /// @todo: add comment
 | 
			
		||||
    time_t tariff_step_min;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief tariff_step_max
 | 
			
		||||
    ///
 | 
			
		||||
    /// @todo: add comment
 | 
			
		||||
    time_t tariff_step_max;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief tariff_version
 | 
			
		||||
    /// Version for a given config-file, associated to a given tariff.
 | 
			
		||||
    char tariff_version[64];
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief free_of_charge_at_start;
 | 
			
		||||
    ///
 | 
			
		||||
    /// Free-of-charge minutes at beginning of tariff computation
 | 
			
		||||
    ///
 | 
			
		||||
    uint16_t free_of_charge_at_start;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief repeated_default_without_carryover
 | 
			
		||||
    ///
 | 
			
		||||
    /// Setting describing a special tariff:
 | 
			
		||||
    /// - All days are equal
 | 
			
		||||
    /// - 24:00 is a "tariff-schnitt" (=without_carryover)
 | 
			
		||||
    /// (i.e. computation is carried out
 | 
			
		||||
    /// on a per day basis. Total price is the sum of all days.)
 | 
			
		||||
    bool repeated_default_without_carryover;
 | 
			
		||||
 | 
			
		||||
    ///
 | 
			
		||||
    /// \brief waiting_period
 | 
			
		||||
    /// @note Also called "Karenzzeit". Allowed values: [0, 3]
 | 
			
		||||
    minute_t waiting_period;
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // CALCULATE_PARKING_TICKETS_TARIFF_H_INCLUDED
 | 
			
		||||
@@ -0,0 +1,3 @@
 | 
			
		||||
#include "calculate_parking_tickets_tariff_step.h"
 | 
			
		||||
 | 
			
		||||
int TariffStep::m_offsetInDays = 0;
 | 
			
		||||
@@ -0,0 +1,78 @@
 | 
			
		||||
#ifndef CALCULATE_PARKING_TICKET_TARIFF_STEP_H_INCLUDED
 | 
			
		||||
#define CALCULATE_PARKING_TICKET_TARIFF_STEP_H_INCLUDED
 | 
			
		||||
 | 
			
		||||
#include <cinttypes>
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
/// \brief The TariffStep class
 | 
			
		||||
///
 | 
			
		||||
/// Ein Berechnungsschritt kann alles sein zwischen einer Minute und einem Tag.
 | 
			
		||||
/// Jeder Tag wird zerlegt in 1440 Berechnungsschritte.
 | 
			
		||||
 | 
			
		||||
class TariffStep {
 | 
			
		||||
    QDateTime m_datetime;  //  minute since start of tariff calculation
 | 
			
		||||
    int m_dayOfWeek;
 | 
			
		||||
    uint32_t m_price;
 | 
			
		||||
    TariffStep const *m_next;
 | 
			
		||||
 | 
			
		||||
    static int m_offsetInDays;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    // static setOffsetinDays(int offsetInDays) { m_offsetInDays = offsetInDays; }
 | 
			
		||||
 | 
			
		||||
    TariffStep()
 | 
			
		||||
        : m_datetime(QDateTime())
 | 
			
		||||
        , m_dayOfWeek(-1)
 | 
			
		||||
        , m_price(0)
 | 
			
		||||
        , m_next(nullptr) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    TariffStep(QDateTime const &datetime,
 | 
			
		||||
               uint32_t price,
 | 
			
		||||
               TariffStep const *next)
 | 
			
		||||
        : m_datetime(datetime)
 | 
			
		||||
        , m_dayOfWeek(m_datetime.isValid() ? m_datetime.date().dayOfWeek() : -1)
 | 
			
		||||
        , m_price(price)
 | 
			
		||||
        , m_next(next) {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    TariffStep const *next() const { return m_next; }
 | 
			
		||||
    //TariffStep *next() { return m_next; }
 | 
			
		||||
 | 
			
		||||
    int dayOfWeek() const { return m_dayOfWeek; }
 | 
			
		||||
 | 
			
		||||
    bool contains(QTime const &minute) const {
 | 
			
		||||
        if (dateTime().isValid()
 | 
			
		||||
         && minute.isValid()
 | 
			
		||||
         && m_next && m_next->dateTime().isValid()) {
 | 
			
		||||
            if (dayOfWeek() == m_next->dayOfWeek()) {
 | 
			
		||||
                return
 | 
			
		||||
                    (dateTime().time() <= minute
 | 
			
		||||
                     && minute < m_next->dateTime().time());
 | 
			
		||||
            }
 | 
			
		||||
            return (dateTime().time() <= minute);
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    uint16_t startHour() {
 | 
			
		||||
        return m_datetime.time().hour();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    uint32_t price() const { return m_price; }
 | 
			
		||||
    bool isValid() { return m_datetime.isValid(); }
 | 
			
		||||
    TariffStep const *address() { return this; }
 | 
			
		||||
 | 
			
		||||
    void setPrice(uint32_t price) { m_price = price; }
 | 
			
		||||
    void setDateTime(QDateTime const &datetime) { m_datetime = datetime; }
 | 
			
		||||
    void setNextTariffStep(TariffStep *const next) { m_next = next; }
 | 
			
		||||
 | 
			
		||||
    QDateTime &dateTime() { return m_datetime; }
 | 
			
		||||
    QDateTime const &dateTime() const { return m_datetime; }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // CALCULATE_PARKING_TICKET_TARIFF_STEP_H_INCLUDED
 | 
			
		||||
							
								
								
									
										158
									
								
								calculate_parking_tickets/calculate_parking_tickets_utils.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								calculate_parking_tickets/calculate_parking_tickets_utils.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,158 @@
 | 
			
		||||
#include "calculate_parking_tickets_utils.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
 | 
			
		||||
#include <QTimeZone>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
 | 
			
		||||
namespace TUtils {
 | 
			
		||||
    bool isHoliday(parking_tariff_t const *tariff, QDate const &qd) {
 | 
			
		||||
        for (int s = 0; s < tariff->holidays.size(); ++s) {
 | 
			
		||||
            if (tariff->holidays.contains(qd)) {
 | 
			
		||||
                qDebug() << "Holiday";
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        qDebug() << "No Holiday";
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    QDateTime const fromSecs(quint64 secs) {
 | 
			
		||||
        QDateTime dateTime;
 | 
			
		||||
        dateTime.setSecsSinceEpoch(0);
 | 
			
		||||
        return dateTime.addSecs(secs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    QDateTime const fromMinutes(quint64 minutes) {
 | 
			
		||||
        return fromSecs(minutes*60);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    quint64 toSecs(QDateTime const &dt) {
 | 
			
		||||
        return dt.toSecsSinceEpoch();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    quint64 toMinutes(QDateTime const &dt) {
 | 
			
		||||
        return dt.toSecsSinceEpoch()/60;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Monday
 | 
			
		||||
    bool isMon(quint64 secs) {
 | 
			
		||||
        return (fromSecs(secs).date().dayOfWeek() == Qt::Monday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isMon(QDate const &date) {
 | 
			
		||||
        return (date.dayOfWeek() == Qt::Monday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isMonUTC(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::UTC).date().dayOfWeek() == Qt::Monday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isMonCET(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::LocalTime).date().dayOfWeek() == Qt::Monday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isMonUTC(QDate const &dateSinceEpoch) {
 | 
			
		||||
        return (dateSinceEpoch.dayOfWeek() == Qt::Monday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isMonCET(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Monday);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Tuesday
 | 
			
		||||
    bool isTue(QDate const &date) {
 | 
			
		||||
        return (date.dayOfWeek() == Qt::Tuesday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isTueUTC(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::UTC).date().dayOfWeek() == Qt::Tuesday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isTueCET(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::LocalTime).date().dayOfWeek() == Qt::Tuesday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isTueUTC(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Tuesday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isTueCET(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Tuesday);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Wednesday
 | 
			
		||||
    bool isWed(QDate const &date) {
 | 
			
		||||
        return (date.dayOfWeek() == Qt::Wednesday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isWedUTC(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::UTC).date().dayOfWeek() == Qt::Wednesday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isWedCET(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::LocalTime).date().dayOfWeek() == Qt::Wednesday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isWedUTC(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Wednesday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isWedCET(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Wednesday);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Thursday
 | 
			
		||||
    bool isThu(QDate const &date) {
 | 
			
		||||
        return (date.dayOfWeek() == Qt::Thursday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isThuUTC(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::UTC).date().dayOfWeek() == Qt::Thursday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isThuCET(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::LocalTime).date().dayOfWeek() == Qt::Thursday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isThuUTC(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Thursday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isThuCET(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Thursday);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Friday
 | 
			
		||||
    bool isFri(QDate const &date) {
 | 
			
		||||
        return (date.dayOfWeek() == Qt::Friday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isFriUTC(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::UTC).date().dayOfWeek() == Qt::Friday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isFriCET(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::LocalTime).date().dayOfWeek() == Qt::Friday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isFriUTC(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Friday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isFriCET(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Friday);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Saturday
 | 
			
		||||
    bool isSat(QDate const &date) {
 | 
			
		||||
        return (date.dayOfWeek() == Qt::Saturday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isSatUTC(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::UTC).date().dayOfWeek() == Qt::Saturday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isSatCET(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::LocalTime).date().dayOfWeek() == Qt::Saturday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isSatUTC(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Saturday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isSatCET(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Saturday);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Sunday
 | 
			
		||||
    bool isSun(QDate const &date) {
 | 
			
		||||
        return (date.dayOfWeek() == Qt::Sunday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isSunUTC(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::UTC).date().dayOfWeek() == Qt::Sunday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isSunCET(quint64 secsSinceEpoch) {
 | 
			
		||||
        return (QDateTime::fromSecsSinceEpoch(secsSinceEpoch, Qt::LocalTime).date().dayOfWeek() == Qt::Sunday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isSunUTC(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Sunday);
 | 
			
		||||
    }
 | 
			
		||||
    bool isSunCET(QDate const &dateSinceEpoch) {
 | 
			
		||||
      return (dateSinceEpoch.dayOfWeek() == Qt::Sunday);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										64
									
								
								calculate_parking_tickets/calculate_parking_tickets_utils.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								calculate_parking_tickets/calculate_parking_tickets_utils.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
#ifndef CALCULATE_PARKING_TICKETS_UTILS_H_INCLUDED
 | 
			
		||||
#define CALCULATE_PARKING_TICKETS_UTILS_H_INCLUDED
 | 
			
		||||
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
#include <QDate>
 | 
			
		||||
#include <QTime>
 | 
			
		||||
#include <QTimeZone>
 | 
			
		||||
 | 
			
		||||
struct parking_tariff_t;
 | 
			
		||||
 | 
			
		||||
namespace TUtils {
 | 
			
		||||
    QDateTime const fromSecs(quint64 secs);
 | 
			
		||||
    QDateTime const fromMinutes(quint64 minutes);
 | 
			
		||||
 | 
			
		||||
    quint64 toSecs(QDateTime const &dt);
 | 
			
		||||
    quint64 toMinutes(QDateTime const &dt);
 | 
			
		||||
 | 
			
		||||
    bool isHoliday(parking_tariff_t const *tariff, QDate const &qdt);
 | 
			
		||||
 | 
			
		||||
    bool isMon(quint64 secs);
 | 
			
		||||
    bool isMon(QDate const &date);
 | 
			
		||||
    bool isMonUTC(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isMonUTC(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch(), Qt::UTC).date());
 | 
			
		||||
    bool isMonCET(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isMonCET(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch()).date());
 | 
			
		||||
 | 
			
		||||
    bool isTue(QDate const &date);
 | 
			
		||||
    bool isTueUTC(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isTueUTC(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch(), Qt::UTC).date());
 | 
			
		||||
    bool isTueCET(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isTueCET(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch()).date());
 | 
			
		||||
 | 
			
		||||
    bool isWed(QDate const &date);
 | 
			
		||||
    bool isWedUTC(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isWedUTC(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch(), Qt::UTC).date());
 | 
			
		||||
    bool isWedCET(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isWedCET(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch()).date());
 | 
			
		||||
 | 
			
		||||
    bool isThu(QDate const &date);
 | 
			
		||||
    bool isThuUTC(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isThuUTC(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch(), Qt::UTC).date());
 | 
			
		||||
    bool isThuCET(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isThuCET(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch()).date());
 | 
			
		||||
 | 
			
		||||
    bool isFri(QDate const &date);
 | 
			
		||||
    bool isFriUTC(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isFriUTC(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch(), Qt::UTC).date());
 | 
			
		||||
    bool isFriCET(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isFriCET(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch()).date());
 | 
			
		||||
 | 
			
		||||
    bool isSat(QDate const &date);
 | 
			
		||||
    bool isSatUTC(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isSatUTC(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch(), Qt::UTC).date());
 | 
			
		||||
    bool isSatCET(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isSatCET(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch()).date());
 | 
			
		||||
 | 
			
		||||
    bool isSun(QDate const &date);
 | 
			
		||||
    bool isSunUTC(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isSunUTC(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch(), Qt::UTC).date());
 | 
			
		||||
    bool isSunCET(quint64 secsSinceEpoch = QDateTime::currentSecsSinceEpoch());
 | 
			
		||||
    bool isSunCET(QDate const &dateSinceEpoch = QDateTime::fromSecsSinceEpoch(QDateTime::currentSecsSinceEpoch()).date());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // CALCULATE_PARKING_TICKETS_UTILS_H_INCLUDED
 | 
			
		||||
							
								
								
									
										562
									
								
								calculate_parking_tickets/erlangen.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										562
									
								
								calculate_parking_tickets/erlangen.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,562 @@
 | 
			
		||||
{
 | 
			
		||||
    "name" : "Tarif Erlangen",
 | 
			
		||||
    "description" : [
 | 
			
		||||
                        "erste 90 Min = 0 Euro",
 | 
			
		||||
                        "jede weitere 60 Min = 1,20 Euro",
 | 
			
		||||
                        "tagesmax: 7,20 Euro"
 | 
			
		||||
                    ],
 | 
			
		||||
    "properties": [
 | 
			
		||||
    ],
 | 
			
		||||
    "week1" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep000"  : [ "00:00", "120000",  "TariffStep001" ],
 | 
			
		||||
            "TariffStep001"  : [ "01:00", "120000",  "TariffStep002" ],
 | 
			
		||||
            "TariffStep002"  : [ "02:00", "120000",  "TariffStep003" ],
 | 
			
		||||
            "TariffStep003"  : [ "03:00", "120000",  "TariffStep004" ],
 | 
			
		||||
            "TariffStep004"  : [ "04:00", "120000",  "TariffStep005" ],
 | 
			
		||||
            "TariffStep005"  : [ "05:00", "120000",  "TariffStep006" ],
 | 
			
		||||
            "TariffStep006"  : [ "06:00", "120000",  "TariffStep007" ],
 | 
			
		||||
            "TariffStep007"  : [ "07:00", "120000",  "TariffStep008" ],
 | 
			
		||||
            "TariffStep008"  : [ "08:00", "120000",  "TariffStep009" ],
 | 
			
		||||
            "TariffStep009"  : [ "09:00", "120000",  "TariffStep0010"],
 | 
			
		||||
            "TariffStep0010" : [ "10:00", "120000",  "TariffStep0011"],
 | 
			
		||||
            "TariffStep0011" : [ "11:00", "120000",  "TariffStep0012"],
 | 
			
		||||
            "TariffStep0012" : [ "12:00", "120000",  "TariffStep0013"],
 | 
			
		||||
            "TariffStep0013" : [ "13:00", "120000",  "TariffStep0014"],
 | 
			
		||||
            "TariffStep0014" : [ "14:00", "120000",  "TariffStep0015"],
 | 
			
		||||
            "TariffStep0015" : [ "15:00", "120000",  "TariffStep0016"],
 | 
			
		||||
            "TariffStep0016" : [ "16:00", "120000",  "TariffStep0017"],
 | 
			
		||||
            "TariffStep0017" : [ "17:00", "120000",  "TariffStep0018"],
 | 
			
		||||
            "TariffStep0018" : [ "18:00", "120000",  "TariffStep0019"],
 | 
			
		||||
            "TariffStep0019" : [ "19:00", "120000",  "TariffStep0020"],
 | 
			
		||||
            "TariffStep0020" : [ "20:00", "120000",  "TariffStep0021"],
 | 
			
		||||
            "TariffStep0021" : [ "21:00", "120000",  "TariffStep0022"],
 | 
			
		||||
            "TariffStep0022" : [ "22:00", "120000",  "TariffStep0023"],
 | 
			
		||||
            "TariffStep0023" : [ "23:00", "120000",  "TariffStep010" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep010"  : [ "00:00", "120000",  "TariffStep011" ],
 | 
			
		||||
            "TariffStep011"  : [ "01:00", "120000",  "TariffStep012" ],
 | 
			
		||||
            "TariffStep012"  : [ "02:00", "120000",  "TariffStep013" ],
 | 
			
		||||
            "TariffStep013"  : [ "03:00", "120000",  "TariffStep014" ],
 | 
			
		||||
            "TariffStep014"  : [ "04:00", "120000",  "TariffStep015" ],
 | 
			
		||||
            "TariffStep015"  : [ "05:00", "120000",  "TariffStep016" ],
 | 
			
		||||
            "TariffStep016"  : [ "06:00", "120000",  "TariffStep017" ],
 | 
			
		||||
            "TariffStep017"  : [ "07:00", "120000",  "TariffStep018" ],
 | 
			
		||||
            "TariffStep018"  : [ "08:00", "120000",  "TariffStep019" ],
 | 
			
		||||
            "TariffStep019"  : [ "09:00", "120000",  "TariffStep0110"],
 | 
			
		||||
            "TariffStep0110" : [ "10:00", "120000",  "TariffStep0111"],
 | 
			
		||||
            "TariffStep0111" : [ "11:00", "120000",  "TariffStep0112"],
 | 
			
		||||
            "TariffStep0112" : [ "12:00", "120000",  "TariffStep0113"],
 | 
			
		||||
            "TariffStep0113" : [ "13:00", "120000",  "TariffStep0114"],
 | 
			
		||||
            "TariffStep0114" : [ "14:00", "120000",  "TariffStep0115"],
 | 
			
		||||
            "TariffStep0115" : [ "15:00", "120000",  "TariffStep0116"],
 | 
			
		||||
            "TariffStep0116" : [ "16:00", "120000",  "TariffStep0117"],
 | 
			
		||||
            "TariffStep0117" : [ "17:00", "120000",  "TariffStep0118"],
 | 
			
		||||
            "TariffStep0118" : [ "18:00", "120000",  "TariffStep0119"],
 | 
			
		||||
            "TariffStep0119" : [ "19:00", "120000",  "TariffStep0120"],
 | 
			
		||||
            "TariffStep0120" : [ "20:00", "120000",  "TariffStep0121"],
 | 
			
		||||
            "TariffStep0121" : [ "21:00", "120000",  "TariffStep0122"],
 | 
			
		||||
            "TariffStep0122" : [ "22:00", "120000",  "TariffStep0123"],
 | 
			
		||||
            "TariffStep0123" : [ "23:00", "120000",  "TariffStep020" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep020"  : [ "00:00", "120000",  "TariffStep021" ],
 | 
			
		||||
            "TariffStep021"  : [ "01:00", "120000",  "TariffStep022" ],
 | 
			
		||||
            "TariffStep022"  : [ "02:00", "120000",  "TariffStep023" ],
 | 
			
		||||
            "TariffStep023"  : [ "03:00", "120000",  "TariffStep024" ],
 | 
			
		||||
            "TariffStep024"  : [ "04:00", "120000",  "TariffStep025" ],
 | 
			
		||||
            "TariffStep025"  : [ "05:00", "120000",  "TariffStep026" ],
 | 
			
		||||
            "TariffStep026"  : [ "06:00", "120000",  "TariffStep027" ],
 | 
			
		||||
            "TariffStep027"  : [ "07:00", "120000",  "TariffStep028" ],
 | 
			
		||||
            "TariffStep028"  : [ "08:00", "120000",  "TariffStep029" ],
 | 
			
		||||
            "TariffStep029"  : [ "09:00", "120000",  "TariffStep0210"],
 | 
			
		||||
            "TariffStep0210" : [ "10:00", "120000",  "TariffStep0211"],
 | 
			
		||||
            "TariffStep0211" : [ "11:00", "120000",  "TariffStep0212"],
 | 
			
		||||
            "TariffStep0212" : [ "12:00", "120000",  "TariffStep0213"],
 | 
			
		||||
            "TariffStep0213" : [ "13:00", "120000",  "TariffStep0214"],
 | 
			
		||||
            "TariffStep0214" : [ "14:00", "120000",  "TariffStep0215"],
 | 
			
		||||
            "TariffStep0215" : [ "15:00", "120000",  "TariffStep0216"],
 | 
			
		||||
            "TariffStep0216" : [ "16:00", "120000",  "TariffStep0217"],
 | 
			
		||||
            "TariffStep0217" : [ "17:00", "120000",  "TariffStep0218"],
 | 
			
		||||
            "TariffStep0218" : [ "18:00", "120000",  "TariffStep0219"],
 | 
			
		||||
            "TariffStep0219" : [ "19:00", "120000",  "TariffStep0220"],
 | 
			
		||||
            "TariffStep0220" : [ "20:00", "120000",  "TariffStep0221"],
 | 
			
		||||
            "TariffStep0221" : [ "21:00", "120000",  "TariffStep0222"],
 | 
			
		||||
            "TariffStep0222" : [ "22:00", "120000",  "TariffStep0223"],
 | 
			
		||||
            "TariffStep0223" : [ "23:00", "120000",  "TariffStep030" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep030"  : [ "00:00", "120000",  "TariffStep031" ],
 | 
			
		||||
            "TariffStep031"  : [ "01:00", "120000",  "TariffStep032" ],
 | 
			
		||||
            "TariffStep032"  : [ "02:00", "120000",  "TariffStep033" ],
 | 
			
		||||
            "TariffStep033"  : [ "03:00", "120000",  "TariffStep034" ],
 | 
			
		||||
            "TariffStep034"  : [ "04:00", "120000",  "TariffStep035" ],
 | 
			
		||||
            "TariffStep035"  : [ "05:00", "120000",  "TariffStep036" ],
 | 
			
		||||
            "TariffStep036"  : [ "06:00", "120000",  "TariffStep037" ],
 | 
			
		||||
            "TariffStep037"  : [ "07:00", "120000",  "TariffStep038" ],
 | 
			
		||||
            "TariffStep038"  : [ "08:00", "120000",  "TariffStep039" ],
 | 
			
		||||
            "TariffStep039"  : [ "09:00", "120000",  "TariffStep0310"],
 | 
			
		||||
            "TariffStep0310" : [ "10:00", "120000",  "TariffStep0311"],
 | 
			
		||||
            "TariffStep0311" : [ "11:00", "120000",  "TariffStep0312"],
 | 
			
		||||
            "TariffStep0312" : [ "12:00", "120000",  "TariffStep0313"],
 | 
			
		||||
            "TariffStep0313" : [ "13:00", "120000",  "TariffStep0314"],
 | 
			
		||||
            "TariffStep0314" : [ "14:00", "120000",  "TariffStep0315"],
 | 
			
		||||
            "TariffStep0315" : [ "15:00", "120000",  "TariffStep0316"],
 | 
			
		||||
            "TariffStep0316" : [ "16:00", "120000",  "TariffStep0317"],
 | 
			
		||||
            "TariffStep0317" : [ "17:00", "120000",  "TariffStep0318"],
 | 
			
		||||
            "TariffStep0318" : [ "18:00", "120000",  "TariffStep0319"],
 | 
			
		||||
            "TariffStep0319" : [ "19:00", "120000",  "TariffStep0320"],
 | 
			
		||||
            "TariffStep0320" : [ "20:00", "120000",  "TariffStep0321"],
 | 
			
		||||
            "TariffStep0321" : [ "21:00", "120000",  "TariffStep0322"],
 | 
			
		||||
            "TariffStep0322" : [ "22:00", "120000",  "TariffStep0323"],
 | 
			
		||||
            "TariffStep0323" : [ "23:00", "120000",  "TariffStep040" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep040"  : [ "00:00", "120000",  "TariffStep041" ],
 | 
			
		||||
            "TariffStep041"  : [ "01:00", "120000",  "TariffStep042" ],
 | 
			
		||||
            "TariffStep042"  : [ "02:00", "120000",  "TariffStep043" ],
 | 
			
		||||
            "TariffStep043"  : [ "03:00", "120000",  "TariffStep044" ],
 | 
			
		||||
            "TariffStep044"  : [ "04:00", "120000",  "TariffStep045" ],
 | 
			
		||||
            "TariffStep045"  : [ "05:00", "120000",  "TariffStep046" ],
 | 
			
		||||
            "TariffStep046"  : [ "06:00", "120000",  "TariffStep047" ],
 | 
			
		||||
            "TariffStep047"  : [ "07:00", "120000",  "TariffStep048" ],
 | 
			
		||||
            "TariffStep048"  : [ "08:00", "120000",  "TariffStep049" ],
 | 
			
		||||
            "TariffStep049"  : [ "09:00", "120000",  "TariffStep0410"],
 | 
			
		||||
            "TariffStep0410" : [ "10:00", "120000",  "TariffStep0411"],
 | 
			
		||||
            "TariffStep0411" : [ "11:00", "120000",  "TariffStep0412"],
 | 
			
		||||
            "TariffStep0412" : [ "12:00", "120000",  "TariffStep0413"],
 | 
			
		||||
            "TariffStep0413" : [ "13:00", "120000",  "TariffStep0414"],
 | 
			
		||||
            "TariffStep0414" : [ "14:00", "120000",  "TariffStep0415"],
 | 
			
		||||
            "TariffStep0415" : [ "15:00", "120000",  "TariffStep0416"],
 | 
			
		||||
            "TariffStep0416" : [ "16:00", "120000",  "TariffStep0417"],
 | 
			
		||||
            "TariffStep0417" : [ "17:00", "120000",  "TariffStep0418"],
 | 
			
		||||
            "TariffStep0418" : [ "18:00", "120000",  "TariffStep0419"],
 | 
			
		||||
            "TariffStep0419" : [ "19:00", "120000",  "TariffStep0420"],
 | 
			
		||||
            "TariffStep0420" : [ "20:00", "120000",  "TariffStep0421"],
 | 
			
		||||
            "TariffStep0421" : [ "21:00", "120000",  "TariffStep0422"],
 | 
			
		||||
            "TariffStep0422" : [ "22:00", "120000",  "TariffStep0423"],
 | 
			
		||||
            "TariffStep0423" : [ "23:00", "120000",  "TariffStep050" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep050"  : [ "00:00", "120000",  "TariffStep051" ],
 | 
			
		||||
            "TariffStep051"  : [ "01:00", "120000",  "TariffStep052" ],
 | 
			
		||||
            "TariffStep052"  : [ "02:00", "120000",  "TariffStep053" ],
 | 
			
		||||
            "TariffStep053"  : [ "03:00", "120000",  "TariffStep054" ],
 | 
			
		||||
            "TariffStep054"  : [ "04:00", "120000",  "TariffStep055" ],
 | 
			
		||||
            "TariffStep055"  : [ "05:00", "120000",  "TariffStep056" ],
 | 
			
		||||
            "TariffStep056"  : [ "06:00", "120000",  "TariffStep057" ],
 | 
			
		||||
            "TariffStep057"  : [ "07:00", "120000",  "TariffStep058" ],
 | 
			
		||||
            "TariffStep058"  : [ "08:00", "120000",  "TariffStep059" ],
 | 
			
		||||
            "TariffStep059"  : [ "09:00", "120000",  "TariffStep0510"],
 | 
			
		||||
            "TariffStep0510" : [ "10:00", "120000",  "TariffStep0511"],
 | 
			
		||||
            "TariffStep0511" : [ "11:00", "120000",  "TariffStep0512"],
 | 
			
		||||
            "TariffStep0512" : [ "12:00", "120000",  "TariffStep0513"],
 | 
			
		||||
            "TariffStep0513" : [ "13:00", "120000",  "TariffStep0514"],
 | 
			
		||||
            "TariffStep0514" : [ "14:00", "120000",  "TariffStep0515"],
 | 
			
		||||
            "TariffStep0515" : [ "15:00", "120000",  "TariffStep0516"],
 | 
			
		||||
            "TariffStep0516" : [ "16:00", "120000",  "TariffStep0517"],
 | 
			
		||||
            "TariffStep0517" : [ "17:00", "120000",  "TariffStep0518"],
 | 
			
		||||
            "TariffStep0518" : [ "18:00", "120000",  "TariffStep0519"],
 | 
			
		||||
            "TariffStep0519" : [ "19:00", "120000",  "TariffStep0520"],
 | 
			
		||||
            "TariffStep0520" : [ "20:00", "120000",  "TariffStep0521"],
 | 
			
		||||
            "TariffStep0521" : [ "21:00", "120000",  "TariffStep0522"],
 | 
			
		||||
            "TariffStep0522" : [ "22:00", "120000",  "TariffStep0523"],
 | 
			
		||||
            "TariffStep0523" : [ "23:00", "120000",  "TariffStep060" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep060"  : [ "00:00", "120000",  "TariffStep061" ],
 | 
			
		||||
            "TariffStep061"  : [ "01:00", "120000",  "TariffStep062" ],
 | 
			
		||||
            "TariffStep062"  : [ "02:00", "120000",  "TariffStep063" ],
 | 
			
		||||
            "TariffStep063"  : [ "03:00", "120000",  "TariffStep064" ],
 | 
			
		||||
            "TariffStep064"  : [ "04:00", "120000",  "TariffStep065" ],
 | 
			
		||||
            "TariffStep065"  : [ "05:00", "120000",  "TariffStep066" ],
 | 
			
		||||
            "TariffStep066"  : [ "06:00", "120000",  "TariffStep067" ],
 | 
			
		||||
            "TariffStep067"  : [ "07:00", "120000",  "TariffStep068" ],
 | 
			
		||||
            "TariffStep068"  : [ "08:00", "120000",  "TariffStep069" ],
 | 
			
		||||
            "TariffStep069"  : [ "09:00", "120000",  "TariffStep0610"],
 | 
			
		||||
            "TariffStep0610" : [ "10:00", "120000",  "TariffStep0611"],
 | 
			
		||||
            "TariffStep0611" : [ "11:00", "120000",  "TariffStep0612"],
 | 
			
		||||
            "TariffStep0612" : [ "12:00", "120000",  "TariffStep0613"],
 | 
			
		||||
            "TariffStep0613" : [ "13:00", "120000",  "TariffStep0614"],
 | 
			
		||||
            "TariffStep0614" : [ "14:00", "120000",  "TariffStep0615"],
 | 
			
		||||
            "TariffStep0615" : [ "15:00", "120000",  "TariffStep0616"],
 | 
			
		||||
            "TariffStep0616" : [ "16:00", "120000",  "TariffStep0617"],
 | 
			
		||||
            "TariffStep0617" : [ "17:00", "120000",  "TariffStep0618"],
 | 
			
		||||
            "TariffStep0618" : [ "18:00", "120000",  "TariffStep0619"],
 | 
			
		||||
            "TariffStep0619" : [ "19:00", "120000",  "TariffStep0620"],
 | 
			
		||||
            "TariffStep0620" : [ "20:00", "120000",  "TariffStep0621"],
 | 
			
		||||
            "TariffStep0621" : [ "21:00", "120000",  "TariffStep0622"],
 | 
			
		||||
            "TariffStep0622" : [ "22:00", "120000",  "TariffStep0623"],
 | 
			
		||||
            "TariffStep0623" : [ "23:00", "120000",  "TariffStep100" ]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "week2" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep100"  : [ "00:00", "120000",  "TariffStep101" ],
 | 
			
		||||
            "TariffStep101"  : [ "01:00", "120000",  "TariffStep102" ],
 | 
			
		||||
            "TariffStep102"  : [ "02:00", "120000",  "TariffStep103" ],
 | 
			
		||||
            "TariffStep103"  : [ "03:00", "120000",  "TariffStep104" ],
 | 
			
		||||
            "TariffStep104"  : [ "04:00", "120000",  "TariffStep105" ],
 | 
			
		||||
            "TariffStep105"  : [ "05:00", "120000",  "TariffStep106" ],
 | 
			
		||||
            "TariffStep106"  : [ "06:00", "120000",  "TariffStep107" ],
 | 
			
		||||
            "TariffStep107"  : [ "07:00", "120000",  "TariffStep108" ],
 | 
			
		||||
            "TariffStep108"  : [ "08:00", "120000",  "TariffStep109" ],
 | 
			
		||||
            "TariffStep109"  : [ "09:00", "120000",  "TariffStep1010"],
 | 
			
		||||
            "TariffStep1010" : [ "10:00", "120000",  "TariffStep1011"],
 | 
			
		||||
            "TariffStep1011" : [ "11:00", "120000",  "TariffStep1012"],
 | 
			
		||||
            "TariffStep1012" : [ "12:00", "120000",  "TariffStep1013"],
 | 
			
		||||
            "TariffStep1013" : [ "13:00", "120000",  "TariffStep1014"],
 | 
			
		||||
            "TariffStep1014" : [ "14:00", "120000",  "TariffStep1015"],
 | 
			
		||||
            "TariffStep1015" : [ "15:00", "120000",  "TariffStep1016"],
 | 
			
		||||
            "TariffStep1016" : [ "16:00", "120000",  "TariffStep1017"],
 | 
			
		||||
            "TariffStep1017" : [ "17:00", "120000",  "TariffStep1018"],
 | 
			
		||||
            "TariffStep1018" : [ "18:00", "120000",  "TariffStep1019"],
 | 
			
		||||
            "TariffStep1019" : [ "19:00", "120000",  "TariffStep1020"],
 | 
			
		||||
            "TariffStep1020" : [ "20:00", "120000",  "TariffStep1021"],
 | 
			
		||||
            "TariffStep1021" : [ "21:00", "120000",  "TariffStep1022"],
 | 
			
		||||
            "TariffStep1022" : [ "22:00", "120000",  "TariffStep1023"],
 | 
			
		||||
            "TariffStep1023" : [ "23:00", "120000",  "TariffStep110" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep110"  : [ "00:00", "120000",  "TariffStep111" ],
 | 
			
		||||
            "TariffStep111"  : [ "01:00", "120000",  "TariffStep112" ],
 | 
			
		||||
            "TariffStep112"  : [ "02:00", "120000",  "TariffStep113" ],
 | 
			
		||||
            "TariffStep113"  : [ "03:00", "120000",  "TariffStep114" ],
 | 
			
		||||
            "TariffStep114"  : [ "04:00", "120000",  "TariffStep115" ],
 | 
			
		||||
            "TariffStep115"  : [ "05:00", "120000",  "TariffStep116" ],
 | 
			
		||||
            "TariffStep116"  : [ "06:00", "120000",  "TariffStep117" ],
 | 
			
		||||
            "TariffStep117"  : [ "07:00", "120000",  "TariffStep118" ],
 | 
			
		||||
            "TariffStep118"  : [ "08:00", "120000",  "TariffStep119" ],
 | 
			
		||||
            "TariffStep119"  : [ "09:00", "120000",  "TariffStep1110"],
 | 
			
		||||
            "TariffStep1110" : [ "10:00", "120000",  "TariffStep1111"],
 | 
			
		||||
            "TariffStep1111" : [ "11:00", "120000",  "TariffStep1112"],
 | 
			
		||||
            "TariffStep1112" : [ "12:00", "120000",  "TariffStep1113"],
 | 
			
		||||
            "TariffStep1113" : [ "13:00", "120000",  "TariffStep1114"],
 | 
			
		||||
            "TariffStep1114" : [ "14:00", "120000",  "TariffStep1115"],
 | 
			
		||||
            "TariffStep1115" : [ "15:00", "120000",  "TariffStep1116"],
 | 
			
		||||
            "TariffStep1116" : [ "16:00", "120000",  "TariffStep1117"],
 | 
			
		||||
            "TariffStep1117" : [ "17:00", "120000",  "TariffStep1118"],
 | 
			
		||||
            "TariffStep1118" : [ "18:00", "120000",  "TariffStep1119"],
 | 
			
		||||
            "TariffStep1119" : [ "19:00", "120000",  "TariffStep1120"],
 | 
			
		||||
            "TariffStep1120" : [ "20:00", "120000",  "TariffStep1121"],
 | 
			
		||||
            "TariffStep1121" : [ "21:00", "120000",  "TariffStep1122"],
 | 
			
		||||
            "TariffStep1122" : [ "22:00", "120000",  "TariffStep1123"],
 | 
			
		||||
            "TariffStep1123" : [ "23:00", "120000",  "TariffStep120" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep120"  : [ "00:00", "120000",  "TariffStep121" ],
 | 
			
		||||
            "TariffStep121"  : [ "01:00", "120000",  "TariffStep122" ],
 | 
			
		||||
            "TariffStep122"  : [ "02:00", "120000",  "TariffStep123" ],
 | 
			
		||||
            "TariffStep123"  : [ "03:00", "120000",  "TariffStep124" ],
 | 
			
		||||
            "TariffStep124"  : [ "04:00", "120000",  "TariffStep125" ],
 | 
			
		||||
            "TariffStep125"  : [ "05:00", "120000",  "TariffStep126" ],
 | 
			
		||||
            "TariffStep126"  : [ "06:00", "120000",  "TariffStep127" ],
 | 
			
		||||
            "TariffStep127"  : [ "07:00", "120000",  "TariffStep128" ],
 | 
			
		||||
            "TariffStep128"  : [ "08:00", "120000",  "TariffStep129" ],
 | 
			
		||||
            "TariffStep129"  : [ "09:00", "120000",  "TariffStep1210"],
 | 
			
		||||
            "TariffStep1210" : [ "10:00", "120000",  "TariffStep1211"],
 | 
			
		||||
            "TariffStep1211" : [ "11:00", "120000",  "TariffStep1212"],
 | 
			
		||||
            "TariffStep1212" : [ "12:00", "120000",  "TariffStep1213"],
 | 
			
		||||
            "TariffStep1213" : [ "13:00", "120000",  "TariffStep1214"],
 | 
			
		||||
            "TariffStep1214" : [ "14:00", "120000",  "TariffStep1215"],
 | 
			
		||||
            "TariffStep1215" : [ "15:00", "120000",  "TariffStep1216"],
 | 
			
		||||
            "TariffStep1216" : [ "16:00", "120000",  "TariffStep1217"],
 | 
			
		||||
            "TariffStep1217" : [ "17:00", "120000",  "TariffStep1218"],
 | 
			
		||||
            "TariffStep1218" : [ "18:00", "120000",  "TariffStep1219"],
 | 
			
		||||
            "TariffStep1219" : [ "19:00", "120000",  "TariffStep1220"],
 | 
			
		||||
            "TariffStep1220" : [ "20:00", "120000",  "TariffStep1221"],
 | 
			
		||||
            "TariffStep1221" : [ "21:00", "120000",  "TariffStep1222"],
 | 
			
		||||
            "TariffStep1222" : [ "22:00", "120000",  "TariffStep1223"],
 | 
			
		||||
            "TariffStep1223" : [ "23:00", "120000",  "TariffStep130" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep130"  : [ "00:00", "120000",  "TariffStep131" ],
 | 
			
		||||
            "TariffStep131"  : [ "01:00", "120000",  "TariffStep132" ],
 | 
			
		||||
            "TariffStep132"  : [ "02:00", "120000",  "TariffStep133" ],
 | 
			
		||||
            "TariffStep133"  : [ "03:00", "120000",  "TariffStep134" ],
 | 
			
		||||
            "TariffStep134"  : [ "04:00", "120000",  "TariffStep135" ],
 | 
			
		||||
            "TariffStep135"  : [ "05:00", "120000",  "TariffStep136" ],
 | 
			
		||||
            "TariffStep136"  : [ "06:00", "120000",  "TariffStep137" ],
 | 
			
		||||
            "TariffStep137"  : [ "07:00", "120000",  "TariffStep138" ],
 | 
			
		||||
            "TariffStep138"  : [ "08:00", "120000",  "TariffStep139" ],
 | 
			
		||||
            "TariffStep139"  : [ "09:00", "120000",  "TariffStep1310"],
 | 
			
		||||
            "TariffStep1310" : [ "10:00", "120000",  "TariffStep1311"],
 | 
			
		||||
            "TariffStep1311" : [ "11:00", "120000",  "TariffStep1312"],
 | 
			
		||||
            "TariffStep1312" : [ "12:00", "120000",  "TariffStep1313"],
 | 
			
		||||
            "TariffStep1313" : [ "13:00", "120000",  "TariffStep1314"],
 | 
			
		||||
            "TariffStep1314" : [ "14:00", "120000",  "TariffStep1315"],
 | 
			
		||||
            "TariffStep1315" : [ "15:00", "120000",  "TariffStep1316"],
 | 
			
		||||
            "TariffStep1316" : [ "16:00", "120000",  "TariffStep1317"],
 | 
			
		||||
            "TariffStep1317" : [ "17:00", "120000",  "TariffStep1318"],
 | 
			
		||||
            "TariffStep1318" : [ "18:00", "120000",  "TariffStep1319"],
 | 
			
		||||
            "TariffStep1319" : [ "19:00", "120000",  "TariffStep1320"],
 | 
			
		||||
            "TariffStep1320" : [ "20:00", "120000",  "TariffStep1321"],
 | 
			
		||||
            "TariffStep1321" : [ "21:00", "120000",  "TariffStep1322"],
 | 
			
		||||
            "TariffStep1322" : [ "22:00", "120000",  "TariffStep1323"],
 | 
			
		||||
            "TariffStep1323" : [ "23:00", "120000",  "TariffStep140" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep140"  : [ "00:00", "120000",  "TariffStep141" ],
 | 
			
		||||
            "TariffStep141"  : [ "01:00", "120000",  "TariffStep142" ],
 | 
			
		||||
            "TariffStep142"  : [ "02:00", "120000",  "TariffStep143" ],
 | 
			
		||||
            "TariffStep143"  : [ "03:00", "120000",  "TariffStep144" ],
 | 
			
		||||
            "TariffStep144"  : [ "04:00", "120000",  "TariffStep145" ],
 | 
			
		||||
            "TariffStep145"  : [ "05:00", "120000",  "TariffStep146" ],
 | 
			
		||||
            "TariffStep146"  : [ "06:00", "120000",  "TariffStep147" ],
 | 
			
		||||
            "TariffStep147"  : [ "07:00", "120000",  "TariffStep148" ],
 | 
			
		||||
            "TariffStep148"  : [ "08:00", "120000",  "TariffStep149" ],
 | 
			
		||||
            "TariffStep149"  : [ "09:00", "120000",  "TariffStep1410" ],
 | 
			
		||||
            "TariffStep1410" : [ "10:00", "120000",  "TariffStep1411" ],
 | 
			
		||||
            "TariffStep1411" : [ "11:00", "120000",  "TariffStep1412" ],
 | 
			
		||||
            "TariffStep1412" : [ "12:00", "120000",  "TariffStep1413" ],
 | 
			
		||||
            "TariffStep1413" : [ "13:00", "120000",  "TariffStep1414" ],
 | 
			
		||||
            "TariffStep1414" : [ "14:00", "120000",  "TariffStep1415" ],
 | 
			
		||||
            "TariffStep1415" : [ "15:00", "120000",  "TariffStep1416"],
 | 
			
		||||
            "TariffStep1416" : [ "16:00", "120000",  "TariffStep1417"],
 | 
			
		||||
            "TariffStep1417" : [ "17:00", "120000",  "TariffStep1418"],
 | 
			
		||||
            "TariffStep1418" : [ "18:00", "120000",  "TariffStep1419"],
 | 
			
		||||
            "TariffStep1419" : [ "19:00", "120000",  "TariffStep1420"],
 | 
			
		||||
            "TariffStep1420" : [ "20:00", "120000",  "TariffStep1421" ],
 | 
			
		||||
            "TariffStep1421" : [ "21:00", "120000",  "TariffStep1422" ],
 | 
			
		||||
            "TariffStep1422" : [ "22:00", "120000",  "TariffStep1423" ],
 | 
			
		||||
            "TariffStep1423" : [ "23:00", "120000",  "TariffStep150" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep150"  : [ "00:00", "120000",  "TariffStep151" ],
 | 
			
		||||
            "TariffStep151"  : [ "01:00", "120000",  "TariffStep152" ],
 | 
			
		||||
            "TariffStep152"  : [ "02:00", "120000",  "TariffStep153" ],
 | 
			
		||||
            "TariffStep153"  : [ "03:00", "120000",  "TariffStep154" ],
 | 
			
		||||
            "TariffStep154"  : [ "04:00", "120000",  "TariffStep155" ],
 | 
			
		||||
            "TariffStep155"  : [ "05:00", "120000",  "TariffStep156" ],
 | 
			
		||||
            "TariffStep156"  : [ "06:00", "120000",  "TariffStep157" ],
 | 
			
		||||
            "TariffStep157"  : [ "07:00", "120000",  "TariffStep158" ],
 | 
			
		||||
            "TariffStep158"  : [ "08:00", "120000",  "TariffStep159" ],
 | 
			
		||||
            "TariffStep159"  : [ "09:00", "120000",  "TariffStep1510"],
 | 
			
		||||
            "TariffStep1510" : [ "10:00", "120000",  "TariffStep1511"],
 | 
			
		||||
            "TariffStep1511" : [ "11:00", "120000",  "TariffStep1512"],
 | 
			
		||||
            "TariffStep1512" : [ "12:00", "120000",  "TariffStep1513"],
 | 
			
		||||
            "TariffStep1513" : [ "13:00", "120000",  "TariffStep1514"],
 | 
			
		||||
            "TariffStep1514" : [ "14:00", "120000",  "TariffStep1515"],
 | 
			
		||||
            "TariffStep1515" : [ "15:00", "120000",  "TariffStep1516"],
 | 
			
		||||
            "TariffStep1516" : [ "16:00", "120000",  "TariffStep1517"],
 | 
			
		||||
            "TariffStep1517" : [ "17:00", "120000",  "TariffStep1518"],
 | 
			
		||||
            "TariffStep1518" : [ "18:00", "120000",  "TariffStep1519"],
 | 
			
		||||
            "TariffStep1519" : [ "19:00", "120000",  "TariffStep1520"],
 | 
			
		||||
            "TariffStep1520" : [ "20:00", "120000",  "TariffStep1521"],
 | 
			
		||||
            "TariffStep1521" : [ "21:00", "120000",  "TariffStep1522"],
 | 
			
		||||
            "TariffStep1522" : [ "22:00", "120000",  "TariffStep1523"],
 | 
			
		||||
            "TariffStep1523" : [ "23:00", "120000",  "TariffStep160" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep160"  : [ "00:00", "120000",  "TariffStep161" ],
 | 
			
		||||
            "TariffStep161"  : [ "01:00", "120000",  "TariffStep162" ],
 | 
			
		||||
            "TariffStep162"  : [ "02:00", "120000",  "TariffStep163" ],
 | 
			
		||||
            "TariffStep163"  : [ "03:00", "120000",  "TariffStep164" ],
 | 
			
		||||
            "TariffStep164"  : [ "04:00", "120000",  "TariffStep165" ],
 | 
			
		||||
            "TariffStep165"  : [ "05:00", "120000",  "TariffStep166" ],
 | 
			
		||||
            "TariffStep166"  : [ "06:00", "120000",  "TariffStep167" ],
 | 
			
		||||
            "TariffStep167"  : [ "07:00", "120000",  "TariffStep168" ],
 | 
			
		||||
            "TariffStep168"  : [ "08:00", "120000",  "TariffStep169" ],
 | 
			
		||||
            "TariffStep169"  : [ "09:00", "120000",  "TariffStep1610"],
 | 
			
		||||
            "TariffStep1610" : [ "10:00", "120000",  "TariffStep1611"],
 | 
			
		||||
            "TariffStep1611" : [ "11:00", "120000",  "TariffStep1612"],
 | 
			
		||||
            "TariffStep1612" : [ "12:00", "120000",  "TariffStep1613"],
 | 
			
		||||
            "TariffStep1613" : [ "13:00", "120000",  "TariffStep1614"],
 | 
			
		||||
            "TariffStep1614" : [ "14:00", "120000",  "TariffStep1615"],
 | 
			
		||||
            "TariffStep1615" : [ "15:00", "120000",  "TariffStep1616"],
 | 
			
		||||
            "TariffStep1616" : [ "16:00", "120000",  "TariffStep1617"],
 | 
			
		||||
            "TariffStep1617" : [ "17:00", "120000",  "TariffStep1618"],
 | 
			
		||||
            "TariffStep1618" : [ "18:00", "120000",  "TariffStep1619"],
 | 
			
		||||
            "TariffStep1619" : [ "19:00", "120000",  "TariffStep1620"],
 | 
			
		||||
            "TariffStep1620" : [ "20:00", "120000",  "TariffStep1621"],
 | 
			
		||||
            "TariffStep1621" : [ "21:00", "120000",  "TariffStep1622"],
 | 
			
		||||
            "TariffStep1622" : [ "22:00", "120000",  "TariffStep1623"],
 | 
			
		||||
            "TariffStep1623" : [ "23:00", "120000",  "TariffStep200" ]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "week3" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep200"  : [ "00:00", "120000",  "TariffStep201" ],
 | 
			
		||||
            "TariffStep201"  : [ "01:00", "120000",  "TariffStep202" ],
 | 
			
		||||
            "TariffStep202"  : [ "02:00", "120000",  "TariffStep203" ],
 | 
			
		||||
            "TariffStep203"  : [ "03:00", "120000",  "TariffStep204" ],
 | 
			
		||||
            "TariffStep204"  : [ "04:00", "120000",  "TariffStep205" ],
 | 
			
		||||
            "TariffStep205"  : [ "05:00", "120000",  "TariffStep206" ],
 | 
			
		||||
            "TariffStep206"  : [ "06:00", "120000",  "TariffStep207" ],
 | 
			
		||||
            "TariffStep207"  : [ "07:00", "120000",  "TariffStep208" ],
 | 
			
		||||
            "TariffStep208"  : [ "08:00", "120000",  "TariffStep209" ],
 | 
			
		||||
            "TariffStep209"  : [ "09:00", "120000",  "TariffStep2010"],
 | 
			
		||||
            "TariffStep2010" : [ "10:00", "120000",  "TariffStep2011"],
 | 
			
		||||
            "TariffStep2011" : [ "11:00", "120000",  "TariffStep2012"],
 | 
			
		||||
            "TariffStep2012" : [ "12:00", "120000",  "TariffStep2013"],
 | 
			
		||||
            "TariffStep2013" : [ "13:00", "120000",  "TariffStep2014"],
 | 
			
		||||
            "TariffStep2014" : [ "14:00", "120000",  "TariffStep2015"],
 | 
			
		||||
            "TariffStep2015" : [ "15:00", "120000",  "TariffStep2016"],
 | 
			
		||||
            "TariffStep2016" : [ "16:00", "120000",  "TariffStep2017"],
 | 
			
		||||
            "TariffStep2017" : [ "17:00", "120000",  "TariffStep2018"],
 | 
			
		||||
            "TariffStep2018" : [ "18:00", "120000",  "TariffStep2019"],
 | 
			
		||||
            "TariffStep2019" : [ "19:00", "120000",  "TariffStep2020"],
 | 
			
		||||
            "TariffStep2020" : [ "20:00", "120000",  "TariffStep2021"],
 | 
			
		||||
            "TariffStep2021" : [ "21:00", "120000",  "TariffStep2022"],
 | 
			
		||||
            "TariffStep2022" : [ "22:00", "120000",  "TariffStep2023"],
 | 
			
		||||
            "TariffStep2023" : [ "23:00", "120000",  "TariffStep210" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep210"  : [ "00:00", "120000",  "TariffStep211" ],
 | 
			
		||||
            "TariffStep211"  : [ "01:00", "120000",  "TariffStep212" ],
 | 
			
		||||
            "TariffStep212"  : [ "02:00", "120000",  "TariffStep213" ],
 | 
			
		||||
            "TariffStep213"  : [ "03:00", "120000",  "TariffStep214" ],
 | 
			
		||||
            "TariffStep214"  : [ "04:00", "120000",  "TariffStep215" ],
 | 
			
		||||
            "TariffStep215"  : [ "05:00", "120000",  "TariffStep216" ],
 | 
			
		||||
            "TariffStep216"  : [ "06:00", "120000",  "TariffStep217" ],
 | 
			
		||||
            "TariffStep217"  : [ "07:00", "120000",  "TariffStep218" ],
 | 
			
		||||
            "TariffStep218"  : [ "08:00", "120000",  "TariffStep219" ],
 | 
			
		||||
            "TariffStep219"  : [ "09:00", "120000",  "TariffStep2110"],
 | 
			
		||||
            "TariffStep2110" : [ "10:00", "120000",  "TariffStep2111"],
 | 
			
		||||
            "TariffStep2111" : [ "11:00", "120000",  "TariffStep2112"],
 | 
			
		||||
            "TariffStep2112" : [ "12:00", "120000",  "TariffStep2113"],
 | 
			
		||||
            "TariffStep2113" : [ "13:00", "120000",  "TariffStep2114"],
 | 
			
		||||
            "TariffStep2114" : [ "14:00", "120000",  "TariffStep2115"],
 | 
			
		||||
            "TariffStep2115" : [ "15:00", "120000",  "TariffStep2116"],
 | 
			
		||||
            "TariffStep2116" : [ "16:00", "120000",  "TariffStep2117"],
 | 
			
		||||
            "TariffStep2117" : [ "17:00", "120000",  "TariffStep2118"],
 | 
			
		||||
            "TariffStep2118" : [ "18:00", "120000",  "TariffStep2119"],
 | 
			
		||||
            "TariffStep2119" : [ "19:00", "120000",  "TariffStep2120"],
 | 
			
		||||
            "TariffStep2120" : [ "20:00", "120000",  "TariffStep2121"],
 | 
			
		||||
            "TariffStep2121" : [ "21:00", "120000",  "TariffStep2122"],
 | 
			
		||||
            "TariffStep2122" : [ "22:00", "120000",  "TariffStep2123"],
 | 
			
		||||
            "TariffStep2123" : [ "23:00", "120000",  "TariffStep220" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep220"  : [ "00:00", "120000",  "TariffStep221" ],
 | 
			
		||||
            "TariffStep221"  : [ "01:00", "120000",  "TariffStep222" ],
 | 
			
		||||
            "TariffStep222"  : [ "02:00", "120000",  "TariffStep223" ],
 | 
			
		||||
            "TariffStep223"  : [ "03:00", "120000",  "TariffStep224" ],
 | 
			
		||||
            "TariffStep224"  : [ "04:00", "120000",  "TariffStep225" ],
 | 
			
		||||
            "TariffStep225"  : [ "05:00", "120000",  "TariffStep226" ],
 | 
			
		||||
            "TariffStep226"  : [ "06:00", "120000",  "TariffStep227" ],
 | 
			
		||||
            "TariffStep227"  : [ "07:00", "120000",  "TariffStep228" ],
 | 
			
		||||
            "TariffStep228"  : [ "08:00", "120000",  "TariffStep229" ],
 | 
			
		||||
            "TariffStep229"  : [ "09:00", "120000",  "TariffStep2210"],
 | 
			
		||||
            "TariffStep2210" : [ "10:00", "120000",  "TariffStep2211"],
 | 
			
		||||
            "TariffStep2211" : [ "11:00", "120000",  "TariffStep2212"],
 | 
			
		||||
            "TariffStep2212" : [ "12:00", "120000",  "TariffStep2213"],
 | 
			
		||||
            "TariffStep2213" : [ "13:00", "120000",  "TariffStep2214"],
 | 
			
		||||
            "TariffStep2214" : [ "14:00", "120000",  "TariffStep2215"],
 | 
			
		||||
            "TariffStep2215" : [ "15:00", "120000",  "TariffStep2216"],
 | 
			
		||||
            "TariffStep2216" : [ "16:00", "120000",  "TariffStep2217"],
 | 
			
		||||
            "TariffStep2217" : [ "17:00", "120000",  "TariffStep2218"],
 | 
			
		||||
            "TariffStep2218" : [ "18:00", "120000",  "TariffStep2219"],
 | 
			
		||||
            "TariffStep2219" : [ "19:00", "120000",  "TariffStep2220"],
 | 
			
		||||
            "TariffStep2220" : [ "20:00", "120000",  "TariffStep2221"],
 | 
			
		||||
            "TariffStep2221" : [ "21:00", "120000",  "TariffStep2222"],
 | 
			
		||||
            "TariffStep2222" : [ "22:00", "120000",  "TariffStep2223"],
 | 
			
		||||
            "TariffStep2223" : [ "23:00", "120000",  "TariffStep230" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep230"  : [ "00:00", "120000",  "TariffStep231" ],
 | 
			
		||||
            "TariffStep231"  : [ "01:00", "120000",  "TariffStep232" ],
 | 
			
		||||
            "TariffStep232"  : [ "02:00", "120000",  "TariffStep233" ],
 | 
			
		||||
            "TariffStep233"  : [ "03:00", "120000",  "TariffStep234" ],
 | 
			
		||||
            "TariffStep234"  : [ "04:00", "120000",  "TariffStep235" ],
 | 
			
		||||
            "TariffStep235"  : [ "05:00", "120000",  "TariffStep236" ],
 | 
			
		||||
            "TariffStep236"  : [ "06:00", "120000",  "TariffStep237" ],
 | 
			
		||||
            "TariffStep237"  : [ "07:00", "120000",  "TariffStep238" ],
 | 
			
		||||
            "TariffStep238"  : [ "08:00", "120000",  "TariffStep239" ],
 | 
			
		||||
            "TariffStep239"  : [ "09:00", "120000",  "TariffStep2310"],
 | 
			
		||||
            "TariffStep2310" : [ "10:00", "120000",  "TariffStep2311"],
 | 
			
		||||
            "TariffStep2311" : [ "11:00", "120000",  "TariffStep2312"],
 | 
			
		||||
            "TariffStep2312" : [ "12:00", "120000",  "TariffStep2313"],
 | 
			
		||||
            "TariffStep2313" : [ "13:00", "120000",  "TariffStep2314"],
 | 
			
		||||
            "TariffStep2314" : [ "14:00", "120000",  "TariffStep2315"],
 | 
			
		||||
            "TariffStep2315" : [ "15:00", "120000",  "TariffStep2316"],
 | 
			
		||||
            "TariffStep2316" : [ "16:00", "120000",  "TariffStep2317"],
 | 
			
		||||
            "TariffStep2317" : [ "17:00", "120000",  "TariffStep2318"],
 | 
			
		||||
            "TariffStep2318" : [ "18:00", "120000",  "TariffStep2319"],
 | 
			
		||||
            "TariffStep2319" : [ "19:00", "120000",  "TariffStep2320"],
 | 
			
		||||
            "TariffStep2320" : [ "20:00", "120000",  "TariffStep2321"],
 | 
			
		||||
            "TariffStep2321" : [ "21:00", "120000",  "TariffStep2322"],
 | 
			
		||||
            "TariffStep2322" : [ "22:00", "120000",  "TariffStep2323"],
 | 
			
		||||
            "TariffStep2323" : [ "23:00", "120000",  "TariffStep240" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep240"  : [ "00:00", "120000",  "TariffStep241" ],
 | 
			
		||||
            "TariffStep241"  : [ "01:00", "120000",  "TariffStep242" ],
 | 
			
		||||
            "TariffStep242"  : [ "02:00", "120000",  "TariffStep243" ],
 | 
			
		||||
            "TariffStep243"  : [ "03:00", "120000",  "TariffStep244" ],
 | 
			
		||||
            "TariffStep244"  : [ "04:00", "120000",  "TariffStep245" ],
 | 
			
		||||
            "TariffStep245"  : [ "05:00", "120000",  "TariffStep246" ],
 | 
			
		||||
            "TariffStep246"  : [ "06:00", "120000",  "TariffStep247" ],
 | 
			
		||||
            "TariffStep247"  : [ "07:00", "120000",  "TariffStep248" ],
 | 
			
		||||
            "TariffStep248"  : [ "08:00", "120000",  "TariffStep249" ],
 | 
			
		||||
            "TariffStep249"  : [ "09:00", "120000",  "TariffStep2410"],
 | 
			
		||||
            "TariffStep2410" : [ "10:00", "120000",  "TariffStep2411"],
 | 
			
		||||
            "TariffStep2411" : [ "11:00", "120000",  "TariffStep2412"],
 | 
			
		||||
            "TariffStep2412" : [ "12:00", "120000",  "TariffStep2413"],
 | 
			
		||||
            "TariffStep2413" : [ "13:00", "120000",  "TariffStep2414"],
 | 
			
		||||
            "TariffStep2414" : [ "14:00", "120000",  "TariffStep2415"],
 | 
			
		||||
            "TariffStep2415" : [ "15:00", "120000",  "TariffStep2416"],
 | 
			
		||||
            "TariffStep2416" : [ "16:00", "120000",  "TariffStep2417"],
 | 
			
		||||
            "TariffStep2417" : [ "17:00", "120000",  "TariffStep2418"],
 | 
			
		||||
            "TariffStep2418" : [ "18:00", "120000",  "TariffStep2419"],
 | 
			
		||||
            "TariffStep2419" : [ "19:00", "120000",  "TariffStep2420"],
 | 
			
		||||
            "TariffStep2420" : [ "20:00", "120000",  "TariffStep2421"],
 | 
			
		||||
            "TariffStep2421" : [ "21:00", "120000",  "TariffStep2422"],
 | 
			
		||||
            "TariffStep2422" : [ "22:00", "120000",  "TariffStep2423"],
 | 
			
		||||
            "TariffStep2423" : [ "23:00", "120000",  "TariffStep250" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep250"  : [ "00:00", "120000",  "TariffStep251" ],
 | 
			
		||||
            "TariffStep251"  : [ "01:00", "120000",  "TariffStep252" ],
 | 
			
		||||
            "TariffStep252"  : [ "02:00", "120000",  "TariffStep253" ],
 | 
			
		||||
            "TariffStep253"  : [ "03:00", "120000",  "TariffStep254" ],
 | 
			
		||||
            "TariffStep254"  : [ "04:00", "120000",  "TariffStep255" ],
 | 
			
		||||
            "TariffStep255"  : [ "05:00", "120000",  "TariffStep256" ],
 | 
			
		||||
            "TariffStep256"  : [ "06:00", "120000",  "TariffStep257" ],
 | 
			
		||||
            "TariffStep257"  : [ "07:00", "120000",  "TariffStep258" ],
 | 
			
		||||
            "TariffStep258"  : [ "08:00", "120000",  "TariffStep259" ],
 | 
			
		||||
            "TariffStep259"  : [ "09:00", "120000",  "TariffStep2510"],
 | 
			
		||||
            "TariffStep2510" : [ "10:00", "120000",  "TariffStep2511"],
 | 
			
		||||
            "TariffStep2511" : [ "11:00", "120000",  "TariffStep2512"],
 | 
			
		||||
            "TariffStep2512" : [ "12:00", "120000",  "TariffStep2513"],
 | 
			
		||||
            "TariffStep2513" : [ "13:00", "120000",  "TariffStep2514"],
 | 
			
		||||
            "TariffStep2514" : [ "14:00", "120000",  "TariffStep2515"],
 | 
			
		||||
            "TariffStep2515" : [ "15:00", "120000",  "TariffStep2516"],
 | 
			
		||||
            "TariffStep2516" : [ "16:00", "120000",  "TariffStep2517"],
 | 
			
		||||
            "TariffStep2517" : [ "17:00", "120000",  "TariffStep2518"],
 | 
			
		||||
            "TariffStep2518" : [ "18:00", "120000",  "TariffStep2519"],
 | 
			
		||||
            "TariffStep2519" : [ "19:00", "120000",  "TariffStep2520"],
 | 
			
		||||
            "TariffStep2520" : [ "20:00", "120000",  "TariffStep2521"],
 | 
			
		||||
            "TariffStep2521" : [ "21:00", "120000",  "TariffStep2522"],
 | 
			
		||||
            "TariffStep2522" : [ "22:00", "120000",  "TariffStep2523"],
 | 
			
		||||
            "TariffStep2523" : [ "23:00", "120000",  "TariffStep260" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep260"  : [ "00:00", "120000",  "TariffStep261" ],
 | 
			
		||||
            "TariffStep261"  : [ "01:00", "120000",  "TariffStep262" ],
 | 
			
		||||
            "TariffStep262"  : [ "02:00", "120000",  "TariffStep263" ],
 | 
			
		||||
            "TariffStep263"  : [ "03:00", "120000",  "TariffStep264" ],
 | 
			
		||||
            "TariffStep264"  : [ "04:00", "120000",  "TariffStep265" ],
 | 
			
		||||
            "TariffStep265"  : [ "05:00", "120000",  "TariffStep266" ],
 | 
			
		||||
            "TariffStep266"  : [ "06:00", "120000",  "TariffStep267" ],
 | 
			
		||||
            "TariffStep267"  : [ "07:00", "120000",  "TariffStep268" ],
 | 
			
		||||
            "TariffStep268"  : [ "08:00", "120000",  "TariffStep269" ],
 | 
			
		||||
            "TariffStep269"  : [ "09:00", "120000",  "TariffStep2610"],
 | 
			
		||||
            "TariffStep2610" : [ "10:00", "120000",  "TariffStep2611"],
 | 
			
		||||
            "TariffStep2611" : [ "11:00", "120000",  "TariffStep2612"],
 | 
			
		||||
            "TariffStep2612" : [ "12:00", "120000",  "TariffStep2613"],
 | 
			
		||||
            "TariffStep2613" : [ "13:00", "120000",  "TariffStep2614"],
 | 
			
		||||
            "TariffStep2614" : [ "14:00", "120000",  "TariffStep2615"],
 | 
			
		||||
            "TariffStep2615" : [ "15:00", "120000",  "TariffStep2616"],
 | 
			
		||||
            "TariffStep2616" : [ "16:00", "120000",  "TariffStep2617"],
 | 
			
		||||
            "TariffStep2617" : [ "17:00", "120000",  "TariffStep2618"],
 | 
			
		||||
            "TariffStep2618" : [ "18:00", "120000",  "TariffStep2619"],
 | 
			
		||||
            "TariffStep2619" : [ "19:00", "120000",  "TariffStep2620"],
 | 
			
		||||
            "TariffStep2620" : [ "20:00", "120000",  "TariffStep2621"],
 | 
			
		||||
            "TariffStep2621" : [ "21:00", "120000",  "TariffStep2622"],
 | 
			
		||||
            "TariffStep2622" : [ "22:00", "120000",  "TariffStep2623"],
 | 
			
		||||
            "TariffStep2623" : [ "23:00", "120000",  "TariffStep000" ]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										557
									
								
								calculate_parking_tickets/erlangen.conf.bck
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										557
									
								
								calculate_parking_tickets/erlangen.conf.bck
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,557 @@
 | 
			
		||||
{
 | 
			
		||||
    "name":"test",
 | 
			
		||||
    "properties": [
 | 
			
		||||
    ],
 | 
			
		||||
    "week1" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep000"  : [ "00:00", "120000",  "TariffStep001" ],
 | 
			
		||||
            "TariffStep001"  : [ "01:00", "120000",  "TariffStep002" ],
 | 
			
		||||
            "TariffStep002"  : [ "02:00", "120000",  "TariffStep003" ],
 | 
			
		||||
            "TariffStep003"  : [ "03:00", "120000",  "TariffStep004" ],
 | 
			
		||||
            "TariffStep004"  : [ "04:00", "120000",  "TariffStep005" ],
 | 
			
		||||
            "TariffStep005"  : [ "05:00", "120000",  "TariffStep006" ],
 | 
			
		||||
            "TariffStep006"  : [ "06:00", "120000",  "TariffStep007" ],
 | 
			
		||||
            "TariffStep007"  : [ "07:00", "120000",  "TariffStep008" ],
 | 
			
		||||
            "TariffStep008"  : [ "08:00", "120000",  "TariffStep009" ],
 | 
			
		||||
            "TariffStep009"  : [ "09:00", "120000",  "TariffStep0010" ],
 | 
			
		||||
            "TariffStep0010" : [ "10:00", "120000",  "TariffStep0011" ],
 | 
			
		||||
            "TariffStep0011" : [ "11:00", "120000",  "TariffStep0012" ],
 | 
			
		||||
            "TariffStep0012" : [ "12:00", "120000",  "TariffStep0013" ],
 | 
			
		||||
            "TariffStep0013" : [ "13:00", "120000",  "TariffStep0014" ],
 | 
			
		||||
            "TariffStep0014" : [ "14:00", "120000",  "TariffStep0015" ],
 | 
			
		||||
            "TariffStep0015" : [ "15:00", "120000",  "TariffStep0016"],
 | 
			
		||||
            "TariffStep0016" : [ "16:00", "120000",  "TariffStep0017"],
 | 
			
		||||
            "TariffStep0017" : [ "17:00", "120000",  "TariffStep0018"],
 | 
			
		||||
            "TariffStep0018" : [ "18:00", "120000",  "TariffStep0019"],
 | 
			
		||||
            "TariffStep0019" : [ "19:00", "120000",  "TariffStep0020"],
 | 
			
		||||
            "TariffStep0020" : [ "20:00", "120000",  "TariffStep0021" ]
 | 
			
		||||
            "TariffStep0021" : [ "21:00", "120000",  "TariffStep0022" ]
 | 
			
		||||
            "TariffStep0022" : [ "22:00", "120000",  "TariffStep0023" ]
 | 
			
		||||
            "TariffStep0023" : [ "23:00", "120000",  "TariffStep010" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep010"  : [ "00:00", "120000",  "TariffStep011" ],
 | 
			
		||||
            "TariffStep011"  : [ "01:00", "120000",  "TariffStep012" ],
 | 
			
		||||
            "TariffStep012"  : [ "02:00", "120000",  "TariffStep013" ],
 | 
			
		||||
            "TariffStep013"  : [ "03:00", "120000",  "TariffStep014" ],
 | 
			
		||||
            "TariffStep014"  : [ "04:00", "120000",  "TariffStep015" ],
 | 
			
		||||
            "TariffStep015"  : [ "05:00", "120000",  "TariffStep016" ],
 | 
			
		||||
            "TariffStep016"  : [ "06:00", "120000",  "TariffStep017" ],
 | 
			
		||||
            "TariffStep017"  : [ "07:00", "120000",  "TariffStep018" ],
 | 
			
		||||
            "TariffStep018"  : [ "08:00", "120000",  "TariffStep019" ],
 | 
			
		||||
            "TariffStep019"  : [ "09:00", "120000",  "TariffStep0110" ],
 | 
			
		||||
            "TariffStep0110" : [ "10:00", "120000",  "TariffStep0111" ],
 | 
			
		||||
            "TariffStep0111" : [ "11:00", "120000",  "TariffStep0112" ],
 | 
			
		||||
            "TariffStep0112" : [ "12:00", "120000",  "TariffStep0113" ],
 | 
			
		||||
            "TariffStep0113" : [ "13:00", "120000",  "TariffStep0114" ],
 | 
			
		||||
            "TariffStep0114" : [ "14:00", "120000",  "TariffStep0115" ],
 | 
			
		||||
            "TariffStep0115" : [ "15:00", "120000",  "TariffStep0116"],
 | 
			
		||||
            "TariffStep0116" : [ "16:00", "120000",  "TariffStep0117"],
 | 
			
		||||
            "TariffStep0117" : [ "17:00", "120000",  "TariffStep0118"],
 | 
			
		||||
            "TariffStep0118" : [ "18:00", "120000",  "TariffStep0119"],
 | 
			
		||||
            "TariffStep0119" : [ "19:00", "120000",  "TariffStep0120"],
 | 
			
		||||
            "TariffStep0120" : [ "20:00", "120000",  "TariffStep0121" ]
 | 
			
		||||
            "TariffStep0121" : [ "21:00", "120000",  "TariffStep0122" ]
 | 
			
		||||
            "TariffStep0122" : [ "22:00", "120000",  "TariffStep0123" ]
 | 
			
		||||
            "TariffStep0123" : [ "23:00", "120000",  "TariffStep020" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep020"  : [ "00:00", "120000",  "TariffStep021" ],
 | 
			
		||||
            "TariffStep021"  : [ "01:00", "120000",  "TariffStep022" ],
 | 
			
		||||
            "TariffStep022"  : [ "02:00", "120000",  "TariffStep023" ],
 | 
			
		||||
            "TariffStep023"  : [ "03:00", "120000",  "TariffStep024" ],
 | 
			
		||||
            "TariffStep024"  : [ "04:00", "120000",  "TariffStep025" ],
 | 
			
		||||
            "TariffStep025"  : [ "05:00", "120000",  "TariffStep026" ],
 | 
			
		||||
            "TariffStep026"  : [ "06:00", "120000",  "TariffStep027" ],
 | 
			
		||||
            "TariffStep027"  : [ "07:00", "120000",  "TariffStep028" ],
 | 
			
		||||
            "TariffStep028"  : [ "08:00", "120000",  "TariffStep029" ],
 | 
			
		||||
            "TariffStep029"  : [ "09:00", "120000",  "TariffStep0210"],
 | 
			
		||||
            "TariffStep0210" : [ "10:00", "120000",  "TariffStep0211"],
 | 
			
		||||
            "TariffStep0211" : [ "11:00", "120000",  "TariffStep0212"],
 | 
			
		||||
            "TariffStep0212" : [ "12:00", "120000",  "TariffStep0213"],
 | 
			
		||||
            "TariffStep0213" : [ "13:00", "120000",  "TariffStep0214"],
 | 
			
		||||
            "TariffStep0214" : [ "14:00", "120000",  "TariffStep0215"],
 | 
			
		||||
            "TariffStep0215" : [ "15:00", "120000",  "TariffStep0216"],
 | 
			
		||||
            "TariffStep0216" : [ "16:00", "120000",  "TariffStep0217"],
 | 
			
		||||
            "TariffStep0217" : [ "17:00", "120000",  "TariffStep0218"],
 | 
			
		||||
            "TariffStep0218" : [ "18:00", "120000",  "TariffStep0219"],
 | 
			
		||||
            "TariffStep0219" : [ "19:00", "120000",  "TariffStep0220"],
 | 
			
		||||
            "TariffStep0220" : [ "20:00", "120000",  "TariffStep0221"]
 | 
			
		||||
            "TariffStep0221" : [ "21:00", "120000",  "TariffStep0222"]
 | 
			
		||||
            "TariffStep0222" : [ "22:00", "120000",  "TariffStep0223"]
 | 
			
		||||
            "TariffStep0223" : [ "23:00", "120000",  "TariffStep030" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep030"  : [ "00:00", "120000",  "TariffStep031" ],
 | 
			
		||||
            "TariffStep031"  : [ "01:00", "120000",  "TariffStep032" ],
 | 
			
		||||
            "TariffStep032"  : [ "02:00", "120000",  "TariffStep033" ],
 | 
			
		||||
            "TariffStep033"  : [ "03:00", "120000",  "TariffStep034" ],
 | 
			
		||||
            "TariffStep034"  : [ "04:00", "120000",  "TariffStep035" ],
 | 
			
		||||
            "TariffStep035"  : [ "05:00", "120000",  "TariffStep036" ],
 | 
			
		||||
            "TariffStep036"  : [ "06:00", "120000",  "TariffStep037" ],
 | 
			
		||||
            "TariffStep037"  : [ "07:00", "120000",  "TariffStep038" ],
 | 
			
		||||
            "TariffStep038"  : [ "08:00", "120000",  "TariffStep039" ],
 | 
			
		||||
            "TariffStep039"  : [ "09:00", "120000",  "TariffStep0310"],
 | 
			
		||||
            "TariffStep0310" : [ "10:00", "120000",  "TariffStep0311"],
 | 
			
		||||
            "TariffStep0311" : [ "11:00", "120000",  "TariffStep0312"],
 | 
			
		||||
            "TariffStep0312" : [ "12:00", "120000",  "TariffStep0313"],
 | 
			
		||||
            "TariffStep0313" : [ "13:00", "120000",  "TariffStep0314"],
 | 
			
		||||
            "TariffStep0314" : [ "14:00", "120000",  "TariffStep0315"],
 | 
			
		||||
            "TariffStep0315" : [ "15:00", "120000",  "TariffStep0316"],
 | 
			
		||||
            "TariffStep0316" : [ "16:00", "120000",  "TariffStep0317"],
 | 
			
		||||
            "TariffStep0317" : [ "17:00", "120000",  "TariffStep0318"],
 | 
			
		||||
            "TariffStep0318" : [ "18:00", "120000",  "TariffStep0319"],
 | 
			
		||||
            "TariffStep0319" : [ "19:00", "120000",  "TariffStep0320"],
 | 
			
		||||
            "TariffStep0320" : [ "20:00", "120000",  "TariffStep0321"]
 | 
			
		||||
            "TariffStep0321" : [ "21:00", "120000",  "TariffStep0322"]
 | 
			
		||||
            "TariffStep0322" : [ "22:00", "120000",  "TariffStep0323"]
 | 
			
		||||
            "TariffStep0323" : [ "23:00", "120000",  "TariffStep040" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep040"  : [ "00:00", "120000",  "TariffStep041" ],
 | 
			
		||||
            "TariffStep041"  : [ "01:00", "120000",  "TariffStep042" ],
 | 
			
		||||
            "TariffStep042"  : [ "02:00", "120000",  "TariffStep043" ],
 | 
			
		||||
            "TariffStep043"  : [ "03:00", "120000",  "TariffStep044" ],
 | 
			
		||||
            "TariffStep044"  : [ "04:00", "120000",  "TariffStep045" ],
 | 
			
		||||
            "TariffStep045"  : [ "05:00", "120000",  "TariffStep046" ],
 | 
			
		||||
            "TariffStep046"  : [ "06:00", "120000",  "TariffStep047" ],
 | 
			
		||||
            "TariffStep047"  : [ "07:00", "120000",  "TariffStep048" ],
 | 
			
		||||
            "TariffStep048"  : [ "08:00", "120000",  "TariffStep049" ],
 | 
			
		||||
            "TariffStep049"  : [ "09:00", "120000",  "TariffStep0410" ],
 | 
			
		||||
            "TariffStep0410" : [ "10:00", "120000",  "TariffStep0411" ],
 | 
			
		||||
            "TariffStep0411" : [ "11:00", "120000",  "TariffStep0412" ],
 | 
			
		||||
            "TariffStep0412" : [ "12:00", "120000",  "TariffStep0413" ],
 | 
			
		||||
            "TariffStep0413" : [ "13:00", "120000",  "TariffStep0414" ],
 | 
			
		||||
            "TariffStep0414" : [ "14:00", "120000",  "TariffStep0415" ],
 | 
			
		||||
            "TariffStep0415" : [ "15:00", "120000",  "TariffStep0416"],
 | 
			
		||||
            "TariffStep0416" : [ "16:00", "120000",  "TariffStep0417"],
 | 
			
		||||
            "TariffStep0417" : [ "17:00", "120000",  "TariffStep0418"],
 | 
			
		||||
            "TariffStep0418" : [ "18:00", "120000",  "TariffStep0419"],
 | 
			
		||||
            "TariffStep0419" : [ "19:00", "120000",  "TariffStep0420"],
 | 
			
		||||
            "TariffStep0420" : [ "20:00", "120000",  "TariffStep0421" ]
 | 
			
		||||
            "TariffStep0421" : [ "21:00", "120000",  "TariffStep0422" ]
 | 
			
		||||
            "TariffStep0422" : [ "22:00", "120000",  "TariffStep0423" ]
 | 
			
		||||
            "TariffStep0423" : [ "23:00", "120000",  "TariffStep050" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep050"  : [ "00:00", "120000",  "TariffStep051" ],
 | 
			
		||||
            "TariffStep051"  : [ "01:00", "120000",  "TariffStep052" ],
 | 
			
		||||
            "TariffStep052"  : [ "02:00", "120000",  "TariffStep053" ],
 | 
			
		||||
            "TariffStep053"  : [ "03:00", "120000",  "TariffStep054" ],
 | 
			
		||||
            "TariffStep054"  : [ "04:00", "120000",  "TariffStep055" ],
 | 
			
		||||
            "TariffStep055"  : [ "05:00", "120000",  "TariffStep056" ],
 | 
			
		||||
            "TariffStep056"  : [ "06:00", "120000",  "TariffStep057" ],
 | 
			
		||||
            "TariffStep057"  : [ "07:00", "120000",  "TariffStep058" ],
 | 
			
		||||
            "TariffStep058"  : [ "08:00", "120000",  "TariffStep059" ],
 | 
			
		||||
            "TariffStep059"  : [ "09:00", "120000",  "TariffStep0510"],
 | 
			
		||||
            "TariffStep0510" : [ "10:00", "120000",  "TariffStep0511"],
 | 
			
		||||
            "TariffStep0511" : [ "11:00", "120000",  "TariffStep0512"],
 | 
			
		||||
            "TariffStep0512" : [ "12:00", "120000",  "TariffStep0513"],
 | 
			
		||||
            "TariffStep0513" : [ "13:00", "120000",  "TariffStep0514"],
 | 
			
		||||
            "TariffStep0514" : [ "14:00", "120000",  "TariffStep0515"],
 | 
			
		||||
            "TariffStep0515" : [ "15:00", "120000",  "TariffStep0516"],
 | 
			
		||||
            "TariffStep0516" : [ "16:00", "120000",  "TariffStep0517"],
 | 
			
		||||
            "TariffStep0517" : [ "17:00", "120000",  "TariffStep0518"],
 | 
			
		||||
            "TariffStep0518" : [ "18:00", "120000",  "TariffStep0519"],
 | 
			
		||||
            "TariffStep0519" : [ "19:00", "120000",  "TariffStep0520"],
 | 
			
		||||
            "TariffStep0520" : [ "20:00", "120000",  "TariffStep0521"]
 | 
			
		||||
            "TariffStep0521" : [ "21:00", "120000",  "TariffStep0522"]
 | 
			
		||||
            "TariffStep0522" : [ "22:00", "120000",  "TariffStep0523"]
 | 
			
		||||
            "TariffStep0523" : [ "23:00", "120000",  "TariffStep060" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep060"  : [ "00:00", "120000",  "TariffStep061" ],
 | 
			
		||||
            "TariffStep061"  : [ "01:00", "120000",  "TariffStep062" ],
 | 
			
		||||
            "TariffStep062"  : [ "02:00", "120000",  "TariffStep063" ],
 | 
			
		||||
            "TariffStep063"  : [ "03:00", "120000",  "TariffStep064" ],
 | 
			
		||||
            "TariffStep064"  : [ "04:00", "120000",  "TariffStep065" ],
 | 
			
		||||
            "TariffStep065"  : [ "05:00", "120000",  "TariffStep066" ],
 | 
			
		||||
            "TariffStep066"  : [ "06:00", "120000",  "TariffStep067" ],
 | 
			
		||||
            "TariffStep067"  : [ "07:00", "120000",  "TariffStep068" ],
 | 
			
		||||
            "TariffStep068"  : [ "08:00", "120000",  "TariffStep069" ],
 | 
			
		||||
            "TariffStep069"  : [ "09:00", "120000",  "TariffStep0610"],
 | 
			
		||||
            "TariffStep0610" : [ "10:00", "120000",  "TariffStep0611"],
 | 
			
		||||
            "TariffStep0611" : [ "11:00", "120000",  "TariffStep0612"],
 | 
			
		||||
            "TariffStep0612" : [ "12:00", "120000",  "TariffStep0613"],
 | 
			
		||||
            "TariffStep0613" : [ "13:00", "120000",  "TariffStep0614"],
 | 
			
		||||
            "TariffStep0614" : [ "14:00", "120000",  "TariffStep0615"],
 | 
			
		||||
            "TariffStep0615" : [ "15:00", "120000",  "TariffStep0616"],
 | 
			
		||||
            "TariffStep0616" : [ "16:00", "120000",  "TariffStep0617"],
 | 
			
		||||
            "TariffStep0617" : [ "17:00", "120000",  "TariffStep0618"],
 | 
			
		||||
            "TariffStep0618" : [ "18:00", "120000",  "TariffStep0619"],
 | 
			
		||||
            "TariffStep0619" : [ "19:00", "120000",  "TariffStep0620"],
 | 
			
		||||
            "TariffStep0620" : [ "20:00", "120000",  "TariffStep0621"]
 | 
			
		||||
            "TariffStep0621" : [ "21:00", "120000",  "TariffStep0622"]
 | 
			
		||||
            "TariffStep0622" : [ "22:00", "120000",  "TariffStep0623"]
 | 
			
		||||
            "TariffStep0623" : [ "23:00", "120000",  "TariffStep100" ]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "week2" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep100"  : [ "00:00", "120000",  "TariffStep101" ],
 | 
			
		||||
            "TariffStep101"  : [ "01:00", "120000",  "TariffStep102" ],
 | 
			
		||||
            "TariffStep102"  : [ "02:00", "120000",  "TariffStep103" ],
 | 
			
		||||
            "TariffStep103"  : [ "03:00", "120000",  "TariffStep104" ],
 | 
			
		||||
            "TariffStep104"  : [ "04:00", "120000",  "TariffStep105" ],
 | 
			
		||||
            "TariffStep105"  : [ "05:00", "120000",  "TariffStep106" ],
 | 
			
		||||
            "TariffStep106"  : [ "06:00", "120000",  "TariffStep107" ],
 | 
			
		||||
            "TariffStep107"  : [ "07:00", "120000",  "TariffStep108" ],
 | 
			
		||||
            "TariffStep108"  : [ "08:00", "120000",  "TariffStep109" ],
 | 
			
		||||
            "TariffStep109"  : [ "09:00", "120000",  "TariffStep1010" ],
 | 
			
		||||
            "TariffStep1010" : [ "10:00", "120000",  "TariffStep1011" ],
 | 
			
		||||
            "TariffStep1011" : [ "11:00", "120000",  "TariffStep1012" ],
 | 
			
		||||
            "TariffStep1012" : [ "12:00", "120000",  "TariffStep1013" ],
 | 
			
		||||
            "TariffStep1013" : [ "13:00", "120000",  "TariffStep1014" ],
 | 
			
		||||
            "TariffStep1014" : [ "14:00", "120000",  "TariffStep1015" ],
 | 
			
		||||
            "TariffStep1015" : [ "15:00", "120000",  "TariffStep1016"],
 | 
			
		||||
            "TariffStep1016" : [ "16:00", "120000",  "TariffStep1017"],
 | 
			
		||||
            "TariffStep1017" : [ "17:00", "120000",  "TariffStep1018"],
 | 
			
		||||
            "TariffStep1018" : [ "18:00", "120000",  "TariffStep1019"],
 | 
			
		||||
            "TariffStep1019" : [ "19:00", "120000",  "TariffStep1020"],
 | 
			
		||||
            "TariffStep1020" : [ "20:00", "120000",  "TariffStep1021" ]
 | 
			
		||||
            "TariffStep1021" : [ "21:00", "120000",  "TariffStep1022" ]
 | 
			
		||||
            "TariffStep1022" : [ "22:00", "120000",  "TariffStep1023" ]
 | 
			
		||||
            "TariffStep1023" : [ "23:00", "120000",  "TariffStep110" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep110"  : [ "00:00", "120000",  "TariffStep111" ],
 | 
			
		||||
            "TariffStep111"  : [ "01:00", "120000",  "TariffStep112" ],
 | 
			
		||||
            "TariffStep112"  : [ "02:00", "120000",  "TariffStep113" ],
 | 
			
		||||
            "TariffStep113"  : [ "03:00", "120000",  "TariffStep114" ],
 | 
			
		||||
            "TariffStep114"  : [ "04:00", "120000",  "TariffStep115" ],
 | 
			
		||||
            "TariffStep115"  : [ "05:00", "120000",  "TariffStep116" ],
 | 
			
		||||
            "TariffStep116"  : [ "06:00", "120000",  "TariffStep117" ],
 | 
			
		||||
            "TariffStep117"  : [ "07:00", "120000",  "TariffStep118" ],
 | 
			
		||||
            "TariffStep118"  : [ "08:00", "120000",  "TariffStep119" ],
 | 
			
		||||
            "TariffStep119"  : [ "09:00", "120000",  "TariffStep1110" ],
 | 
			
		||||
            "TariffStep1110" : [ "10:00", "120000",  "TariffStep1111" ],
 | 
			
		||||
            "TariffStep1111" : [ "11:00", "120000",  "TariffStep1112" ],
 | 
			
		||||
            "TariffStep1112" : [ "12:00", "120000",  "TariffStep1113" ],
 | 
			
		||||
            "TariffStep1113" : [ "13:00", "120000",  "TariffStep1114" ],
 | 
			
		||||
            "TariffStep1114" : [ "14:00", "120000",  "TariffStep1115" ],
 | 
			
		||||
            "TariffStep1115" : [ "15:00", "120000",  "TariffStep1116"],
 | 
			
		||||
            "TariffStep1116" : [ "16:00", "120000",  "TariffStep1117"],
 | 
			
		||||
            "TariffStep1117" : [ "17:00", "120000",  "TariffStep1118"],
 | 
			
		||||
            "TariffStep1118" : [ "18:00", "120000",  "TariffStep1119"],
 | 
			
		||||
            "TariffStep1119" : [ "19:00", "120000",  "TariffStep1120"],
 | 
			
		||||
            "TariffStep1120" : [ "20:00", "120000",  "TariffStep1121" ]
 | 
			
		||||
            "TariffStep1121" : [ "21:00", "120000",  "TariffStep1122" ]
 | 
			
		||||
            "TariffStep1122" : [ "22:00", "120000",  "TariffStep1123" ]
 | 
			
		||||
            "TariffStep1123" : [ "23:00", "120000",  "TariffStep120" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep120"  : [ "00:00", "120000",  "TariffStep121" ],
 | 
			
		||||
            "TariffStep121"  : [ "01:00", "120000",  "TariffStep122" ],
 | 
			
		||||
            "TariffStep122"  : [ "02:00", "120000",  "TariffStep123" ],
 | 
			
		||||
            "TariffStep123"  : [ "03:00", "120000",  "TariffStep124" ],
 | 
			
		||||
            "TariffStep124"  : [ "04:00", "120000",  "TariffStep125" ],
 | 
			
		||||
            "TariffStep125"  : [ "05:00", "120000",  "TariffStep126" ],
 | 
			
		||||
            "TariffStep126"  : [ "06:00", "120000",  "TariffStep127" ],
 | 
			
		||||
            "TariffStep127"  : [ "07:00", "120000",  "TariffStep128" ],
 | 
			
		||||
            "TariffStep128"  : [ "08:00", "120000",  "TariffStep129" ],
 | 
			
		||||
            "TariffStep129"  : [ "09:00", "120000",  "TariffStep1210"],
 | 
			
		||||
            "TariffStep1210" : [ "10:00", "120000",  "TariffStep1211"],
 | 
			
		||||
            "TariffStep1211" : [ "11:00", "120000",  "TariffStep1212"],
 | 
			
		||||
            "TariffStep1212" : [ "12:00", "120000",  "TariffStep1213"],
 | 
			
		||||
            "TariffStep1213" : [ "13:00", "120000",  "TariffStep1214"],
 | 
			
		||||
            "TariffStep1214" : [ "14:00", "120000",  "TariffStep1215"],
 | 
			
		||||
            "TariffStep1215" : [ "15:00", "120000",  "TariffStep1216"],
 | 
			
		||||
            "TariffStep1216" : [ "16:00", "120000",  "TariffStep1217"],
 | 
			
		||||
            "TariffStep1217" : [ "17:00", "120000",  "TariffStep1218"],
 | 
			
		||||
            "TariffStep1218" : [ "18:00", "120000",  "TariffStep1219"],
 | 
			
		||||
            "TariffStep1219" : [ "19:00", "120000",  "TariffStep1220"],
 | 
			
		||||
            "TariffStep1220" : [ "20:00", "120000",  "TariffStep1221"]
 | 
			
		||||
            "TariffStep1221" : [ "21:00", "120000",  "TariffStep1222"]
 | 
			
		||||
            "TariffStep1222" : [ "22:00", "120000",  "TariffStep1223"]
 | 
			
		||||
            "TariffStep1223" : [ "23:00", "120000",  "TariffStep130" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep130"  : [ "00:00", "120000",  "TariffStep131" ],
 | 
			
		||||
            "TariffStep131"  : [ "01:00", "120000",  "TariffStep132" ],
 | 
			
		||||
            "TariffStep132"  : [ "02:00", "120000",  "TariffStep133" ],
 | 
			
		||||
            "TariffStep133"  : [ "03:00", "120000",  "TariffStep134" ],
 | 
			
		||||
            "TariffStep134"  : [ "04:00", "120000",  "TariffStep135" ],
 | 
			
		||||
            "TariffStep135"  : [ "05:00", "120000",  "TariffStep136" ],
 | 
			
		||||
            "TariffStep136"  : [ "06:00", "120000",  "TariffStep137" ],
 | 
			
		||||
            "TariffStep137"  : [ "07:00", "120000",  "TariffStep138" ],
 | 
			
		||||
            "TariffStep138"  : [ "08:00", "120000",  "TariffStep139" ],
 | 
			
		||||
            "TariffStep139"  : [ "09:00", "120000",  "TariffStep1310"],
 | 
			
		||||
            "TariffStep1310" : [ "10:00", "120000",  "TariffStep1311"],
 | 
			
		||||
            "TariffStep1311" : [ "11:00", "120000",  "TariffStep1312"],
 | 
			
		||||
            "TariffStep1312" : [ "12:00", "120000",  "TariffStep1313"],
 | 
			
		||||
            "TariffStep1313" : [ "13:00", "120000",  "TariffStep1314"],
 | 
			
		||||
            "TariffStep1314" : [ "14:00", "120000",  "TariffStep1315"],
 | 
			
		||||
            "TariffStep1315" : [ "15:00", "120000",  "TariffStep1316"],
 | 
			
		||||
            "TariffStep1316" : [ "16:00", "120000",  "TariffStep1317"],
 | 
			
		||||
            "TariffStep1317" : [ "17:00", "120000",  "TariffStep1318"],
 | 
			
		||||
            "TariffStep1318" : [ "18:00", "120000",  "TariffStep1319"],
 | 
			
		||||
            "TariffStep1319" : [ "19:00", "120000",  "TariffStep1320"],
 | 
			
		||||
            "TariffStep1320" : [ "20:00", "120000",  "TariffStep1321"]
 | 
			
		||||
            "TariffStep1321" : [ "21:00", "120000",  "TariffStep1322"]
 | 
			
		||||
            "TariffStep1322" : [ "22:00", "120000",  "TariffStep1323"]
 | 
			
		||||
            "TariffStep1323" : [ "23:00", "120000",  "TariffStep140" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep140"  : [ "00:00", "120000",  "TariffStep141" ],
 | 
			
		||||
            "TariffStep141"  : [ "01:00", "120000",  "TariffStep142" ],
 | 
			
		||||
            "TariffStep142"  : [ "02:00", "120000",  "TariffStep143" ],
 | 
			
		||||
            "TariffStep143"  : [ "03:00", "120000",  "TariffStep144" ],
 | 
			
		||||
            "TariffStep144"  : [ "04:00", "120000",  "TariffStep145" ],
 | 
			
		||||
            "TariffStep145"  : [ "05:00", "120000",  "TariffStep146" ],
 | 
			
		||||
            "TariffStep146"  : [ "06:00", "120000",  "TariffStep147" ],
 | 
			
		||||
            "TariffStep147"  : [ "07:00", "120000",  "TariffStep148" ],
 | 
			
		||||
            "TariffStep148"  : [ "08:00", "120000",  "TariffStep149" ],
 | 
			
		||||
            "TariffStep149"  : [ "09:00", "120000",  "TariffStep1410" ],
 | 
			
		||||
            "TariffStep1410" : [ "10:00", "120000",  "TariffStep1411" ],
 | 
			
		||||
            "TariffStep1411" : [ "11:00", "120000",  "TariffStep1412" ],
 | 
			
		||||
            "TariffStep1412" : [ "12:00", "120000",  "TariffStep1413" ],
 | 
			
		||||
            "TariffStep1413" : [ "13:00", "120000",  "TariffStep1414" ],
 | 
			
		||||
            "TariffStep1414" : [ "14:00", "120000",  "TariffStep1415" ],
 | 
			
		||||
            "TariffStep1415" : [ "15:00", "120000",  "TariffStep1416"],
 | 
			
		||||
            "TariffStep1416" : [ "16:00", "120000",  "TariffStep1417"],
 | 
			
		||||
            "TariffStep1417" : [ "17:00", "120000",  "TariffStep1418"],
 | 
			
		||||
            "TariffStep1418" : [ "18:00", "120000",  "TariffStep1419"],
 | 
			
		||||
            "TariffStep1419" : [ "19:00", "120000",  "TariffStep1420"],
 | 
			
		||||
            "TariffStep1420" : [ "20:00", "120000",  "TariffStep1421" ]
 | 
			
		||||
            "TariffStep1421" : [ "21:00", "120000",  "TariffStep1422" ]
 | 
			
		||||
            "TariffStep1422" : [ "22:00", "120000",  "TariffStep1423" ]
 | 
			
		||||
            "TariffStep1423" : [ "23:00", "120000",  "TariffStep150" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep150"  : [ "00:00", "120000",  "TariffStep151" ],
 | 
			
		||||
            "TariffStep151"  : [ "01:00", "120000",  "TariffStep152" ],
 | 
			
		||||
            "TariffStep152"  : [ "02:00", "120000",  "TariffStep153" ],
 | 
			
		||||
            "TariffStep153"  : [ "03:00", "120000",  "TariffStep154" ],
 | 
			
		||||
            "TariffStep154"  : [ "04:00", "120000",  "TariffStep155" ],
 | 
			
		||||
            "TariffStep155"  : [ "05:00", "120000",  "TariffStep156" ],
 | 
			
		||||
            "TariffStep156"  : [ "06:00", "120000",  "TariffStep157" ],
 | 
			
		||||
            "TariffStep157"  : [ "07:00", "120000",  "TariffStep158" ],
 | 
			
		||||
            "TariffStep158"  : [ "08:00", "120000",  "TariffStep159" ],
 | 
			
		||||
            "TariffStep159"  : [ "09:00", "120000",  "TariffStep1510"],
 | 
			
		||||
            "TariffStep1510" : [ "10:00", "120000",  "TariffStep1511"],
 | 
			
		||||
            "TariffStep1511" : [ "11:00", "120000",  "TariffStep1512"],
 | 
			
		||||
            "TariffStep1512" : [ "12:00", "120000",  "TariffStep1513"],
 | 
			
		||||
            "TariffStep1513" : [ "13:00", "120000",  "TariffStep1514"],
 | 
			
		||||
            "TariffStep1514" : [ "14:00", "120000",  "TariffStep1515"],
 | 
			
		||||
            "TariffStep1515" : [ "15:00", "120000",  "TariffStep1516"],
 | 
			
		||||
            "TariffStep1516" : [ "16:00", "120000",  "TariffStep1517"],
 | 
			
		||||
            "TariffStep1517" : [ "17:00", "120000",  "TariffStep1518"],
 | 
			
		||||
            "TariffStep1518" : [ "18:00", "120000",  "TariffStep1519"],
 | 
			
		||||
            "TariffStep1519" : [ "19:00", "120000",  "TariffStep1520"],
 | 
			
		||||
            "TariffStep1520" : [ "20:00", "120000",  "TariffStep1521"]
 | 
			
		||||
            "TariffStep1521" : [ "21:00", "120000",  "TariffStep1522"]
 | 
			
		||||
            "TariffStep1522" : [ "22:00", "120000",  "TariffStep1523"]
 | 
			
		||||
            "TariffStep1523" : [ "23:00", "120000",  "TariffStep160" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep160"  : [ "00:00", "120000",  "TariffStep161" ],
 | 
			
		||||
            "TariffStep161"  : [ "01:00", "120000",  "TariffStep162" ],
 | 
			
		||||
            "TariffStep162"  : [ "02:00", "120000",  "TariffStep163" ],
 | 
			
		||||
            "TariffStep163"  : [ "03:00", "120000",  "TariffStep164" ],
 | 
			
		||||
            "TariffStep164"  : [ "04:00", "120000",  "TariffStep165" ],
 | 
			
		||||
            "TariffStep165"  : [ "05:00", "120000",  "TariffStep166" ],
 | 
			
		||||
            "TariffStep166"  : [ "06:00", "120000",  "TariffStep167" ],
 | 
			
		||||
            "TariffStep167"  : [ "07:00", "120000",  "TariffStep168" ],
 | 
			
		||||
            "TariffStep168"  : [ "08:00", "120000",  "TariffStep169" ],
 | 
			
		||||
            "TariffStep169"  : [ "09:00", "120000",  "TariffStep1610"],
 | 
			
		||||
            "TariffStep1610" : [ "10:00", "120000",  "TariffStep1611"],
 | 
			
		||||
            "TariffStep1611" : [ "11:00", "120000",  "TariffStep1612"],
 | 
			
		||||
            "TariffStep1612" : [ "12:00", "120000",  "TariffStep1613"],
 | 
			
		||||
            "TariffStep1613" : [ "13:00", "120000",  "TariffStep1614"],
 | 
			
		||||
            "TariffStep1614" : [ "14:00", "120000",  "TariffStep1615"],
 | 
			
		||||
            "TariffStep1615" : [ "15:00", "120000",  "TariffStep1616"],
 | 
			
		||||
            "TariffStep1616" : [ "16:00", "120000",  "TariffStep1617"],
 | 
			
		||||
            "TariffStep1617" : [ "17:00", "120000",  "TariffStep1618"],
 | 
			
		||||
            "TariffStep1618" : [ "18:00", "120000",  "TariffStep1619"],
 | 
			
		||||
            "TariffStep1619" : [ "19:00", "120000",  "TariffStep1620"],
 | 
			
		||||
            "TariffStep1620" : [ "20:00", "120000",  "TariffStep1621"]
 | 
			
		||||
            "TariffStep1621" : [ "21:00", "120000",  "TariffStep1622"]
 | 
			
		||||
            "TariffStep1622" : [ "22:00", "120000",  "TariffStep1623"]
 | 
			
		||||
            "TariffStep1623" : [ "23:00", "120000",  "TariffStep200" ]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "week3" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep200"  : [ "00:00", "120000",  "TariffStep201" ],
 | 
			
		||||
            "TariffStep201"  : [ "01:00", "120000",  "TariffStep202" ],
 | 
			
		||||
            "TariffStep202"  : [ "02:00", "120000",  "TariffStep203" ],
 | 
			
		||||
            "TariffStep203"  : [ "03:00", "120000",  "TariffStep204" ],
 | 
			
		||||
            "TariffStep204"  : [ "04:00", "120000",  "TariffStep205" ],
 | 
			
		||||
            "TariffStep205"  : [ "05:00", "120000",  "TariffStep206" ],
 | 
			
		||||
            "TariffStep206"  : [ "06:00", "120000",  "TariffStep207" ],
 | 
			
		||||
            "TariffStep207"  : [ "07:00", "120000",  "TariffStep208" ],
 | 
			
		||||
            "TariffStep208"  : [ "08:00", "120000",  "TariffStep209" ],
 | 
			
		||||
            "TariffStep209"  : [ "09:00", "120000",  "TariffStep2010" ],
 | 
			
		||||
            "TariffStep2010" : [ "10:00", "120000",  "TariffStep2011" ],
 | 
			
		||||
            "TariffStep2011" : [ "11:00", "120000",  "TariffStep2012" ],
 | 
			
		||||
            "TariffStep2012" : [ "12:00", "120000",  "TariffStep2013" ],
 | 
			
		||||
            "TariffStep2013" : [ "13:00", "120000",  "TariffStep2014" ],
 | 
			
		||||
            "TariffStep2014" : [ "14:00", "120000",  "TariffStep2015" ],
 | 
			
		||||
            "TariffStep2015" : [ "15:00", "120000",  "TariffStep2016"],
 | 
			
		||||
            "TariffStep2016" : [ "16:00", "120000",  "TariffStep2017"],
 | 
			
		||||
            "TariffStep2017" : [ "17:00", "120000",  "TariffStep2018"],
 | 
			
		||||
            "TariffStep2018" : [ "18:00", "120000",  "TariffStep2019"],
 | 
			
		||||
            "TariffStep2019" : [ "19:00", "120000",  "TariffStep2020"],
 | 
			
		||||
            "TariffStep2020" : [ "20:00", "120000",  "TariffStep2021" ]
 | 
			
		||||
            "TariffStep2021" : [ "21:00", "120000",  "TariffStep2022" ]
 | 
			
		||||
            "TariffStep2022" : [ "22:00", "120000",  "TariffStep2023" ]
 | 
			
		||||
            "TariffStep2023" : [ "23:00", "120000",  "TariffStep210" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep210"  : [ "00:00", "120000",  "TariffStep211" ],
 | 
			
		||||
            "TariffStep211"  : [ "01:00", "120000",  "TariffStep212" ],
 | 
			
		||||
            "TariffStep212"  : [ "02:00", "120000",  "TariffStep213" ],
 | 
			
		||||
            "TariffStep213"  : [ "03:00", "120000",  "TariffStep214" ],
 | 
			
		||||
            "TariffStep214"  : [ "04:00", "120000",  "TariffStep215" ],
 | 
			
		||||
            "TariffStep215"  : [ "05:00", "120000",  "TariffStep216" ],
 | 
			
		||||
            "TariffStep216"  : [ "06:00", "120000",  "TariffStep217" ],
 | 
			
		||||
            "TariffStep217"  : [ "07:00", "120000",  "TariffStep218" ],
 | 
			
		||||
            "TariffStep218"  : [ "08:00", "120000",  "TariffStep219" ],
 | 
			
		||||
            "TariffStep219"  : [ "09:00", "120000",  "TariffStep2110" ],
 | 
			
		||||
            "TariffStep2110" : [ "10:00", "120000",  "TariffStep2111" ],
 | 
			
		||||
            "TariffStep2111" : [ "11:00", "120000",  "TariffStep2112" ],
 | 
			
		||||
            "TariffStep2112" : [ "12:00", "120000",  "TariffStep2113" ],
 | 
			
		||||
            "TariffStep2113" : [ "13:00", "120000",  "TariffStep2114" ],
 | 
			
		||||
            "TariffStep2114" : [ "14:00", "120000",  "TariffStep2115" ],
 | 
			
		||||
            "TariffStep2115" : [ "15:00", "120000",  "TariffStep2116"],
 | 
			
		||||
            "TariffStep2116" : [ "16:00", "120000",  "TariffStep2117"],
 | 
			
		||||
            "TariffStep2117" : [ "17:00", "120000",  "TariffStep2118"],
 | 
			
		||||
            "TariffStep2118" : [ "18:00", "120000",  "TariffStep2119"],
 | 
			
		||||
            "TariffStep2119" : [ "19:00", "120000",  "TariffStep2120"],
 | 
			
		||||
            "TariffStep2120" : [ "20:00", "120000",  "TariffStep2121" ]
 | 
			
		||||
            "TariffStep2121" : [ "21:00", "120000",  "TariffStep2122" ]
 | 
			
		||||
            "TariffStep2122" : [ "22:00", "120000",  "TariffStep2123" ]
 | 
			
		||||
            "TariffStep2123" : [ "23:00", "120000",  "TariffStep220" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep220"  : [ "00:00", "120000",  "TariffStep221" ],
 | 
			
		||||
            "TariffStep221"  : [ "01:00", "120000",  "TariffStep222" ],
 | 
			
		||||
            "TariffStep222"  : [ "02:00", "120000",  "TariffStep223" ],
 | 
			
		||||
            "TariffStep223"  : [ "03:00", "120000",  "TariffStep224" ],
 | 
			
		||||
            "TariffStep224"  : [ "04:00", "120000",  "TariffStep225" ],
 | 
			
		||||
            "TariffStep225"  : [ "05:00", "120000",  "TariffStep226" ],
 | 
			
		||||
            "TariffStep226"  : [ "06:00", "120000",  "TariffStep227" ],
 | 
			
		||||
            "TariffStep227"  : [ "07:00", "120000",  "TariffStep228" ],
 | 
			
		||||
            "TariffStep228"  : [ "08:00", "120000",  "TariffStep229" ],
 | 
			
		||||
            "TariffStep229"  : [ "09:00", "120000",  "TariffStep2210"],
 | 
			
		||||
            "TariffStep2210" : [ "10:00", "120000",  "TariffStep2211"],
 | 
			
		||||
            "TariffStep2211" : [ "11:00", "120000",  "TariffStep2212"],
 | 
			
		||||
            "TariffStep2212" : [ "12:00", "120000",  "TariffStep2213"],
 | 
			
		||||
            "TariffStep2213" : [ "13:00", "120000",  "TariffStep2214"],
 | 
			
		||||
            "TariffStep2214" : [ "14:00", "120000",  "TariffStep2215"],
 | 
			
		||||
            "TariffStep2215" : [ "15:00", "120000",  "TariffStep2216"],
 | 
			
		||||
            "TariffStep2216" : [ "16:00", "120000",  "TariffStep2217"],
 | 
			
		||||
            "TariffStep2217" : [ "17:00", "120000",  "TariffStep2218"],
 | 
			
		||||
            "TariffStep2218" : [ "18:00", "120000",  "TariffStep2219"],
 | 
			
		||||
            "TariffStep2219" : [ "19:00", "120000",  "TariffStep2220"],
 | 
			
		||||
            "TariffStep2220" : [ "20:00", "120000",  "TariffStep2221"]
 | 
			
		||||
            "TariffStep2221" : [ "21:00", "120000",  "TariffStep2222"]
 | 
			
		||||
            "TariffStep2222" : [ "22:00", "120000",  "TariffStep2223"]
 | 
			
		||||
            "TariffStep2223" : [ "23:00", "120000",  "TariffStep230" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep230"  : [ "00:00", "120000",  "TariffStep231" ],
 | 
			
		||||
            "TariffStep231"  : [ "01:00", "120000",  "TariffStep232" ],
 | 
			
		||||
            "TariffStep232"  : [ "02:00", "120000",  "TariffStep233" ],
 | 
			
		||||
            "TariffStep233"  : [ "03:00", "120000",  "TariffStep234" ],
 | 
			
		||||
            "TariffStep234"  : [ "04:00", "120000",  "TariffStep235" ],
 | 
			
		||||
            "TariffStep235"  : [ "05:00", "120000",  "TariffStep236" ],
 | 
			
		||||
            "TariffStep236"  : [ "06:00", "120000",  "TariffStep237" ],
 | 
			
		||||
            "TariffStep237"  : [ "07:00", "120000",  "TariffStep238" ],
 | 
			
		||||
            "TariffStep238"  : [ "08:00", "120000",  "TariffStep239" ],
 | 
			
		||||
            "TariffStep239"  : [ "09:00", "120000",  "TariffStep2310"],
 | 
			
		||||
            "TariffStep2310" : [ "10:00", "120000",  "TariffStep2311"],
 | 
			
		||||
            "TariffStep2311" : [ "11:00", "120000",  "TariffStep2312"],
 | 
			
		||||
            "TariffStep2312" : [ "12:00", "120000",  "TariffStep2313"],
 | 
			
		||||
            "TariffStep2313" : [ "13:00", "120000",  "TariffStep2314"],
 | 
			
		||||
            "TariffStep2314" : [ "14:00", "120000",  "TariffStep2315"],
 | 
			
		||||
            "TariffStep2315" : [ "15:00", "120000",  "TariffStep2316"],
 | 
			
		||||
            "TariffStep2316" : [ "16:00", "120000",  "TariffStep2317"],
 | 
			
		||||
            "TariffStep2317" : [ "17:00", "120000",  "TariffStep2318"],
 | 
			
		||||
            "TariffStep2318" : [ "18:00", "120000",  "TariffStep2319"],
 | 
			
		||||
            "TariffStep2319" : [ "19:00", "120000",  "TariffStep2320"],
 | 
			
		||||
            "TariffStep2320" : [ "20:00", "120000",  "TariffStep2321"]
 | 
			
		||||
            "TariffStep2321" : [ "21:00", "120000",  "TariffStep2322"]
 | 
			
		||||
            "TariffStep2322" : [ "22:00", "120000",  "TariffStep2323"]
 | 
			
		||||
            "TariffStep2323" : [ "23:00", "120000",  "TariffStep240" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep240"  : [ "00:00", "120000",  "TariffStep241" ],
 | 
			
		||||
            "TariffStep241"  : [ "01:00", "120000",  "TariffStep242" ],
 | 
			
		||||
            "TariffStep242"  : [ "02:00", "120000",  "TariffStep243" ],
 | 
			
		||||
            "TariffStep243"  : [ "03:00", "120000",  "TariffStep244" ],
 | 
			
		||||
            "TariffStep244"  : [ "04:00", "120000",  "TariffStep245" ],
 | 
			
		||||
            "TariffStep245"  : [ "05:00", "120000",  "TariffStep246" ],
 | 
			
		||||
            "TariffStep246"  : [ "06:00", "120000",  "TariffStep247" ],
 | 
			
		||||
            "TariffStep247"  : [ "07:00", "120000",  "TariffStep248" ],
 | 
			
		||||
            "TariffStep248"  : [ "08:00", "120000",  "TariffStep249" ],
 | 
			
		||||
            "TariffStep249"  : [ "09:00", "120000",  "TariffStep2410" ],
 | 
			
		||||
            "TariffStep2410" : [ "10:00", "120000",  "TariffStep2411" ],
 | 
			
		||||
            "TariffStep2411" : [ "11:00", "120000",  "TariffStep2412" ],
 | 
			
		||||
            "TariffStep2412" : [ "12:00", "120000",  "TariffStep2413" ],
 | 
			
		||||
            "TariffStep2413" : [ "13:00", "120000",  "TariffStep2414" ],
 | 
			
		||||
            "TariffStep2414" : [ "14:00", "120000",  "TariffStep2415" ],
 | 
			
		||||
            "TariffStep2415" : [ "15:00", "120000",  "TariffStep2416"],
 | 
			
		||||
            "TariffStep2416" : [ "16:00", "120000",  "TariffStep2417"],
 | 
			
		||||
            "TariffStep2417" : [ "17:00", "120000",  "TariffStep2418"],
 | 
			
		||||
            "TariffStep2418" : [ "18:00", "120000",  "TariffStep2419"],
 | 
			
		||||
            "TariffStep2419" : [ "19:00", "120000",  "TariffStep2420"],
 | 
			
		||||
            "TariffStep2420" : [ "20:00", "120000",  "TariffStep2421" ]
 | 
			
		||||
            "TariffStep2421" : [ "21:00", "120000",  "TariffStep2422" ]
 | 
			
		||||
            "TariffStep2422" : [ "22:00", "120000",  "TariffStep2423" ]
 | 
			
		||||
            "TariffStep2423" : [ "23:00", "120000",  "TariffStep250" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep250"  : [ "00:00", "120000",  "TariffStep251" ],
 | 
			
		||||
            "TariffStep251"  : [ "01:00", "120000",  "TariffStep252" ],
 | 
			
		||||
            "TariffStep252"  : [ "02:00", "120000",  "TariffStep253" ],
 | 
			
		||||
            "TariffStep253"  : [ "03:00", "120000",  "TariffStep254" ],
 | 
			
		||||
            "TariffStep254"  : [ "04:00", "120000",  "TariffStep255" ],
 | 
			
		||||
            "TariffStep255"  : [ "05:00", "120000",  "TariffStep256" ],
 | 
			
		||||
            "TariffStep256"  : [ "06:00", "120000",  "TariffStep257" ],
 | 
			
		||||
            "TariffStep257"  : [ "07:00", "120000",  "TariffStep258" ],
 | 
			
		||||
            "TariffStep258"  : [ "08:00", "120000",  "TariffStep259" ],
 | 
			
		||||
            "TariffStep259"  : [ "09:00", "120000",  "TariffStep2510"],
 | 
			
		||||
            "TariffStep2510" : [ "10:00", "120000",  "TariffStep2511"],
 | 
			
		||||
            "TariffStep2511" : [ "11:00", "120000",  "TariffStep2512"],
 | 
			
		||||
            "TariffStep2512" : [ "12:00", "120000",  "TariffStep2513"],
 | 
			
		||||
            "TariffStep2513" : [ "13:00", "120000",  "TariffStep2514"],
 | 
			
		||||
            "TariffStep2514" : [ "14:00", "120000",  "TariffStep2515"],
 | 
			
		||||
            "TariffStep2515" : [ "15:00", "120000",  "TariffStep2516"],
 | 
			
		||||
            "TariffStep2516" : [ "16:00", "120000",  "TariffStep2517"],
 | 
			
		||||
            "TariffStep2517" : [ "17:00", "120000",  "TariffStep2518"],
 | 
			
		||||
            "TariffStep2518" : [ "18:00", "120000",  "TariffStep2519"],
 | 
			
		||||
            "TariffStep2519" : [ "19:00", "120000",  "TariffStep2520"],
 | 
			
		||||
            "TariffStep2520" : [ "20:00", "120000",  "TariffStep2521"]
 | 
			
		||||
            "TariffStep2521" : [ "21:00", "120000",  "TariffStep2522"]
 | 
			
		||||
            "TariffStep2522" : [ "22:00", "120000",  "TariffStep2523"]
 | 
			
		||||
            "TariffStep2523" : [ "23:00", "120000",  "TariffStep260" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep260"  : [ "00:00", "120000",  "TariffStep261" ],
 | 
			
		||||
            "TariffStep261"  : [ "01:00", "120000",  "TariffStep262" ],
 | 
			
		||||
            "TariffStep262"  : [ "02:00", "120000",  "TariffStep263" ],
 | 
			
		||||
            "TariffStep263"  : [ "03:00", "120000",  "TariffStep264" ],
 | 
			
		||||
            "TariffStep264"  : [ "04:00", "120000",  "TariffStep265" ],
 | 
			
		||||
            "TariffStep265"  : [ "05:00", "120000",  "TariffStep266" ],
 | 
			
		||||
            "TariffStep266"  : [ "06:00", "120000",  "TariffStep267" ],
 | 
			
		||||
            "TariffStep267"  : [ "07:00", "120000",  "TariffStep268" ],
 | 
			
		||||
            "TariffStep268"  : [ "08:00", "120000",  "TariffStep269" ],
 | 
			
		||||
            "TariffStep269"  : [ "09:00", "120000",  "TariffStep2610"],
 | 
			
		||||
            "TariffStep2610" : [ "10:00", "120000",  "TariffStep2611"],
 | 
			
		||||
            "TariffStep2611" : [ "11:00", "120000",  "TariffStep2612"],
 | 
			
		||||
            "TariffStep2612" : [ "12:00", "120000",  "TariffStep2613"],
 | 
			
		||||
            "TariffStep2613" : [ "13:00", "120000",  "TariffStep2614"],
 | 
			
		||||
            "TariffStep2614" : [ "14:00", "120000",  "TariffStep2615"],
 | 
			
		||||
            "TariffStep2615" : [ "15:00", "120000",  "TariffStep2616"],
 | 
			
		||||
            "TariffStep2616" : [ "16:00", "120000",  "TariffStep2617"],
 | 
			
		||||
            "TariffStep2617" : [ "17:00", "120000",  "TariffStep2618"],
 | 
			
		||||
            "TariffStep2618" : [ "18:00", "120000",  "TariffStep2619"],
 | 
			
		||||
            "TariffStep2619" : [ "19:00", "120000",  "TariffStep2620"],
 | 
			
		||||
            "TariffStep2620" : [ "20:00", "120000",  "TariffStep2621"]
 | 
			
		||||
            "TariffStep2621" : [ "21:00", "120000",  "TariffStep2622"]
 | 
			
		||||
            "TariffStep2622" : [ "22:00", "120000",  "TariffStep2623"]
 | 
			
		||||
            "TariffStep2623" : [ "23:00", "120000",  "TariffStep000" ]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30319
									
								
								calculate_parking_tickets/germersheim.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30319
									
								
								calculate_parking_tickets/germersheim.conf
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										368
									
								
								calculate_parking_tickets/germersheim.conf.bck
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										368
									
								
								calculate_parking_tickets/germersheim.conf.bck
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,368 @@
 | 
			
		||||
{
 | 
			
		||||
    "name":"test",
 | 
			
		||||
    "properties": [
 | 
			
		||||
    ],
 | 
			
		||||
    "week1" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep000" : [ "00:00", "800000",  "TariffStep001" ],
 | 
			
		||||
            "TariffStep001" : [ "07:00", "350000",  "TariffStep002" ],
 | 
			
		||||
            "TariffStep002" : [ "08:00", "350000",  "TariffStep003" ],
 | 
			
		||||
            "TariffStep003" : [ "09:00", "350000",  "TariffStep004" ],
 | 
			
		||||
            "TariffStep004" : [ "10:00", "350000",  "TariffStep005" ],
 | 
			
		||||
            "TariffStep005" : [ "11:00", "350000",  "TariffStep006" ],
 | 
			
		||||
            "TariffStep006" : [ "12:00", "350000",  "TariffStep007" ],
 | 
			
		||||
            "TariffStep007" : [ "13:00", "350000",  "TariffStep008" ],
 | 
			
		||||
            "TariffStep008" : [ "14:00", "350000",  "TariffStep009" ],
 | 
			
		||||
            "TariffStep009" : [ "15:00", "350000",  "TariffStep0010"],
 | 
			
		||||
            "TariffStep0010": [ "16:00", "350000",  "TariffStep0011"],
 | 
			
		||||
            "TariffStep0011": [ "17:00", "350000",  "TariffStep0012"],
 | 
			
		||||
            "TariffStep0012": [ "18:00", "350000",  "TariffStep0013"],
 | 
			
		||||
            "TariffStep0013": [ "19:00", "350000",  "TariffStep0014"],
 | 
			
		||||
            "TariffStep0014": [ "20:00", "800000",  "TariffStep011" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep010" : [ "00:00", "800000",  "TariffStep011" ],
 | 
			
		||||
            "TariffStep011" : [ "07:00", "350000",  "TariffStep012" ],
 | 
			
		||||
            "TariffStep012" : [ "08:00", "350000",  "TariffStep013" ],
 | 
			
		||||
            "TariffStep013" : [ "09:00", "350000",  "TariffStep014" ],
 | 
			
		||||
            "TariffStep014" : [ "10:00", "350000",  "TariffStep015" ],
 | 
			
		||||
            "TariffStep015" : [ "11:00", "350000",  "TariffStep016" ],
 | 
			
		||||
            "TariffStep016" : [ "12:00", "350000",  "TariffStep017" ],
 | 
			
		||||
            "TariffStep017" : [ "13:00", "350000",  "TariffStep018" ],
 | 
			
		||||
            "TariffStep018" : [ "14:00", "350000",  "TariffStep019" ],
 | 
			
		||||
            "TariffStep019" : [ "15:00", "350000",  "TariffStep0110"],
 | 
			
		||||
            "TariffStep0110": [ "16:00", "350000",  "TariffStep0111"],
 | 
			
		||||
            "TariffStep0111": [ "17:00", "350000",  "TariffStep0112"],
 | 
			
		||||
            "TariffStep0112": [ "18:00", "350000",  "TariffStep0113"],
 | 
			
		||||
            "TariffStep0113": [ "19:00", "350000",  "TariffStep0114"],
 | 
			
		||||
            "TariffStep0114": [ "20:00", "800000",  "TariffStep021" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep020" : [ "00:00", "800000",  "TariffStep021" ],
 | 
			
		||||
            "TariffStep021" : [ "07:00", "350000",  "TariffStep022" ],
 | 
			
		||||
            "TariffStep022" : [ "08:00", "350000",  "TariffStep023" ],
 | 
			
		||||
            "TariffStep023" : [ "09:00", "350000",  "TariffStep024" ],
 | 
			
		||||
            "TariffStep024" : [ "10:00", "350000",  "TariffStep025" ],
 | 
			
		||||
            "TariffStep025" : [ "11:00", "350000",  "TariffStep026" ],
 | 
			
		||||
            "TariffStep026" : [ "12:00", "350000",  "TariffStep027" ],
 | 
			
		||||
            "TariffStep027" : [ "13:00", "350000",  "TariffStep028" ],
 | 
			
		||||
            "TariffStep028" : [ "14:00", "350000",  "TariffStep029" ],
 | 
			
		||||
            "TariffStep029" : [ "15:00", "350000",  "TariffStep0210"],
 | 
			
		||||
            "TariffStep0210": [ "16:00", "350000",  "TariffStep0211"],
 | 
			
		||||
            "TariffStep0211": [ "17:00", "350000",  "TariffStep0212"],
 | 
			
		||||
            "TariffStep0212": [ "18:00", "350000",  "TariffStep0213"],
 | 
			
		||||
            "TariffStep0213": [ "19:00", "350000",  "TariffStep0214"],
 | 
			
		||||
            "TariffStep0214": [ "20:00", "800000",  "TariffStep031" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep030" : [ "00:00", "800000",  "TariffStep031" ],
 | 
			
		||||
            "TariffStep031" : [ "07:00", "350000",  "TariffStep032" ],
 | 
			
		||||
            "TariffStep032" : [ "08:00", "350000",  "TariffStep033" ],
 | 
			
		||||
            "TariffStep033" : [ "09:00", "350000",  "TariffStep034" ],
 | 
			
		||||
            "TariffStep034" : [ "10:00", "350000",  "TariffStep035" ],
 | 
			
		||||
            "TariffStep035" : [ "11:00", "350000",  "TariffStep036" ],
 | 
			
		||||
            "TariffStep036" : [ "12:00", "350000",  "TariffStep037" ],
 | 
			
		||||
            "TariffStep037" : [ "13:00", "350000",  "TariffStep038" ],
 | 
			
		||||
            "TariffStep038" : [ "14:00", "350000",  "TariffStep039" ],
 | 
			
		||||
            "TariffStep039" : [ "15:00", "350000",  "TariffStep0310"],
 | 
			
		||||
            "TariffStep0310": [ "16:00", "350000",  "TariffStep0311"],
 | 
			
		||||
            "TariffStep0311": [ "17:00", "350000",  "TariffStep0312"],
 | 
			
		||||
            "TariffStep0312": [ "18:00", "350000",  "TariffStep0313"],
 | 
			
		||||
            "TariffStep0313": [ "19:00", "350000",  "TariffStep0314"],
 | 
			
		||||
            "TariffStep0314": [ "20:00", "800000",  "TariffStep041" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep040" : [ "00:00", "800000",  "TariffStep041" ],
 | 
			
		||||
            "TariffStep041" : [ "07:00", "350000",  "TariffStep042" ],
 | 
			
		||||
            "TariffStep042" : [ "08:00", "350000",  "TariffStep043" ],
 | 
			
		||||
            "TariffStep043" : [ "09:00", "350000",  "TariffStep044" ],
 | 
			
		||||
            "TariffStep044" : [ "10:00", "350000",  "TariffStep045" ],
 | 
			
		||||
            "TariffStep045" : [ "11:00", "350000",  "TariffStep046" ],
 | 
			
		||||
            "TariffStep046" : [ "12:00", "350000",  "TariffStep047" ],
 | 
			
		||||
            "TariffStep047" : [ "13:00", "350000",  "TariffStep048" ],
 | 
			
		||||
            "TariffStep048" : [ "14:00", "350000",  "TariffStep049" ],
 | 
			
		||||
            "TariffStep049" : [ "15:00", "350000",  "TariffStep0410"],
 | 
			
		||||
            "TariffStep0410": [ "16:00", "350000",  "TariffStep0411"],
 | 
			
		||||
            "TariffStep0411": [ "17:00", "350000",  "TariffStep0412"],
 | 
			
		||||
            "TariffStep0412": [ "18:00", "350000",  "TariffStep0413"],
 | 
			
		||||
            "TariffStep0413": [ "19:00", "350000",  "TariffStep0414"],
 | 
			
		||||
            "TariffStep0414": [ "20:00", "800000",  "TariffStep051" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep050" : [ "00:00", "800000",  "TariffStep051" ],
 | 
			
		||||
            "TariffStep051" : [ "07:00", "350000",  "TariffStep052" ],
 | 
			
		||||
            "TariffStep052" : [ "08:00", "350000",  "TariffStep053" ],
 | 
			
		||||
            "TariffStep053" : [ "09:00", "350000",  "TariffStep054" ],
 | 
			
		||||
            "TariffStep054" : [ "10:00", "350000",  "TariffStep055" ],
 | 
			
		||||
            "TariffStep055" : [ "11:00", "350000",  "TariffStep056" ],
 | 
			
		||||
            "TariffStep056" : [ "12:00", "350000",  "TariffStep057" ],
 | 
			
		||||
            "TariffStep057" : [ "13:00", "350000",  "TariffStep058" ],
 | 
			
		||||
            "TariffStep058" : [ "14:00", "350000",  "TariffStep059" ],
 | 
			
		||||
            "TariffStep059" : [ "15:00", "350000",  "TariffStep0510"],
 | 
			
		||||
            "TariffStep0510": [ "16:00", "350000",  "TariffStep0511"],
 | 
			
		||||
            "TariffStep0511": [ "17:00", "350000",  "TariffStep0512"],
 | 
			
		||||
            "TariffStep0512": [ "18:00", "350000",  "TariffStep0513"],
 | 
			
		||||
            "TariffStep0513": [ "19:00", "350000",  "TariffStep0514"],
 | 
			
		||||
            "TariffStep0514": [ "20:00", "800000",  "TariffStep061" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep060" : [ "00:00", "800000",  "TariffStep061" ],
 | 
			
		||||
            "TariffStep061" : [ "07:00", "350000",  "TariffStep062" ],
 | 
			
		||||
            "TariffStep062" : [ "08:00", "350000",  "TariffStep063" ],
 | 
			
		||||
            "TariffStep063" : [ "09:00", "350000",  "TariffStep064" ],
 | 
			
		||||
            "TariffStep064" : [ "10:00", "350000",  "TariffStep065" ],
 | 
			
		||||
            "TariffStep065" : [ "11:00", "350000",  "TariffStep066" ],
 | 
			
		||||
            "TariffStep066" : [ "12:00", "350000",  "TariffStep067" ],
 | 
			
		||||
            "TariffStep067" : [ "13:00", "350000",  "TariffStep068" ],
 | 
			
		||||
            "TariffStep068" : [ "14:00", "350000",  "TariffStep069" ],
 | 
			
		||||
            "TariffStep069" : [ "15:00", "350000",  "TariffStep0610"],
 | 
			
		||||
            "TariffStep0610": [ "16:00", "350000",  "TariffStep0611"],
 | 
			
		||||
            "TariffStep0611": [ "17:00", "350000",  "TariffStep0612"],
 | 
			
		||||
            "TariffStep0612": [ "18:00", "350000",  "TariffStep0613"],
 | 
			
		||||
            "TariffStep0613": [ "19:00", "350000",  "TariffStep0614"],
 | 
			
		||||
            "TariffStep0614": [ "20:00", "800000",  "TariffStep101" ]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "week2" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep100" : [ "00:00", "800000",  "TariffStep101" ],
 | 
			
		||||
            "TariffStep101" : [ "07:00", "350000",  "TariffStep102" ],
 | 
			
		||||
            "TariffStep102" : [ "08:00", "350000",  "TariffStep103" ],
 | 
			
		||||
            "TariffStep103" : [ "09:00", "350000",  "TariffStep104" ],
 | 
			
		||||
            "TariffStep104" : [ "10:00", "350000",  "TariffStep105" ],
 | 
			
		||||
            "TariffStep105" : [ "11:00", "350000",  "TariffStep106" ],
 | 
			
		||||
            "TariffStep106" : [ "12:00", "350000",  "TariffStep107" ],
 | 
			
		||||
            "TariffStep107" : [ "13:00", "350000",  "TariffStep108" ],
 | 
			
		||||
            "TariffStep108" : [ "14:00", "350000",  "TariffStep109" ],
 | 
			
		||||
            "TariffStep109" : [ "15:00", "350000",  "TariffStep1010"],
 | 
			
		||||
            "TariffStep1010": [ "16:00", "350000",  "TariffStep1011"],
 | 
			
		||||
            "TariffStep1011": [ "17:00", "350000",  "TariffStep1012"],
 | 
			
		||||
            "TariffStep1012": [ "18:00", "350000",  "TariffStep1013"],
 | 
			
		||||
            "TariffStep1013": [ "19:00", "350000",  "TariffStep1014"],
 | 
			
		||||
            "TariffStep1014": [ "20:00", "800000",  "TariffStep111" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep110" : [ "00:00", "800000",  "TariffStep111" ],
 | 
			
		||||
            "TariffStep111" : [ "07:00", "350000",  "TariffStep112" ],
 | 
			
		||||
            "TariffStep112" : [ "08:00", "350000",  "TariffStep113" ],
 | 
			
		||||
            "TariffStep113" : [ "09:00", "350000",  "TariffStep114" ],
 | 
			
		||||
            "TariffStep114" : [ "10:00", "350000",  "TariffStep115" ],
 | 
			
		||||
            "TariffStep115" : [ "11:00", "350000",  "TariffStep116" ],
 | 
			
		||||
            "TariffStep116" : [ "12:00", "350000",  "TariffStep117" ],
 | 
			
		||||
            "TariffStep117" : [ "13:00", "350000",  "TariffStep118" ],
 | 
			
		||||
            "TariffStep118" : [ "14:00", "350000",  "TariffStep119" ],
 | 
			
		||||
            "TariffStep119" : [ "15:00", "350000",  "TariffStep1110"],
 | 
			
		||||
            "TariffStep1110": [ "16:00", "350000",  "TariffStep1111"],
 | 
			
		||||
            "TariffStep1111": [ "17:00", "350000",  "TariffStep1112"],
 | 
			
		||||
            "TariffStep1112": [ "18:00", "350000",  "TariffStep1113"],
 | 
			
		||||
            "TariffStep1113": [ "19:00", "350000",  "TariffStep1114"],
 | 
			
		||||
            "TariffStep1114": [ "20:00", "800000",  "TariffStep121" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep120" : [ "00:00", "800000",  "TariffStep121" ],
 | 
			
		||||
            "TariffStep121" : [ "07:00", "350000",  "TariffStep122" ],
 | 
			
		||||
            "TariffStep122" : [ "08:00", "350000",  "TariffStep123" ],
 | 
			
		||||
            "TariffStep123" : [ "09:00", "350000",  "TariffStep124" ],
 | 
			
		||||
            "TariffStep124" : [ "10:00", "350000",  "TariffStep125" ],
 | 
			
		||||
            "TariffStep125" : [ "11:00", "350000",  "TariffStep126" ],
 | 
			
		||||
            "TariffStep126" : [ "12:00", "350000",  "TariffStep127" ],
 | 
			
		||||
            "TariffStep127" : [ "13:00", "350000",  "TariffStep128" ],
 | 
			
		||||
            "TariffStep128" : [ "14:00", "350000",  "TariffStep129" ],
 | 
			
		||||
            "TariffStep129" : [ "15:00", "350000",  "TariffStep1210"],
 | 
			
		||||
            "TariffStep1210": [ "16:00", "350000",  "TariffStep1211"],
 | 
			
		||||
            "TariffStep1211": [ "17:00", "350000",  "TariffStep1212"],
 | 
			
		||||
            "TariffStep1212": [ "18:00", "350000",  "TariffStep1213"],
 | 
			
		||||
            "TariffStep1213": [ "19:00", "350000",  "TariffStep1214"],
 | 
			
		||||
            "TariffStep1214": [ "20:00", "800000",  "TariffStep131" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep130" : [ "00:00", "800000",  "TariffStep131" ],
 | 
			
		||||
            "TariffStep131" : [ "07:00", "350000",  "TariffStep132" ],
 | 
			
		||||
            "TariffStep132" : [ "08:00", "350000",  "TariffStep133" ],
 | 
			
		||||
            "TariffStep133" : [ "09:00", "350000",  "TariffStep134" ],
 | 
			
		||||
            "TariffStep134" : [ "10:00", "350000",  "TariffStep135" ],
 | 
			
		||||
            "TariffStep135" : [ "11:00", "350000",  "TariffStep136" ],
 | 
			
		||||
            "TariffStep136" : [ "12:00", "350000",  "TariffStep137" ],
 | 
			
		||||
            "TariffStep137" : [ "13:00", "350000",  "TariffStep138" ],
 | 
			
		||||
            "TariffStep138" : [ "14:00", "350000",  "TariffStep139" ],
 | 
			
		||||
            "TariffStep139" : [ "15:00", "350000",  "TariffStep1310"],
 | 
			
		||||
            "TariffStep1310": [ "16:00", "350000",  "TariffStep1311"],
 | 
			
		||||
            "TariffStep1311": [ "17:00", "350000",  "TariffStep1312"],
 | 
			
		||||
            "TariffStep1312": [ "18:00", "350000",  "TariffStep1313"],
 | 
			
		||||
            "TariffStep1313": [ "19:00", "350000",  "TariffStep1314"],
 | 
			
		||||
            "TariffStep1314": [ "20:00", "800000",  "TariffStep141" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep140" : [ "00:00", "800000",  "TariffStep141" ],
 | 
			
		||||
            "TariffStep141" : [ "07:00", "350000",  "TariffStep142" ],
 | 
			
		||||
            "TariffStep142" : [ "08:00", "350000",  "TariffStep143" ],
 | 
			
		||||
            "TariffStep143" : [ "09:00", "350000",  "TariffStep144" ],
 | 
			
		||||
            "TariffStep144" : [ "10:00", "350000",  "TariffStep145" ],
 | 
			
		||||
            "TariffStep145" : [ "11:00", "350000",  "TariffStep146" ],
 | 
			
		||||
            "TariffStep146" : [ "12:00", "350000",  "TariffStep147" ],
 | 
			
		||||
            "TariffStep147" : [ "13:00", "350000",  "TariffStep148" ],
 | 
			
		||||
            "TariffStep148" : [ "14:00", "350000",  "TariffStep149" ],
 | 
			
		||||
            "TariffStep149" : [ "15:00", "350000",  "TariffStep1410"],
 | 
			
		||||
            "TariffStep1410": [ "16:00", "350000",  "TariffStep1411"],
 | 
			
		||||
            "TariffStep1411": [ "17:00", "350000",  "TariffStep1412"],
 | 
			
		||||
            "TariffStep1412": [ "18:00", "350000",  "TariffStep1413"],
 | 
			
		||||
            "TariffStep1413": [ "19:00", "350000",  "TariffStep1414"],
 | 
			
		||||
            "TariffStep1414": [ "20:00", "800000",  "TariffStep151" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep150" : [ "00:00", "800000",  "TariffStep151" ],
 | 
			
		||||
            "TariffStep151" : [ "07:00", "350000",  "TariffStep152" ],
 | 
			
		||||
            "TariffStep152" : [ "08:00", "350000",  "TariffStep153" ],
 | 
			
		||||
            "TariffStep153" : [ "09:00", "350000",  "TariffStep154" ],
 | 
			
		||||
            "TariffStep154" : [ "10:00", "350000",  "TariffStep155" ],
 | 
			
		||||
            "TariffStep155" : [ "11:00", "350000",  "TariffStep156" ],
 | 
			
		||||
            "TariffStep156" : [ "12:00", "350000",  "TariffStep157" ],
 | 
			
		||||
            "TariffStep157" : [ "13:00", "350000",  "TariffStep158" ],
 | 
			
		||||
            "TariffStep158" : [ "14:00", "350000",  "TariffStep159" ],
 | 
			
		||||
            "TariffStep159" : [ "15:00", "350000",  "TariffStep1510"],
 | 
			
		||||
            "TariffStep1510": [ "16:00", "350000",  "TariffStep1511"],
 | 
			
		||||
            "TariffStep1511": [ "17:00", "350000",  "TariffStep1512"],
 | 
			
		||||
            "TariffStep1512": [ "18:00", "350000",  "TariffStep1513"],
 | 
			
		||||
            "TariffStep1513": [ "19:00", "350000",  "TariffStep1514"],
 | 
			
		||||
            "TariffStep1514": [ "20:00", "800000",  "TariffStep161" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep160" : [ "00:00", "800000",  "TariffStep161" ],
 | 
			
		||||
            "TariffStep161" : [ "07:00", "350000",  "TariffStep162" ],
 | 
			
		||||
            "TariffStep162" : [ "08:00", "350000",  "TariffStep163" ],
 | 
			
		||||
            "TariffStep163" : [ "09:00", "350000",  "TariffStep164" ],
 | 
			
		||||
            "TariffStep164" : [ "10:00", "350000",  "TariffStep165" ],
 | 
			
		||||
            "TariffStep165" : [ "11:00", "350000",  "TariffStep166" ],
 | 
			
		||||
            "TariffStep166" : [ "12:00", "350000",  "TariffStep167" ],
 | 
			
		||||
            "TariffStep167" : [ "13:00", "350000",  "TariffStep168" ],
 | 
			
		||||
            "TariffStep168" : [ "14:00", "350000",  "TariffStep169" ],
 | 
			
		||||
            "TariffStep169" : [ "15:00", "350000",  "TariffStep1610"],
 | 
			
		||||
            "TariffStep1610": [ "16:00", "350000",  "TariffStep1611"],
 | 
			
		||||
            "TariffStep1611": [ "17:00", "350000",  "TariffStep1612"],
 | 
			
		||||
            "TariffStep1612": [ "18:00", "350000",  "TariffStep1613"],
 | 
			
		||||
            "TariffStep1613": [ "19:00", "350000",  "TariffStep1614"],
 | 
			
		||||
            "TariffStep1614": [ "20:00", "800000",  "TariffStep201" ]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "week3" : {
 | 
			
		||||
        "Monday": {
 | 
			
		||||
            "TariffStep200" : [ "00:00", "800000",  "TariffStep201" ],
 | 
			
		||||
            "TariffStep201" : [ "07:00", "350000",  "TariffStep202" ],
 | 
			
		||||
            "TariffStep202" : [ "08:00", "350000",  "TariffStep203" ],
 | 
			
		||||
            "TariffStep203" : [ "09:00", "350000",  "TariffStep204" ],
 | 
			
		||||
            "TariffStep204" : [ "10:00", "350000",  "TariffStep205" ],
 | 
			
		||||
            "TariffStep205" : [ "11:00", "350000",  "TariffStep206" ],
 | 
			
		||||
            "TariffStep206" : [ "12:00", "350000",  "TariffStep207" ],
 | 
			
		||||
            "TariffStep207" : [ "13:00", "350000",  "TariffStep208" ],
 | 
			
		||||
            "TariffStep208" : [ "14:00", "350000",  "TariffStep209" ],
 | 
			
		||||
            "TariffStep209" : [ "15:00", "350000",  "TariffStep2010"],
 | 
			
		||||
            "TariffStep2010": [ "16:00", "350000",  "TariffStep2011"],
 | 
			
		||||
            "TariffStep2011": [ "17:00", "350000",  "TariffStep2012"],
 | 
			
		||||
            "TariffStep2012": [ "18:00", "350000",  "TariffStep2013"],
 | 
			
		||||
            "TariffStep2013": [ "19:00", "350000",  "TariffStep2014"],
 | 
			
		||||
            "TariffStep2014": [ "20:00", "800000",  "TariffStep211" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Tuesday": {
 | 
			
		||||
            "TariffStep210" : [ "00:00", "800000",  "TariffStep211" ],
 | 
			
		||||
            "TariffStep211" : [ "07:00", "350000",  "TariffStep212" ],
 | 
			
		||||
            "TariffStep212" : [ "08:00", "350000",  "TariffStep213" ],
 | 
			
		||||
            "TariffStep213" : [ "09:00", "350000",  "TariffStep214" ],
 | 
			
		||||
            "TariffStep214" : [ "10:00", "350000",  "TariffStep215" ],
 | 
			
		||||
            "TariffStep215" : [ "11:00", "350000",  "TariffStep216" ],
 | 
			
		||||
            "TariffStep216" : [ "12:00", "350000",  "TariffStep217" ],
 | 
			
		||||
            "TariffStep217" : [ "13:00", "350000",  "TariffStep218" ],
 | 
			
		||||
            "TariffStep218" : [ "14:00", "350000",  "TariffStep219" ],
 | 
			
		||||
            "TariffStep219" : [ "15:00", "350000",  "TariffStep2110"],
 | 
			
		||||
            "TariffStep2110": [ "16:00", "350000",  "TariffStep2111"],
 | 
			
		||||
            "TariffStep2111": [ "17:00", "350000",  "TariffStep2112"],
 | 
			
		||||
            "TariffStep2112": [ "18:00", "350000",  "TariffStep2113"],
 | 
			
		||||
            "TariffStep2113": [ "19:00", "350000",  "TariffStep2114"],
 | 
			
		||||
            "TariffStep2114": [ "20:00", "800000",  "TariffStep221" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Wednesday": {
 | 
			
		||||
            "TariffStep220" : [ "00:00", "800000",  "TariffStep221" ],
 | 
			
		||||
            "TariffStep221" : [ "07:00", "350000",  "TariffStep222" ],
 | 
			
		||||
            "TariffStep222" : [ "08:00", "350000",  "TariffStep223" ],
 | 
			
		||||
            "TariffStep223" : [ "09:00", "350000",  "TariffStep224" ],
 | 
			
		||||
            "TariffStep224" : [ "10:00", "350000",  "TariffStep225" ],
 | 
			
		||||
            "TariffStep225" : [ "11:00", "350000",  "TariffStep226" ],
 | 
			
		||||
            "TariffStep226" : [ "12:00", "350000",  "TariffStep227" ],
 | 
			
		||||
            "TariffStep227" : [ "13:00", "350000",  "TariffStep228" ],
 | 
			
		||||
            "TariffStep228" : [ "14:00", "350000",  "TariffStep229" ],
 | 
			
		||||
            "TariffStep229" : [ "15:00", "350000",  "TariffStep2210"],
 | 
			
		||||
            "TariffStep2210": [ "16:00", "350000",  "TariffStep2211"],
 | 
			
		||||
            "TariffStep2211": [ "17:00", "350000",  "TariffStep2212"],
 | 
			
		||||
            "TariffStep2212": [ "18:00", "350000",  "TariffStep2213"],
 | 
			
		||||
            "TariffStep2213": [ "19:00", "350000",  "TariffStep2214"],
 | 
			
		||||
            "TariffStep2214": [ "20:00", "800000",  "TariffStep231" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Thursday": {
 | 
			
		||||
            "TariffStep230" : [ "00:00", "800000",  "TariffStep231" ],
 | 
			
		||||
            "TariffStep231" : [ "07:00", "350000",  "TariffStep232" ],
 | 
			
		||||
            "TariffStep232" : [ "08:00", "350000",  "TariffStep233" ],
 | 
			
		||||
            "TariffStep233" : [ "09:00", "350000",  "TariffStep234" ],
 | 
			
		||||
            "TariffStep234" : [ "10:00", "350000",  "TariffStep235" ],
 | 
			
		||||
            "TariffStep235" : [ "11:00", "350000",  "TariffStep236" ],
 | 
			
		||||
            "TariffStep236" : [ "12:00", "350000",  "TariffStep237" ],
 | 
			
		||||
            "TariffStep237" : [ "13:00", "350000",  "TariffStep238" ],
 | 
			
		||||
            "TariffStep238" : [ "14:00", "350000",  "TariffStep239" ],
 | 
			
		||||
            "TariffStep239" : [ "15:00", "350000",  "TariffStep2310"],
 | 
			
		||||
            "TariffStep2310": [ "16:00", "350000",  "TariffStep2311"],
 | 
			
		||||
            "TariffStep2311": [ "17:00", "350000",  "TariffStep2312"],
 | 
			
		||||
            "TariffStep2312": [ "18:00", "350000",  "TariffStep2313"],
 | 
			
		||||
            "TariffStep2313": [ "19:00", "350000",  "TariffStep2314"],
 | 
			
		||||
            "TariffStep2314": [ "20:00", "800000",  "TariffStep241" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Friday": {
 | 
			
		||||
            "TariffStep240" : [ "00:00", "800000",  "TariffStep241" ],
 | 
			
		||||
            "TariffStep241" : [ "07:00", "350000",  "TariffStep242" ],
 | 
			
		||||
            "TariffStep242" : [ "08:00", "350000",  "TariffStep243" ],
 | 
			
		||||
            "TariffStep243" : [ "09:00", "350000",  "TariffStep244" ],
 | 
			
		||||
            "TariffStep244" : [ "10:00", "350000",  "TariffStep245" ],
 | 
			
		||||
            "TariffStep245" : [ "11:00", "350000",  "TariffStep246" ],
 | 
			
		||||
            "TariffStep246" : [ "12:00", "350000",  "TariffStep247" ],
 | 
			
		||||
            "TariffStep247" : [ "13:00", "350000",  "TariffStep248" ],
 | 
			
		||||
            "TariffStep248" : [ "14:00", "350000",  "TariffStep249" ],
 | 
			
		||||
            "TariffStep249" : [ "15:00", "350000",  "TariffStep2410"],
 | 
			
		||||
            "TariffStep2410": [ "16:00", "350000",  "TariffStep2411"],
 | 
			
		||||
            "TariffStep2411": [ "17:00", "350000",  "TariffStep2412"],
 | 
			
		||||
            "TariffStep2412": [ "18:00", "350000",  "TariffStep2413"],
 | 
			
		||||
            "TariffStep2413": [ "19:00", "350000",  "TariffStep2414"],
 | 
			
		||||
            "TariffStep2414": [ "20:00", "800000",  "TariffStep251" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Saturday": {
 | 
			
		||||
            "TariffStep250" : [ "00:00", "800000",  "TariffStep251" ],
 | 
			
		||||
            "TariffStep251" : [ "07:00", "350000",  "TariffStep252" ],
 | 
			
		||||
            "TariffStep252" : [ "08:00", "350000",  "TariffStep253" ],
 | 
			
		||||
            "TariffStep253" : [ "09:00", "350000",  "TariffStep254" ],
 | 
			
		||||
            "TariffStep254" : [ "10:00", "350000",  "TariffStep255" ],
 | 
			
		||||
            "TariffStep255" : [ "11:00", "350000",  "TariffStep256" ],
 | 
			
		||||
            "TariffStep256" : [ "12:00", "350000",  "TariffStep257" ],
 | 
			
		||||
            "TariffStep257" : [ "13:00", "350000",  "TariffStep258" ],
 | 
			
		||||
            "TariffStep258" : [ "14:00", "350000",  "TariffStep259" ],
 | 
			
		||||
            "TariffStep259" : [ "15:00", "350000",  "TariffStep2510"],
 | 
			
		||||
            "TariffStep2510": [ "16:00", "350000",  "TariffStep2511"],
 | 
			
		||||
            "TariffStep2511": [ "17:00", "350000",  "TariffStep2512"],
 | 
			
		||||
            "TariffStep2512": [ "18:00", "350000",  "TariffStep2513"],
 | 
			
		||||
            "TariffStep2513": [ "19:00", "350000",  "TariffStep2514"],
 | 
			
		||||
            "TariffStep2514": [ "20:00", "800000",  "TariffStep261" ]
 | 
			
		||||
        },
 | 
			
		||||
        "Sunday": {
 | 
			
		||||
            "TariffStep260" : [ "00:00", "800000",  "TariffStep261" ],
 | 
			
		||||
            "TariffStep261" : [ "07:00", "350000",  "TariffStep262" ],
 | 
			
		||||
            "TariffStep262" : [ "08:00", "350000",  "TariffStep263" ],
 | 
			
		||||
            "TariffStep263" : [ "09:00", "350000",  "TariffStep264" ],
 | 
			
		||||
            "TariffStep264" : [ "10:00", "350000",  "TariffStep265" ],
 | 
			
		||||
            "TariffStep265" : [ "11:00", "350000",  "TariffStep266" ],
 | 
			
		||||
            "TariffStep266" : [ "12:00", "350000",  "TariffStep267" ],
 | 
			
		||||
            "TariffStep267" : [ "13:00", "350000",  "TariffStep268" ],
 | 
			
		||||
            "TariffStep268" : [ "14:00", "350000",  "TariffStep269" ],
 | 
			
		||||
            "TariffStep269" : [ "15:00", "350000",  "TariffStep2610"],
 | 
			
		||||
            "TariffStep2610": [ "16:00", "350000",  "TariffStep2611"],
 | 
			
		||||
            "TariffStep2611": [ "17:00", "350000",  "TariffStep2612"],
 | 
			
		||||
            "TariffStep2612": [ "18:00", "350000",  "TariffStep2613"],
 | 
			
		||||
            "TariffStep2613": [ "19:00", "350000",  "TariffStep2614"],
 | 
			
		||||
            "TariffStep2614": [ "20:00", "800000",  "TariffStep001" ]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										368
									
								
								calculate_parking_tickets/germersheim.conf.bck1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										368
									
								
								calculate_parking_tickets/germersheim.conf.bck1
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,368 @@
 | 
			
		||||
{
 | 
			
		||||
    "name":"test",
 | 
			
		||||
    "properties": [
 | 
			
		||||
    ],
 | 
			
		||||
    "week1" : {
 | 
			
		||||
        "Monday": [
 | 
			
		||||
            { "TariffStep000" : [ "00:00", "800000",  "TariffStep001" ]},
 | 
			
		||||
            { "TariffStep001" : [ "07:00", "350000",  "TariffStep002" ]},
 | 
			
		||||
            { "TariffStep002" : [ "08:00", "350000",  "TariffStep003" ]},
 | 
			
		||||
            { "TariffStep003" : [ "09:00", "350000",  "TariffStep004" ]},
 | 
			
		||||
            { "TariffStep004" : [ "10:00", "350000",  "TariffStep005" ]},
 | 
			
		||||
            { "TariffStep005" : [ "11:00", "350000",  "TariffStep006" ]},
 | 
			
		||||
            { "TariffStep006" : [ "12:00", "350000",  "TariffStep007" ]},
 | 
			
		||||
            { "TariffStep007" : [ "13:00", "350000",  "TariffStep008" ]},
 | 
			
		||||
            { "TariffStep008" : [ "14:00", "350000",  "TariffStep009" ]},
 | 
			
		||||
            { "TariffStep009" : [ "15:00", "350000",  "TariffStep0010"]},
 | 
			
		||||
            { "TariffStep0010": [ "16:00", "350000",  "TariffStep0011"]},
 | 
			
		||||
            { "TariffStep0011": [ "17:00", "350000",  "TariffStep0012"]},
 | 
			
		||||
            { "TariffStep0012": [ "18:00", "350000",  "TariffStep0013"]},
 | 
			
		||||
            { "TariffStep0013": [ "19:00", "350000",  "TariffStep0014"]},
 | 
			
		||||
            { "TariffStep0014": [ "20:00", "800000",  "TariffStep011" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Tuesday": [
 | 
			
		||||
            { "TariffStep010" : [ "00:00", "800000",  "TariffStep011" ]},
 | 
			
		||||
            { "TariffStep011" : [ "07:00", "350000",  "TariffStep012" ]},
 | 
			
		||||
            { "TariffStep012" : [ "08:00", "350000",  "TariffStep013" ]},
 | 
			
		||||
            { "TariffStep013" : [ "09:00", "350000",  "TariffStep014" ]},
 | 
			
		||||
            { "TariffStep014" : [ "10:00", "350000",  "TariffStep015" ]},
 | 
			
		||||
            { "TariffStep015" : [ "11:00", "350000",  "TariffStep016" ]},
 | 
			
		||||
            { "TariffStep016" : [ "12:00", "350000",  "TariffStep017" ]},
 | 
			
		||||
            { "TariffStep017" : [ "13:00", "350000",  "TariffStep018" ]},
 | 
			
		||||
            { "TariffStep018" : [ "14:00", "350000",  "TariffStep019" ]},
 | 
			
		||||
            { "TariffStep019" : [ "15:00", "350000",  "TariffStep0110"]},
 | 
			
		||||
            { "TariffStep0110": [ "16:00", "350000",  "TariffStep0111"]},
 | 
			
		||||
            { "TariffStep0111": [ "17:00", "350000",  "TariffStep0112"]},
 | 
			
		||||
            { "TariffStep0112": [ "18:00", "350000",  "TariffStep0113"]},
 | 
			
		||||
            { "TariffStep0113": [ "19:00", "350000",  "TariffStep0114"]},
 | 
			
		||||
            { "TariffStep0114": [ "20:00", "800000",  "TariffStep021" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Wednesday": [
 | 
			
		||||
            { "TariffStep020" : [ "00:00", "800000",  "TariffStep021" ]},
 | 
			
		||||
            { "TariffStep021" : [ "07:00", "350000",  "TariffStep022" ]},
 | 
			
		||||
            { "TariffStep022" : [ "08:00", "350000",  "TariffStep023" ]},
 | 
			
		||||
            { "TariffStep023" : [ "09:00", "350000",  "TariffStep024" ]},
 | 
			
		||||
            { "TariffStep024" : [ "10:00", "350000",  "TariffStep025" ]},
 | 
			
		||||
            { "TariffStep025" : [ "11:00", "350000",  "TariffStep026" ]},
 | 
			
		||||
            { "TariffStep026" : [ "12:00", "350000",  "TariffStep027" ]},
 | 
			
		||||
            { "TariffStep027" : [ "13:00", "350000",  "TariffStep028" ]},
 | 
			
		||||
            { "TariffStep028" : [ "14:00", "350000",  "TariffStep029" ]},
 | 
			
		||||
            { "TariffStep029" : [ "15:00", "350000",  "TariffStep0210"]},
 | 
			
		||||
            { "TariffStep0210": [ "16:00", "350000",  "TariffStep0211"]},
 | 
			
		||||
            { "TariffStep0211": [ "17:00", "350000",  "TariffStep0212"]},
 | 
			
		||||
            { "TariffStep0212": [ "18:00", "350000",  "TariffStep0213"]},
 | 
			
		||||
            { "TariffStep0213": [ "19:00", "350000",  "TariffStep0214"]},
 | 
			
		||||
            { "TariffStep0214": [ "20:00", "800000",  "TariffStep031" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Thursday": [
 | 
			
		||||
            { "TariffStep030" : [ "00:00", "800000",  "TariffStep031" ]},
 | 
			
		||||
            { "TariffStep031" : [ "07:00", "350000",  "TariffStep032" ]},
 | 
			
		||||
            { "TariffStep032" : [ "08:00", "350000",  "TariffStep033" ]},
 | 
			
		||||
            { "TariffStep033" : [ "09:00", "350000",  "TariffStep034" ]},
 | 
			
		||||
            { "TariffStep034" : [ "10:00", "350000",  "TariffStep035" ]},
 | 
			
		||||
            { "TariffStep035" : [ "11:00", "350000",  "TariffStep036" ]},
 | 
			
		||||
            { "TariffStep036" : [ "12:00", "350000",  "TariffStep037" ]},
 | 
			
		||||
            { "TariffStep037" : [ "13:00", "350000",  "TariffStep038" ]},
 | 
			
		||||
            { "TariffStep038" : [ "14:00", "350000",  "TariffStep039" ]},
 | 
			
		||||
            { "TariffStep039" : [ "15:00", "350000",  "TariffStep0310"]},
 | 
			
		||||
            { "TariffStep0310": [ "16:00", "350000",  "TariffStep0311"]},
 | 
			
		||||
            { "TariffStep0311": [ "17:00", "350000",  "TariffStep0312"]},
 | 
			
		||||
            { "TariffStep0312": [ "18:00", "350000",  "TariffStep0313"]},
 | 
			
		||||
            { "TariffStep0313": [ "19:00", "350000",  "TariffStep0314"]},
 | 
			
		||||
            { "TariffStep0314": [ "20:00", "800000",  "TariffStep041" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Friday": [
 | 
			
		||||
            { "TariffStep040" : [ "00:00", "800000",  "TariffStep041" ]},
 | 
			
		||||
            { "TariffStep041" : [ "07:00", "350000",  "TariffStep042" ]},
 | 
			
		||||
            { "TariffStep042" : [ "08:00", "350000",  "TariffStep043" ]},
 | 
			
		||||
            { "TariffStep043" : [ "09:00", "350000",  "TariffStep044" ]},
 | 
			
		||||
            { "TariffStep044" : [ "10:00", "350000",  "TariffStep045" ]},
 | 
			
		||||
            { "TariffStep045" : [ "11:00", "350000",  "TariffStep046" ]},
 | 
			
		||||
            { "TariffStep046" : [ "12:00", "350000",  "TariffStep047" ]},
 | 
			
		||||
            { "TariffStep047" : [ "13:00", "350000",  "TariffStep048" ]},
 | 
			
		||||
            { "TariffStep048" : [ "14:00", "350000",  "TariffStep049" ]},
 | 
			
		||||
            { "TariffStep049" : [ "15:00", "350000",  "TariffStep0410"]},
 | 
			
		||||
            { "TariffStep0410": [ "16:00", "350000",  "TariffStep0411"]},
 | 
			
		||||
            { "TariffStep0411": [ "17:00", "350000",  "TariffStep0412"]},
 | 
			
		||||
            { "TariffStep0412": [ "18:00", "350000",  "TariffStep0413"]},
 | 
			
		||||
            { "TariffStep0413": [ "19:00", "350000",  "TariffStep0414"]},
 | 
			
		||||
            { "TariffStep0414": [ "20:00", "800000",  "TariffStep051" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Saturday": [
 | 
			
		||||
            { "TariffStep050" : [ "00:00", "800000",  "TariffStep051" ]},
 | 
			
		||||
            { "TariffStep051" : [ "07:00", "350000",  "TariffStep052" ]},
 | 
			
		||||
            { "TariffStep052" : [ "08:00", "350000",  "TariffStep053" ]},
 | 
			
		||||
            { "TariffStep053" : [ "09:00", "350000",  "TariffStep054" ]},
 | 
			
		||||
            { "TariffStep054" : [ "10:00", "350000",  "TariffStep055" ]},
 | 
			
		||||
            { "TariffStep055" : [ "11:00", "350000",  "TariffStep056" ]},
 | 
			
		||||
            { "TariffStep056" : [ "12:00", "350000",  "TariffStep057" ]},
 | 
			
		||||
            { "TariffStep057" : [ "13:00", "350000",  "TariffStep058" ]},
 | 
			
		||||
            { "TariffStep058" : [ "14:00", "350000",  "TariffStep059" ]},
 | 
			
		||||
            { "TariffStep059" : [ "15:00", "350000",  "TariffStep0510"]},
 | 
			
		||||
            { "TariffStep0510": [ "16:00", "350000",  "TariffStep0511"]},
 | 
			
		||||
            { "TariffStep0511": [ "17:00", "350000",  "TariffStep0512"]},
 | 
			
		||||
            { "TariffStep0512": [ "18:00", "350000",  "TariffStep0513"]},
 | 
			
		||||
            { "TariffStep0513": [ "19:00", "350000",  "TariffStep0514"]},
 | 
			
		||||
            { "TariffStep0514": [ "20:00", "800000",  "TariffStep061" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Sunday": [
 | 
			
		||||
            { "TariffStep060" : [ "00:00", "800000",  "TariffStep061" ]},
 | 
			
		||||
            { "TariffStep061" : [ "07:00", "350000",  "TariffStep062" ]},
 | 
			
		||||
            { "TariffStep062" : [ "08:00", "350000",  "TariffStep063" ]},
 | 
			
		||||
            { "TariffStep063" : [ "09:00", "350000",  "TariffStep064" ]},
 | 
			
		||||
            { "TariffStep064" : [ "10:00", "350000",  "TariffStep065" ]},
 | 
			
		||||
            { "TariffStep065" : [ "11:00", "350000",  "TariffStep066" ]},
 | 
			
		||||
            { "TariffStep066" : [ "12:00", "350000",  "TariffStep067" ]},
 | 
			
		||||
            { "TariffStep067" : [ "13:00", "350000",  "TariffStep068" ]},
 | 
			
		||||
            { "TariffStep068" : [ "14:00", "350000",  "TariffStep069" ]},
 | 
			
		||||
            { "TariffStep069" : [ "15:00", "350000",  "TariffStep0610"]},
 | 
			
		||||
            { "TariffStep0610": [ "16:00", "350000",  "TariffStep0611"]},
 | 
			
		||||
            { "TariffStep0611": [ "17:00", "350000",  "TariffStep0612"]},
 | 
			
		||||
            { "TariffStep0612": [ "18:00", "350000",  "TariffStep0613"]},
 | 
			
		||||
            { "TariffStep0613": [ "19:00", "350000",  "TariffStep0614"]},
 | 
			
		||||
            { "TariffStep0614": [ "20:00", "800000",  "TariffStep101" ]}
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "week2" : {
 | 
			
		||||
        "Monday": [
 | 
			
		||||
            { "TariffStep100" : [ "00:00", "800000",  "TariffStep101" ]},
 | 
			
		||||
            { "TariffStep101" : [ "07:00", "350000",  "TariffStep102" ]},
 | 
			
		||||
            { "TariffStep102" : [ "08:00", "350000",  "TariffStep103" ]},
 | 
			
		||||
            { "TariffStep103" : [ "09:00", "350000",  "TariffStep104" ]},
 | 
			
		||||
            { "TariffStep104" : [ "10:00", "350000",  "TariffStep105" ]},
 | 
			
		||||
            { "TariffStep105" : [ "11:00", "350000",  "TariffStep106" ]},
 | 
			
		||||
            { "TariffStep106" : [ "12:00", "350000",  "TariffStep107" ]},
 | 
			
		||||
            { "TariffStep107" : [ "13:00", "350000",  "TariffStep108" ]},
 | 
			
		||||
            { "TariffStep108" : [ "14:00", "350000",  "TariffStep109" ]},
 | 
			
		||||
            { "TariffStep109" : [ "15:00", "350000",  "TariffStep1010"]},
 | 
			
		||||
            { "TariffStep1010": [ "16:00", "350000",  "TariffStep1011"]},
 | 
			
		||||
            { "TariffStep1011": [ "17:00", "350000",  "TariffStep1012"]},
 | 
			
		||||
            { "TariffStep1012": [ "18:00", "350000",  "TariffStep1013"]},
 | 
			
		||||
            { "TariffStep1013": [ "19:00", "350000",  "TariffStep1014"]},
 | 
			
		||||
            { "TariffStep1014": [ "20:00", "800000",  "TariffStep111" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Tuesday": [
 | 
			
		||||
            { "TariffStep110" : [ "00:00", "800000",  "TariffStep111" ]},
 | 
			
		||||
            { "TariffStep111" : [ "07:00", "350000",  "TariffStep112" ]},
 | 
			
		||||
            { "TariffStep112" : [ "08:00", "350000",  "TariffStep113" ]},
 | 
			
		||||
            { "TariffStep113" : [ "09:00", "350000",  "TariffStep114" ]},
 | 
			
		||||
            { "TariffStep114" : [ "10:00", "350000",  "TariffStep115" ]},
 | 
			
		||||
            { "TariffStep115" : [ "11:00", "350000",  "TariffStep116" ]},
 | 
			
		||||
            { "TariffStep116" : [ "12:00", "350000",  "TariffStep117" ]},
 | 
			
		||||
            { "TariffStep117" : [ "13:00", "350000",  "TariffStep118" ]},
 | 
			
		||||
            { "TariffStep118" : [ "14:00", "350000",  "TariffStep119" ]},
 | 
			
		||||
            { "TariffStep119" : [ "15:00", "350000",  "TariffStep1110"]},
 | 
			
		||||
            { "TariffStep1110": [ "16:00", "350000",  "TariffStep1111"]},
 | 
			
		||||
            { "TariffStep1111": [ "17:00", "350000",  "TariffStep1112"]},
 | 
			
		||||
            { "TariffStep1112": [ "18:00", "350000",  "TariffStep1113"]},
 | 
			
		||||
            { "TariffStep1113": [ "19:00", "350000",  "TariffStep1114"]},
 | 
			
		||||
            { "TariffStep1114": [ "20:00", "800000",  "TariffStep121" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Wednesday": [
 | 
			
		||||
            { "TariffStep120" : [ "00:00", "800000",  "TariffStep121" ]},
 | 
			
		||||
            { "TariffStep121" : [ "07:00", "350000",  "TariffStep122" ]},
 | 
			
		||||
            { "TariffStep122" : [ "08:00", "350000",  "TariffStep123" ]},
 | 
			
		||||
            { "TariffStep123" : [ "09:00", "350000",  "TariffStep124" ]},
 | 
			
		||||
            { "TariffStep124" : [ "10:00", "350000",  "TariffStep125" ]},
 | 
			
		||||
            { "TariffStep125" : [ "11:00", "350000",  "TariffStep126" ]},
 | 
			
		||||
            { "TariffStep126" : [ "12:00", "350000",  "TariffStep127" ]},
 | 
			
		||||
            { "TariffStep127" : [ "13:00", "350000",  "TariffStep128" ]},
 | 
			
		||||
            { "TariffStep128" : [ "14:00", "350000",  "TariffStep129" ]},
 | 
			
		||||
            { "TariffStep129" : [ "15:00", "350000",  "TariffStep1210"]},
 | 
			
		||||
            { "TariffStep1210": [ "16:00", "350000",  "TariffStep1211"]},
 | 
			
		||||
            { "TariffStep1211": [ "17:00", "350000",  "TariffStep1212"]},
 | 
			
		||||
            { "TariffStep1212": [ "18:00", "350000",  "TariffStep1213"]},
 | 
			
		||||
            { "TariffStep1213": [ "19:00", "350000",  "TariffStep1214"]},
 | 
			
		||||
            { "TariffStep1214": [ "20:00", "800000",  "TariffStep131" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Thursday": [
 | 
			
		||||
            { "TariffStep130" : [ "00:00", "800000",  "TariffStep131" ]},
 | 
			
		||||
            { "TariffStep131" : [ "07:00", "350000",  "TariffStep132" ]},
 | 
			
		||||
            { "TariffStep132" : [ "08:00", "350000",  "TariffStep133" ]},
 | 
			
		||||
            { "TariffStep133" : [ "09:00", "350000",  "TariffStep134" ]},
 | 
			
		||||
            { "TariffStep134" : [ "10:00", "350000",  "TariffStep135" ]},
 | 
			
		||||
            { "TariffStep135" : [ "11:00", "350000",  "TariffStep136" ]},
 | 
			
		||||
            { "TariffStep136" : [ "12:00", "350000",  "TariffStep137" ]},
 | 
			
		||||
            { "TariffStep137" : [ "13:00", "350000",  "TariffStep138" ]},
 | 
			
		||||
            { "TariffStep138" : [ "14:00", "350000",  "TariffStep139" ]},
 | 
			
		||||
            { "TariffStep139" : [ "15:00", "350000",  "TariffStep1310"]},
 | 
			
		||||
            { "TariffStep1310": [ "16:00", "350000",  "TariffStep1311"]},
 | 
			
		||||
            { "TariffStep1311": [ "17:00", "350000",  "TariffStep1312"]},
 | 
			
		||||
            { "TariffStep1312": [ "18:00", "350000",  "TariffStep1313"]},
 | 
			
		||||
            { "TariffStep1313": [ "19:00", "350000",  "TariffStep1314"]},
 | 
			
		||||
            { "TariffStep1314": [ "20:00", "800000",  "TariffStep141" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Friday": [
 | 
			
		||||
            { "TariffStep140" : [ "00:00", "800000",  "TariffStep141" ]},
 | 
			
		||||
            { "TariffStep141" : [ "07:00", "350000",  "TariffStep142" ]},
 | 
			
		||||
            { "TariffStep142" : [ "08:00", "350000",  "TariffStep143" ]},
 | 
			
		||||
            { "TariffStep143" : [ "09:00", "350000",  "TariffStep144" ]},
 | 
			
		||||
            { "TariffStep144" : [ "10:00", "350000",  "TariffStep145" ]},
 | 
			
		||||
            { "TariffStep145" : [ "11:00", "350000",  "TariffStep146" ]},
 | 
			
		||||
            { "TariffStep146" : [ "12:00", "350000",  "TariffStep147" ]},
 | 
			
		||||
            { "TariffStep147" : [ "13:00", "350000",  "TariffStep148" ]},
 | 
			
		||||
            { "TariffStep148" : [ "14:00", "350000",  "TariffStep149" ]},
 | 
			
		||||
            { "TariffStep149" : [ "15:00", "350000",  "TariffStep1410"]},
 | 
			
		||||
            { "TariffStep1410": [ "16:00", "350000",  "TariffStep1411"]},
 | 
			
		||||
            { "TariffStep1411": [ "17:00", "350000",  "TariffStep1412"]},
 | 
			
		||||
            { "TariffStep1412": [ "18:00", "350000",  "TariffStep1413"]},
 | 
			
		||||
            { "TariffStep1413": [ "19:00", "350000",  "TariffStep1414"]},
 | 
			
		||||
            { "TariffStep1414": [ "20:00", "800000",  "TariffStep151" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Saturday": [
 | 
			
		||||
            { "TariffStep150" : [ "00:00", "800000",  "TariffStep151" ]},
 | 
			
		||||
            { "TariffStep151" : [ "07:00", "350000",  "TariffStep152" ]},
 | 
			
		||||
            { "TariffStep152" : [ "08:00", "350000",  "TariffStep153" ]},
 | 
			
		||||
            { "TariffStep153" : [ "09:00", "350000",  "TariffStep154" ]},
 | 
			
		||||
            { "TariffStep154" : [ "10:00", "350000",  "TariffStep155" ]},
 | 
			
		||||
            { "TariffStep155" : [ "11:00", "350000",  "TariffStep156" ]},
 | 
			
		||||
            { "TariffStep156" : [ "12:00", "350000",  "TariffStep157" ]},
 | 
			
		||||
            { "TariffStep157" : [ "13:00", "350000",  "TariffStep158" ]},
 | 
			
		||||
            { "TariffStep158" : [ "14:00", "350000",  "TariffStep159" ]},
 | 
			
		||||
            { "TariffStep159" : [ "15:00", "350000",  "TariffStep1510"]},
 | 
			
		||||
            { "TariffStep1510": [ "16:00", "350000",  "TariffStep1511"]},
 | 
			
		||||
            { "TariffStep1511": [ "17:00", "350000",  "TariffStep1512"]},
 | 
			
		||||
            { "TariffStep1512": [ "18:00", "350000",  "TariffStep1513"]},
 | 
			
		||||
            { "TariffStep1513": [ "19:00", "350000",  "TariffStep1514"]},
 | 
			
		||||
            { "TariffStep1514": [ "20:00", "800000",  "TariffStep161" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Sunday": [
 | 
			
		||||
            { "TariffStep160" : [ "00:00", "800000",  "TariffStep161" ]},
 | 
			
		||||
            { "TariffStep161" : [ "07:00", "350000",  "TariffStep162" ]},
 | 
			
		||||
            { "TariffStep162" : [ "08:00", "350000",  "TariffStep163" ]},
 | 
			
		||||
            { "TariffStep163" : [ "09:00", "350000",  "TariffStep164" ]},
 | 
			
		||||
            { "TariffStep164" : [ "10:00", "350000",  "TariffStep165" ]},
 | 
			
		||||
            { "TariffStep165" : [ "11:00", "350000",  "TariffStep166" ]},
 | 
			
		||||
            { "TariffStep166" : [ "12:00", "350000",  "TariffStep167" ]},
 | 
			
		||||
            { "TariffStep167" : [ "13:00", "350000",  "TariffStep168" ]},
 | 
			
		||||
            { "TariffStep168" : [ "14:00", "350000",  "TariffStep169" ]},
 | 
			
		||||
            { "TariffStep169" : [ "15:00", "350000",  "TariffStep1610"]},
 | 
			
		||||
            { "TariffStep1610": [ "16:00", "350000",  "TariffStep1611"]},
 | 
			
		||||
            { "TariffStep1611": [ "17:00", "350000",  "TariffStep1612"]},
 | 
			
		||||
            { "TariffStep1612": [ "18:00", "350000",  "TariffStep1613"]},
 | 
			
		||||
            { "TariffStep1613": [ "19:00", "350000",  "TariffStep1614"]},
 | 
			
		||||
            { "TariffStep1614": [ "20:00", "800000",  "TariffStep201" ]}
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "week3" : {
 | 
			
		||||
        "Monday": [
 | 
			
		||||
            { "TariffStep200" : [ "00:00", "800000",  "TariffStep201" ]},
 | 
			
		||||
            { "TariffStep201" : [ "07:00", "350000",  "TariffStep202" ]},
 | 
			
		||||
            { "TariffStep202" : [ "08:00", "350000",  "TariffStep203" ]},
 | 
			
		||||
            { "TariffStep203" : [ "09:00", "350000",  "TariffStep204" ]},
 | 
			
		||||
            { "TariffStep204" : [ "10:00", "350000",  "TariffStep205" ]},
 | 
			
		||||
            { "TariffStep205" : [ "11:00", "350000",  "TariffStep206" ]},
 | 
			
		||||
            { "TariffStep206" : [ "12:00", "350000",  "TariffStep207" ]},
 | 
			
		||||
            { "TariffStep207" : [ "13:00", "350000",  "TariffStep208" ]},
 | 
			
		||||
            { "TariffStep208" : [ "14:00", "350000",  "TariffStep209" ]},
 | 
			
		||||
            { "TariffStep209" : [ "15:00", "350000",  "TariffStep2010"]},
 | 
			
		||||
            { "TariffStep2010": [ "16:00", "350000",  "TariffStep2011"]},
 | 
			
		||||
            { "TariffStep2011": [ "17:00", "350000",  "TariffStep2012"]},
 | 
			
		||||
            { "TariffStep2012": [ "18:00", "350000",  "TariffStep2013"]},
 | 
			
		||||
            { "TariffStep2013": [ "19:00", "350000",  "TariffStep2014"]},
 | 
			
		||||
            { "TariffStep2014": [ "20:00", "800000",  "TariffStep211" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Tuesday": [
 | 
			
		||||
            { "TariffStep210" : [ "00:00", "800000",  "TariffStep211" ]},
 | 
			
		||||
            { "TariffStep211" : [ "07:00", "350000",  "TariffStep212" ]},
 | 
			
		||||
            { "TariffStep212" : [ "08:00", "350000",  "TariffStep213" ]},
 | 
			
		||||
            { "TariffStep213" : [ "09:00", "350000",  "TariffStep214" ]},
 | 
			
		||||
            { "TariffStep214" : [ "10:00", "350000",  "TariffStep215" ]},
 | 
			
		||||
            { "TariffStep215" : [ "11:00", "350000",  "TariffStep216" ]},
 | 
			
		||||
            { "TariffStep216" : [ "12:00", "350000",  "TariffStep217" ]},
 | 
			
		||||
            { "TariffStep217" : [ "13:00", "350000",  "TariffStep218" ]},
 | 
			
		||||
            { "TariffStep218" : [ "14:00", "350000",  "TariffStep219" ]},
 | 
			
		||||
            { "TariffStep219" : [ "15:00", "350000",  "TariffStep2110"]},
 | 
			
		||||
            { "TariffStep2110": [ "16:00", "350000",  "TariffStep2111"]},
 | 
			
		||||
            { "TariffStep2111": [ "17:00", "350000",  "TariffStep2112"]},
 | 
			
		||||
            { "TariffStep2112": [ "18:00", "350000",  "TariffStep2113"]},
 | 
			
		||||
            { "TariffStep2113": [ "19:00", "350000",  "TariffStep2114"]},
 | 
			
		||||
            { "TariffStep2114": [ "20:00", "800000",  "TariffStep221" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Wednesday": [
 | 
			
		||||
            { "TariffStep220" : [ "00:00", "800000",  "TariffStep221" ]},
 | 
			
		||||
            { "TariffStep221" : [ "07:00", "350000",  "TariffStep222" ]},
 | 
			
		||||
            { "TariffStep222" : [ "08:00", "350000",  "TariffStep223" ]},
 | 
			
		||||
            { "TariffStep223" : [ "09:00", "350000",  "TariffStep224" ]},
 | 
			
		||||
            { "TariffStep224" : [ "10:00", "350000",  "TariffStep225" ]},
 | 
			
		||||
            { "TariffStep225" : [ "11:00", "350000",  "TariffStep226" ]},
 | 
			
		||||
            { "TariffStep226" : [ "12:00", "350000",  "TariffStep227" ]},
 | 
			
		||||
            { "TariffStep227" : [ "13:00", "350000",  "TariffStep228" ]},
 | 
			
		||||
            { "TariffStep228" : [ "14:00", "350000",  "TariffStep229" ]},
 | 
			
		||||
            { "TariffStep229" : [ "15:00", "350000",  "TariffStep2210"]},
 | 
			
		||||
            { "TariffStep2210": [ "16:00", "350000",  "TariffStep2211"]},
 | 
			
		||||
            { "TariffStep2211": [ "17:00", "350000",  "TariffStep2212"]},
 | 
			
		||||
            { "TariffStep2212": [ "18:00", "350000",  "TariffStep2213"]},
 | 
			
		||||
            { "TariffStep2213": [ "19:00", "350000",  "TariffStep2214"]},
 | 
			
		||||
            { "TariffStep2214": [ "20:00", "800000",  "TariffStep231" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Thursday": [
 | 
			
		||||
            { "TariffStep230" : [ "00:00", "800000",  "TariffStep231" ]},
 | 
			
		||||
            { "TariffStep231" : [ "07:00", "350000",  "TariffStep232" ]},
 | 
			
		||||
            { "TariffStep232" : [ "08:00", "350000",  "TariffStep233" ]},
 | 
			
		||||
            { "TariffStep233" : [ "09:00", "350000",  "TariffStep234" ]},
 | 
			
		||||
            { "TariffStep234" : [ "10:00", "350000",  "TariffStep235" ]},
 | 
			
		||||
            { "TariffStep235" : [ "11:00", "350000",  "TariffStep236" ]},
 | 
			
		||||
            { "TariffStep236" : [ "12:00", "350000",  "TariffStep237" ]},
 | 
			
		||||
            { "TariffStep237" : [ "13:00", "350000",  "TariffStep238" ]},
 | 
			
		||||
            { "TariffStep238" : [ "14:00", "350000",  "TariffStep239" ]},
 | 
			
		||||
            { "TariffStep239" : [ "15:00", "350000",  "TariffStep2310"]},
 | 
			
		||||
            { "TariffStep2310": [ "16:00", "350000",  "TariffStep2311"]},
 | 
			
		||||
            { "TariffStep2311": [ "17:00", "350000",  "TariffStep2312"]},
 | 
			
		||||
            { "TariffStep2312": [ "18:00", "350000",  "TariffStep2313"]},
 | 
			
		||||
            { "TariffStep2313": [ "19:00", "350000",  "TariffStep2314"]},
 | 
			
		||||
            { "TariffStep2314": [ "20:00", "800000",  "TariffStep241" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Friday": [
 | 
			
		||||
            { "TariffStep240" : [ "00:00", "800000",  "TariffStep241" ]},
 | 
			
		||||
            { "TariffStep241" : [ "07:00", "350000",  "TariffStep242" ]},
 | 
			
		||||
            { "TariffStep242" : [ "08:00", "350000",  "TariffStep243" ]},
 | 
			
		||||
            { "TariffStep243" : [ "09:00", "350000",  "TariffStep244" ]},
 | 
			
		||||
            { "TariffStep244" : [ "10:00", "350000",  "TariffStep245" ]},
 | 
			
		||||
            { "TariffStep245" : [ "11:00", "350000",  "TariffStep246" ]},
 | 
			
		||||
            { "TariffStep246" : [ "12:00", "350000",  "TariffStep247" ]},
 | 
			
		||||
            { "TariffStep247" : [ "13:00", "350000",  "TariffStep248" ]},
 | 
			
		||||
            { "TariffStep248" : [ "14:00", "350000",  "TariffStep249" ]},
 | 
			
		||||
            { "TariffStep249" : [ "15:00", "350000",  "TariffStep2410"]},
 | 
			
		||||
            { "TariffStep2410": [ "16:00", "350000",  "TariffStep2411"]},
 | 
			
		||||
            { "TariffStep2411": [ "17:00", "350000",  "TariffStep2412"]},
 | 
			
		||||
            { "TariffStep2412": [ "18:00", "350000",  "TariffStep2413"]},
 | 
			
		||||
            { "TariffStep2413": [ "19:00", "350000",  "TariffStep2414"]},
 | 
			
		||||
            { "TariffStep2414": [ "20:00", "800000",  "TariffStep251" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Saturday": [
 | 
			
		||||
            { "TariffStep250" : [ "00:00", "800000",  "TariffStep251" ]},
 | 
			
		||||
            { "TariffStep251" : [ "07:00", "350000",  "TariffStep252" ]},
 | 
			
		||||
            { "TariffStep252" : [ "08:00", "350000",  "TariffStep253" ]},
 | 
			
		||||
            { "TariffStep253" : [ "09:00", "350000",  "TariffStep254" ]},
 | 
			
		||||
            { "TariffStep254" : [ "10:00", "350000",  "TariffStep255" ]},
 | 
			
		||||
            { "TariffStep255" : [ "11:00", "350000",  "TariffStep256" ]},
 | 
			
		||||
            { "TariffStep256" : [ "12:00", "350000",  "TariffStep257" ]},
 | 
			
		||||
            { "TariffStep257" : [ "13:00", "350000",  "TariffStep258" ]},
 | 
			
		||||
            { "TariffStep258" : [ "14:00", "350000",  "TariffStep259" ]},
 | 
			
		||||
            { "TariffStep259" : [ "15:00", "350000",  "TariffStep2510"]},
 | 
			
		||||
            { "TariffStep2510": [ "16:00", "350000",  "TariffStep2511"]},
 | 
			
		||||
            { "TariffStep2511": [ "17:00", "350000",  "TariffStep2512"]},
 | 
			
		||||
            { "TariffStep2512": [ "18:00", "350000",  "TariffStep2513"]},
 | 
			
		||||
            { "TariffStep2513": [ "19:00", "350000",  "TariffStep2514"]},
 | 
			
		||||
            { "TariffStep2514": [ "20:00", "800000",  "TariffStep261" ]}
 | 
			
		||||
        ],
 | 
			
		||||
        "Sunday": [
 | 
			
		||||
            { "TariffStep260" : [ "00:00", "800000",  "TariffStep261" ]},
 | 
			
		||||
            { "TariffStep261" : [ "07:00", "350000",  "TariffStep262" ]},
 | 
			
		||||
            { "TariffStep262" : [ "08:00", "350000",  "TariffStep263" ]},
 | 
			
		||||
            { "TariffStep263" : [ "09:00", "350000",  "TariffStep264" ]},
 | 
			
		||||
            { "TariffStep264" : [ "10:00", "350000",  "TariffStep265" ]},
 | 
			
		||||
            { "TariffStep265" : [ "11:00", "350000",  "TariffStep266" ]},
 | 
			
		||||
            { "TariffStep266" : [ "12:00", "350000",  "TariffStep267" ]},
 | 
			
		||||
            { "TariffStep267" : [ "13:00", "350000",  "TariffStep268" ]},
 | 
			
		||||
            { "TariffStep268" : [ "14:00", "350000",  "TariffStep269" ]},
 | 
			
		||||
            { "TariffStep269" : [ "15:00", "350000",  "TariffStep2610"]},
 | 
			
		||||
            { "TariffStep2610": [ "16:00", "350000",  "TariffStep2611"]},
 | 
			
		||||
            { "TariffStep2611": [ "17:00", "350000",  "TariffStep2612"]},
 | 
			
		||||
            { "TariffStep2612": [ "18:00", "350000",  "TariffStep2613"]},
 | 
			
		||||
            { "TariffStep2613": [ "19:00", "350000",  "TariffStep2614"]},
 | 
			
		||||
            { "TariffStep2614": [ "20:00", "800000",  "TariffStep001" ]}
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10100
									
								
								main/kate.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10100
									
								
								main/kate.txt
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										70
									
								
								main/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								main/main.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
 | 
			
		||||
#include "calculate_parking_tickets.h"
 | 
			
		||||
#include "calculate_parking_tickets_global.h"
 | 
			
		||||
#include "calculate_parking_tickets_algorithms.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
#include "calculate_parking_tickets_utils.h"
 | 
			
		||||
#include "message_handler.h"
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
 | 
			
		||||
    if (!messageHandlerInstalled()) { // change internal qt-QDebug-handling
 | 
			
		||||
      atbInstallMessageHandler(atbDebugOutput);
 | 
			
		||||
      setDebugLevel(QtMsgType::QtDebugMsg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    parking_tariff_t *tariff =
 | 
			
		||||
        parking_tariff_t::parseTariff("/opt/ptu5/opt/calculate_parking/calculate_parking_tickets/germersheim.conf");
 | 
			
		||||
 | 
			
		||||
    if (tariff) {
 | 
			
		||||
        price_t price;
 | 
			
		||||
        memset(&price, 0x00, sizeof(price));
 | 
			
		||||
        QDateTime start = QDateTime::currentDateTime();
 | 
			
		||||
        QDateTime end;
 | 
			
		||||
        start.setTime(QTime());
 | 
			
		||||
        int d1, d2 = 0;
 | 
			
		||||
 | 
			
		||||
        d1 = start.date().dayOfWeek();
 | 
			
		||||
 | 
			
		||||
        int hour[] = { 2, 5, 10, 20, 30, 40};
 | 
			
		||||
 | 
			
		||||
        for (int h = 0; h < 6; ++h) {
 | 
			
		||||
            for (int i = 0; i < MIN_PER_DAY; ++i) {
 | 
			
		||||
                fprintf(stderr, "\n*** %5d *** (parkdauer:%dh)", i*(h+1), hour[h]);
 | 
			
		||||
 | 
			
		||||
                if (d1 != d2) {
 | 
			
		||||
                    qDebug() << ((i==0) ? 0: i/MIN_PER_DAY) << d1 << "***\n";
 | 
			
		||||
                    d2 = d1;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                //start = start.addSecs(i*60);
 | 
			
		||||
                //start = start.addSecs(420*60);
 | 
			
		||||
                minute_t const s = TUtils::toMinutes(start);
 | 
			
		||||
                end = start.addSecs(hour[h]*60*60);
 | 
			
		||||
                minute_t const e = TUtils::toMinutes(end);
 | 
			
		||||
                //minute_t const e = s + 24*60*3 + 123;
 | 
			
		||||
 | 
			
		||||
                fprintf(stderr,
 | 
			
		||||
                    "[EINFAHRT: %s:%02d:%02d, %ld Minuten frei, "
 | 
			
		||||
                    "AUSFAHRT: %s:%02d:%02d]\n",
 | 
			
		||||
                    start.date().toString().toStdString().c_str(),
 | 
			
		||||
                    start.time().hour(), start.time().minute(),
 | 
			
		||||
                    tariff->free_of_charge,
 | 
			
		||||
                    end.date().toString().toStdString().c_str(),
 | 
			
		||||
                    end.time().hour(), end.time().minute());
 | 
			
		||||
 | 
			
		||||
                if (compute_price_for_parking_ticket(tariff, s, e, &price)) {
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                start = start.addSecs(60);
 | 
			
		||||
                d1 = start.date().dayOfWeek();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										160
									
								
								main/main.cpp.bck.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								main/main.cpp.bck.1
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,160 @@
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
 | 
			
		||||
#include "calculate_parking_tickets.h"
 | 
			
		||||
#include "calculate_parking_tickets_algorithms.h"
 | 
			
		||||
#include "calculate_parking_tickets_tariff.h"
 | 
			
		||||
#include "calculate_parking_tickets_utils.h"
 | 
			
		||||
#include "message_handler.h"
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
 | 
			
		||||
    if (!messageHandlerInstalled()) { // change internal qt-QDebug-handling
 | 
			
		||||
      atbInstallMessageHandler(atbDebugOutput);
 | 
			
		||||
      setDebugLevel(QtMsgType::QtDebugMsg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
        Germersheim:
 | 
			
		||||
        Freiparkzeit: 90 min
 | 
			
		||||
        Stundentarif: 7:00 - 20:00 3,50 Euro/h
 | 
			
		||||
        Tagesmaximum: 18 Euro, gueltig 24h ab einfahrt
 | 
			
		||||
        Nacht-Tarif: 20:00 - 7:00: 8 Euro
 | 
			
		||||
 | 
			
		||||
        Fragen:
 | 
			
		||||
        1. Fuer die Abrechnung bleiben mehrere Moeglichkeiten.
 | 
			
		||||
            a:  minutengenau: eine Minute kostet 0.0583 Euro (bzw. 0.012 Euro nachts).
 | 
			
		||||
            b:  im Stunden-Raster ausgerichtet an der tatsaechlichen Uhrzeit
 | 
			
		||||
                wie angeben: jede angefangene Stunde kostet 3.50 Euro bzw.
 | 
			
		||||
                8 Euro Nacht-Tarif.
 | 
			
		||||
 | 
			
		||||
        Beispiele:
 | 
			
		||||
        zu b:   Einfahrt um 18:24 Uhr. Bis 19:54 Uhr ist dann frei. Die 6 Minuten
 | 
			
		||||
                bis 20:00 Uhr kosten dann 3.50 Euro. Ausfahrt um 21.00 Uhr: kostet
 | 
			
		||||
                dann 8 Euro, insgesamt also 11.50 Euro.
 | 
			
		||||
        zu a:   wie vor, nur minutengenaue Abrechnung: 6 Minuten kosten dann
 | 
			
		||||
                6*0.0583 = 0.35 Euro, plus 1h nachts: 60*0.012 = 0.72 Euro,
 | 
			
		||||
                insgesamt also 1.07 Euro.
 | 
			
		||||
 | 
			
		||||
        Was (logisch) nicht moeglich ist: ein Stunden-Raster, das nicht an der
 | 
			
		||||
        tatsaechlichen Uhrzeit ausgerichtet ist.
 | 
			
		||||
        Beispiel: Einfahrt 18:00 Uhr, frei bis 19:30 Uhr. Wie soll nun die
 | 
			
		||||
        naechste Stunde berechnet werden? Nach Tag- oder Nacht-Tariff?
 | 
			
		||||
 | 
			
		||||
        2:  Tagesmaximum
 | 
			
		||||
        a:  Es gibt also eine maximale Parkzeit von 24h, und der maximale Preis
 | 
			
		||||
            ist 18 Euro? Oder gibt es kein Maximum fuer die Parkdauer, aber der
 | 
			
		||||
            Preis ab 24h Parkdauer betraegt einheitlich 18 Euro.
 | 
			
		||||
 | 
			
		||||
            Im zweiten Fall waere dann Folgendes moeglich:
 | 
			
		||||
            Einfahrt 5:30 Uhr, frei bis 7:00 Uhr.
 | 
			
		||||
            Kosten von 7:00 - 20:00 Uhr: 13*3.50 = 45.50 Euro.
 | 
			
		||||
            Kosten von 20:00 - 7:00 Uhr: 8 Euro.
 | 
			
		||||
            Ausfahrt: 8:00 Uhr: 3.50 Euro, insgesamt eigentlich 57 Euro,
 | 
			
		||||
            nach obiger Regel aber dann nur 18 Euro.
 | 
			
		||||
    */
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
        TODO:
 | 
			
		||||
        1: Abrechnungsmodus:
 | 
			
		||||
            a: minutengenau
 | 
			
		||||
            b: 15-min-Raster, ausgerichtet an der tatseachlichen Uhrzeit
 | 
			
		||||
            b: 30-min-Raster, ausgerichtet an der tatseachlichen Uhrzeit
 | 
			
		||||
            b: 60-min-Raster, ausgerichtet an der tatseachlichen Uhrzeit
 | 
			
		||||
            c: wie im Tarif angegeben mit einer moeglichst groben Aufloesung.
 | 
			
		||||
    */
 | 
			
		||||
 | 
			
		||||
    parking_tariff_t *tariff = new parking_tariff_t();
 | 
			
		||||
 | 
			
		||||
    tariff->unit_scale_factor = 1.0;
 | 
			
		||||
    tariff->unit_definition = 1000;
 | 
			
		||||
    tariff->waiting_period = 0;
 | 
			
		||||
    // tariff->waiting_period = 90;
 | 
			
		||||
 | 
			
		||||
    int  const si = sizeof(TariffStep);
 | 
			
		||||
    qDebug() << si;
 | 
			
		||||
    QDate today = QDate::currentDate();
 | 
			
		||||
    int todayWeekDay = today.dayOfWeek();
 | 
			
		||||
    if (todayWeekDay > Qt::Monday) {
 | 
			
		||||
        int day = today.day() - todayWeekDay;
 | 
			
		||||
        if (!today.setDate(today.year(), today.month(), day)) {
 | 
			
		||||
            qFatal("Setting today failed");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    QDate sunday = today;
 | 
			
		||||
    qDebug() << sunday;
 | 
			
		||||
    for (int i = Qt::Monday; i <= Qt::Sunday; ++i) {
 | 
			
		||||
        // days start at midnight
 | 
			
		||||
        QDateTime startMinute(sunday.addDays(i), QTime( 0, 0));
 | 
			
		||||
 | 
			
		||||
        //qDebug() << "startMinute=" << startMinute << startMinute.date().dayOfWeek();
 | 
			
		||||
 | 
			
		||||
        // first block: 0:00 - 7:00. night-tariff.
 | 
			
		||||
        TariffStep *current = &tariff->m_tariffSteps[i][0];
 | 
			
		||||
        TariffStep *next = &tariff->m_tariffSteps[i][7*60];
 | 
			
		||||
        *current = TariffStep(startMinute, 0, next);
 | 
			
		||||
 | 
			
		||||
        //qDebug() << "current    =" << "c=" << current << current->startMinute() << current->price() << "n=" << current->next();
 | 
			
		||||
        //qDebug() << "offset     =" << ((char *)current->next() - (char *)&tariff->m_tariffSteps[i][0])/sizeof(TariffStep);
 | 
			
		||||
 | 
			
		||||
        // from 7:00 on, each hour costs 3.50 euros == 350000 units
 | 
			
		||||
        startMinute = startMinute.addSecs(7*3600);
 | 
			
		||||
        current = next;
 | 
			
		||||
 | 
			
		||||
        for (int j = 7; j < 20; ++j) {
 | 
			
		||||
            next = current + 60;
 | 
			
		||||
            *current = TariffStep(startMinute, 350000, next);
 | 
			
		||||
 | 
			
		||||
        //qDebug() << "current    =" << "c=" << current << current->startMinute() << current->price() << "n=" << current->next();
 | 
			
		||||
        //qDebug() << "offset     =" << ((char *)current->next() - (char *)&tariff->m_tariffSteps[i][0])/sizeof(TariffStep);
 | 
			
		||||
 | 
			
		||||
            startMinute = startMinute.addSecs(3600);
 | 
			
		||||
            current = next;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (i != Qt::Sunday) {
 | 
			
		||||
            next = current + 4*60 + 7*60;
 | 
			
		||||
        } else {
 | 
			
		||||
            next = &tariff->m_tariffSteps[Qt::Monday][7*60];
 | 
			
		||||
        }
 | 
			
		||||
        *current = TariffStep(startMinute, 0, next);
 | 
			
		||||
 | 
			
		||||
        if (i != Qt::Sunday) {
 | 
			
		||||
            qDebug() << "current    =" << "c=" << current << current->startMinute() << current->price() << "n=" << current->next();
 | 
			
		||||
            qDebug() << "offset     =" << ((char *)current->next() - (char *)&tariff->m_tariffSteps[i][0])/sizeof(TariffStep);
 | 
			
		||||
        } else {
 | 
			
		||||
            qDebug() << "current    =" << "c=" << current << current->startMinute() << current->price() << "n=" << current->next();
 | 
			
		||||
            if (&tariff->m_tariffSteps[1][420] == current->next()) {
 | 
			
		||||
                qDebug() << "OK";
 | 
			
		||||
                qDebug() << "offset     =" << ((char *)current->next() - (char *)&tariff->m_tariffSteps[1][0])/sizeof(TariffStep);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    price_t price;
 | 
			
		||||
    memset(&price, 0x00, sizeof(price));
 | 
			
		||||
    QDateTime start = QDateTime::currentDateTime();
 | 
			
		||||
 | 
			
		||||
    minute_t const s = TUtils::toMinutes(start);
 | 
			
		||||
    minute_t const e = s + 60;
 | 
			
		||||
 | 
			
		||||
    qDebug() << "start =" << start << "("  << s << ")";
 | 
			
		||||
    //start.setTime(QTime()); ruecksetzen des tages auf 0:00
 | 
			
		||||
    //QTime t = start.time();
 | 
			
		||||
    for (int i=1; i < (e-s); ++i) {
 | 
			
		||||
        qDebug() << i << start << start.date().dayOfWeek();
 | 
			
		||||
        start = start.addSecs(60);
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
    //if (TAlgo::compute_price_for_parking_ticket(tariff, s, e, &price)) {
 | 
			
		||||
 | 
			
		||||
    //}
 | 
			
		||||
 | 
			
		||||
    // Calculate_parking_tickets cpt;
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										29
									
								
								main/main.pro
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								main/main.pro
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
QT += core
 | 
			
		||||
 | 
			
		||||
TARGET  = main
 | 
			
		||||
TEMPLATE = app
 | 
			
		||||
 | 
			
		||||
CONFIG += c++17
 | 
			
		||||
 | 
			
		||||
QMAKE_CXXFLAGS += -Wno-deprecated-copy
 | 
			
		||||
 | 
			
		||||
INCLUDEPATH += ../calculate_parking_tickets/
 | 
			
		||||
INCLUDEPATH += ../rapidjson/include
 | 
			
		||||
 | 
			
		||||
LIBS += -L$$OUT_PWD/../calculate_parking_tickets -lcalculate_parking_tickets
 | 
			
		||||
 | 
			
		||||
# You can make your code fail to compile if it uses deprecated APIs.
 | 
			
		||||
# In order to do so, uncomment the following line.
 | 
			
		||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 | 
			
		||||
 | 
			
		||||
SOURCES += \
 | 
			
		||||
    main.cpp \
 | 
			
		||||
    message_handler.cpp
 | 
			
		||||
 | 
			
		||||
HEADERS += \
 | 
			
		||||
    message_handler.h
 | 
			
		||||
 | 
			
		||||
# Default rules for deployment.
 | 
			
		||||
qnx: target.path = /tmp/$${TARGET}/bin
 | 
			
		||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
 | 
			
		||||
!isEmpty(target.path): INSTALLS += target
 | 
			
		||||
							
								
								
									
										140
									
								
								main/message_handler.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								main/message_handler.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,140 @@
 | 
			
		||||
#include "message_handler.h"
 | 
			
		||||
 | 
			
		||||
#include <QDateTime>
 | 
			
		||||
#include <cstring>
 | 
			
		||||
 | 
			
		||||
#define OUTPUT_LEN (20)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static bool installedMsgHandler = false;
 | 
			
		||||
static QtMsgType debugLevel = QtInfoMsg;
 | 
			
		||||
 | 
			
		||||
QtMsgType getDebugLevel() { return debugLevel; }
 | 
			
		||||
void setDebugLevel(QtMsgType newDebugLevel) {
 | 
			
		||||
    debugLevel = newDebugLevel;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool messageHandlerInstalled() {
 | 
			
		||||
    return installedMsgHandler;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QtMessageHandler atbInstallMessageHandler(QtMessageHandler handler) {
 | 
			
		||||
    installedMsgHandler = (handler != 0);
 | 
			
		||||
    static QtMessageHandler prevHandler = nullptr;
 | 
			
		||||
    if (handler) {
 | 
			
		||||
        prevHandler = qInstallMessageHandler(handler);
 | 
			
		||||
        return prevHandler;
 | 
			
		||||
    } else {
 | 
			
		||||
        return qInstallMessageHandler(prevHandler);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
/// \brief Print message according to given debug level.
 | 
			
		||||
///
 | 
			
		||||
/// \note Install this function using qInstallMsgHandler().
 | 
			
		||||
///
 | 
			
		||||
///  int main(int argc, char **argv) {
 | 
			
		||||
///     installMsgHandler(atbDebugOutput);
 | 
			
		||||
///     QApplication app(argc, argv);
 | 
			
		||||
///     ...
 | 
			
		||||
///     return app.exec();
 | 
			
		||||
///  }
 | 
			
		||||
///
 | 
			
		||||
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
 | 
			
		||||
void atbDebugOutput(QtMsgType type, const char *msg) {
 | 
			
		||||
    switch (type) {
 | 
			
		||||
        case QtDebugMsg: {
 | 
			
		||||
            if (debugLevel <= QtDebugMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s Debug: %s\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                    QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case QtInfoMsg: {
 | 
			
		||||
            if (debugLevel <= QtInfoMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s Info: %s\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                    QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case QtWarningMsg: {
 | 
			
		||||
            if (debugLevel <= QtWarningMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s Warning: %s\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                    QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case QtCriticalMsg: {
 | 
			
		||||
            if (debugLevel <= QtCriticalMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s Critical: %s\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                    QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case QtFatalMsg: {
 | 
			
		||||
            if (debugLevel <= QtFatalMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s Fatal: %s\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                    QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg);
 | 
			
		||||
            }
 | 
			
		||||
            // abort();
 | 
			
		||||
        } break;
 | 
			
		||||
        default: {
 | 
			
		||||
            fprintf(stderr, "%*.*s No ErrorLevel defined! %s\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                QDateTime::currentDateTime().toString(Qt::ISODate).toStdString().c_str(), msg);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#elif QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
 | 
			
		||||
void atbDebugOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) {
 | 
			
		||||
    static constexpr const char *format = "dd.MM.yyyy hh:mm:ss";
 | 
			
		||||
    QByteArray localMsg = msg.toLocal8Bit();
 | 
			
		||||
    const char *file = context.file ? context.file : "";
 | 
			
		||||
    char const* output = std::strrchr(file, '/');
 | 
			
		||||
    if (output) {
 | 
			
		||||
        file = output + 1;
 | 
			
		||||
    }
 | 
			
		||||
    qint64 const currentMSecsSinceEpoch = QDateTime::currentMSecsSinceEpoch();
 | 
			
		||||
    int const fractional_part = currentMSecsSinceEpoch % 1000;
 | 
			
		||||
    QDateTime const datetime = QDateTime::fromMSecsSinceEpoch(currentMSecsSinceEpoch);
 | 
			
		||||
    switch (type) {
 | 
			
		||||
        case QtDebugMsg: {
 | 
			
		||||
            if (debugLevel <= QtDebugMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s.%03d DEBG %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                        datetime.toString(format).toStdString().c_str(), fractional_part,
 | 
			
		||||
                        localMsg.constData(), file, context.line);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case QtInfoMsg: {
 | 
			
		||||
            if (debugLevel <= QtInfoMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s.%03d INFO %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                        datetime.toString(format).toStdString().c_str(), fractional_part,
 | 
			
		||||
                        localMsg.constData(), file, context.line);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case QtWarningMsg: {
 | 
			
		||||
            if (debugLevel <= QtWarningMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s.%03d WARN %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                        datetime.toString(format).toStdString().c_str(), fractional_part,
 | 
			
		||||
                        localMsg.constData(), file, context.line);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case QtCriticalMsg: {
 | 
			
		||||
            if (debugLevel <= QtCriticalMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s.%03d CRIT %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                        datetime.toString(format).toStdString().c_str(), fractional_part,
 | 
			
		||||
                        localMsg.constData(), file, context.line);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case QtFatalMsg: {
 | 
			
		||||
            if (debugLevel <= QtFatalMsg) {
 | 
			
		||||
                fprintf(stderr, "%*.*s.%03d FATAL %s (%s:%u)\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                        datetime.toString(format).toStdString().c_str(), fractional_part,
 | 
			
		||||
                        localMsg.constData(), file, context.line);
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        default: {
 | 
			
		||||
            fprintf(stderr, "%*.*s.%03d No ErrorLevel defined! %s\n", OUTPUT_LEN, OUTPUT_LEN,
 | 
			
		||||
                datetime.toString(format).toStdString().c_str(), fractional_part,
 | 
			
		||||
                msg.toStdString().c_str());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								main/message_handler.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								main/message_handler.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
#ifndef MESSAGE_HANDLER_H_INCLUDED
 | 
			
		||||
#define MESSAGE_HANDLER_H_INCLUDED
 | 
			
		||||
 | 
			
		||||
#include <QtGlobal>
 | 
			
		||||
 | 
			
		||||
QtMsgType getDebugLevel();
 | 
			
		||||
void setDebugLevel(QtMsgType newDebugLevel);
 | 
			
		||||
 | 
			
		||||
bool messageHandlerInstalled();
 | 
			
		||||
QtMessageHandler atbInstallMessageHandler(QtMessageHandler handler);
 | 
			
		||||
 | 
			
		||||
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
 | 
			
		||||
// typedef void (*QtMessageHandler)(QtMsgType, const char *);
 | 
			
		||||
void atbDebugOutput(QtMsgType type, const char *msg);
 | 
			
		||||
#elif QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
 | 
			
		||||
// typedef void (*QtMessageHandler)(QtMsgType, const QMessageLogContext &, const QString &);
 | 
			
		||||
void atbDebugOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // MESSAGE_HANDLER_H_INCLUDED
 | 
			
		||||
		Reference in New Issue
	
	Block a user