PrintTicket: Support FIXED_PRICE Tickets

This commit is contained in:
Siegfried Siegert 2025-05-15 14:45:43 +02:00
parent e703befb2f
commit c27ce8e3ff
Signed by: SiegfriedSiegert
GPG Key ID: 68371E015E8F0B03
3 changed files with 139 additions and 0 deletions

View File

@ -1198,6 +1198,36 @@ void ATBDeviceControllerPlugin::prepareDynTemplateData()
case nsDeviceControllerInterface::TICKET_VARIANT::FOOD_STAMP:
private_setupDynTemplatData_FOOD_STAMP(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_1:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_2:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_3:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_4:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_5:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_6:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_7:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_8:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_9:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
case nsDeviceControllerInterface::TICKET_VARIANT::FIXED_PRICE_10:
private_setupDynTemplateData_FIXED_PRICE(dynTicketData, this->currentTicket);
break;
default:
private_setupDynTemplateData_DEFAULT(dynTicketData, this->currentTicket);
break;
@ -1392,6 +1422,48 @@ void ATBDeviceControllerPlugin::private_setupDynTemplateData_DEFAULT(struct T_dy
memcpy((char*)dynTicketData->dynDat7, ba_ticketNumber.data(), std::min(ba_ticketNumber.size(),8));
}
void ATBDeviceControllerPlugin::private_setupDynTemplateData_FIXED_PRICE(struct T_dynDat *dynTicketData, Ticket *ticket)
{
QDateTime parkingEndDateTime = QDateTime::fromString(ticket->getPrintingData()["parkingEnd"].toString(), Qt::ISODate);
QDateTime currentDateTime = QDateTime::fromString(ticket->getPrintingData()["currentDateTime"].toString(), Qt::ISODate);
QString parkingEndDateString = TicketUtils::getLocaleDateString(this->printerLocale, parkingEndDateTime.date());
QString currentDateString = TicketUtils::getLocaleDateString(this->printerLocale, currentDateTime.date());
// 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));
QByteArray ba_parkingEndTime = codec->fromUnicode(parkingEndDateTime.toString("hh:mm"));
memcpy((char*)dynTicketData->parkingEnd, ba_parkingEndTime.data(), std::min(ba_parkingEndTime.size(),8));
QByteArray ba_parkingEndDate = codec->fromUnicode(parkingEndDateString);
memcpy((char*)dynTicketData->currentTime, ba_parkingEndDate.data(), std::min(ba_parkingEndDate.size(),8));
// ! and yes... 'ParkingEndDate' is 'currentTime'
QByteArray ba_currentDate = codec->fromUnicode(currentDateString);
memcpy((char*)dynTicketData->currentDate, ba_currentDate.data(), std::min(ba_currentDate.size(),8));
// Ticket-Number
QByteArray ba_ticketNumber = codec->fromUnicode(ticket->getPrintingData()["ticketNumber"].toString());
memcpy((char*)dynTicketData->dynDat5, ba_ticketNumber.data(), std::min(ba_ticketNumber.size(),8));
// Product-Text 1
QByteArray ba_productText1 = codec->fromUnicode(ticket->getPrintingData()["productText"].toString()).left(8);
memcpy((char*)dynTicketData->dynDat6, ba_productText1.data(), std::min(ba_productText1.size(),8));
// Product-Text 2
QByteArray ba_productText2 = codec->fromUnicode(ticket->getPrintingData()["productText"].toString()).mid(8,8);
memcpy((char*)dynTicketData->dynDat7, ba_productText2.data(), std::min(ba_productText2.size(),8));
}
/************************************************************************************************
* cash payment
*/

View File

@ -146,6 +146,7 @@ private:
void prepareDynTemplateData();
void private_setupDynTemplateData_DEFAULT(struct T_dynDat *dynTicketData, Ticket *ticket);
void private_setupDynTemplateData_FIXED_PRICE(struct T_dynDat *dynTicketData, Ticket *ticket);
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);

View File

@ -204,6 +204,66 @@ QDebug operator<<(QDebug debug, TICKET_VARIANT ticketVariant)
case TICKET_VARIANT::PARKING_TICKET:
debug << "TICKET_VARIANT::PARKING_TICKET";
break;
case TICKET_VARIANT::PARKING_TICKET_CAR:
debug << "TICKET_VARIANT::PARKING_TICKET_CAR";
break;
case TICKET_VARIANT::PARKING_TICKET_CAMPER:
debug << "TICKET_VARIANT::PARKING_TICKET_CAMPER";
break;
case TICKET_VARIANT::PARKING_TICKET_VAN:
debug << "TICKET_VARIANT::PARKING_TICKET_VAN";
break;
case TICKET_VARIANT::DAY_TICKET:
debug << "TICKET_VARIANT::DAY_TICKET";
break;
case TICKET_VARIANT::DAY_TICKET_CHILD:
debug << "TICKET_VARIANT::DAY_TICKET_CHILD";
break;
case TICKET_VARIANT::DAY_TICKET_TEEN:
debug << "TICKET_VARIANT::DAY_TICKET_TEEN";
break;
case TICKET_VARIANT::DAY_TICKET_ADULT:
debug << "TICKET_VARIANT::DAY_TICKET_ADULT";
break;
case TICKET_VARIANT::DAY_TICKET_CAR:
debug << "TICKET_VARIANT::DAY_TICKET_CAR";
break;
case TICKET_VARIANT::DAY_TICKET_CAMPER:
debug << "TICKET_VARIANT::DAY_TICKET_CAMPER";
break;
case TICKET_VARIANT::DAY_TICKET_VAN:
debug << "TICKET_VARIANT::DAY_TICKET_VAN";
break;
case TICKET_VARIANT::FIXED_PRICE_1:
debug << "TICKET_VARIANT::FIXED_PRICE_1";
break;
case TICKET_VARIANT::FIXED_PRICE_2:
debug << "TICKET_VARIANT::FIXED_PRICE_2";
break;
case TICKET_VARIANT::FIXED_PRICE_3:
debug << "TICKET_VARIANT::FIXED_PRICE_3";
break;
case TICKET_VARIANT::FIXED_PRICE_4:
debug << "TICKET_VARIANT::FIXED_PRICE_4";
break;
case TICKET_VARIANT::FIXED_PRICE_5:
debug << "TICKET_VARIANT::FIXED_PRICE_5";
break;
case TICKET_VARIANT::FIXED_PRICE_6:
debug << "TICKET_VARIANT::FIXED_PRICE_6";
break;
case TICKET_VARIANT::FIXED_PRICE_7:
debug << "TICKET_VARIANT::FIXED_PRICE_7";
break;
case TICKET_VARIANT::FIXED_PRICE_8:
debug << "TICKET_VARIANT::FIXED_PRICE_8";
break;
case TICKET_VARIANT::FIXED_PRICE_9:
debug << "TICKET_VARIANT::FIXED_PRICE_9";
break;
case TICKET_VARIANT::FIXED_PRICE_10:
debug << "TICKET_VARIANT::FIXED_PRICE_10";
break;
case TICKET_VARIANT::RECEIPT:
debug << "TICKET_VARIANT::RECEIPT";
break;
@ -225,6 +285,12 @@ QDebug operator<<(QDebug debug, TICKET_VARIANT ticketVariant)
case TICKET_VARIANT::FREE_TICKET:
debug << "TICKET_VARIANT::FREE_TICKET";
break;
case TICKET_VARIANT::NO_TICKET:
debug << "TICKET_VARIANT::NO_TICKET";
break;
case TICKET_VARIANT::INVALID:
debug << "TICKET_VARIANT::INVALID";
break;
}
return debug;