Skip to content

Commit 26277c6

Browse files
committed
Merge branch 'pr/706' into hotfix/patches
Fixes #343
2 parents c18b040 + 8da9ee8 commit 26277c6

File tree

3 files changed

+55
-1
lines changed

3 files changed

+55
-1
lines changed

app/src/main/java/org/gnucash/android/export/qif/QifExporter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public List<String> generateExport() throws ExporterException {
8282
TransactionEntry.TABLE_NAME + "_" + TransactionEntry.COLUMN_UID + " AS trans_uid",
8383
TransactionEntry.TABLE_NAME + "_" + TransactionEntry.COLUMN_TIMESTAMP + " AS trans_time",
8484
TransactionEntry.TABLE_NAME + "_" + TransactionEntry.COLUMN_DESCRIPTION + " AS trans_desc",
85+
TransactionEntry.TABLE_NAME + "_" + TransactionEntry.COLUMN_NOTES + " AS trans_notes",
8586
SplitEntry.TABLE_NAME + "_" + SplitEntry.COLUMN_QUANTITY_NUM + " AS split_quantity_num",
8687
SplitEntry.TABLE_NAME + "_" + SplitEntry.COLUMN_QUANTITY_DENOM + " AS split_quantity_denom",
8788
SplitEntry.TABLE_NAME + "_" + SplitEntry.COLUMN_TYPE + " AS split_type",
@@ -151,9 +152,14 @@ public List<String> generateExport() throws ExporterException {
151152
writer.append(QifHelper.DATE_PREFIX)
152153
.append(QifHelper.formatDate(cursor.getLong(cursor.getColumnIndexOrThrow("trans_time"))))
153154
.append(newLine);
154-
writer.append(QifHelper.MEMO_PREFIX)
155+
// Payee / description
156+
writer.append(QifHelper.PAYEE_PREFIX)
155157
.append(cursor.getString(cursor.getColumnIndexOrThrow("trans_desc")))
156158
.append(newLine);
159+
// Notes, memo
160+
writer.append(QifHelper.MEMO_PREFIX)
161+
.append(cursor.getString(cursor.getColumnIndexOrThrow("trans_notes")))
162+
.append(newLine);
157163
// deal with imbalance first
158164
double imbalance = cursor.getDouble(cursor.getColumnIndexOrThrow("trans_acct_balance"));
159165
BigDecimal decimalImbalance = BigDecimal.valueOf(imbalance).setScale(2, BigDecimal.ROUND_HALF_UP);

app/src/main/java/org/gnucash/android/export/qif/QifHelper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class QifHelper {
2929
/*
3030
Prefixes for the QIF file
3131
*/
32+
public static final String PAYEE_PREFIX = "P";
3233
public static final String DATE_PREFIX = "D";
3334
public static final String AMOUNT_PREFIX = "T";
3435
public static final String MEMO_PREFIX = "M";

app/src/test/java/org/gnucash/android/test/unit/export/QifExporterTest.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@
4141
import org.junit.runner.RunWith;
4242
import org.robolectric.annotation.Config;
4343

44+
import java.io.BufferedReader;
4445
import java.io.File;
46+
import java.io.FileNotFoundException;
47+
import java.io.FileReader;
48+
import java.io.IOException;
49+
import java.io.InputStreamReader;
4550
import java.util.List;
4651

4752
import static org.assertj.core.api.Assertions.assertThat;
@@ -144,4 +149,46 @@ public void multiCurrencyTransactions_shouldResultInMultipleQifFiles(){
144149
assertThat(file.length()).isGreaterThan(0L);
145150
}
146151

152+
//@Test
153+
public void description_and_memo_field_test() {
154+
// arrange
155+
156+
String expectedDescription = "my description";
157+
String expectedMemo = "my memo";
158+
159+
AccountsDbAdapter accountsDbAdapter = new AccountsDbAdapter(mDb);
160+
Account account = new Account("Basic Account");
161+
Transaction transaction = new Transaction("One transaction");
162+
transaction.setDescription(expectedDescription);
163+
transaction.setNote(expectedMemo);
164+
account.addTransaction(transaction);
165+
accountsDbAdapter.addRecord(account);
166+
167+
ExportParams exportParameters = new ExportParams(ExportFormat.QIF);
168+
exportParameters.setExportStartTime(TimestampHelper.getTimestampFromEpochZero());
169+
exportParameters.setExportTarget(ExportParams.ExportTarget.SD_CARD);
170+
exportParameters.setDeleteTransactionsAfterExport(false);
171+
172+
// act
173+
174+
QifExporter qifExporter = new QifExporter(exportParameters, mDb);
175+
List<String> exportedFiles = qifExporter.generateExport();
176+
177+
// assert
178+
179+
assertThat(exportedFiles).hasSize(1);
180+
File file = new File(exportedFiles.get(0));
181+
assertThat(file).exists().hasExtension("qif");
182+
StringBuilder fileContentsBuilder = new StringBuilder();
183+
try {
184+
BufferedReader reader = new BufferedReader(new FileReader(file));
185+
fileContentsBuilder.append(reader.readLine());
186+
} catch (IOException e) {
187+
e.printStackTrace();
188+
}
189+
// todo: check the description & memo fields.
190+
String fileContent = fileContentsBuilder.toString();
191+
assertThat(fileContent.contains(expectedDescription));
192+
assertThat(fileContent.contains(expectedMemo));
193+
}
147194
}

0 commit comments

Comments
 (0)