]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/model/LedgerTransactionAccount.java
posting-level flag for amount validity; drop custom amount text filter
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / model / LedgerTransactionAccount.java
index 1446be790fd21b3264370ce0355c8cc08ed3b170..1791cfbc5962e79b5b3c16ab4516c5e921a1765b 100644 (file)
@@ -19,34 +19,49 @@ package net.ktnx.mobileledger.model;
 
 import androidx.annotation.NonNull;
 
-import net.ktnx.mobileledger.json.ParsedAmount;
-import net.ktnx.mobileledger.json.ParsedPosting;
-import net.ktnx.mobileledger.json.ParsedQuantity;
-import net.ktnx.mobileledger.json.ParsedStyle;
+import net.ktnx.mobileledger.utils.Misc;
 
-import java.util.ArrayList;
+import java.util.Locale;
 
 public class LedgerTransactionAccount {
     private String accountName;
     private String shortAccountName;
     private float amount;
-    private boolean amountSet;
+    private boolean amountSet = false;
     private String currency;
-
-    public LedgerTransactionAccount(String accountName, float amount) {
-        this(accountName, amount, null);
-    }
-    public LedgerTransactionAccount(String accountName, float amount, String currency) {
+    private String comment;
+    private boolean amountValid = true;
+    public LedgerTransactionAccount(String accountName, float amount, String currency,
+                                    String comment) {
         this.setAccountName(accountName);
         this.amount = amount;
         this.amountSet = true;
-        this.currency = currency;
+        this.amountValid = true;
+        this.currency = Misc.emptyIsNull(currency);
+        this.comment = Misc.emptyIsNull(comment);
     }
-
     public LedgerTransactionAccount(String accountName) {
         this.accountName = accountName;
     }
-
+    public LedgerTransactionAccount(String accountName, String currency) {
+        this.accountName = accountName;
+        this.currency = Misc.emptyIsNull(currency);
+    }
+    public LedgerTransactionAccount(LedgerTransactionAccount origin) {
+        // copy constructor
+        setAccountName(origin.getAccountName());
+        setComment(origin.getComment());
+        if (origin.isAmountSet())
+            setAmount(origin.getAmount());
+        amountValid = origin.amountValid;
+        currency = origin.getCurrency();
+    }
+    public String getComment() {
+        return comment;
+    }
+    public void setComment(String comment) {
+        this.comment = comment;
+    }
     public String getAccountName() {
         return accountName;
     }
@@ -63,22 +78,28 @@ public class LedgerTransactionAccount {
 
         return amount;
     }
-
     public void setAmount(float account_amount) {
         this.amount = account_amount;
         this.amountSet = true;
+        this.amountValid = true;
     }
-
     public void resetAmount() {
         this.amountSet = false;
+        this.amountValid = true;
+    }
+    public void invalidateAmount() {
+        this.amountValid = false;
     }
-
     public boolean isAmountSet() {
         return amountSet;
     }
+    public boolean isAmountValid() { return amountValid; }
     public String getCurrency() {
         return currency;
     }
+    public void setCurrency(String currency) {
+        this.currency = Misc.emptyIsNull(currency);
+    }
     @NonNull
     public String toString() {
         if (!amountSet)
@@ -89,29 +110,8 @@ public class LedgerTransactionAccount {
             sb.append(currency);
             sb.append(' ');
         }
-        sb.append(String.format("%,1.2f", amount));
+        sb.append(String.format(Locale.US, "%,1.2f", amount));
 
         return sb.toString();
     }
-    public ParsedPosting asParsedPosting() {
-        ParsedPosting result = new ParsedPosting();
-        result.setPaccount(accountName);
-        ArrayList<ParsedAmount> amounts = new ArrayList<>();
-        ParsedAmount amt = new ParsedAmount();
-        amt.setAcommodity((currency == null) ? "" : currency);
-        amt.setAismultiplier(false);
-        ParsedQuantity qty = new ParsedQuantity();
-        qty.setDecimalPlaces(2);
-        qty.setDecimalMantissa(Math.round(amount * 100));
-        amt.setAquantity(qty);
-        ParsedStyle style = new ParsedStyle();
-        style.setAscommodityside('L');
-        style.setAscommodityspaced(false);
-        style.setAsprecision(2);
-        style.setAsdecimalpoint('.');
-        amt.setAstyle(style);
-        amounts.add(amt);
-        result.setPamount(amounts);
-        return result;
-    }
-}
+}
\ No newline at end of file