<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hello, 
</p>
    <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When doing my auto import script using kmm statement import I had an issue that I thought was related to the data I was inputing, but seem very related to what you are seeing. Even more confusing, I'm almost certain the behaviour wasn't consistent while I tested. I put that on bad tracking of my trial, but maybe not. In the end, I made those changes that worked well to import about 6 months of dca investments correctly. This diff is not to be applied blindly as signs in the input statement file might be wrong compared to ofx standard. Haven’t had time to search more, but in any case it might give some clues on the issue behind this.</p>
    <p><style type="text/css">p, li { white-space: pre-wrap; }</style></p>
    <p><font face="monospace">diff --git a/kmymoney/converter/mymoneystatementreader.cpp b/kmymoney/converter/mymoneystatementreader.cpp
index a93c38197..14d068f99 100644
--- a/kmymoney/converter/mymoneystatementreader.cpp
+++ b/kmymoney/converter/mymoneystatementreader.cpp
@@ -802,7 +802,7 @@ void MyMoneyStatementReader::processTransactionEntry(const MyMoneyStatement::Tra
                     KMessageBox::information(0, i18n("This imported statement contains investment transactions with no share amount.  These transactions will be ignored."), i18n("No share amount provided"), QString("BlankAmount"));
                     return;
                 }
-                MyMoneyMoney total = -statementTransactionUnderImport.m_amount - statementTransactionUnderImport.m_fees;
+                MyMoneyMoney total = statementTransactionUnderImport.m_amount - statementTransactionUnderImport.m_fees;
                 s1.setPrice(MyMoneyMoney((total / statementTransactionUnderImport.m_shares).convertPrecision(file->security(thisaccount.currencyId()).pricePrecision())));
             }
 
@@ -882,12 +882,17 @@ void MyMoneyStatementReader::processTransactionEntry(const MyMoneyStatement::Tra
                 MyMoneyMoney total = statementTransactionUnderImport.m_amount + statementTransactionUnderImport.m_fees.abs();
                 s1.setPrice(MyMoneyMoney((total / statementTransactionUnderImport.m_shares).abs().convertPrecision(file->security(thisaccount.currencyId()).pricePrecision())));
             }
