X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fmodel%2FPatternDetailsItem.java;h=eeab37aed6a53431cda383e8c0067063e41ac533;hb=ea6e0ebc968bb3a3b7fb913d9e0282d374957815;hp=a5ec165c3e18353ee7977b3a590d1c45d67c05fc;hpb=423e6077aaa672ef1cb9e6c489c8144811f5c682;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/model/PatternDetailsItem.java b/app/src/main/java/net/ktnx/mobileledger/model/PatternDetailsItem.java index a5ec165c..eeab37ae 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/PatternDetailsItem.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/PatternDetailsItem.java @@ -65,16 +65,28 @@ abstract public class PatternDetailsItem { if (ph.getTransactionDescriptionMatchGroup() == null) header.setTransactionDescription(ph.getTransactionDescription()); else - header.setTransactionDescriptionMatchGroup(ph.getTransactionDescriptionMatchGroup()); + header.setTransactionDescriptionMatchGroup( + ph.getTransactionDescriptionMatchGroup()); if (ph.getTransactionCommentMatchGroup() == null) header.setTransactionComment(ph.getTransactionComment()); else header.setTransactionCommentMatchGroup(ph.getTransactionCommentMatchGroup()); - header.setDateDayMatchGroup(ph.getDateDayMatchGroup()); - header.setDateMonthMatchGroup(ph.getDateMonthMatchGroup()); - header.setDateYearMatchGroup(ph.getDateYearMatchGroup()); + if (ph.getDateDayMatchGroup() == null) + header.setDateDay(ph.getDateDay()); + else + header.setDateDayMatchGroup(ph.getDateDayMatchGroup()); + + if (ph.getDateMonthMatchGroup() == null) + header.setDateMonth(ph.getDateMonth()); + else + header.setDateMonthMatchGroup(ph.getDateMonthMatchGroup()); + + if (ph.getDateYearMatchGroup() == null) + header.setDateYear(ph.getDateYear()); + else + header.setDateYearMatchGroup(ph.getDateYearMatchGroup()); return header; } @@ -102,8 +114,11 @@ abstract public class PatternDetailsItem { acc.setCurrencyMatchGroup(pa.getCurrencyMatchGroup()); final Integer amountMatchGroup = pa.getAmountMatchGroup(); - if (amountMatchGroup != null && amountMatchGroup > 0) + if (amountMatchGroup != null && amountMatchGroup > 0) { acc.setAmountMatchGroup(amountMatchGroup); + final Boolean negateAmount = pa.getNegateAmount(); + acc.setNegateAmount(negateAmount != null && negateAmount); + } else acc.setAmount(pa.getAmount()); @@ -262,9 +277,16 @@ abstract public class PatternDetailsItem { private final PossiblyMatchedValue amount = PossiblyMatchedValue.withLiteralFloat(0f); private final PossiblyMatchedValue currency = new PossiblyMatchedValue<>(); + private boolean negateAmount; private AccountRow() { super(Type.ACCOUNT_ITEM); } + public boolean isNegateAmount() { + return negateAmount; + } + public void setNegateAmount(boolean negateAmount) { + this.negateAmount = negateAmount; + } public int getAccountCommentMatchGroup() { return accountComment.getMatchGroup(); } @@ -331,7 +353,7 @@ abstract public class PatternDetailsItem { } public boolean equalContents(AccountRow o) { return amount.equals(o.amount) && accountName.equals(o.accountName) && - accountComment.equals(o.accountComment); + accountComment.equals(o.accountComment) && negateAmount == o.negateAmount; } public void switchToLiteralAmount() { amount.switchToLiteral(); @@ -355,10 +377,14 @@ abstract public class PatternDetailsItem { else result.setAccountCommentMatchGroup(accountComment.getMatchGroup()); - if (amount.hasLiteralValue()) + if (amount.hasLiteralValue()) { result.setAmount(amount.getValue()); - else + result.setNegateAmount(null); + } + else { result.setAmountMatchGroup(amount.getMatchGroup()); + result.setNegateAmount(negateAmount ? true : null); + } return result; }