Fix a bug in Database.cpp : operation forced to non virtual in LinkOrUnlinkOperation

This commit is contained in:
Grégory Soutadé 2017-09-12 20:58:57 +02:00
parent 02b204d408
commit 61e2a7505c
1 changed files with 6 additions and 6 deletions

View File

@ -495,15 +495,17 @@ void Database::LinkOrUnlinkOperation(User* user, Operation& op)
bool _virtual; bool _virtual;
QSqlQuery query(_db); QSqlQuery query(_db);
account = user->GetAccount(op.account);
if (op.transfert) if (op.transfert)
{ {
// No one or not linked // No one or not linked
if (!GetOperation(op.transfert, &linked) || op.description != linked.description || op.amount != -linked.amount || op.account == linked.account) if (!GetOperation(op.transfert, &linked) || op.description != linked.description || op.amount != -linked.amount || op.account == linked.account)
{ {
req = QString("UPDATE operation SET transfert='', virtual='0' WHERE id='%1'").arg(op.id); op._virtual = account._virtual;
req = QString("UPDATE operation SET transfert='', virtual='%1' WHERE id='%2'").arg(op._virtual?"1":"0", op.id);
EXECUTE_SQL_UPDATE(req, ); EXECUTE_SQL_UPDATE(req, );
op.transfert = 0; op.transfert = 0;
op._virtual = false;
return; return;
} }
} }
@ -516,8 +518,9 @@ void Database::LinkOrUnlinkOperation(User* user, Operation& op)
if (query.next()) if (query.next())
{ {
op._virtual = account._virtual;
set = query.record(); set = query.record();
req = QString("UPDATE operation SET transfert='', virtual='0' WHERE id='%1'").arg(set.value("id").toString()); req = QString("UPDATE operation SET transfert='', virtual='%1' WHERE id='%2'").arg(op._virtual?"1":"0", set.value("id").toString());
query.clear(); query.clear();
EXECUTE_SQL_UPDATE(req, ); EXECUTE_SQL_UPDATE(req, );
} }
@ -529,8 +532,6 @@ void Database::LinkOrUnlinkOperation(User* user, Operation& op)
EXECUTE_SQL_QUERY(req, ); EXECUTE_SQL_QUERY(req, );
op._virtual = false;
// Don't need to link // Don't need to link
if (!query.next()) return ; if (!query.next()) return ;
@ -541,7 +542,6 @@ void Database::LinkOrUnlinkOperation(User* user, Operation& op)
op.transfert = linked.id; op.transfert = linked.id;
account = user->GetAccount(op.account);
account2 = user->GetAccount(set.value("account").toInt()); account2 = user->GetAccount(set.value("account").toInt());
_virtual = account._virtual || account2._virtual; _virtual = account._virtual || account2._virtual;