Blob Blame History Raw
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