Skip to content

Commit 945d766

Browse files
committed
Preserve default transfer accounts during upgrade database migration
- Improved: Mark opening balances as exported transactions - Fixed: Editing transactions loaded from templates only partially modifies splits - Fixed: Transaction templates do not use current date when loaded - Update version strings for v1.4.0-beta5 release
1 parent 25643a1 commit 945d766

File tree

8 files changed

+35
-15
lines changed

8 files changed

+35
-15
lines changed

app/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
1919
package="org.gnucash.android"
20-
android:versionCode="33"
20+
android:versionCode="34"
2121
android:versionName="@string/app_version_name" >
2222

2323
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/>

app/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
1919
<string name="app_name">GnuCash</string>
20-
<string name="app_version_name">1.4.0-beta4</string>
20+
<string name="app_version_name">1.4.0-beta5</string>
2121
<string name="title_add_account">Create Account</string>
2222
<string name="title_edit_account">Edit Account</string>
2323
<string name="info_details">Info</string>

app/src/org/gnucash/android/db/AccountsDbAdapter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -973,6 +973,7 @@ public List<Transaction> getAllOpeningBalanceTransactions(){
973973
split.setType(transactionType);
974974
transaction.addSplit(split);
975975
transaction.addSplit(split.createPair(getOrCreateOpeningBalanceAccountUID()));
976+
transaction.setExported(true);
976977
openingTransactions.add(transaction);
977978
}
978979
cursor.close();

app/src/org/gnucash/android/export/xml/GncXmlHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public abstract class GncXmlHelper {
7979
public static final String KEY_COLOR = "color";
8080
public static final String KEY_FAVORITE = "favorite";
8181
public static final String KEY_NOTES = "notes";
82-
82+
public static final String KEY_DEFAULT_TRANSFER_ACCOUNT = "default_transfer_account";
8383

8484
/**
8585
* Formats dates for the GnuCash XML format
@@ -132,12 +132,12 @@ public static BigDecimal parseMoney(String amountString){
132132
* @param value Slot value as String
133133
* @return Element node containing the key-value pair
134134
*/
135-
public static Element createSlot(Document doc, String key, String value){
135+
public static Element createSlot(Document doc, String key, String value, String valueType){
136136
Element slotNode = doc.createElement(TAG_SLOT);
137137
Element slotKeyNode = doc.createElement(TAG_SLOT_KEY);
138138
slotKeyNode.appendChild(doc.createTextNode(key));
139139
Element slotValueNode = doc.createElement(TAG_SLOT_VALUE);
140-
slotValueNode.setAttribute(ATTR_KEY_TYPE, ATTR_VALUE_STRING);
140+
slotValueNode.setAttribute(ATTR_KEY_TYPE, valueType);
141141
slotValueNode.appendChild(doc.createTextNode(value));
142142
slotNode.appendChild(slotKeyNode);
143143
slotNode.appendChild(slotValueNode);

app/src/org/gnucash/android/importer/GncXmlHandler.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ public class GncXmlHandler extends DefaultHandler {
8080
boolean mInFavoriteSlot = false;
8181
boolean mISO4217Currency = false;
8282
boolean mIsDatePosted = false;
83-
boolean mIsNote = false;
83+
boolean mIsNote = false;
84+
boolean mInDefaultTransferAccount = false;
8485

8586
private Context mContext;
8687
private TransactionsDbAdapter mTransactionsDbAdapter;
@@ -185,6 +186,10 @@ public void endElement(String uri, String localName, String qualifiedName) throw
185186
if (characterString.equals(GncXmlHelper.KEY_NOTES)){
186187
mIsNote = true;
187188
}
189+
190+
if (characterString.equals(GncXmlHelper.KEY_DEFAULT_TRANSFER_ACCOUNT)){
191+
mInDefaultTransferAccount = true;
192+
}
188193
}
189194

190195
if (qualifiedName.equalsIgnoreCase(GncXmlHelper.TAG_SLOT_VALUE)){
@@ -223,6 +228,11 @@ public void endElement(String uri, String localName, String qualifiedName) throw
223228
mIsNote = false;
224229
}
225230
}
231+
232+
if (mInDefaultTransferAccount){
233+
mAccount.setDefaultTransferAccountUID(characterString);
234+
mInDefaultTransferAccount = false;
235+
}
226236
}
227237

228238

app/src/org/gnucash/android/model/Account.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -608,14 +608,18 @@ public void toGncXml(Document doc, Element rootNode) {
608608

609609
Element acctSlotsNode = doc.createElement(GncXmlHelper.TAG_ACT_SLOTS);
610610
acctSlotsNode.appendChild(GncXmlHelper.createSlot(doc, GncXmlHelper.KEY_PLACEHOLDER,
611-
Boolean.toString(mIsPlaceholderAccount)));
611+
Boolean.toString(mIsPlaceholderAccount), GncXmlHelper.ATTR_VALUE_STRING));
612612

