From 1b9df8d665a62ffacd208bd7dbc091e175ae8ab5 Mon Sep 17 00:00:00 2001
From: Alvaro Soliverez <asoliverez@kde.org>
Date: Fri, 20 Jun 2014 12:15:34 -0300
Subject: [PATCH 2/3] Revert "Add VAT split to file import." as it fails to
build This reverts commit 83aa0cddba2f2a2aa415cc365d926171d00f0da2.
---
kmymoney/converter/mymoneystatementreader.cpp | 3 --
kmymoney/dialogs/transactioneditor.cpp | 59 +++++++++++++++++++++++++--
kmymoney/mymoney/mymoneyfile.cpp | 57 --------------------------
kmymoney/mymoney/mymoneyfile.h | 11 -----
4 files changed, 56 insertions(+), 74 deletions(-)
diff --git a/kmymoney/converter/mymoneystatementreader.cpp b/kmymoney/converter/mymoneystatementreader.cpp
index 832d026..0742006 100644
--- a/kmymoney/converter/mymoneystatementreader.cpp
+++ b/kmymoney/converter/mymoneystatementreader.cpp
@@ -1024,9 +1024,6 @@ void MyMoneyStatementReader::processTransactionEntry(const MyMoneyStatement::Tra
s.setValue(-s1.value());
s.setAccountId(payeeObj.defaultAccountId());
t.addSplit(s);
- MyMoneyFile* file = MyMoneyFile::instance();
- MyMoneyAccount category = file->account(payeeObj.defaultAccountId());
- file->addVATSplit(t, m_account, category, statementTransactionUnderImport.m_amount);
} else if (t_in.m_listSplits.isEmpty() && !d->m_skipCategoryMatching) {
MyMoneyTransactionFilter filter(thisaccount.id());
filter.addPayee(payeeid);
diff --git a/kmymoney/dialogs/transactioneditor.cpp b/kmymoney/dialogs/transactioneditor.cpp
index f17b5a1..21986a8 100644
--- a/kmymoney/dialogs/transactioneditor.cpp
+++ b/kmymoney/dialogs/transactioneditor.cpp
@@ -1640,10 +1640,63 @@ bool StdTransactionEditor::addVatSplit(MyMoneyTransaction& tr, const MyMoneyMone
if (tr.splitCount() != 2)
return false;
+ bool rc = false;
MyMoneyFile* file = MyMoneyFile::instance();
- // extract the category split from the transaction
- MyMoneyAccount category = file->account(tr.splitByAccount(m_account.id(), false).accountId());
- return file->addVATSplit(tr, m_account, category, amount);
+
+ try {
+ MyMoneySplit cat; // category
+ MyMoneySplit tax; // tax
+
+ // extract the category split from the transaction
+ MyMoneyAccount category = file->account(tr.splitByAccount(m_account.id(), false).accountId());
+ if (category.value("VatAccount").isEmpty())
+ return false;
+ MyMoneyAccount vatAcc = file->account(category.value("VatAccount").toLatin1());
+ const MyMoneySecurity& asec = file->security(m_account.currencyId());
+ const MyMoneySecurity& csec = file->security(category.currencyId());
+ const MyMoneySecurity& vsec = file->security(vatAcc.currencyId());
+ if (asec.id() != csec.id() || asec.id() != vsec.id()) {
+ qDebug("Auto VAT assignment only works if all three accounts use the same currency.");
+ return false;
+ }
+
+ MyMoneyMoney vatRate(vatAcc.value("VatRate"));
+ MyMoneyMoney gv, nv; // gross value, net value
+ int fract = m_account.fraction();
+
+ if (!vatRate.isZero()) {
+
+ tax.setAccountId(vatAcc.id());
+
+ // qDebug("vat amount is '%s'", category.value("VatAmount").toLatin1());
+ if (category.value("VatAmount").toLower() != QString("net")) {
+ // split value is the gross value
+ gv = amount;
+ nv = gv / (MyMoneyMoney(1, 1) + vatRate);
+ MyMoneySplit catSplit = tr.splitByAccount(m_account.id(), false);
+ catSplit.setShares(-nv.convert(fract));
+ catSplit.setValue(catSplit.shares());
+ tr.modifySplit(catSplit);
+
+ } else {
+ // split value is the net value
+ nv = amount;
+ gv = nv * (MyMoneyMoney(1, 1) + vatRate);
+ MyMoneySplit accSplit = tr.splitByAccount(m_account.id());
+ accSplit.setValue(gv.convert(fract));
+ accSplit.setShares(accSplit.value());
+ tr.modifySplit(accSplit);
+ }
+
+ tax.setValue(-(gv - nv).convert(fract));
+ tax.setShares(tax.value());
+ tr.addSplit(tax);
+ rc = true;
+ }
+ } catch (MyMoneyException *e) {
+ delete e;
+ }
+ return rc;
}
MyMoneyMoney StdTransactionEditor::removeVatSplit(void)
diff --git a/kmymoney/mymoney/mymoneyfile.cpp b/kmymoney/mymoney/mymoneyfile.cpp
index f563ec4..a6c2a77 100644
--- a/kmymoney/mymoney/mymoneyfile.cpp
+++ b/kmymoney/mymoney/mymoneyfile.cpp
@@ -39,7 +39,6 @@
// ----------------------------------------------------------------------------
// Project Includes
#include "storage/mymoneyseqaccessmgr.h"
-#include "mymoneyaccount.h"
#include "mymoneyreport.h"
#include "mymoneybalancecache.h"
#include "mymoneybudget.h"
@@ -2655,63 +2654,7 @@ void MyMoneyFile::removeBudget(const MyMoneyBudget& budget)
d->addCacheNotification(budget.id(), false);
}
-bool MyMoneyFile::addVATSplit(MyMoneyTransaction& transaction, const MyMoneyAccount& account, const MyMoneyAccount& category, const MyMoneyMoney& amount)
-{
- bool rc = false;
-
- try {
- MyMoneySplit cat; // category
- MyMoneySplit tax; // tax
-
- if (category.value("VatAccount").isEmpty())
- return false;
- MyMoneyAccount vatAcc = this->account(category.value("VatAccount").toLatin1());
- const MyMoneySecurity& asec = security(account.currencyId());
- const MyMoneySecurity& csec = security(category.currencyId());
- const MyMoneySecurity& vsec = security(vatAcc.currencyId());
- if (asec.id() != csec.id() || asec.id() != vsec.id()) {
- qDebug("Auto VAT assignment only works if all three accounts use the same currency.");
- return false;
- }
-
- MyMoneyMoney vatRate(vatAcc.value("VatRate"));
- MyMoneyMoney gv, nv; // gross value, net value
- int fract = account.fraction();
-
- if (!vatRate.isZero()) {
-
- tax.setAccountId(vatAcc.id());
-
- // qDebug("vat amount is '%s'", category.value("VatAmount").toLatin1());
- if (category.value("VatAmount").toLower() != QString("net")) {
- // split value is the gross value
- gv = amount;
- nv = gv / (MyMoneyMoney(1, 1) + vatRate);
- MyMoneySplit catSplit = transaction.splitByAccount(account.id(), false);
- catSplit.setShares(-nv.convert(fract));
- catSplit.setValue(catSplit.shares());
- transaction.modifySplit(catSplit);
- } else {
- // split value is the net value
- nv = amount;
- gv = nv * (MyMoneyMoney(1, 1) + vatRate);
- MyMoneySplit accSplit = transaction.splitByAccount(account.id());
- accSplit.setValue(gv.convert(fract));
- accSplit.setShares(accSplit.value());
- transaction.modifySplit(accSplit);
- }
-
- tax.setValue(-(gv - nv).convert(fract));
- tax.setShares(tax.value());
- transaction.addSplit(tax);
- rc = true;
- }
- } catch (MyMoneyException *e) {
- delete e;
- }
- return rc;
-}
bool MyMoneyFile::isReferenced(const MyMoneyObject& obj, const MyMoneyFileBitArray& skipChecks) const
{
diff --git a/kmymoney/mymoney/mymoneyfile.h b/kmymoney/mymoney/mymoneyfile.h
index c66acaf..6c1aa25 100644
--- a/kmymoney/mymoney/mymoneyfile.h
+++ b/kmymoney/mymoney/mymoneyfile.h
@@ -1328,17 +1328,6 @@ public:
*/
void removeBudget(const MyMoneyBudget& budget);
- /**
- * This method is used to add a VAT split to a transaction.
- *
- * @param transaction reference to the transaction
- * @param account reference to the account
- * @param category reference to the category
- * @param amount reference to the amount of the VAT split
- *
- * @return true if a VAT split has been added
- */
- bool addVATSplit(MyMoneyTransaction& transaction, const MyMoneyAccount& account, const MyMoneyAccount& category, const MyMoneyMoney& amount);
/**
* This method checks, if the given @p object is referenced
--
1.9.3