2023-11-14 09:32:56 +01:00
|
|
|
#include "win11_abr.h"
|
|
|
|
|
|
|
|
#define BUTTONCOLOR0 "background-color: white"
|
|
|
|
#define BUTTONCOLORWAIT "background-color: yellow"
|
|
|
|
#define BUTTONCOLORGOT "background-color: green"
|
|
|
|
#define BUTTONCOLORBAD "background-color: red"
|
|
|
|
#define BUTTONCOLORGOOD "background-color: green"
|
2024-07-08 10:34:47 +02:00
|
|
|
#define MYBUTTONHEIGT 40
|
2023-11-14 09:32:56 +01:00
|
|
|
|
|
|
|
static char updateList, wait4data;
|
|
|
|
static uint8_t pwreq;
|
|
|
|
/*
|
|
|
|
void log_getHoldAccountNumbers(uint8_t *nrOfVals, uint16_t *accNr ) const override;
|
|
|
|
// returns all acc nrs of the backuped vault records
|
|
|
|
// use: uint16_t backupedAccNumbers[8]
|
|
|
|
// will be requested automatically
|
|
|
|
|
|
|
|
bool log_selectVaultRecord(uint16_t accountNr ) const override;
|
|
|
|
// return true if sending, false if cmd-stack is full
|
|
|
|
// and trigger transfer
|
|
|
|
|
|
|
|
bool log_chkIfVaultRecordAvailable(void) const override;
|
|
|
|
// return true if completly received
|
|
|
|
|
|
|
|
bool log_getVaultRecord(struct T_vaultRecord *retVR) const override;
|
|
|
|
// which was selected by: log_selectVaultRecord()
|
|
|
|
// to be forwarded to Ismas
|
|
|
|
|
|
|
|
bool prn_printAccountReceipt(void) const override;
|
|
|
|
// return true if sending to DC OK, false if cmd-stack is full
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
T_win11::T_win11(hwinf *HWaccess, QWidget *parent) : QWidget(parent)
|
|
|
|
{
|
|
|
|
this->HWaccess = HWaccess;
|
|
|
|
|
|
|
|
//myLayout = new QGridLayout;
|
|
|
|
mainHLayout = new QHBoxLayout;
|
2024-07-08 10:34:47 +02:00
|
|
|
veryLeftLayout = new QVBoxLayout;
|
2023-11-14 09:32:56 +01:00
|
|
|
leftLayout = new QVBoxLayout;
|
|
|
|
RightLayout = new QVBoxLayout;
|
|
|
|
|
|
|
|
|
|
|
|
QFont myTabFont;
|
|
|
|
myTabFont.setPixelSize(20);
|
|
|
|
|
|
|
|
// availAccNrList.append("1");
|
|
|
|
// availAccNrList.append("2");
|
|
|
|
// availAccNrList.append("3");
|
|
|
|
// availAccNrList.append("4");
|
|
|
|
// availAccNrList.append("5");
|
|
|
|
// availAccNrList.append("6");
|
|
|
|
// availAccNrList.append("7");
|
|
|
|
// availAccNrList.append("8");
|
|
|
|
availAccNrList.clear();
|
|
|
|
|
2024-07-08 10:34:47 +02:00
|
|
|
// middle: big ListWindow to show accounting record
|
2023-11-14 09:32:56 +01:00
|
|
|
|
|
|
|
QLabel *lab1 =new QLabel("accounting data:");
|
|
|
|
leftLayout->addWidget(lab1);
|
|
|
|
lab1->setFont(myTabFont);
|
|
|
|
|
|
|
|
myTabFont.setPixelSize(16);
|
|
|
|
win11_showVaultRecord = new QListWidget;
|
|
|
|
win11_showVaultRecord->setFont(myTabFont);
|
|
|
|
//win11_showVaultRecord->setMinimumHeight(200);
|
2024-07-08 10:34:47 +02:00
|
|
|
win11_showVaultRecord->setMinimumWidth(300);
|
2023-11-14 09:32:56 +01:00
|
|
|
leftLayout->addWidget(win11_showVaultRecord);
|
|
|
|
//win11_showVaultRecord->addItem("data 123");
|
|
|
|
win11_showVaultRecord->setLineWidth(3);
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-07-08 10:34:47 +02:00
|
|
|
but2 = new QPushButton(" Load Data");
|
|
|
|
veryLeftLayout->addWidget(but2);
|
|
|
|
connect(but2, SIGNAL(clicked()), this, SLOT(slot_loadData()));
|
|
|
|
but2->setStyleSheet(BUTTONCOLOR0); // BUTTONCOLORWAIT BUTTONCOLORGOT
|
|
|
|
but2->setFont(myTabFont);
|
|
|
|
but2->setMinimumHeight(MYBUTTONHEIGT);
|
|
|
|
|
|
|
|
QLabel *lab59 =new QLabel(" ");
|
|
|
|
veryLeftLayout->addWidget(lab59);
|
|
|
|
|
2023-11-14 09:32:56 +01:00
|
|
|
myTabFont.setPixelSize(20);
|
|
|
|
but1 = new QPushButton(" Reload Acc. Nrs");
|
2024-07-08 10:34:47 +02:00
|
|
|
//RightLayout->addWidget(but1);
|
|
|
|
veryLeftLayout->addWidget(but1); // am 15.5.24 nach links
|
2023-11-14 09:32:56 +01:00
|
|
|
connect(but1, SIGNAL(clicked()), this, SLOT(slot_loadNumbers()));
|
|
|
|
but1->setFont(myTabFont);
|
|
|
|
but1->setStyleSheet(BUTTONCOLOR0); // BUTTONCOLORWAIT BUTTONCOLORGOT
|
2024-07-08 10:34:47 +02:00
|
|
|
but1->setMinimumHeight(MYBUTTONHEIGT);
|
2023-11-14 09:32:56 +01:00
|
|
|
|
|
|
|
QLabel *lab4 =new QLabel("select Acc. Nr.:");
|
2024-07-08 10:34:47 +02:00
|
|
|
//RightLayout->addWidget(lab4);
|
|
|
|
veryLeftLayout->addWidget(lab4); // am 15.5.24 nach links
|
2023-11-14 09:32:56 +01:00
|
|
|
lab4->setFont(myTabFont);
|
|
|
|
|
|
|
|
QFont myCBfont;
|
|
|
|
myCBfont.setPixelSize(16);
|
|
|
|
//myCBfont.setPointSize(16);
|
|
|
|
myCBfont.setPointSize(myCBfont.pixelSize() - 5);
|
|
|
|
|
|
|
|
cb_selAccNr = new QComboBox();
|
|
|
|
cb_selAccNr->addItems(availAccNrList);
|
|
|
|
//cb_selAccNr->setFont(myCBfont); // aendert nur die Liste, Eingabezeile bleibt klein
|
|
|
|
//cb_selAccNr->setCurrentIndex(7);
|
|
|
|
cb_selAccNr->setEditable(true);
|
|
|
|
cb_selAccNr->setMaxVisibleItems(8);
|
|
|
|
cb_selAccNr->setStyleSheet("QComboBox { font-size: 20px; }"); // gilt fuer Liste und Eingabezeile
|
|
|
|
//cb_selAccNr->setStyleSheet("QScrollBar:vertical { width: 30px; }");
|
2024-07-08 10:34:47 +02:00
|
|
|
//RightLayout->addWidget(cb_selAccNr);
|
|
|
|
veryLeftLayout->addWidget(cb_selAccNr); // am 15.5.24 nach links
|
2023-11-14 09:32:56 +01:00
|
|
|
|
2024-07-08 10:34:47 +02:00
|
|
|
QLabel *lab60 =new QLabel(" ");
|
|
|
|
veryLeftLayout->addWidget(lab60);
|
|
|
|
QLabel *lab61 =new QLabel(" ");
|
|
|
|
veryLeftLayout->addWidget(lab61);
|
2023-11-14 09:32:56 +01:00
|
|
|
|
|
|
|
but3 = new QPushButton(" print ");
|
2024-07-08 10:34:47 +02:00
|
|
|
// RightLayout->addWidget(but3);
|
|
|
|
veryLeftLayout->addWidget(but3); // am 15.5.24 nach links
|
2023-11-14 09:32:56 +01:00
|
|
|
connect(but3, SIGNAL(clicked()), this, SLOT(slot_printSel()));
|
|
|
|
but3->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
but3->setFont(myTabFont);
|
2024-07-08 10:34:47 +02:00
|
|
|
but3->setMinimumHeight(MYBUTTONHEIGT);
|
|
|
|
|
|
|
|
QLabel *lab62 =new QLabel(" ");
|
|
|
|
veryLeftLayout->addWidget(lab62);
|
2023-11-14 09:32:56 +01:00
|
|
|
|
|
|
|
but4 = new QPushButton(" verify ");
|
2024-07-08 10:34:47 +02:00
|
|
|
// RightLayout->addWidget(but4);
|
|
|
|
veryLeftLayout->addWidget(but4); // am 15.5.24 nach links
|
2023-11-14 09:32:56 +01:00
|
|
|
connect(but4, SIGNAL(clicked()), this, SLOT(slot_crc()));
|
|
|
|
but4->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
but4->setFont(myTabFont);
|
2024-07-08 10:34:47 +02:00
|
|
|
but4->setMinimumHeight(MYBUTTONHEIGT);
|
2023-11-14 09:32:56 +01:00
|
|
|
|
2024-07-08 10:34:47 +02:00
|
|
|
but5 = new QPushButton("get acc-nr");
|
2023-11-14 09:32:56 +01:00
|
|
|
RightLayout->addWidget(but5);
|
|
|
|
connect(but5, SIGNAL(clicked()), this, SLOT(slot_readNr()));
|
|
|
|
but5->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
but5->setFont(myTabFont);
|
2024-07-08 10:34:47 +02:00
|
|
|
but5->setMinimumHeight(MYBUTTONHEIGT);
|
|
|
|
|
|
|
|
but20 = new QPushButton("set new acc-nr");
|
|
|
|
RightLayout->addWidget(but20);
|
|
|
|
connect(but20, SIGNAL(clicked()), this, SLOT(slot_setNextAccNr()));
|
|
|
|
but20->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
but20->setFont(myTabFont);
|
|
|
|
but20->setMinimumHeight(MYBUTTONHEIGT);
|
2023-11-14 09:32:56 +01:00
|
|
|
|
|
|
|
//disp_CurrentAccNr=new QLabel();
|
|
|
|
disp_CurrentAccNr=new QLineEdit(); // mit Eingabemoeglichkeit!
|
|
|
|
RightLayout->addWidget(disp_CurrentAccNr);
|
|
|
|
disp_CurrentAccNr->setFont(myTabFont);
|
|
|
|
//disp_CurrentAccNr->setLineWidth(3);
|
|
|
|
disp_CurrentAccNr->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
disp_CurrentAccNr->setEnabled(true);
|
2024-07-08 10:34:47 +02:00
|
|
|
// neu, 15.5.24:
|
|
|
|
//connect(disp_CurrentAccNr, SIGNAL(cursorPositionChanged()), this, SLOT(slot_setNextAccNr()));
|
|
|
|
// geht nicht :(
|
2023-11-14 09:32:56 +01:00
|
|
|
|
2024-07-08 10:34:47 +02:00
|
|
|
myTabFont.setPixelSize(20);
|
2023-11-14 09:32:56 +01:00
|
|
|
myKeypad = new T_keypad();
|
|
|
|
leftLayout->addWidget(myKeypad);
|
|
|
|
connect(myKeypad, SIGNAL(keyEntryFinished()), this, SLOT(valueIsSet()));
|
|
|
|
|
2024-07-08 10:34:47 +02:00
|
|
|
but6 = new QPushButton("send new acc-nr");
|
2023-11-14 09:32:56 +01:00
|
|
|
RightLayout->addWidget(but6);
|
2024-07-08 10:34:47 +02:00
|
|
|
connect(but6, SIGNAL(clicked()), this, SLOT(slot_sendNewAccNr()));
|
2023-11-14 09:32:56 +01:00
|
|
|
but6->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
but6->setFont(myTabFont);
|
2024-07-08 10:34:47 +02:00
|
|
|
but6->setMinimumHeight(MYBUTTONHEIGT);
|
2023-11-14 09:32:56 +01:00
|
|
|
|
|
|
|
but7 = new QPushButton("delete all DC-data");
|
|
|
|
RightLayout->addWidget(but7);
|
|
|
|
connect(but7, SIGNAL(clicked()), this, SLOT(slot_deleteAccData()));
|
|
|
|
but7->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
but7->setFont(myTabFont);
|
2024-07-08 10:34:47 +02:00
|
|
|
but7->setMinimumHeight(MYBUTTONHEIGT);
|
2023-11-14 09:32:56 +01:00
|
|
|
|
|
|
|
but8 = new QPushButton("delete all Totals");
|
|
|
|
RightLayout->addWidget(but8);
|
|
|
|
connect(but8, SIGNAL(clicked()), this, SLOT(slot_deleteTotals()));
|
|
|
|
but8->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
but8->setFont(myTabFont);
|
2024-07-08 10:34:47 +02:00
|
|
|
but8->setMinimumHeight(MYBUTTONHEIGT);
|
|
|
|
but8->setMinimumHeight(MYBUTTONHEIGT);
|
2023-11-14 09:32:56 +01:00
|
|
|
|
2024-07-08 10:34:47 +02:00
|
|
|
mainHLayout->addLayout(veryLeftLayout);
|
2023-11-14 09:32:56 +01:00
|
|
|
mainHLayout->addLayout(leftLayout);
|
|
|
|
mainHLayout->addLayout(RightLayout);
|
|
|
|
|
|
|
|
setLayout(mainHLayout);
|
|
|
|
|
|
|
|
updateList=1;
|
|
|
|
wait4data=0;
|
|
|
|
myNextStep=0;
|
|
|
|
myStep=0;
|
|
|
|
pwreq=0;
|
|
|
|
|
|
|
|
myTO = new QTimer();
|
|
|
|
myTO->setSingleShot(true);
|
|
|
|
myTO->stop();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
T_win11::~T_win11()
|
|
|
|
{
|
|
|
|
close();
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::Nav_back(void)
|
|
|
|
{
|
|
|
|
myNextStep=WCS_WIN11BAK;
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::Nav_home(void)
|
|
|
|
{
|
|
|
|
myNextStep=WCS_WIN11MID;
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::Nav_next(void)
|
|
|
|
{
|
|
|
|
myNextStep=WCS_WIN11FWD;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void T_win11::slot_loadData(void)
|
|
|
|
{
|
|
|
|
bool ok=0;
|
|
|
|
int selNr;
|
|
|
|
QString anStr;
|
|
|
|
|
|
|
|
but3->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
but2->setStyleSheet(BUTTONCOLORWAIT); // BUTTONCOLORGOT
|
|
|
|
but2->setText("loading...");
|
|
|
|
//int anInt=cb_selAccNr->currentIndex();
|
|
|
|
anStr=cb_selAccNr->currentText();
|
|
|
|
selNr=anStr.toUInt(&ok);
|
|
|
|
if (ok)
|
|
|
|
{
|
|
|
|
if (selNr==0)
|
|
|
|
{
|
|
|
|
sub_displayCurrentCashbox();
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
HWaccess->log_selectVaultRecord(uint16_t(selNr));
|
|
|
|
win11_showVaultRecord->clear();
|
|
|
|
wait4data=1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
myStep++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::slot_loadNumbers(void)
|
|
|
|
{
|
|
|
|
updateList=1;
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::slot_printSel(void)
|
|
|
|
{
|
|
|
|
bool ok=0;
|
|
|
|
QString anStr=cb_selAccNr->currentText();
|
|
|
|
uint16_t selNr=anStr.toUInt(&ok);
|
|
|
|
if (ok && selNr>0)
|
|
|
|
{
|
|
|
|
HWaccess->prn_printOneAccountReceipt(selNr);
|
|
|
|
myTO->start(3000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::slot_crc(void)
|
|
|
|
{
|
|
|
|
|
|
|
|
bool ret=0;
|
|
|
|
ret=HWaccess->log_verifyVaultRecordByCrc();
|
|
|
|
if (ret)
|
|
|
|
but4->setStyleSheet(BUTTONCOLORGOOD);
|
|
|
|
else
|
|
|
|
but4->setStyleSheet(BUTTONCOLORBAD);
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::slot_readNr(void)
|
|
|
|
{
|
|
|
|
uint16_t nxtAn=0;
|
|
|
|
|
|
|
|
nxtAn= HWaccess->log_DC_getNextAccountNumber();
|
|
|
|
QString myStr;
|
|
|
|
|
|
|
|
myStr.clear();
|
|
|
|
myStr.append(QString::number(nxtAn));
|
|
|
|
disp_CurrentAccNr->setText(myStr);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2024-07-08 10:34:47 +02:00
|
|
|
|
|
|
|
|
|
|
|
void T_win11::slot_setNextAccNr(void)
|
|
|
|
{
|
|
|
|
pwreq=10;
|
|
|
|
myKeypad->setText("new accNr:");
|
|
|
|
myKeypad->keysVisible(1);
|
|
|
|
myKeypad->show(); // display pinpad
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void T_win11::slot_sendNewAccNr(void)
|
2023-11-14 09:32:56 +01:00
|
|
|
{
|
|
|
|
// set new accouning number
|
|
|
|
// request password before
|
|
|
|
pwreq=1;
|
2024-07-08 10:34:47 +02:00
|
|
|
myKeypad->setText("Password:");
|
2023-11-14 09:32:56 +01:00
|
|
|
myKeypad->keysVisible(2);
|
|
|
|
myKeypad->show(); // display pinpad for password entry
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::slot_deleteAccData(void)
|
|
|
|
{
|
|
|
|
pwreq=2;
|
2024-07-08 10:34:47 +02:00
|
|
|
myKeypad->setText("Password:");
|
2023-11-14 09:32:56 +01:00
|
|
|
myKeypad->keysVisible(2);
|
|
|
|
myKeypad->show();
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::slot_deleteTotals(void)
|
|
|
|
{
|
|
|
|
pwreq=3;
|
2024-07-08 10:34:47 +02:00
|
|
|
myKeypad->setText("Password:");
|
2023-11-14 09:32:56 +01:00
|
|
|
myKeypad->keysVisible(2);
|
|
|
|
myKeypad->show();
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::valueIsSet(void)
|
|
|
|
{
|
|
|
|
// password was entered
|
|
|
|
bool ok=0;
|
|
|
|
QString myPW, myStr;
|
|
|
|
|
|
|
|
myPW=myKeypad->getValueString(); // get entered password
|
|
|
|
if (pwreq==1) // pw-entry requested for acc-nr
|
|
|
|
{
|
|
|
|
if (myPW=="92706") // compare password
|
|
|
|
{
|
|
|
|
//qDebug()<<"PW correct";
|
2024-07-08 10:34:47 +02:00
|
|
|
|
2023-11-14 09:32:56 +01:00
|
|
|
myStr=disp_CurrentAccNr->text(); // new value was set before PW
|
|
|
|
uint16_t nxtAn=myStr.toUInt(&ok,10);
|
|
|
|
if (ok)
|
|
|
|
{
|
|
|
|
HWaccess->log_DC_setNextAccountNumber(nxtAn);
|
|
|
|
disp_CurrentAccNr->setText("->new acc.nr set");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
if (pwreq==2) // pw-entry requested for deleteAccData
|
|
|
|
{
|
|
|
|
if (myPW=="92637") // compare password
|
|
|
|
{
|
|
|
|
HWaccess->log_DC_deleteAllVaultrecordsInDc();
|
|
|
|
disp_CurrentAccNr->setText("->all acc.data deleted");
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
if (pwreq==3) // pw-entry requested for delete totals
|
|
|
|
{
|
|
|
|
if (myPW=="92702") // compare password
|
|
|
|
{
|
|
|
|
HWaccess->log_DC_deleteAllTotalCounters();
|
|
|
|
disp_CurrentAccNr->setText("->all totals deleted");
|
|
|
|
}
|
2024-07-08 10:34:47 +02:00
|
|
|
}else
|
|
|
|
if (pwreq==10) // new acc nr
|
|
|
|
{
|
|
|
|
//swl_str2ulong(pwreq);
|
|
|
|
disp_CurrentAccNr->setText(myPW);
|
2023-11-14 09:32:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
pwreq=0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void T_win11::enterAccData(QString label, uint32_t val)
|
|
|
|
{
|
|
|
|
QString myStr;
|
|
|
|
|
|
|
|
myStr.clear();
|
|
|
|
myStr.append(label);
|
|
|
|
myStr.append(QString::number(val));
|
|
|
|
win11_showVaultRecord->addItem(myStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::enterString(QString label, char *buff, int len)
|
|
|
|
{
|
|
|
|
QString myStr;
|
|
|
|
char myChar;
|
|
|
|
int nn, LL=len;
|
|
|
|
|
|
|
|
myStr.clear();
|
|
|
|
myStr.append(label);
|
|
|
|
for (nn=0; nn<LL; nn++)
|
|
|
|
{
|
|
|
|
myChar=buff[nn];
|
|
|
|
myStr.append(myChar);
|
|
|
|
}
|
|
|
|
|
|
|
|
win11_showVaultRecord->addItem(myStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::enterArray(QString label, uint16_t *buff, int len)
|
|
|
|
{
|
|
|
|
QString myStr;
|
|
|
|
|
|
|
|
int nn, LL=len;
|
|
|
|
uint16_t val;
|
|
|
|
|
|
|
|
myStr.clear();
|
|
|
|
myStr.append(label);
|
|
|
|
for (nn=0; nn<LL; nn++)
|
|
|
|
{
|
|
|
|
val=buff[nn];
|
|
|
|
myStr.append(QString::number(val));
|
|
|
|
myStr.append(", ");
|
|
|
|
}
|
|
|
|
|
|
|
|
win11_showVaultRecord->addItem(myStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
void T_win11::enterArray(QString label, uint32_t *buff, int len)
|
|
|
|
{
|
|
|
|
QString myStr;
|
|
|
|
int nn, LL=len;
|
|
|
|
uint32_t val;
|
|
|
|
|
|
|
|
myStr.clear();
|
|
|
|
myStr.append(label);
|
|
|
|
for (nn=0; nn<LL; nn++)
|
|
|
|
{
|
|
|
|
val=buff[nn];
|
|
|
|
myStr.append(QString::number(val));
|
|
|
|
myStr.append(", ");
|
|
|
|
}
|
|
|
|
win11_showVaultRecord->addItem(myStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool T_win11::work_ini(uint16_t *nextScreen, uint8_t *useNavi)
|
|
|
|
{
|
|
|
|
// one state of the vending/operating FSM
|
|
|
|
// called ONE time after selecting this state (initialization)
|
|
|
|
// useNavi=0: no change
|
|
|
|
// bit0,1: enable/disable button "next"
|
|
|
|
// bit2,3: enable/disable button "home"
|
|
|
|
// bit4,5: enable/disable button "back"
|
|
|
|
|
|
|
|
*nextScreen=0; // needed 0=no change
|
|
|
|
*useNavi=SWITCH_BACK_ON | SWITCH_HOME_ON | SWITCH_NEXT_ON;
|
|
|
|
myNextStep=0;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool T_win11::working(uint16_t *nextScreen, uint8_t *useNavi)
|
|
|
|
{
|
|
|
|
// one state of the vending/operating FSM
|
|
|
|
// called cyclic until this state changes intentionally to another state
|
|
|
|
// display informations for human operator, react on operators inputs or wait for payment media
|
|
|
|
|
|
|
|
// useNavi=0: no change
|
|
|
|
// bit0,1: enable/disable button "next"
|
|
|
|
// bit2,3: enable/disable button "home"
|
|
|
|
// bit4,5: enable/disable button "back"
|
|
|
|
|
|
|
|
uint8_t nrOfVals, nn;
|
|
|
|
uint16_t accNr[34], val;
|
|
|
|
QString myStr;
|
|
|
|
struct T_vaultRecord retVR;
|
|
|
|
|
|
|
|
//uint8_t temp[400];
|
|
|
|
|
|
|
|
if (updateList)
|
|
|
|
{
|
|
|
|
HWaccess->log_getHoldAccountNumbers(&nrOfVals, &accNr[0] );
|
|
|
|
//void log_getHoldAccountNumbers(uint8_t *nrOfVals, uint16_t *accNr ) const override;
|
|
|
|
// returns all acc nrs of the backuped vault records
|
|
|
|
// use: uint16_t backupedAccNumbers[8]
|
|
|
|
// will be requested automatically
|
|
|
|
|
|
|
|
if (nrOfVals>32) nrOfVals=32;
|
|
|
|
availAccNrList.clear();
|
|
|
|
availAccNrList.append("0"); // 0 = immer akt. Kasseninhalt
|
|
|
|
for (nn=0; nn< nrOfVals; nn++)
|
|
|
|
{
|
|
|
|
myStr.clear();
|
|
|
|
val=accNr[nn];
|
|
|
|
myStr.append( QString::number(val,10) );
|
|
|
|
availAccNrList.append(myStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (nrOfVals>0)
|
|
|
|
{
|
|
|
|
cb_selAccNr->clear();
|
|
|
|
cb_selAccNr->addItems(availAccNrList);
|
|
|
|
//win11_showAccNrs->clear();
|
|
|
|
//win11_showAccNrs->addItems(availAccNrList);
|
|
|
|
updateList=0;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//blksRdy=HWaccess->log_getAvailableVaultBlocks();
|
|
|
|
// return 0x0011 1111 if all 6 blocks arer loaded (one bit per block)
|
|
|
|
//if (blksRdy==0x3F && wait4data)
|
|
|
|
if (HWaccess->log_chkIfVaultRecordAvailable() && wait4data)
|
|
|
|
{
|
|
|
|
wait4data=0;
|
|
|
|
win11_showVaultRecord->clear();
|
|
|
|
but2->setStyleSheet(BUTTONCOLORGOT);
|
|
|
|
but2->setText("loaded");
|
|
|
|
|
|
|
|
// get data from local memory and display to left window
|
|
|
|
HWaccess->log_getVaultRecord(&retVR);
|
|
|
|
enterString ("Start : ", retVR.startbuffer, 4);
|
|
|
|
enterAccData("Acc.Nr. : ", retVR.AccountingNumber );
|
|
|
|
enterAccData("Cu.Nr. : ", retVR.CUNU );
|
|
|
|
enterAccData("MachNr. : ", retVR.MANU );
|
|
|
|
enterAccData("reserve : ", retVR.resint1 );
|
|
|
|
enterString ("--- : ", retVR.label1buffer, 4 );
|
|
|
|
enterAccData("Year : ", retVR.year );
|
|
|
|
enterAccData("Month : ", retVR.month );
|
|
|
|
enterAccData("Day : ", retVR.dom );
|
|
|
|
enterAccData("Hour : ", retVR.hour );
|
|
|
|
enterAccData("Min : ", retVR.min );
|
|
|
|
enterAccData("Sec : ", retVR.sec );
|
|
|
|
enterAccData("Weekday : ", retVR.DoW );
|
|
|
|
enterAccData("reserve : ", retVR.reschar3 );
|
|
|
|
enterString ("--- : ", retVR.label2buffer, 4 );
|
|
|
|
enterAccData("Total : ", retVR.AbsIncome1 );
|
|
|
|
enterAccData("abs.Res : ", retVR.AbsReserve );
|
|
|
|
enterAccData("abs.Cut : ", retVR.AbsNrOfCuts );
|
|
|
|
enterString ("--- : ", retVR.label3buffer, 4 );
|
|
|
|
enterArray ("ins.Coins: ", retVR.VKcoinsInserted, 16 );
|
|
|
|
enterArray ("ret Coins: ", retVR.VKcoinsReturned, 6 );
|
|
|
|
enterArray ("fillCoins: ", retVR.ServCoinsInserted, 16 );
|
|
|
|
enterArray ("takeCoins: ", retVR.ServCoinsReturned, 6 );
|
|
|
|
enterAccData("reserve : ", retVR.resint3 );
|
|
|
|
enterAccData("reserve : ", retVR.resint4 );
|
|
|
|
enterArray ("tubeCont.: ", retVR.currentTubeContent,6 );
|
|
|
|
enterAccData("reserve : ", retVR.resint5 );
|
|
|
|
enterAccData("reserve : ", retVR.resint6 );
|
|
|
|
enterString("--- : ", retVR.label4buffer, 4 );
|
|
|
|
enterArray ("nr.Coins : ", retVR.coinsInVault, 16 );
|
|
|
|
enterArray ("nr.Bills : ", retVR.billsInStacker, 8 );
|
|
|
|
enterString("--- : ", retVR.label5buffer, 4 );
|
|
|
|
enterArray ("coinDenom: ", retVR.coinDenomination, 16 );
|
|
|
|
enterArray ("billDenom: ", retVR.billDenom, 8 );
|
|
|
|
enterArray ("tubeDenom: ", retVR.tubeDenom, 6 );
|
|
|
|
enterAccData("exchgRate: ", retVR.exchangeRate );
|
|
|
|
enterAccData("reserve : ", retVR.resint9 );
|
|
|
|
|
|
|
|
enterAccData("Cuts CB : ", retVR.cutsSinceCBchange);
|
|
|
|
enterAccData("Amount CB: ", retVR.CBcontent_cent);
|
|
|
|
enterAccData("Coins CB : ", retVR.CBnrofCoins);
|
|
|
|
enterString("End : ", retVR.endofblock, 4 );
|
|
|
|
// 332 bytes
|
|
|
|
|
|
|
|
enterAccData("CRC : ", retVR.CRC16);
|
|
|
|
enterAccData("res : ", retVR.resint11);
|
|
|
|
enterString("End : ", retVR.endofRecord, 4 );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (myTO->isActive())
|
|
|
|
{
|
|
|
|
uint8_t uctmp=HWaccess->prn_getPrintResult();
|
|
|
|
// return: 0: unknown
|
|
|
|
// 1: OK - last template was printed succesful
|
|
|
|
// 2: error - last template was not printed
|
|
|
|
if (uctmp==2)
|
|
|
|
but3->setStyleSheet(BUTTONCOLORBAD);
|
|
|
|
else if (uctmp==1)
|
|
|
|
but3->setStyleSheet(BUTTONCOLORGOOD);
|
|
|
|
else
|
|
|
|
but3->setStyleSheet(BUTTONCOLOR0);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (myStep==0)
|
|
|
|
{
|
|
|
|
//myStep++;
|
|
|
|
} else
|
|
|
|
|
|
|
|
if (myStep==1)
|
|
|
|
{
|
|
|
|
if (!myTO->isActive())
|
|
|
|
{
|
|
|
|
myStep++;
|
|
|
|
myTO->start(200);
|
|
|
|
HWaccess->bna_requestStackerLevel();
|
|
|
|
//qDebug()<<"win11 requ bills";
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
|
|
|
|
if (myStep==2)
|
|
|
|
{
|
|
|
|
if (!myTO->isActive())
|
|
|
|
{
|
|
|
|
myStep++;
|
|
|
|
myTO->start(200);
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
|
|
|
|
if (myStep==3)
|
|
|
|
{
|
|
|
|
if (!myTO->isActive())
|
|
|
|
{
|
|
|
|
myStep=1; // nur 1x auf Tastendruck anfordern
|
|
|
|
myTO->start(200);
|
|
|
|
HWaccess->changer_requestTubelevel();
|
|
|
|
//qDebug()<<"win11 requ tubes";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (myNextStep)
|
|
|
|
{
|
|
|
|
*nextScreen=myNextStep;
|
|
|
|
myNextStep=0;
|
|
|
|
}
|
|
|
|
|
|
|
|
*useNavi=0;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void T_win11::sub_displayCurrentCashbox(void)
|
|
|
|
{
|
|
|
|
// "Daily" anzeigen, also akt. Kasseninhalt
|
|
|
|
|
|
|
|
wait4data=0;
|
|
|
|
but2->setStyleSheet(BUTTONCOLORGOOD);
|
|
|
|
but2->setText("loaded");
|
|
|
|
|
|
|
|
win11_showVaultRecord->clear();
|
|
|
|
win11_showVaultRecord->addItem("\nCurrent cashbox content\n");
|
|
|
|
|
|
|
|
struct T_dynamicCondition myDynMachCond;
|
|
|
|
HWaccess->sys_getDynMachineConditions(&myDynMachCond);
|
|
|
|
enterAccData("nr of coins in Box: ", myDynMachCond.nrCoinsInBox);
|
|
|
|
enterAccData("Amount in coin Box: ", myDynMachCond.amountInBox);
|
|
|
|
win11_showVaultRecord->addItem(" ");
|
|
|
|
|
|
|
|
uint32_t amountInStacker;
|
|
|
|
uint16_t countOfBills[16], totalBills;
|
|
|
|
totalBills=HWaccess->bna_getStackerLevel(&amountInStacker, countOfBills);
|
|
|
|
// countOfBills[0...7]=Anzahl der jew. Werte countOfBills[8...15]=Wertigkeit
|
|
|
|
|
|
|
|
enterAccData("nr of bills in Box: ", totalBills);
|
|
|
|
enterAccData("Amount of bills : ", (amountInStacker/100) );
|
|
|
|
enterAccData("Nr of 5€ Bills: ", countOfBills[0]);
|
|
|
|
enterAccData("Nr of 10€ Bills: ", countOfBills[1]);
|
|
|
|
enterAccData("Nr of 20€ Bills: ", countOfBills[2]);
|
|
|
|
enterAccData("Nr of 50€ Bills: ", countOfBills[3]);
|
|
|
|
enterAccData("Nr of 100€ Bills: ", countOfBills[4]);
|
|
|
|
win11_showVaultRecord->addItem(" ");
|
|
|
|
|
|
|
|
struct T_chg_Tub changer;
|
|
|
|
HWaccess->changer_getTubelevel(&changer);
|
|
|
|
// don't use tubeDispens[], it's not yet correct!
|
|
|
|
QString myStr;
|
|
|
|
win11_showVaultRecord->addItem("\n Coin changer content: ");
|
|
|
|
|
|
|
|
for (int nn=0; nn<6; nn++)
|
|
|
|
{
|
|
|
|
myStr.clear();
|
|
|
|
if (changer.tubeValues[nn]>0)
|
|
|
|
{
|
|
|
|
myStr.append(swl_long2str(changer.tubeValues[nn]));
|
|
|
|
myStr.append(" : ");
|
|
|
|
myStr.append(swl_long2str(changer.tubeLevel[nn]));
|
|
|
|
if (changer.tubeFull[nn]>0)
|
|
|
|
myStr.append(" F");
|
|
|
|
win11_showVaultRecord->addItem(myStr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|