Commit Graph

326 Commits

Author SHA1 Message Date
bcbe95d483 Add hard-coded trauncate flag. 2024-09-30 16:51:02 +02:00
e3bbca86d5 Minor: changed parameter type to non-const. 2024-09-30 16:50:21 +02:00
d4363e71cd Keep bacjward compatibility before using payment-method Unified. 2024-09-27 14:24:10 +02:00
fd99c20bd9 Take into account new payment method 'Unified' to call new tariff-calculator. 2024-09-27 14:20:20 +02:00
dbccdba9fe isParkingAllowedForWeekDay():
Minor: adapt function call to changes parameter arity.
2024-09-27 14:18:31 +02:00
b035f4f887 Calculator::GetDurationFromCost():
Minor: move scope of some variables upward.
2024-09-27 14:17:35 +02:00
18f09fccb9 GetDurationFromCost():
Call ComputeDurationFromCost() of new tariff calculator for payment-method Unified.
2024-09-27 14:10:02 +02:00
1086e360e5 Start of implementing new tariff calculator:
Added serveral helper function for parsing tariff file:
	  * getPrepaid()
	  * getCarryOver()
          * getService()
          * getOutOfService()

	Added main functions of tariff calculator:

	  * ComputeDurationFromCost()
	  * ComputeCostFromDuration()
2024-09-27 14:04:39 +02:00
ada7bebd90 Minor: Add headers. 2024-09-27 13:57:30 +02:00
1347f1f208 Added parsing for tariff05.json (bad neuenarh (249)) 2024-09-27 13:44:01 +02:00
576c3fefdd Added PaymentMethod::Unified 2024-09-27 13:42:44 +02:00
713b483918 Added/fixed several functions. final testing needed. 2024-09-27 13:37:54 +02:00
77e1414c13 compute_duration_for_parking_ticket():
Recompute pop_max_price using netto-parking-time.
	Search Duration for the time-step with time-step == netto-parking-time,
	then search for the corresponding price in PaymentRate.
	The result is the new pop_max_price.
2024-09-17 17:05:23 +02:00
d95275a72d Compute real netto_parking_time.
This time will be used to find the real time-step, and from here the actual price to pay.
2024-09-17 17:04:27 +02:00
577a17dc6a Set seconds of serveral date-times to 0.
Compute netto_parking_time (which includes carry-over duration).
2024-09-17 17:03:29 +02:00
d8d32820a3 compute_price_for_parking_ticket():
Reset pop_max_price to original value using pop_max_price_saved.
2024-09-17 17:01:32 +02:00
0cba85eafb Set pop_max_price_saved 2024-09-17 16:58:20 +02:00
8c7afdfcb1 Add additional constructor. 2024-09-17 16:53:45 +02:00
932d4e8cb9 check it ticket-end-time hits carry-over-start. if configured, move to end of carry-over. 2024-09-16 16:56:48 +02:00
38abc65425 compute_price_for_parking_ticket():
Check if minutesUntilCarryOver is positive (usually must be).
2024-09-16 16:54:25 +02:00
205896903b Handle SUCCESS_MAXPRICE (calc-state). 2024-09-16 16:53:44 +02:00
57b9d16abc GetDurationFromCost():
Handle carry-over for direct coin insertion.
	Carefully check if this might be a problem for other projects.
2024-09-16 16:50:16 +02:00
48afbc071c Added new calc-state: SUCCESS_MAXPRICE.
Return whenever cost (=price) equals max-price.
2024-09-16 16:49:00 +02:00
1874b08210 Merge branch 'kleipeda-experimental-snapshot-2024-09-12' into kleipeda-experimental 2024-09-16 10:49:23 +02:00
a8ae9fc602 Add own Time class (similar QTime) 2024-09-16 10:42:08 +02:00
7c0514e241 save current state 2024-09-13 10:42:45 +02:00
dffc6e2a03 Minor: removed some debug output. 2024-09-11 11:56:06 +02:00
f9cc3af473 ParseJson():
Add parsing of "pop_apply_carry_over_to_ticket_endtime".
2024-09-11 11:55:03 +02:00
9dd0108731 ParseJson():
Add parsing for prepaid-options.
2024-09-11 11:54:16 +02:00
fa10ea4b89 compute_price_for_parking_ticket():
In case parking-time-limit is violated, return with an error.

	Commented out: use another possiblity: cut max-parking-time
	so that parking-time-limit is not violated.