613613
if (mColorCode != null && mColorCode.trim().length() > 0){
614-
acctSlotsNode.appendChild(GncXmlHelper.createSlot(doc, GncXmlHelper.KEY_COLOR, mColorCode));
614+
acctSlotsNode.appendChild(GncXmlHelper.createSlot(doc, GncXmlHelper.KEY_COLOR, mColorCode, GncXmlHelper.ATTR_VALUE_STRING));
615+
}
616+
617+
if (mDefaultTransferAccountUID != null && mDefaultTransferAccountUID.trim().length() > 0){
618+
acctSlotsNode.appendChild(GncXmlHelper.createSlot(doc, GncXmlHelper.KEY_DEFAULT_TRANSFER_ACCOUNT, mDefaultTransferAccountUID, "guid"));
615619
}
616620

617621
acctSlotsNode.appendChild(GncXmlHelper.createSlot(doc,
618-
GncXmlHelper.KEY_FAVORITE, Boolean.toString(mIsFavorite)));
622+
GncXmlHelper.KEY_FAVORITE, Boolean.toString(mIsFavorite), GncXmlHelper.ATTR_VALUE_STRING));
619623

620624
Element accountNode = doc.createElement(GncXmlHelper.TAG_ACCOUNT);
621625
accountNode.setAttribute(GncXmlHelper.ATTR_KEY_VERSION, GncXmlHelper.BOOK_VERSION);

app/src/org/gnucash/android/model/Transaction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ public void toGncXml(Document doc, Element rootElement) {
635635

636636
Element trnSlotsNode = doc.createElement(GncXmlHelper.TAG_TRN_SLOTS);
637637
if (mNotes != null && mNotes.length() > 0) {
638-
trnSlotsNode.appendChild(GncXmlHelper.createSlot(doc, GncXmlHelper.KEY_NOTES, mNotes));
638+
trnSlotsNode.appendChild(GncXmlHelper.createSlot(doc, GncXmlHelper.KEY_NOTES, mNotes, GncXmlHelper.ATTR_VALUE_STRING));
639639
//TODO: Consider adding future transactions date as slot here too
640640
}
641641
Element trnSplits = doc.createElement(GncXmlHelper.TAG_TRN_SPLITS);

app/src/org/gnucash/android/ui/transaction/TransactionFormFragment.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -291,12 +291,17 @@ public Cursor runQuery(CharSequence name) {
291291
@Override
292292
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
293293
mTransaction = new Transaction(mTransactionsDbAdapter.getTransaction(id), true);
294-
if (!GnuCashApplication.isDoubleEntryEnabled(true)) { //if no double entry, use only splits for this acct
295-
List<Split> accountSplits = mTransaction.getSplits(mAccountsDbAdapter.getAccountUID(mAccountId));
296-
mTransaction.setSplits(accountSplits);
297-
}
294+
mTransaction.setTime(System.currentTimeMillis());
298295
initializeViewsWithTransaction();
299-
setAmountEditViewVisible(View.GONE);
296+
List<Split> splitList = mTransaction.getSplits();
297+
boolean isSplitPair = splitList.size() == 2 && splitList.get(0).isPairOf(splitList.get(1));
298+
if (isSplitPair){
299+
mSplitsList.clear();
300+
mAmountEditText.setText(splitList.get(0).getAmount().toPlainString());
301+
} else {
302+
setAmountEditViewVisible(View.GONE);
303+
}
304+
mTransaction = null; //we are creating a new transaction after all
300305
}
301306
});
302307

0 commit comments

Comments
 (0)