У меня проблемы с расчетами. При сборке и тестировании системы правильное количество, отображаемое в интерфейсе, не отображается / не сохраняется в базе данных. Сумма отличается от той, что в интерфейсе.
Примечание:
- ВЫБРАТЬ СУММУ (TotalPrice) ОТ ПРОДАНА (скриншот таблицы Sold будет прикреплен вместе.
- Я прикреплю скриншоты ниже. Взгляните на это, чтобы получить ясную картину ситуации.
- Я пометил код проблемы комментарием // <- ЭТО -> // .
Вот мой код:
void CashRegister::on_pushButton_next_clicked()
{
ui->tableView->show();
ui->pushButton_finish->show();
ui->label_totalAmount->show();
QString receiptNo = ui->label_receiptNum->text();
QString itemSelect = ui->comboBox_itemID->currentText();
QString qtySold = ui->lineEdit_qtySold->text();
QDate currentDate = QDate::currentDate(); //<--Solved-->//
//QString totalPrice1 = ui->label_totalAmount->text();
double price=0, totalPrice=0;
QSqlQuery myqry;
myqry.exec("SELECT ItemPrice, ItemName FROM Item WHERE ItemId='"+itemSelect+"' ");
if (myqry.next())
price = myqry.value(0).toDouble();
totalPrice = price * qtySold.toInt();
QString totalPriceString = QString::number(totalPrice);
myqry.prepare("INSERT INTO Sold (ReceiptId, ItemId, SoldQuantity, TotalPrice) VALUES ('"+receiptNo+"', '"+itemSelect+"', '"+qtySold+"', '"+totalPriceString+"') ");
myqry.exec();
ui->comboBox_itemID->setCurrentIndex(0);
ui->lineEdit_qtySold->clear();
myqry.prepare("SELECT Item.ItemId, Item.ItemName, Item.ItemPrice, Sold.SoldQuantity FROM Item, Sold WHERE Item.ItemId = Sold.ItemId AND Sold.ReceiptId='"+receiptNo+"' ");
myqry.exec();
QSqlQueryModel *myModel = new QSqlQueryModel();
myModel->setQuery(myqry);
ui->tableView->setModel(myModel);
double sum = 0;
myqry.exec("SELECT SUM(TotalPrice) FROM Sold WHERE ReceiptId = '"+receiptNo+"' ");
if (myqry.next())
sum += myqry.value(0).toDouble();
ui->label_totalAmount->setText("TOTAL AMOUNT: RM" + QString::number(sum));
QString totalPriceReceipt = QString::number(sum);
//<--THIS-->//
myqry.prepare("INSERT INTO Receipt (ReceiptId, ReceiptDate, ReceiptAmount) VALUES ('"+receiptNo+"', '"+currentDate.toString()+"', '"+totalPriceReceipt+"') ");
myqry.exec();
}