Compare commits

...

4 Commits
2.4.0 ... 2.4.1

Author SHA1 Message Date
3e4db6cfcc Add test code for printing date-strings 2024-08-08 10:21:55 +02:00
5898be8807 TicketUtils: fix date format string 2024-08-08 10:17:11 +02:00
f20957c14a Use TicketUtils to format date string on ticket 2024-08-08 10:12:35 +02:00
1bcdb5ba21 Add TicketUtils class for ...
Ticket helper methods e.g. string format helpers.
Currently only on method for getting a date string in short format
according to selected language.
2024-08-08 10:10:27 +02:00
4 changed files with 85 additions and 9 deletions

View File

@@ -88,7 +88,8 @@ HEADERS += \
src/ATBAPP/support/JSON.h \ src/ATBAPP/support/JSON.h \
src/ATBAPP/support/PTUSystem.h \ src/ATBAPP/support/PTUSystem.h \
src/ATBAPP/support/PersistentData.h \ src/ATBAPP/support/PersistentData.h \
src/ATBAPP/support/Ticket.h src/ATBAPP/support/Ticket.h \
src/ATBAPP/support/TicketUtils.h
SOURCES += \ SOURCES += \
src/ATBAPP/ATBHealthEvent.cpp \ src/ATBAPP/ATBHealthEvent.cpp \
@@ -101,7 +102,8 @@ SOURCES += \
src/ATBAPP/support/JSON.cpp \ src/ATBAPP/support/JSON.cpp \
src/ATBAPP/support/PTUSystem.cpp \ src/ATBAPP/support/PTUSystem.cpp \
src/ATBAPP/support/PersistentData.cpp \ src/ATBAPP/support/PersistentData.cpp \
src/ATBAPP/support/Ticket.cpp src/ATBAPP/support/Ticket.cpp \
src/ATBAPP/support/TicketUtils.cpp
DISTFILES += \ DISTFILES += \
generate-version.sh generate-version.sh

View File

