/* * Copyright (C) 2012-2016 The Android Money Manager Ex Project Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.money.manager.ex.domainmodel; import android.content.ContentValues; import android.database.Cursor; import android.database.DatabaseUtils; import com.money.manager.ex.Constants; import com.money.manager.ex.core.TransactionTypes; import com.money.manager.ex.database.ITransactionEntity; import com.money.manager.ex.utils.MmxDate; import com.money.manager.ex.utils.MmxDateTimeUtils; import org.parceler.Parcel; import java.util.Date; import info.javaperformance.money.Money; import info.javaperformance.money.MoneyFactory; /** * Account Transaction entity. Table checkingaccount_v1. */ @Parcel public class AccountTransaction extends EntityBase implements ITransactionEntity { public static final String TRANSID = "TRANSID"; /** * Creates default, empty transaction. * @return Account Transaction records with default values. */ public static AccountTransaction create() { return create(Constants.NOT_SET, Constants.NOT_SET, TransactionTypes.Withdrawal, Constants.NOT_SET, Constants.NOT_SET, MoneyFactory.fromDouble(0)); } public static AccountTransaction create(int accountId, int payeeId, TransactionTypes type, int categoryId, int subCategoryId, Money amount) { AccountTransaction tx = new AccountTransaction(); tx.setAccountId(accountId); tx.setPayeeId(payeeId); tx.setTransactionType(type); tx.setCategoryId(categoryId); tx.setSubcategoryId(subCategoryId); tx.setAmount(amount); tx.setAmountTo(MoneyFactory.fromDouble(0)); return tx; } public AccountTransaction() { super(); setAccountToId(Constants.NOT_SET); setCategoryId(Constants.NOT_SET); setSubcategoryId(Constants.NOT_SET); setFollowUpId(Constants.NOT_SET); } public AccountTransaction(ContentValues contentValues) { super(contentValues); } @Override public void loadFromCursor(Cursor c) { super.loadFromCursor(c); // Reload all money values. DatabaseUtils.cursorDoubleToCursorValues(c, TRANSAMOUNT, this.contentValues); DatabaseUtils.cursorDoubleToCursorValues(c, TOTRANSAMOUNT, this.contentValues); } public Integer getId() { return getInt(TRANSID); } public void setId(Integer id) { setInt(TRANSID, id); } public boolean hasId() { return getId() != null && getId() != Constants.NOT_SET; } public Integer getAccountId() { return getInt(ITransactionEntity.ACCOUNTID); } public void setAccountId(Integer value) { setInt(ITransactionEntity.ACCOUNTID, value); } @Override public Integer getAccountToId() { return getInt(ITransactionEntity.TOACCOUNTID); } @Override public void setAccountToId(Integer value) { setInt(ITransactionEntity.TOACCOUNTID, value); } public boolean hasAccountTo() { return getAccountToId() != null && getAccountToId() != Constants.NOT_SET; } public Money getAmount() { Double amount = getDouble(ITransactionEntity.TRANSAMOUNT); if (amount == null) { amount = 0D; } Money result = MoneyFactory.fromDouble(amount); return result; } public void setAmount(Money value) { setMoney(ITransactionEntity.TRANSAMOUNT, value); } public Money getAmountTo() { Double amount = getDouble(ITransactionEntity.TOTRANSAMOUNT); if (amount == null) { amount = 0D; } Money result = MoneyFactory.fromDouble(amount); return result; } public void setAmountTo(Money value) { setMoney(ITransactionEntity.TOTRANSAMOUNT, value); } public Integer getCategoryId() { return getInt(ITransactionEntity.CATEGID); } public void setCategoryId(Integer value) { setInt(ITransactionEntity.CATEGID, value); } public boolean hasCategory() { return getCategoryId() != null && getCategoryId() != Constants.NOT_SET; } public String getDateString() { return getString(ITransactionEntity.TRANSDATE); } public Date getDate() { String dateString = getDateString(); return dateString != null ? new MmxDate(dateString).toDate() : null; } public void setDate(Date value) { String dateString = new MmxDate(value).toIsoString(); setString(ITransactionEntity.TRANSDATE, dateString); } public Integer getFollowUpId() { return getInt(FOLLOWUPID); } public void setFollowUpId(Integer value) { setInt(FOLLOWUPID, value); } public String getNotes() { return getString(ITransactionEntity.NOTES); } public void setNotes(String value) { setString(ITransactionEntity.NOTES, value); } public Integer getPayeeId() { return getInt(ITransactionEntity.PAYEEID); } public void setPayeeId(Integer value) { setInt(ITransactionEntity.PAYEEID, value); } public boolean hasPayee() { return getPayeeId() != null && getPayeeId() != Constants.NOT_SET; } public String getStatus() { return getString(ITransactionEntity.STATUS); } public void setStatus(String value) { setString(ITransactionEntity.STATUS, value); } public Integer getSubcategoryId() { return getInt(ITransactionEntity.SUBCATEGID); } public void setSubcategoryId(Integer value) { setInt(ITransactionEntity.SUBCATEGID, value); } public String getTransCode() { return getString(ITransactionEntity.TRANSCODE); } public String getTransactionNumber() { return getString(ITransactionEntity.TRANSACTIONNUMBER); } public void setTransactionNumber(String value) { setString(ITransactionEntity.TRANSACTIONNUMBER, value); } public TransactionTypes getTransactionType() { String code = getTransCode(); return TransactionTypes.valueOf(code); } @Override public void setTransactionType(TransactionTypes value) { setString(ITransactionEntity.TRANSCODE, value.name()); } }