import android.os.AsyncTask;
import android.os.OperationCanceledException;
+import androidx.annotation.NonNull;
+
import net.ktnx.mobileledger.App;
import net.ktnx.mobileledger.err.HTTPException;
-import net.ktnx.mobileledger.json.AccountListParser;
-import net.ktnx.mobileledger.json.ParsedBalance;
-import net.ktnx.mobileledger.json.ParsedLedgerAccount;
-import net.ktnx.mobileledger.json.ParsedLedgerTransaction;
-import net.ktnx.mobileledger.json.TransactionListParser;
+import net.ktnx.mobileledger.json.v1_15.AccountListParser;
+import net.ktnx.mobileledger.json.v1_15.ParsedBalance;
+import net.ktnx.mobileledger.json.v1_15.ParsedLedgerAccount;
+import net.ktnx.mobileledger.json.v1_15.ParsedLedgerTransaction;
+import net.ktnx.mobileledger.json.v1_15.TransactionListParser;
import net.ktnx.mobileledger.model.Data;
import net.ktnx.mobileledger.model.LedgerAccount;
import net.ktnx.mobileledger.model.LedgerTransaction;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import androidx.annotation.NonNull;
-
import static net.ktnx.mobileledger.utils.Logger.debug;
private static final Pattern reTransactionDetails =
Pattern.compile("^\\s+(\\S[\\S\\s]+\\S)\\s\\s+([-+]?\\d[\\d,.]*)(?:\\s+(\\S+)$)?");
private static final Pattern reEnd = Pattern.compile("\\bid=\"addmodal\"");
+ private static final Pattern reDecimalPoint = Pattern.compile("\\.\\d\\d?$");
+ private static final Pattern reDecimalComma = Pattern.compile(",\\d\\d?$");
private WeakReference<MainActivity> contextRef;
// %3A is '='
private Pattern reAccountName = Pattern.compile("/register\\?q=inacct%3A([a-zA-Z0-9%]+)\"");
HashMap<String, Void> accountNames = new HashMap<>();
HashMap<String, LedgerAccount> syntheticAccounts = new HashMap<>();
LedgerAccount lastAccount = null, prevAccount = null;
- boolean onlyStarred = Data.optShowOnlyStarred.get();
HttpURLConnection http = NetworkUtil.prepareConnection(profile, "journal");
http.setAllowUserInteraction(false);
}
acc.setHasSubAccounts(true);
acc.removeAmounts(); // filled below when amounts are parsed
- if ((!onlyStarred || !acc.isHiddenByStar()) &&
- acc.isVisible(accountList)) accountList.add(acc);
+ if (acc.isVisible(accountList))
+ accountList.add(acc);
L(String.format("gap-filling with %s", aName));
accountNames.put(aName, null);
profile.storeAccount(db, acc);
}
}
- if ((!onlyStarred || !lastAccount.isHiddenByStar()) &&
- lastAccount.isVisible(accountList))
+ if (lastAccount.isVisible(accountList))
accountList.add(lastAccount);
accountNames.put(acct_name, null);
String value = m.group(1);
String currency = m.group(2);
if (currency == null) currency = "";
- value = value.replace(',', '.');
+
+ {
+ Matcher tmpM = reDecimalComma.matcher(value);
+ if (tmpM.find()) {
+ value = value.replace(".", "");
+ value = value.replace(',', '.');
+ }
+
+ tmpM = reDecimalPoint.matcher(value);
+ if (tmpM.find()) {
+ value = value.replace(",", "");
+ value = value.replace(" ", "");
+ }
+ }
L("curr=" + currency + ", value=" + value);
final float val = Float.parseFloat(value);
profile.storeAccountValue(db, lastAccount.getName(), currency, val);
if (currency == null) currency = "";
amount = amount.replace(',', '.');
transaction.addAccount(new LedgerTransactionAccount(acc_name,
- Float.valueOf(amount), currency));
+ Float.valueOf(amount), currency, null));
L(String.format(Locale.ENGLISH, "%d: %s = %s",
transaction.getId(), acc_name, amount));
}