diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.cpp b/src/ATBAPP/ATBDeviceControllerPlugin.cpp index fbc58cb..2d6e327 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.cpp +++ b/src/ATBAPP/ATBDeviceControllerPlugin.cpp @@ -654,10 +654,21 @@ void ATBDeviceControllerPlugin::requestPrintReceipt(const QHashcodec->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())); @@ -983,6 +994,9 @@ 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: @@ -1091,6 +1105,27 @@ 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)); +} /************************************************************************************************ diff --git a/src/ATBAPP/ATBDeviceControllerPlugin.h b/src/ATBAPP/ATBDeviceControllerPlugin.h index 7337fc7..02e317b 100644 --- a/src/ATBAPP/ATBDeviceControllerPlugin.h +++ b/src/ATBAPP/ATBDeviceControllerPlugin.h @@ -144,6 +144,7 @@ private: void private_setupDynTemplateData_START_RECEIPT(struct T_dynDat *dynTicketData, Ticket *ticket); void private_setupDynTemplatData_STOP_RECEIPT(struct T_dynDat *dynTicketData, Ticket *ticket); void private_setupDynTemplatData_FOOD_STAMP(struct T_dynDat *dynTicketData, Ticket *ticket); + void private_setupDynTemplatData_FINE_PAYMENT(struct T_dynDat *dynTicketData, Ticket *ticket); // --------------------------------------------------------------------------------------------- private slots: diff --git a/src/ATBAPP/DeviceControllerInterface.h b/src/ATBAPP/DeviceControllerInterface.h index 5589d6a..6f7ee03 100644 --- a/src/ATBAPP/DeviceControllerInterface.h +++ b/src/ATBAPP/DeviceControllerInterface.h @@ -203,7 +203,7 @@ signals: Q_DECLARE_INTERFACE(DeviceControllerInterface, - "eu.atb.ptu.plugin.DeviceControllerInterface/1.1.4") + "eu.atb.ptu.plugin.DeviceControllerInterface/1.1.5") namespace nsDeviceControllerInterface { @@ -236,6 +236,7 @@ namespace nsDeviceControllerInterface { ERROR_RECEIPT, START_RECEIPT, // e.g. Szeged Start STOP_RECEIPT, // e.g. Szeged Stop + FINE_PAYMENT, // e.g. Klaipeda FOOD_STAMP }; diff --git a/src/ATBAPP/support/Ticket.cpp b/src/ATBAPP/support/Ticket.cpp index fb27476..42978a4 100644 --- a/src/ATBAPP/support/Ticket.cpp +++ b/src/ATBAPP/support/Ticket.cpp @@ -64,6 +64,9 @@ bool Ticket::initNew(TICKET_VARIANT ticketVariant, const QList & templat case TICKET_VARIANT::STOP_RECEIPT: this->_templateList << 24 << 25 << 26; break; + case TICKET_VARIANT::FINE_PAYMENT: + this->_templateList << 24 << 25 << 26; + break; case TICKET_VARIANT::FOOD_STAMP: if (printingData.contains("dyn1_list")) { this->_hasTemplateDynData = true; @@ -160,6 +163,9 @@ QDebug operator<<(QDebug debug, TICKET_VARIANT ticketVariant) case TICKET_VARIANT::STOP_RECEIPT: debug << "TICKET_VARIANT::STOP_RECEIPT"; break; + case TICKET_VARIANT::FINE_PAYMENT: + debug << "TICKET_VARIANT::FINE_PAYMENT"; + break; case TICKET_VARIANT::FOOD_STAMP: debug << "TICKET_VARIANT::FOOD_STAMP"; break;