-            if (statementTransactionUnderImport.m_eAction == eMyMoney::Transaction::Action::Buy)
+            if (statementTransactionUnderImport.m_eAction == eMyMoney::Transaction::Action::Buy){
                 s1.setShares(statementTransactionUnderImport.m_shares.abs());
-            else
+                s1.setValue((statementTransactionUnderImport.m_amount + statementTransactionUnderImport.m_fees.abs()));
+                transfervalue = -statementTransactionUnderImport.m_amount;
+            } else {
                 s1.setShares(-statementTransactionUnderImport.m_shares.abs());
-            s1.setValue(-(statementTransactionUnderImport.m_amount + statementTransactionUnderImport.m_fees.abs()));
-            transfervalue = statementTransactionUnderImport.m_amount;
+                s1.setValue(-(statementTransactionUnderImport.m_amount + statementTransactionUnderImport.m_fees.abs()));
+                transfervalue = statementTransactionUnderImport.m_amount;
+            }
+            
+            
 
         } else if ((statementTransactionUnderImport.m_eAction == eMyMoney::Transaction::Action::Shrsin) ||
                    (statementTransactionUnderImport.m_eAction == eMyMoney::Transaction::Action::Shrsout)) {
</font>
</p>
    <p>Regards,
</p>
    <pre class="moz-signature" cols="72">Jonatan Cloutier</pre>
    <div class="moz-cite-prefix">Le 2022-08-24 à 16 h 02, Jack via
      KMyMoney-devel a écrit :<br>
    </div>
    <blockquote type="cite"
      cite="mid:BKOUSVWQ.MDYUAZHQ.YMQ2E4IM@OUD7W46R.42Q646LW.M3DPD6W7">On
      2022.08.05 14:05, Jack via KMyMoney-devel wrote:
      <br>
      <blockquote type="cite">On 2022.08.03 10:19, Jack via
        KMyMoney-devel wrote:
        <br>
        <blockquote type="cite">On 8/3/22 02:03, Thomas Baumgart via
          KMyMoney-devel wrote:
          <br>
          <blockquote type="cite">On Mittwoch, 3. August 2022 01:40:50
            CEST Jack via KMyMoney-devel wrote:
            <br>
            <blockquote type="cite">I just looked at on of my investment
              account to reconcile the new statement, and the brokerage
              account has a large negative balance. Without doing a full
              audit, it appears that two stock sell transactions (for
              the same security) last month are showing up in the
              brokerage account as Payments instead of Deposits.  I'm
              know I did a proper reconciliation last month, but now
              those numbers don't match.  I have not yet gone through
              all my saved copies to see when it changed, but that's
              next on my list.
              <br>
              <br>
              Just in case anyone has any ideas, one of the transactions
              is below. I've trimmed the memo of lots of excess details
              Merrill Lynch includes, and I trimmed the bankid.
              <br>
              <br>
                  <TRANSACTION commodity="USD" entrydate="2022-07-02"
              <br>
              id="T000000000000025879" memo="Sale: PUTNAM ULTRA SHORT
              DURATION INCOME
              <br>
              FD..." postdate="2022-06-15">
              <br>
                   <SPLITS>
              <br>
                    <SPLIT account="A000345" action="" bankid=""
              id="S0001"
              <br>
              memo="Sale: PUTNAM ULTRA SHORT DURATION INCOME FD..."
              number=""
              <br>
              payee="" price="1/1" reconciledate="2022-06-30"
              reconcileflag="2"
              <br>
              shares="-55723/50" value="-55723/50"/>
              <br>
                    <SPLIT account="A000941" action="Buy" bankid="ID
              20220614..."
              <br>
              id="S0002" memo="Sale: PUTNAM ULTRA SHORT DURATION INCOME
              FD..."
              <br>
              number="" payee="" price="-10/1"
              reconciledate="2022-06-30"
              <br>
              reconcileflag="2" shares="-55723/500"
              value="55723/50"/>
              <br>
                   </SPLITS>
              <br>
                  </TRANSACTION>
              <br>
              <br>
              Account 345 is the brokerage account and 941 is the stock
              account
              <br>
              within the investment account.
              <br>
            </blockquote>
            Looks like
            <br>
            <br>
               shares="-55723/500" value="55723/50"
            <br>
            <br>
            is probably the source of the problem. That is simply wrong
            and may be caused by some bug. Somewhere, the split of the
            brokerage account (S0001) is created based on the value part
            of the security split (S0002) by simply inverting the value.
            Since value in S0001 has the wrong sign you see those
            results. It could well be that this is still a problem
            within the investment transaction editor (which is the new
            kid on the block here).
            <br>
            <br>
            <blockquote type="cite">One thing which caught my eye is
              that the split for the security has 'action="Buy"' which
              worried me more before I noticed that it has that value
              for lots of transactions other then stock sales.  Might
              that be an issue, or is it likely a red herring?
              <br>
            </blockquote>
            Within the XML file, the action string is always presented
            as "buy" and the sign of the split controls if it is
            actually a buy or a sell operation. The conversions happen
            in MyMoneySplit::investmentTransactionType and
            MyMoneySplit::setAction. So that is not a problem.
            <br>
            <br>
            <blockquote type="cite">I'll post more when I have a tighter
              window on when the problem started.
              <br>
            </blockquote>
            Did you enter the transactions manually or did you import
            them and edited them afterwards?
            <br>
          </blockquote>
          <br>
          First, on history, I have a backup on 7/2 prior to the
          creation of that transaction.  My next backup was 7/27, which
          shows the problem.  I had hoped to have a backup after the
          import and before the reconciliation.  I was going to say I'm
          sure the problem was introduced after 7/2, but the actual
          earliest possible date would be closer to the beginning of
          June, when I did my prior large import from Merrill Lynch.
          <br>
          <br>
          I'm pretty sure that was an imported transaction, and I do not
          remember having to edit it, as I do with many other Merrill
          Lynch transactions.  However, I am quite sure I was using git
          master when I did that import.
          <br>
          <br>
          Also note that the sign is reversed for only two transactions,
          both selling the same security, several days apart.  There are
          plenty of other sell transactions in that same account which
          are correct.
          <br>
          <br>
          Would it help for me to test importing that account again for
          June?  I suppose I can download those transactions as OFX, if
          file import would give the same values as direct connect. 
          That way, I can test several times, without repeatedly going
          back to the server.
          <br>
        </blockquote>
        Curiouser and curiouser.  I downloaded an OFX file for all
        investment transaction for that account for that month. 
        Importing it into my current file said 22 matches and 2 added
        transaction.  Rhe ledger for the brokerage account shows that
        the new transactions identical to the two above problem
        transactions but shown (correctly) as deposits instead of
        payments.  However, those transactions are nowhere to be seen in
        the Investment account.  If I use the context menu to go the the
        investment account from one of the new transactions, it takes me
        to the old transaction.
        <br>
        Additional issue - the new transactions are not for the same
        security.  KMM creates new security accounts using something it
        extracts from the downloaded transaction, and for Merrill Lynch,
        in includes lots of extraneous stuff, such as date and/or
        price.  When I edit the transaction and change the security to
        the account name I use, the transaction now shows up properly in
        the Investment account.  However, when I use the context menu to
        switch between the Investment and Brokerage accounts, all is
        correct going from Investment to Brokerage, but going the other
        way, both the old and new transaction take me to the old one.
        <br>
        Then, deleting both old (wrong) transactions, and marking the
        new ones as reconciled, everything is back to normal - so I can
        continue with my daily use of the files.  I also now have enough
        backups that I can at least partly recreate some of these
        problems.  However, given that the current git master imports
        correctly, I suppose I have to assume it was a transient issue,
        so there's no real point in trying to track down the exact
        cause.  However, I'll be glad to do further testing if anyone
        thinks it would be useful.
        <br>
        <br>
        Separate note:  At some point during this process, I actually
        found a few transactions which were marked "R" for reconciled,
        but were also still marked as Imported.  These were all rather
        old transactions, and I can only assume that marking them
        Cleared at the time did not also clear the Imported marking. 
        This is with git master (KMyMoney Version 5.1.80-932e4a272) so I
        don't know how it relates to bug 457484
        (<a class="moz-txt-link-freetext" href="https://bugs.kde.org/show_bug.cgi?id=457484">https://bugs.kde.org/show_bug.cgi?id=457484</a>) which is with
        5.1.2.
        <br>
      </blockquote>
      <br>
      Now I'm more confused than ever.  When I sent my previous message
      (5 Aug) the account in KMM was all correct, and matched the online
      bank records.  I just looked at that account now, and the same two
      transactions (from Jue 8 and 15) have reversed again, leaving me
      with a negative cash balance.  There are no new transactions in
      that account since prior to the reconciliation for 29 July.  I've
      been running git master, compiled at least every three or four
      days.  I know I can just create new transactions and delete the
      old ones, but I'm having trouble even comprehending how this could
      have happened without any editing of those transactions.
      <br>
      <br>
      Jack
      <br>
    </blockquote>
  </body>
</html>