Problem using development version

I use V5.1.3 on windows 10 and decided today to have a look on the master-3253 version.
So i downloaded, installed and opened my usual file and it did it but i can see transactions from begining to 2014 only and for 1 account.
The budgets, recursives operations, personnal reports disapeared.
Any idea of what i did wrong ?

A few questions upfront: Do you mean that the whole views disappeared or your data is not shown? Do you use the SQL (database) or XML (file) method to store your data?

The data disappeared, the xml file opened is, after closing the apps, less than 50% of the original size. If I re-open the file with the 5.1.3 version the same data disappeared.

That identifies that there is something in your data file that causes the reading to fail on the development (aka master) version. First thing would be to go back to a backup containing all data on 5.1.3. I would do the following to figure out what is causing this:

  1. Make sure to have a good copy of your data file that you always can go back to
  2. Open the file and use “Save as” on 5.1.3 to save the file as stable.xml
  3. Open the file and use “Save as” on master to save the file as master.xml

The next actions would be using a text editor to look at the content of those xml files.

I expect the last data to be written in the master.xml to be a transaction (except some containers without data).

  1. Open the master.xml using the editor and identify the last transaction’s id number (T followed by a long number). Provide that id here (for reference only).
  2. Open to the stable.xml file and search for that transaction id and take a look at the transaction block (see below) following this one.

I expect this next transaction to contain some data that cannot be processed for whatever reason by the master version (the source code of the XML processing part had to be redone). One could use an online version of xmllint to figure out if it is correct. One way to do so would be to take all lines from of the failing transaction as in

<TRANSACTION ....
to
</TRANSACTION>

and drop it to the web-page as shown below.

If anything of the above is unclear, please let us know and we try to provide more precise instructions.

The last transaction ID in master.xml is T000000000000010415,
in stable.xml it matchs with :







I could not paste here the corresponding text copied in the stable.xml, i had to supress all > at the end of each line ???
<TRANSACTION entrydate=“2018-02-03” postdate=“2014-12-29” id=“T000000000000010415” commodity=“EUR” memo=“29/12/14”
<SPLITS
<SPLIT shares=“141/10” payee=“P000028” reconciledate=“” price=“1/1” id=“S0001” number=“” value=“141/10” bankid=“2014-12-29-5adf864-1” reconcileflag=“2” memo=“29/12/14” action=“” account=“A000171”/
<SPLIT shares=“-141/10” payee=“P000028” reconciledate=“” price=“1/1” id=“S0002” number=“” value=“-141/10” bankid=“” reconcileflag=“0” memo=“29/12/14” action=“” account=“A000089”/
</SPLITS
<KEYVALUEPAIRS
<PAIR key=“Imported” value=“true”/
</KEYVALUEPAIRS
</TRANSACTION

If that is the last transaction in the file saved by master, it is fine. The one we need to see is the transaction immediately after that one in the good file, as saved by 5.1.3.

Exactly. The one following is what we need to see.

Pasting is possible if you select the XML text and then press the </> icon at the top of the editor. That inserts some markup

<TRANSACTION>
:
<TRANSACTION>

 <TRANSACTION commodity="EUR" id="T000000000000010416" postdate="2014-12-29" memo="Nombre de parts :  26,18258|Cours d'achat :  114,58 EUR" entrydate="2018-02-04">
   <SPLITS>
    <SPLIT price="1/1" id="S0001" value="-3000/1" number="Virement" memo="Nombre de parts :  26,18258|Cours d'achat :  114,58 EUR" action="" payee="P001689" bankid="2014-12-29-63baefc-1" reconciledate="2017-12-29" reconcileflag="2" shares="-3000/1" account="A000217"/>
    <SPLIT price="1/1" id="S0002" value="3000/1" number="" memo="Nombre de parts :  26,18258|Cours d'achat :  114,58 EUR" action="" payee="P001689" bankid="" reconciledate="" reconcileflag="0" shares="3000/1" account="A000168"/>
   </SPLITS>
   <KEYVALUEPAIRS>
    <PAIR key="Imported" value="true"/>
   </KEYVALUEPAIRS>
  </TRANSACTION>

Thanks. Can you tell me which type the account (asset/liability) and category (income/expense) of this transaction are? I try to setup a test file with that one transaction and need to provide the accounts.

I am not sure of the date of the transaction ?

Not needed. I think I see what is going on. There seems to be an invalid character in the XML file which would cause the new reader to fail. It may have come into the data as part of the import of the transaction. One does not see it (fortunately it survived the copy/paste into the forum here) but if I copy the part and drop it into my editor I can see it:

image

It is a control character which is not allowed in XML. Can you provide me with the exact version number of the stable KMyMoney which are shown in Help/About KMyMoney? Here’s an example:

image

The stable one should start with 5.1.3 and the number after the dash may be missing completely. What do you see there?

image

Thanks, doing some analysis which may take some time.

I was able to reproduce the problem using your transaction data and added modified the code to read over those invalid characters.

Can you try if the latest master version solves the problem?

YES, problem solved, Thanks Thomas

Cool. Thank you for your support in finding the problem. I would have never thought of something like that. It may be the cause in other cases as well. We’ll see. Can you mark this post as solved? TIA.

Going on with last master i have a question about the meaning of the warning i receive when updating stocks for each one, i have not this warning using stable 5.1.3

The whole online price / exchange rate update has been reworked and now uses the implementation of the Alkimia library. The code is based on what was used in the KMyMoney stable branch but differs slightly. Without knowing your settings for the specific symbol and the source it is more crystal ball reading at this point how to get rid of the warning.