Merge branch 'PayUpWithChanger' into pu/integration

This commit is contained in:
Siegfried Siegert 2024-09-16 15:09:44 +02:00
commit d720c7190f
Signed by: SiegfriedSiegert
GPG Key ID: 68371E015E8F0B03
3 changed files with 88 additions and 3 deletions

View File

@ -311,6 +311,73 @@ void ATBDeviceControllerPlugin::cashCollect()
}
}
void ATBDeviceControllerPlugin::cashCollect(const QString & amount)
{
if (this->coinProcessor() != nsDeviceControllerInterface::COIN_PROCESSOR::CHANGER) {
this->cashCollect();
return;
}
// check if we must change coins:
// inserted amount
uint32_t amountInsertedInt = this->hw->getInsertedAmount();
bool ok;
uint32_t amountToPayInt = amount.toInt(&ok);
// check if we must change coins:
if (amountInsertedInt > amountToPayInt) {
uint32_t amountToChangeInt = amountInsertedInt - amountToPayInt;
qCritical() << "cashCollect(" << amount << ")";
qCritical() << " amount to change: " << QString::number(amountToChangeInt);
// trigger changer:
emit this->cashPaymentChanging(nsDeviceControllerInterface::RESULT_STATE::SUCCESS,
QString::number(amountToChangeInt),
"", // ErrorCode
""); // ErrorDescription
// change
hw->changer_returnCoins(amountToChangeInt);
QTimer::singleShot(1000, this, &ATBDeviceControllerPlugin::onCashChangerState);
}
else {
// nothing to change:
qCritical() << "cashCollect(" << amount << ")";
qCritical() << " nothing to change. ";
hw->vend_success();
QString amountString = QString::number(amountInsertedInt);
// inserted coins
uint32_t amountCoinsInt = CashUtils::getAmountOfInsertedCoins(this->hw);
QString amountCoinsString = QString::number(amountCoinsInt);
// inserted notes
uint32_t amountNotesInt = CashUtils::getAmountOfInsertedNotes(this->hw);
QString amountNotesString = QString::number(amountNotesInt);
emit this->cashPaymentFinished(nsDeviceControllerInterface::RESULT_STATE::SUCCESS,
amountString,
amountCoinsString, // coins
amountNotesString, // notes
0, // proposed change
"",
"");
this->currentCashState = CASH_STATE::CACHE_EMPTY;
}
}
void ATBDeviceControllerPlugin::cashAbort()
{
hw->vend_failed();
@ -1444,6 +1511,10 @@ void ATBDeviceControllerPlugin::onCashChangerState()
"");
changerStateRequestCounter = 0;
lastChangerResult = 0;
// finalize vending:
hw->vend_success();
return;
}
else
@ -1498,6 +1569,10 @@ void ATBDeviceControllerPlugin::onCashChangerState()
errorDescription);
changerStateRequestCounter = 0;
lastChangerResult = 0;
// finalize vending:
hw->vend_success();
return;
}

View File

@ -50,6 +50,7 @@ public:
void requestStartCashInput(const QString & amount);
void requestStopCashInput();
void cashCollect();
void cashCollect(const QString & amount);
void cashAbort();
// read coin/cash processing variants -----------------------------------------

View File

@ -60,9 +60,10 @@ public:
virtual void requestStopCashInput() = 0;
/**
* called e.g. on Button "NEXT" in pay-up (direct coin input)
* called e.g. after printing
*/
virtual void cashCollect() = 0;
virtual void cashCollect(const QString & amount) = 0;
virtual void cashAbort() = 0;
// TASKS: Account -------------------------------------------------------------
@ -138,6 +139,14 @@ signals:
const QString & errorCode,
const QString & errorDescription);
/**
* emitted if cashPayment has been finished, e.g. in result to task cashCollect():
* if coins in changer must be given back to user.
*/
void cashPaymentChanging(nsDeviceControllerInterface::RESULT_STATE resultState,
const QString & changeValue, // amount changed by changer/escrow
const QString & errorCode,
const QString & errorDescription);
/**
* emitted if cashPayment has been finished, e.g. in result to task cashCollect():
* -> ticket should be printed sucessfully
@ -145,7 +154,7 @@ signals:
* Provides data for logging, especially changed value
*/
void cashPaymentFinished(nsDeviceControllerInterface::RESULT_STATE resultState,
const QString & newCashValue, // total inserted amount amount
const QString & newCashValue, // total inserted amount
const QString & coinValue, // inserted amount, paid with coins
const QString & noteValue, // inserted amount, paid with notes
const QString & changeValue, // amount changed by changer/escrow
@ -203,7 +212,7 @@ signals:
Q_DECLARE_INTERFACE(DeviceControllerInterface,
"eu.atb.ptu.plugin.DeviceControllerInterface/1.1.6")
"eu.atb.ptu.plugin.DeviceControllerInterface/1.2.0")
namespace nsDeviceControllerInterface {