2024-09-11 11:49:31 +02:00
05f03a623b compute_price_for_parking_ticket():
If after crossing a carry-over-time range (taking several days)
	check if we have to carry over again on the target day.
2024-09-11 11:47:50 +02:00
03e9076962 compute_price_for_parking_ticket():
Minor: add some debug output.
2024-09-11 11:46:36 +02:00
5dbd3645c6 compute_price_for_parking_ticket():
Fetch prepaid-option-id (possibly recalculating it depending
	on year-period), and fetch associated prepaid-options.
2024-09-11 11:44:09 +02:00
d21f69cb9b get_maximal_parkingprice():
Fetch maxPrice directly instead of using utility function.
2024-09-11 11:42:15 +02:00
7a53a68850 getPaymentOptionIndex(): add start-time parameter 2024-09-06 12:05:41 +02:00
275c3ec869 compute_price_for_parking_ticket():
Pass start-date-time to parking-time-checker.
2024-09-03 11:19:23 +02:00
6d2bde1fe9 getPaymentOptionIndex():
Fix: make sure only one payment option can be chosen.
2024-09-03 11:17:31 +02:00
f02521d3c2 parseWeekDay():
for the park-time-limit checking take into account that the
 	start-date-time and end-date-time are on different days.
2024-09-03 11:15:08 +02:00
cce3db301b Minor: comment out some code to prevent compiler warnings (about some unused
variables).
2024-09-02 17:15:33 +02:00
5cab0de9fb Use free function getPaymentOptionIndex() to compute index of valid
payment-option-section in tariff-file based on configured businessHours.
2024-09-02 17:14:20 +02:00
f92906f680 Minor: debug output. 2024-09-02 17:13:11 +02:00
8cdeef26fc Check if computed ticket-end-time violates a carry-over-limit defined in
tariff-file.
2024-09-02 17:11:48 +02:00
52ebbf7bc9 Use free function getPaymentOptionIndex() in serveral places to compute valid
index of a payment-option-section within tariff file. If this is not possible,
then try the already available functionality.
2024-09-02 17:09:26 +02:00
349e9d8b06 Add free functions isHoliday() to check if the current day is a holiday
and previousDayHoliday() to check if previous day (relative to endtime) is a
holiday.
2024-09-02 17:05:32 +02:00
68a1c24861 Add free function getPaymentOptionIndex():
Compute payment option index base on current start-date-time and
	businesshour-setiing in tariff-file.
	Returns -1 to indicate error.
2024-09-02 17:03:37 +02:00
c946c106d1 Configuration::ParseJson():
Save the pop_plus_steps setting: sometimes it is necessary to adapt the
	pop_plus_steps-variable in order to hit a time-limit-boundary exactly.
	Otherwise the next computed time-step might overshoot the time-limit,
	and when moving backwards (via Minus-Button) there is a better
	resolution: going backwards, the user could hit the exact time-limit,
	which he could not when going up.
2024-09-02 16:58:34 +02:00
f24f1fe646 Configuration::ParseJson():
Call parseWeekDay() to reading the week-day-settings.
2024-09-02 16:57:11 +02:00
c6b8a37263 ParseJson():
Minor: some reformatting of source code.
2024-09-02 16:55:48 +02:00
58d8f16681 ParseWeekDay():
Parsing "Monday" - "Sunday" section i a tariff-file.

	Each day has a memebr named "week_day_default".

	It contains the valid default tariff settings for a usual day (i.e. no
	holiday etc.)
	It also contains the carry-over-settings for the usual day.

	In case there is some holiday on this day (for instance on "Monday"),
	the the date of the holiday replaces the name "week_day_default".
	Otherwise the structure is the same as for a usual day.
2024-09-02 16:49:21 +02:00
431664d8b9 IdentifyJsonMember():
Add "Monday" - "Sunday" as level-1 sections in a tariff-file.
2024-09-02 16:47:46 +02:00