|
|
|
@@ -654,10 +654,21 @@ void ATBDeviceControllerPlugin::requestPrintReceipt(const QHash<QString, QVarian
|
|
|
|
|
|
|
|
|
|
void ATBDeviceControllerPlugin::requestPrintReceipt(const QString & printingString)
|
|
|
|
|
{
|
|
|
|
|
QByteArray ba = printingString.toUtf8();
|
|
|
|
|
QByteArray ba_receipt = this->codec->fromUnicode(printingString);
|
|
|
|
|
|
|
|
|
|
//QByteArray ba = printingString.toUtf8();
|
|
|
|
|
hw->prn_switchPower(true);
|
|
|
|
|
hw->prn_setFonts(8,12,0,0);
|
|
|
|
|
hw->prn_sendText(&ba);
|
|
|
|
|
hw->prn_sendText(&ba_receipt);
|
|
|
|
|
|
|
|
|
|
// DEBUG
|
|
|
|
|
//qCritical() << "---------------------------------------------------------------";
|
|
|
|
|
//qCritical() << "ATBDeviceControllerPlugin::requestPrintReceipt()";
|
|
|
|
|
//qCritical() << " receipt data:";
|
|
|
|
|
//qCritical() << QString(ba_receipt);
|
|
|
|
|
//qCritical() << "---------------------------------------------------------------";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this->printResultCheckCounter = 0;
|
|
|
|
|
QTimer::singleShot(4000, this, SLOT(onPrinterWaitForPrintingReceipt()));
|
|
|
|
|
|
|
|
|
@@ -801,19 +812,39 @@ void ATBDeviceControllerPlugin::requestPrintTicket(const QHash<QString, QVariant
|
|
|
|
|
QString paymentType = printingData["paymentType"].toString(); // must be "CASH" | "CARD"
|
|
|
|
|
QString productName = printingData["product"].toString(); // must be "ShortTimeParking" | "DayTicket"
|
|
|
|
|
|
|
|
|
|
if ( (paymentType == "CASH") && (productName == "SHORT_TERM_PARKING") ) {
|
|
|
|
|
if ( (paymentType == "CASH") && ( (productName == "SHORT_TERM_PARKING") ||
|
|
|
|
|
(productName == "SHORT_TERM_PARKING_CAR") ||
|
|
|
|
|
(productName == "SHORT_TERM_PARKING_VAN") ||
|
|
|
|
|
(productName == "SHORT_TERM_PARKING_CAMPER")
|
|
|
|
|
))
|
|
|
|
|
{
|
|
|
|
|
this->currentSelectedTicketType = 1; // "Kombiticket #1"
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if ( (paymentType == "CARD") && (productName == "SHORT_TERM_PARKING") ) {
|
|
|
|
|
if ( (paymentType == "CARD") && ( (productName == "SHORT_TERM_PARKING") ||
|
|
|
|
|
(productName == "SHORT_TERM_PARKING_CAR") ||
|
|
|
|
|
(productName == "SHORT_TERM_PARKING_VAN") ||
|
|
|
|
|
(productName == "SHORT_TERM_PARKING_CAMPER")
|
|
|
|
|
))
|
|
|
|
|
{
|
|
|
|
|
this->currentSelectedTicketType = 2; // "Kombiticket #2"
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if ( (paymentType == "CASH") && (productName == "DAY_TICKET") ) {
|
|
|
|
|
if ( (paymentType == "CASH") && ( (productName == "DAY_TICKET") ||
|
|
|
|
|
(productName == "DAY_TICKET_CAR") ||
|
|
|
|
|
(productName == "DAY_TICKET_VAN") ||
|
|
|
|
|
(productName == "DAY_TICKET_CAMPER")
|
|
|
|
|
))
|
|
|
|
|
{
|
|
|
|
|
this->currentSelectedTicketType = 3; // "Kombiticket #3"
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if ( (paymentType == "CARD") && (productName == "DAY_TICKET") ) {
|
|
|
|
|
if ( (paymentType == "CARD") && ( (productName == "DAY_TICKET") ||
|
|
|
|
|
(productName == "DAY_TICKET_CAR") ||
|
|
|
|
|
(productName == "DAY_TICKET_VAN") ||
|
|
|
|
|
(productName == "DAY_TICKET_CAMPER")
|
|
|
|
|
))
|
|
|
|
|
{
|
|
|
|
|
this->currentSelectedTicketType = 4; // "Kombiticket #4"
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
@@ -983,12 +1014,18 @@ void ATBDeviceControllerPlugin::prepareDynTemplateData()
|
|
|
|
|
case nsDeviceControllerInterface::TICKET_VARIANT::STOP_RECEIPT:
|
|
|
|
|
private_setupDynTemplatData_STOP_RECEIPT(dynTicketData, this->currentTicket);
|
|
|
|
|
break;
|
|
|
|
|
case nsDeviceControllerInterface::TICKET_VARIANT::FINE_PAYMENT:
|
|
|
|
|
private_setupDynTemplatData_FINE_PAYMENT(dynTicketData, this->currentTicket);
|
|
|
|
|
break;
|
|
|
|
|
case nsDeviceControllerInterface::TICKET_VARIANT::RECEIPT:
|
|
|
|
|
break;
|
|
|
|
|
case nsDeviceControllerInterface::TICKET_VARIANT::ERROR_RECEIPT:
|
|
|
|
|
break;
|
|
|
|
|
case nsDeviceControllerInterface::TICKET_VARIANT::PARKING_TICKET:
|
|
|
|
|
break;
|
|
|
|
|
case nsDeviceControllerInterface::TICKET_VARIANT::FREE_TICKET:
|
|
|
|
|
private_setupDynTemplatData_FREE_TICKET(dynTicketData, this->currentTicket);
|
|
|
|
|
break;
|
|
|
|
|
case nsDeviceControllerInterface::TICKET_VARIANT::FOOD_STAMP:
|
|
|
|
|
private_setupDynTemplatData_FOOD_STAMP(dynTicketData, this->currentTicket);
|
|
|
|
|
break;
|
|
|
|
@@ -1091,6 +1128,62 @@ void ATBDeviceControllerPlugin::private_setupDynTemplatData_FOOD_STAMP(struct T_
|
|
|
|
|
qCritical() << "-------------------------------------------------------";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ATBDeviceControllerPlugin::private_setupDynTemplatData_FINE_PAYMENT(struct T_dynDat *dynTicketData, Ticket *ticket)
|
|
|
|
|
{
|
|
|
|
|
QDateTime currentDateTime = QDateTime::fromString(ticket->getPrintingData()["currentDateTime"].toString(), Qt::ISODate);
|
|
|
|
|
|
|
|
|
|
QString currentDateString = this->printerLocale.toString(currentDateTime.date(), QLocale::ShortFormat);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// set dynamic printer data:
|
|
|
|
|
QByteArray ba_licenseplate = codec->fromUnicode(ticket->getPrintingData()["licenseplate"].toString());
|
|
|
|
|
memcpy((char*)dynTicketData->licensePlate, ba_licenseplate.data(), std::min(ba_licenseplate.size(),8));
|
|
|
|
|
|
|
|
|
|
QByteArray ba_amount = codec->fromUnicode(ticket->getPrintingData()["amount"].toString());
|
|
|
|
|
memcpy((char*)dynTicketData->vendingPrice, ba_amount.data(), std::min(ba_amount.size(),8)); // Szeged
|
|
|
|
|
memcpy((char*)dynTicketData->dynDat6, ba_amount.data(), std::min(ba_amount.size(),8)); // Schoenau
|
|
|
|
|
|
|
|
|
|
QByteArray ba_currentDate = codec->fromUnicode(currentDateString);
|
|
|
|
|
memcpy((char*)dynTicketData->currentDate, ba_currentDate.data(), std::min(ba_currentDate.size(),8));
|
|
|
|
|
|
|
|
|
|
QByteArray ba_ticketId = codec->fromUnicode(ticket->getPrintingData()["ticketId"].toString());
|
|
|
|
|
memcpy((char*)dynTicketData->dynDat7, ba_amount.data(), std::min(ba_ticketId.size(),8));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ATBDeviceControllerPlugin::private_setupDynTemplatData_FREE_TICKET(struct T_dynDat *dynTicketData, Ticket *ticket)
|
|
|
|
|
{
|
|
|
|
|
QDateTime currentDateTime = QDateTime::fromString(ticket->getPrintingData()["currentDateTime"].toString(), Qt::ISODate);
|
|
|
|
|
|
|
|
|
|
QString currentDateString = this->printerLocale.toString(currentDateTime.date(), QLocale::ShortFormat);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// set dynamic printer data:
|
|
|
|
|
QByteArray ba_licenseplate = codec->fromUnicode(ticket->getPrintingData()["licenseplate"].toString());
|
|
|
|
|
memcpy((char*)dynTicketData->licensePlate, ba_licenseplate.data(), std::min(ba_licenseplate.size(),8));
|
|
|
|
|
|
|
|
|
|
QByteArray ba_amount = codec->fromUnicode(ticket->getPrintingData()["amount"].toString());
|
|
|
|
|
memcpy((char*)dynTicketData->vendingPrice, ba_amount.data(), std::min(ba_amount.size(),8)); // Szeged
|
|
|
|
|
memcpy((char*)dynTicketData->dynDat6, ba_amount.data(), std::min(ba_amount.size(),8)); // Schoenau
|
|
|
|
|
|
|
|
|
|
QByteArray ba_currentDate = codec->fromUnicode(currentDateString);
|
|
|
|
|
memcpy((char*)dynTicketData->currentDate, ba_currentDate.data(), std::min(ba_currentDate.size(),8));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// FREE_TICKET needs parking endtime:
|
|
|
|
|
|
|
|
|
|
QDateTime parkingEndDateTime = QDateTime::fromString(ticket->getPrintingData()["parkingEnd"].toString(), Qt::ISODate);
|
|
|
|
|
|
|
|
|
|
QByteArray ba_parkingEndTime = codec->fromUnicode(parkingEndDateTime.toString("hh:mm"));
|
|
|
|
|
memcpy((char*)dynTicketData->parkingEnd, ba_parkingEndTime.data(), std::min(ba_parkingEndTime.size(),8));
|
|
|
|
|
|
|
|
|
|
QString parkingEndDateString = this->printerLocale.toString(parkingEndDateTime.date(), QLocale::ShortFormat);
|
|
|
|
|
|
|
|
|
|
QByteArray ba_parkingEndDate = codec->fromUnicode(parkingEndDateString);
|
|
|
|
|
memcpy((char*)dynTicketData->currentTime, ba_parkingEndDate.data(), std::min(ba_parkingEndDate.size(),8));
|
|
|
|
|
// ! and yes... 'ParkingEndDate' is 'currentTime'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************************************************
|
|
|
|
|