@@ -6,6 +6,7 @@
#include "src/ATBAPP/support/DBusControllerInterface.h" #include "src/ATBAPP/support/DBusControllerInterface.h"
#include "src/ATBAPP/support/PTUSystem.h" #include "src/ATBAPP/support/PTUSystem.h"
#include "src/ATBAPP/support/CashUtils.h" #include "src/ATBAPP/support/CashUtils.h"
#include "src/ATBAPP/support/TicketUtils.h"
#include <QTimer> #include <QTimer>
#include <QThread> #include <QThread>
@@ -732,8 +733,22 @@ void ATBDeviceControllerPlugin::requestPrintTicket(const QHash<QString, QVariant
QDateTime parkingEndDateTime = QDateTime::fromString(printingData["parkingEnd"].toString(), Qt::ISODate); QDateTime parkingEndDateTime = QDateTime::fromString(printingData["parkingEnd"].toString(), Qt::ISODate);
QDateTime currentDateTime = QDateTime::fromString(printingData["currentDateTime"].toString(), Qt::ISODate); QDateTime currentDateTime = QDateTime::fromString(printingData["currentDateTime"].toString(), Qt::ISODate);
QString parkingEndDateString = this->printerLocale.toString(parkingEndDateTime.date(), QLocale::ShortFormat); QString parkingEndDateString = TicketUtils::getLocaleDateString(this->printerLocale, parkingEndDateTime.date());
QString currentDateString = this->printerLocale.toString(currentDateTime.date(), QLocale::ShortFormat); QString currentDateString = TicketUtils::getLocaleDateString(this->printerLocale, currentDateTime.date());
/*******************************************************************************************
* TEST date formate strings:
QLocale ltLocale("lt_LT");
QLocale deLocale("de_DE");
QString ltShortDate = ltLocale.toString(currentDateTime.date(), QLocale::ShortFormat);
QString deShortDate = deLocale.toString(currentDateTime.date(), QLocale::ShortFormat);
qCritical() << "*********************************************************************";
qCritical() << " ltShortDate = " << ltShortDate;
qCritical() << " deShortDate = " << deShortDate;
qCritical() << "*********************************************************************";
*/
/* ----------------------------------------------------------------------------------------- /* -----------------------------------------------------------------------------------------
* note: the following highly depends on printer template files! * note: the following highly depends on printer template files!
@@ -1057,9 +1072,8 @@ void ATBDeviceControllerPlugin::private_setupDynTemplateData_START_RECEIPT(struc
QDateTime parkingEndDateTime = QDateTime::fromString(ticket->getPrintingData()["parkingEnd"].toString(), Qt::ISODate); QDateTime parkingEndDateTime = QDateTime::fromString(ticket->getPrintingData()["parkingEnd"].toString(), Qt::ISODate);
QDateTime currentDateTime = QDateTime::fromString(ticket->getPrintingData()["currentDateTime"].toString(), Qt::ISODate); QDateTime currentDateTime = QDateTime::fromString(ticket->getPrintingData()["currentDateTime"].toString(), Qt::ISODate);
QString parkingEndDateString = this->printerLocale.toString(parkingEndDateTime.date(), QLocale::ShortFormat); QString parkingEndDateString = TicketUtils::getLocaleDateString(this->printerLocale, parkingEndDateTime.date());
QString currentDateString = this->printerLocale.toString(currentDateTime.date(), QLocale::ShortFormat); QString currentDateString = TicketUtils::getLocaleDateString(this->printerLocale, currentDateTime.date());
// set dynamic printer data: // set dynamic printer data:
QByteArray ba_licenseplate = codec->fromUnicode(ticket->getPrintingData()["licenseplate"].toString()); QByteArray ba_licenseplate = codec->fromUnicode(ticket->getPrintingData()["licenseplate"].toString());
@@ -1184,7 +1198,7 @@ void ATBDeviceControllerPlugin::private_setupDynTemplatData_FREE_TICKET(struct T
QByteArray ba_parkingEndTime = codec->fromUnicode(parkingEndDateTime.toString("hh:mm")); QByteArray ba_parkingEndTime = codec->fromUnicode(parkingEndDateTime.toString("hh:mm"));
memcpy((char*)dynTicketData->parkingEnd, ba_parkingEndTime.data(), std::min(ba_parkingEndTime.size(),8)); memcpy((char*)dynTicketData->parkingEnd, ba_parkingEndTime.data(), std::min(ba_parkingEndTime.size(),8));
QString parkingEndDateString = this->printerLocale.toString(parkingEndDateTime.date(), QLocale::ShortFormat); QString parkingEndDateString = TicketUtils::getLocaleDateString(this->printerLocale, parkingEndDateTime.date());
QByteArray ba_parkingEndDate = codec->fromUnicode(parkingEndDateString); QByteArray ba_parkingEndDate = codec->fromUnicode(parkingEndDateString);
memcpy((char*)dynTicketData->currentTime, ba_parkingEndDate.data(), std::min(ba_parkingEndDate.size(),8)); memcpy((char*)dynTicketData->currentTime, ba_parkingEndDate.data(), std::min(ba_parkingEndDate.size(),8));

View File

@@ -0,0 +1,26 @@
#include "TicketUtils.h"
#include <QLocale>
#include <QDate>
TicketUtils::TicketUtils(QObject *parent) : QObject(parent)
{
}
QString TicketUtils::getLocaleDateString(const QLocale & qLocale, const QDate & qDate)
{
QString dateString;
if (qLocale.language() == QLocale::Lithuanian) {
// QLocale::ShortFormat produces date string: "yyyy-mm-dd" ...
// this is to long for the printer.
dateString = qDate.toString("yy-MM-dd");
}
else {
dateString = qLocale.toString(qDate, QLocale::ShortFormat);
}
return dateString;
}

View File

@@ -0,0 +1,34 @@
#ifndef TICKETUTILS_H
#define TICKETUTILS_H
#include <QObject>
class TicketUtils : public QObject
{
Q_OBJECT
public:
explicit TicketUtils(QObject *parent = nullptr);
/**
* @brief getLocaleDateString
* @param qLocale
* @param qDate
* @return a localized date string short format
*
* Note QLocale::ShortFormat does not result to the
* string we need for ticket printing therefore this
* helper method was created.
*
* e.g. using Lithuanian (lt_LT) we get a date in short format:
* "2024-08-08" unfortunately this is to long, we need
* the year with only two digits.
* e.g. in German (de_DE) it is enought: "08.08.24"
*
*/
static QString getLocaleDateString(const QLocale &qLocale, const QDate &qDate);
signals:
};
#endif // TICKETUTILS_H