/*
This file is part of Cyclos (www.cyclos.org).
A project of the Social Trade Organisation (www.socialtrade.org).
Cyclos 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 2 of the License, or
(at your option) any later version.
Cyclos 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 Cyclos; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package nl.strohalm.cyclos.entities.accounts.fees.account;
import java.math.BigDecimal;
import java.util.Calendar;
import nl.strohalm.cyclos.entities.Entity;
import nl.strohalm.cyclos.entities.Relationship;
import nl.strohalm.cyclos.entities.accounts.transactions.Invoice;
import nl.strohalm.cyclos.entities.accounts.transactions.Transfer;
import nl.strohalm.cyclos.entities.members.Member;
/**
* Relates a member to an account fee log
*
* @author luis
*/
public class MemberAccountFeeLog extends Entity {
public static enum Relationships implements Relationship {
ACCOUNT_FEE_LOG("accountFeeLog"), MEMBER("member"), TRANSFER("transfer"), INVOICE("invoice");
private final String name;
private Relationships(final String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
public static enum Status {
ERROR, SKIPPED, TRANSFER, OPEN_INVOICE, ACCEPTED_INVOICE
}
private static final long serialVersionUID = -3632964253062346212L;
private Calendar date;
private boolean success;
private int rechargeAttempt;
private Member member;
private BigDecimal amount;
private AccountFeeLog accountFeeLog;
private Transfer transfer;
private Invoice invoice;
public AccountFeeLog getAccountFeeLog() {
return accountFeeLog;
}
public BigDecimal getAmount() {
return amount;
}
public Calendar getDate() {
return date;
}
public Invoice getInvoice() {
return invoice;
}
public Member getMember() {
return member;
}
public int getRechargeAttempt() {
return rechargeAttempt;
}
public Status getStatus() {
if (!success) {
return Status.ERROR;
} else if (transfer != null) {
return Status.TRANSFER;
} else if (invoice != null) {
return invoice.getStatus() == Invoice.Status.ACCEPTED ? Status.ACCEPTED_INVOICE : Status.OPEN_INVOICE;
} else {
return Status.SKIPPED;
}
}
public Transfer getTransfer() {
return transfer;
}
public boolean isSuccess() {
return success;
}
public void setAccountFeeLog(final AccountFeeLog accountFeeLog) {
this.accountFeeLog = accountFeeLog;
}
public void setAmount(final BigDecimal amount) {
this.amount = amount;
}
public void setDate(final Calendar date) {
this.date = date;
}
public void setInvoice(final Invoice invoice) {
this.invoice = invoice;
}
public void setMember(final Member member) {
this.member = member;
}
public void setRechargeAttempt(final int rechargeAttempt) {
this.rechargeAttempt = rechargeAttempt;
}
public void setSuccess(final boolean success) {
this.success = success;
}
public void setTransfer(final Transfer transfer) {
this.transfer = transfer;
}
@Override
public String toString() {
return getId() + ", log: " + accountFeeLog + ", member: " + member;
}
}