Implement printing receipts:
- using DC prn_sendText - this is a rather general print method
This commit is contained in:
		@@ -537,6 +537,56 @@ void ATBDeviceControllerPlugin::requestPrintReceipt(const QHash<QString, QVarian
 | 
			
		||||
    qCritical() << "ATBDeviceControllerPlugin::requestPrintReceipt() is currently not implemented";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATBDeviceControllerPlugin::requestPrintReceipt(const QString & printingString)
 | 
			
		||||
{
 | 
			
		||||
    QByteArray ba = printingString.toUtf8();
 | 
			
		||||
    hw->prn_switchPower(true);
 | 
			
		||||
    hw->prn_sendText(&ba);
 | 
			
		||||
    QTimer::singleShot(4000, this, SLOT(onPrinterWaitForPrintingReceipt()));
 | 
			
		||||
 | 
			
		||||
    //QTimer::singleShot(2000, this, [this](){ hw->prn_cut(3);  } );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATBDeviceControllerPlugin::onPrinterWaitForPrintingReceipt()
 | 
			
		||||
{
 | 
			
		||||
    quint8 printerResult = this->hw->prn_getPrintResult();
 | 
			
		||||
 | 
			
		||||
    switch (printerResult) {
 | 
			
		||||
    case 0:    // still printing
 | 
			
		||||
        qCritical() << "--> printer: WaitForPrintingReceipt";
 | 
			
		||||
        QTimer::singleShot(2000, this, SLOT(onPrinterWaitForPrintingReceipt()));
 | 
			
		||||
        break;
 | 
			
		||||
    case 1:    // printing finished, Ok
 | 
			
		||||
        qCritical() << "DC Finished printing receipt";
 | 
			
		||||
        emit this->printReceiptFinished(nsDeviceControllerInterface::RESULT_STATE::SUCCESS,
 | 
			
		||||
                                        // TODO: TicketNumber
 | 
			
		||||
                                        "",
 | 
			
		||||
                                        "");
 | 
			
		||||
        hw->prn_switchPower(true);
 | 
			
		||||
        hw->prn_cut(3);
 | 
			
		||||
        break;
 | 
			
		||||
    case 2:    // printing finished, Error
 | 
			
		||||
        qCritical() << "DC Error: wait for printing receipt";
 | 
			
		||||
        this->errorCode = "PRINTER";               // TODO: get more detailed error code from low level API
 | 
			
		||||
        this->errorDescription = "Printer error";  // TODO: get more detailed error description from low level API
 | 
			
		||||
 | 
			
		||||
        emit this->printReceiptFinished(nsDeviceControllerInterface::RESULT_STATE::ERROR_BACKEND,
 | 
			
		||||
                                       this->errorCode,
 | 
			
		||||
                                       this->errorDescription);
 | 
			
		||||
        break;
 | 
			
		||||
    default:
 | 
			
		||||
        qCritical() << "DC Error: wait for printing receipt";
 | 
			
		||||
        this->errorCode = "PRINTER";               // TODO: get more detailed error code from low level API
 | 
			
		||||
        this->errorDescription = "Printer error";  // TODO: get more detailed error description from low level API
 | 
			
		||||
 | 
			
		||||
        emit this->printReceiptFinished(nsDeviceControllerInterface::RESULT_STATE::ERROR_BACKEND,
 | 
			
		||||
                                       this->errorCode,
 | 
			
		||||
                                       this->errorDescription);
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void ATBDeviceControllerPlugin::requestPrintTicket(const QHash<QString, QVariant> & printingData)
 | 
			
		||||
{
 | 
			
		||||
@@ -662,21 +712,21 @@ void ATBDeviceControllerPlugin::onPrinterDataPrepared()
 | 
			
		||||
 | 
			
		||||
    // note: calling prn_getPrintResult() immediately may result in wrong answer!
 | 
			
		||||
    // We have to wait "about some seconds" until calling this function!
 | 
			
		||||
    QTimer::singleShot(4000, this, SLOT(onPrinterWaitForPrinting()));
 | 
			
		||||
    QTimer::singleShot(4000, this, SLOT(onPrinterWaitForPrintingTicket()));
 | 
			
		||||
 | 
			
		||||
    // old: use printer templates:
 | 
			
		||||
    // this->currentTemplate = 1;
 | 
			
		||||
    // this->onPrinterPrintNextTemplate();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ATBDeviceControllerPlugin::onPrinterWaitForPrinting()
 | 
			
		||||
void ATBDeviceControllerPlugin::onPrinterWaitForPrintingTicket()
 | 
			
		||||
{
 | 
			
		||||
    quint8 printerResult = this->hw->prn_getPrintResult();
 | 
			
		||||
 | 
			
		||||
    switch (printerResult) {
 | 
			
		||||
    case 0:    // still printing
 | 
			
		||||
        qCritical() << "--> printer: WaitForPrinting";
 | 
			
		||||
        QTimer::singleShot(2000, this, SLOT(onPrinterWaitForPrinting()));
 | 
			
		||||
        qCritical() << "--> printer: WaitForPrintingTicket";
 | 
			
		||||
        QTimer::singleShot(2000, this, SLOT(onPrinterWaitForPrintingTicket()));
 | 
			
		||||
        break;
 | 
			
		||||
    case 1:    // printing finished, Ok
 | 
			
		||||
        this->onPrintFinishedOK();
 | 
			
		||||
 
 | 
			
		||||
@@ -52,6 +52,7 @@ public:
 | 
			
		||||
    void requestPrintTicket(const QHash<QString, QVariant> & printingData);
 | 
			
		||||
    void requestPrintTicket(nsDeviceControllerInterface::TICKET_VARIANT ticketVariant, const QHash<QString, QVariant> & printingData);
 | 
			
		||||
    void requestPrintReceipt(const QHash<QString, QVariant> & printingData);
 | 
			
		||||
    void requestPrintReceipt(const QString & printingString);
 | 
			
		||||
 | 
			
		||||
    // TASKS: Account -------------------------------------------------------------
 | 
			
		||||
    void requestAccount();
 | 
			
		||||
@@ -125,7 +126,8 @@ private slots:
 | 
			
		||||
   void onPrinterDataPrepared();
 | 
			
		||||
   void onPrinterDataPreparedForTemplates();
 | 
			
		||||
   void onPrinterPrintNextTemplate();
 | 
			
		||||
   void onPrinterWaitForPrinting();
 | 
			
		||||
   void onPrinterWaitForPrintingTicket();
 | 
			
		||||
   void onPrinterWaitForPrintingReceipt();
 | 
			
		||||
 | 
			
		||||
   void onPrintFinishedOK();
 | 
			
		||||
   void onPrintFinishedERR();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user