/*
* Copyright (C) 2003 Idega software. All Rights Reserved.
*
* This software is the proprietary information of Idega software. Use is
* subject to license terms.
*
*/
package is.idega.idegaweb.member.isi.block.accounting.data;
import is.idega.idegaweb.member.isi.block.accounting.export.data.Batch;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.block.basket.data.BasketItem;
import com.idega.block.finance.data.AccountEntry;
import com.idega.data.GenericEntity;
import com.idega.data.IDOPrimaryKey;
import com.idega.data.IDOQuery;
import com.idega.data.IDOUtil;
import com.idega.data.PrimaryKey;
import com.idega.data.query.Column;
import com.idega.data.query.MaxColumn;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.user.data.Group;
import com.idega.user.data.User;
import com.idega.user.data.UserBMPBean;
import com.idega.util.IWTimestamp;
/**
* @author palli
*/
public class FinanceEntryBMPBean extends GenericEntity implements FinanceEntry, BasketItem {
protected final static String ENTITY_NAME = "isi_ass_entry";
protected final static String COLUMN_USER_ID = "user_id";
protected final static String COLUMN_ASSESSMENT_ROUND_ID = "assessment_id";
protected final static String COLUMN_CLUB_ID = "club_id";
protected final static String COLUMN_DIVISION_ID = "division_id";
protected final static String COLUMN_GROUP_ID = "group_id";
protected final static String COLUMN_AMOUNT = "amount";
protected final static String COLUMN_STATUS = "status";
protected final static String COLUMN_TYPE = "entry_type";
protected final static String COLUMN_DATE_OF_ENTRY = "date_of_entry";
protected final static String COLUMN_INFO = "text_info";
protected final static String COLUMN_TARIFF_ID = "tariff";
protected final static String COLUMN_TARIFF_TYPE_ID = "tariff_type";
protected final static String COLUMN_INSERTED_BY = "inserted_by";
protected final static String COLUMN_AMOUNT_EQUALIZED = "eq_amount";
protected final static String COLUMN_OPEN = "entry_open";
protected final static String COLUMN_PAYMENT_TYPE_ID = "payment_type_id";
protected final static String COLUMN_DISCOUNT_PERC = "discount_perc";
protected final static String COLUMN_DISCOUNT_AMOUNT = "discount_amount";
protected final static String COLUMN_DISCOUNT_INFO = "discount_info";
protected final static String COLUMN_PAYMENT_DATE = "payment_date";
protected final static String COLUMN_SENT = "sent";
protected final static String COLUMN_PAYMENT_CONTRACT_ID = "pay_cont_id";
protected final static String COLUMN_ISI_BATCH_ID = "isi_batch_id";
protected final static String COLUMN_PAYED_BY_USER_ID = "payed_by_user_id";
protected final static String COLUMN_DUE_DATE = "due_date";
protected final static String COLUMN_FINAL_DUE_DATE = "final_due_date";
protected final static String COLUMN_PAYED_BY_SSN = "payed_by_ssn";
protected final static String COLUMN_ACCOUNT_ENTRY = "account_entry_id";
protected final static String COLUMN_INVOICE_RECEIVER = "invoice_receiver";
protected final static String STATUS_CREATED = "C";
// protected final static String STATUS_READY = "R";
protected final static String STATUS_SENT = "S";
protected final static String STATUS_PAYED = "P";
protected final static String STATUS_ERROR = "E";
public final static String TYPE_ASSESSMENT = "A";
public final static String TYPE_MANUAL = "M";
public final static String TYPE_PAYMENT = "P";
public final static String ENTRY_OPEN_YES = "Y";
public final static String ENTRY_OPEN_NO = "N";
protected static final String STRING_TYPE_MANUAL = "isi_acc_fin_entry_manual_type";
protected static final String STRING_TYPE_AUTOMATIC = "isi_acc_fin_entry_auto_type";
protected static final String STRING_TYPE_PAYMENT = "isi_acc_fin_entry_pay_type";
/*
* (non-Javadoc)
*
* @see com.idega.data.GenericEntity#getEntityName()
*/
public String getEntityName() {
return ENTITY_NAME;
}
/*
* (non-Javadoc)
*
* @see com.idega.data.GenericEntity#initializeAttributes()
*/
public void initializeAttributes() {
addAttribute(getIDColumnName());
addManyToOneRelationship(COLUMN_USER_ID, User.class);
addManyToOneRelationship(COLUMN_ASSESSMENT_ROUND_ID, AssessmentRound.class);
addManyToOneRelationship(COLUMN_CLUB_ID, Group.class);
addManyToOneRelationship(COLUMN_DIVISION_ID, Group.class);
addManyToOneRelationship(COLUMN_GROUP_ID, Group.class);
addManyToOneRelationship(COLUMN_TARIFF_ID, ClubTariff.class);
addManyToOneRelationship(COLUMN_TARIFF_TYPE_ID, ClubTariffType.class);
addAttribute(COLUMN_AMOUNT, "Amount", true, true, Double.class);
addAttribute(COLUMN_STATUS, "Status", true, true, String.class, 1);
addAttribute(COLUMN_TYPE, "Type", true, true, String.class, 1);
addAttribute(COLUMN_DATE_OF_ENTRY, "Timestamp", true, true, Timestamp.class);
addAttribute(COLUMN_INFO, "Text info", true, true, String.class, 255);
addManyToOneRelationship(COLUMN_INSERTED_BY, User.class);
addAttribute(COLUMN_AMOUNT_EQUALIZED, "Amount equalized", true, true, Double.class);
addAttribute(COLUMN_OPEN, "Open", true, true, Boolean.class);
addManyToOneRelationship(COLUMN_PAYMENT_TYPE_ID, PaymentType.class);
addAttribute(COLUMN_DISCOUNT_PERC, "Discount %", true, true, Double.class);
addAttribute(COLUMN_DISCOUNT_AMOUNT, "Discount amount", true, true, Double.class);
addAttribute(COLUMN_DISCOUNT_INFO, "Discount info", true, true, String.class, 255);
addAttribute(COLUMN_PAYMENT_DATE, "Payment date", true, true, Timestamp.class);
addAttribute(COLUMN_SENT, "Sent", true, true, Boolean.class);
addManyToOneRelationship(COLUMN_PAYMENT_CONTRACT_ID, PaymentContract.class);
addManyToOneRelationship(COLUMN_ISI_BATCH_ID, Batch.class);
addManyToOneRelationship(COLUMN_PAYED_BY_USER_ID, User.class);
addAttribute(COLUMN_DUE_DATE, "Due date", true, true, Date.class);
addAttribute(COLUMN_FINAL_DUE_DATE, "Due date", true, true, Date.class);
addAttribute(COLUMN_PAYED_BY_SSN, "Payed by ssn", true, true, String.class);
addOneToOneRelationship(COLUMN_ACCOUNT_ENTRY, AccountEntry.class);
addManyToOneRelationship(COLUMN_INVOICE_RECEIVER, InvoiceReceiver.class);
setNullable(COLUMN_USER_ID, false);
setNullable(COLUMN_ASSESSMENT_ROUND_ID, true);
setNullable(COLUMN_CLUB_ID, false);
setNullable(COLUMN_GROUP_ID, true);
addIndex("IDX_ASS_ENTRY_1", COLUMN_USER_ID);
}
public void setStatusCreated() {
setColumn(COLUMN_STATUS, STATUS_CREATED);
}
/* public void setStatusReady() {
setColumn(COLUMN_STATUS, STATUS_READY);
}*/
public void setStatusSent() {
setColumn(COLUMN_STATUS, STATUS_SENT);
}
public void setTypeAssessment() {
setColumn(COLUMN_TYPE, TYPE_ASSESSMENT);
}
public void setTypeManual() {
setColumn(COLUMN_TYPE, TYPE_MANUAL);
}
public void setTypePayment() {
setColumn(COLUMN_TYPE, TYPE_PAYMENT);
}
public String getType() {
return getStringColumnValue(COLUMN_TYPE);
}
public void setPaymentTypeID(int payment_type_id) {
setColumn(COLUMN_PAYMENT_TYPE_ID, payment_type_id);
}
public void setPaymentType(PaymentType type) {
setColumn(COLUMN_PAYMENT_TYPE_ID, type);
}
public int getPaymentTypeID() {
return getIntColumnValue(COLUMN_PAYMENT_TYPE_ID);
}
public PaymentType getPaymentType() {
return (PaymentType) getColumnValue(COLUMN_PAYMENT_TYPE_ID);
}
public String getTypeLocalizationKey() {
String type = getStringColumnValue(COLUMN_TYPE);
if (type != null && !"".equals(type)) {
if (type.equals(TYPE_ASSESSMENT)) {
return STRING_TYPE_AUTOMATIC;
}
else if (type.endsWith(TYPE_MANUAL)) {
return STRING_TYPE_MANUAL;
}
else if (type.equals(TYPE_PAYMENT)) {
return STRING_TYPE_PAYMENT;
}
else {
return null;
}
}
return null;
}
public double getAmount() {
return getDoubleColumnValue(COLUMN_AMOUNT, 0);
}
public void setAmount(double amount) {
setColumn(COLUMN_AMOUNT, amount);
}
public int getAssessmentRoundID() {
return getIntColumnValue(COLUMN_ASSESSMENT_ROUND_ID);
}
public void setAssessmentRoundID(int id) {
setColumn(COLUMN_ASSESSMENT_ROUND_ID, id);
}
public AssessmentRound getAssessmentRound() {
return (AssessmentRound) getColumnValue(COLUMN_ASSESSMENT_ROUND_ID);
}
public void setAssessment(AssessmentRound assRound) {
setColumn(COLUMN_ASSESSMENT_ROUND_ID, assRound);
}
public int getClubID() {
return getIntColumnValue(COLUMN_CLUB_ID);
}
public void setClubID(int id) {
setColumn(COLUMN_CLUB_ID, id);
}
public Group getClub() {
return (Group) getColumnValue(COLUMN_CLUB_ID);
}
public void setClub(Group club) {
setColumn(COLUMN_CLUB_ID, club);
}
public int getDivisionID() {
return getIntColumnValue(COLUMN_DIVISION_ID);
}
public void setDivisionID(int id) {
setColumn(COLUMN_DIVISION_ID, id);
}
public Group getDivision() {
return (Group) getColumnValue(COLUMN_DIVISION_ID);
}
public void setDivision(Group club) {
setColumn(COLUMN_DIVISION_ID, club);
}
public Timestamp getDateOfEntry() {
return (Timestamp) getColumnValue(COLUMN_DATE_OF_ENTRY);
}
public void setDateOfEntry(Timestamp date) {
setColumn(COLUMN_DATE_OF_ENTRY, date);
}
public int getGroupID() {
return getIntColumnValue(COLUMN_GROUP_ID);
}
public void setGroupID(int id) {
setColumn(COLUMN_GROUP_ID, id);
}
public Group getGroup() {
return (Group) getColumnValue(COLUMN_GROUP_ID);
}
public void setGroup(Group group) {
setColumn(COLUMN_GROUP_ID, group);
}
public int getUserID() {
return getIntColumnValue(COLUMN_USER_ID);
}
public void setUserID(int id) {
setColumn(COLUMN_USER_ID, id);
}
public User getUser() {
return (User) getColumnValue(COLUMN_USER_ID);
}
public void setUser(User user) {
setColumn(COLUMN_USER_ID, user);
}
public String getInfo() {
return getStringColumnValue(COLUMN_INFO);
}
public void setInfo(String info) {
setColumn(COLUMN_INFO, info);
}
public int getTariffID() {
return getIntColumnValue(COLUMN_TARIFF_ID);
}
public void setTariffID(int id) {
setColumn(COLUMN_TARIFF_ID, id);
}
public ClubTariff getTariff() {
return (ClubTariff) getColumnValue(COLUMN_TARIFF_ID);
}
public void setTariff(ClubTariff clubTariff) {
setColumn(COLUMN_TARIFF_ID, clubTariff);
}
public int getTariffTypeID() {
return getIntColumnValue(COLUMN_TARIFF_TYPE_ID);
}
public void setTariffTypeID(int id) {
setColumn(COLUMN_TARIFF_TYPE_ID, id);
}
public ClubTariffType getTariffType() {
return (ClubTariffType) getColumnValue(COLUMN_TARIFF_TYPE_ID);
}
public void setTariffType(ClubTariffType clubTariffType) {
setColumn(COLUMN_TARIFF_TYPE_ID, clubTariffType);
}
public int getInsertedByUserID() {
return getIntColumnValue(COLUMN_INSERTED_BY);
}
public void setInsertedByUserID(int id) {
setColumn(COLUMN_INSERTED_BY, id);
}
public User getInsertedByUser() {
return (User) getColumnValue(COLUMN_INSERTED_BY);
}
public void setInsertedByUser(User user) {
setColumn(COLUMN_INSERTED_BY, user);
}
public double getAmountEqualized() {
return getDoubleColumnValue(COLUMN_AMOUNT_EQUALIZED, 0);
}
public void setAmountEqualized(double amount) {
setColumn(COLUMN_AMOUNT_EQUALIZED, amount);
}
public boolean getEntryOpen() {
return getBooleanColumnValue(COLUMN_OPEN, true);
}
public void setEntryOpen(boolean open) {
setColumn(COLUMN_OPEN, open);
}
public void setDiscountPerc(double perc) {
setColumn(COLUMN_DISCOUNT_PERC, perc);
}
public double getDiscountPerc() {
return getDoubleColumnValue(COLUMN_DISCOUNT_PERC, 0);
}
public void setDiscountAmount(double amount) {
setColumn(COLUMN_DISCOUNT_AMOUNT, amount);
}
public double getDiscountAmount() {
return getDoubleColumnValue(COLUMN_DISCOUNT_AMOUNT, 0);
}
public void setDiscountInfo(String info) {
setColumn(COLUMN_DISCOUNT_INFO, info);
}
public String getDiscountInfo() {
return getStringColumnValue(COLUMN_DISCOUNT_INFO);
}
public Timestamp getPaymentDate() {
return (Timestamp) getColumnValue(COLUMN_PAYMENT_DATE);
}
public void setPaymentDate(Timestamp date) {
setColumn(COLUMN_PAYMENT_DATE, date);
}
public boolean getSent() {
return getBooleanColumnValue(COLUMN_SENT, false);
}
public void setSent(boolean sent) {
setColumn(COLUMN_SENT, sent);
}
public void setSent(Boolean sent) {
setColumn(COLUMN_SENT, sent);
}
public void setPaymentContract(PaymentContract contract) {
setColumn(COLUMN_PAYMENT_CONTRACT_ID, contract);
}
public void setPaymentContractId(int id) {
setColumn(COLUMN_PAYMENT_CONTRACT_ID, id);
}
public PaymentContract getPaymentContract() {
return (PaymentContract) getColumnValue(COLUMN_PAYMENT_CONTRACT_ID);
}
public int getPaymentContractId() {
return getIntColumnValue(COLUMN_PAYMENT_CONTRACT_ID);
}
public void setISIBatchID(int id) {
setColumn(COLUMN_ISI_BATCH_ID, id);
}
public void setISIBatch(Batch batch) {
setColumn(COLUMN_ISI_BATCH_ID, batch);
}
public int getISIBatchID() {
return getIntColumnValue(COLUMN_ISI_BATCH_ID);
}
public Batch getISIBatch() {
return (Batch) getColumnValue(COLUMN_ISI_BATCH_ID);
}
public int getPayedByUserID() {
return getIntColumnValue(COLUMN_PAYED_BY_USER_ID);
}
public void setPayedByUserID(int id) {
setColumn(COLUMN_PAYED_BY_USER_ID, id);
}
public User getPayedByUser() {
return (User) getColumnValue(COLUMN_PAYED_BY_USER_ID);
}
public void setPayedByUser(User user) {
setColumn(COLUMN_PAYED_BY_USER_ID, user);
}
public Date getDueDate() {
return getDateColumnValue(COLUMN_DUE_DATE);
}
public void setDueDate(Date dueDate) {
setColumn(COLUMN_DUE_DATE, dueDate);
}
public Date getFinalDueDate() {
return getDateColumnValue(COLUMN_FINAL_DUE_DATE);
}
public void setFinalDueDate(Date finalDueDate) {
setColumn(COLUMN_FINAL_DUE_DATE, finalDueDate);
}
public String getPayedBySSN() {
return getStringColumnValue(COLUMN_PAYED_BY_SSN);
}
public void setPayedBySSN(String ssn) {
setColumn(COLUMN_PAYED_BY_SSN, ssn);
}
public int getAccountEntryID() {
return getIntColumnValue(COLUMN_ACCOUNT_ENTRY);
}
public AccountEntry getAccountEntry() {
return (AccountEntry) getColumnValue(COLUMN_ACCOUNT_ENTRY);
}
public void setAccountEntryID(int accountEntryID) {
setColumn(COLUMN_ACCOUNT_ENTRY, accountEntryID);
}
public void setAccountEntry(AccountEntry entry) {
setColumn(COLUMN_ACCOUNT_ENTRY, entry);
}
public InvoiceReceiver getInvoiceReceiver() {
return (InvoiceReceiver) getColumnValue(COLUMN_INVOICE_RECEIVER);
}
public void setInvoiceReceiver(InvoiceReceiver receiver) {
setColumn(COLUMN_INVOICE_RECEIVER, receiver);
}
public Collection ejbFindAllByAssessmentRound(AssessmentRound round) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_ASSESSMENT_ROUND_ID, round);
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByUser(User user) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_USER_ID, user);
// sql.appendOrderBy();
// sql.append(getIDColumnName());
// sql.appendDescending();
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByUser(Group club, Group division, User user) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_CLUB_ID, club);
if (division != null) {
sql.appendAnd();
sql.appendEquals(COLUMN_DIVISION_ID, division);
}
sql.appendAnd();
sql.appendEquals(COLUMN_USER_ID, user);
sql.appendOrderBy();
sql.append(getIDColumnName());
sql.appendDescending();
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllOpenAssessmentByUser(Group club, Group division, User user) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_CLUB_ID, club);
if (division != null) {
sql.appendAnd();
sql.appendEquals(COLUMN_DIVISION_ID, division);
}
sql.appendAnd();
sql.appendEquals(COLUMN_USER_ID, user);
sql.appendAnd();
sql.appendEquals(COLUMN_OPEN, true);
sql.appendAnd();
sql.append(COLUMN_TYPE);
sql.append(" in ('");
sql.append(TYPE_ASSESSMENT);
sql.append("', '");
sql.append(TYPE_MANUAL);
sql.append("') ");
sql.appendOrderBy();
sql.append(getIDColumnName());
sql.appendDescending();
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllAssessmentByUser(Group club, Group division, User user) throws FinderException {
return ejbFindAllAssessmentByUser(club, division, user, null);
}
public Collection ejbFindAllAssessmentByUser(Group club, Group division, User user, IWTimestamp entriesAfter)
throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_CLUB_ID, club);
if (division != null) {
sql.appendAnd();
sql.appendEquals(COLUMN_DIVISION_ID, division);
}
sql.appendAnd();
sql.appendEquals(COLUMN_USER_ID, user);
sql.appendAnd();
sql.append(COLUMN_TYPE);
sql.append(" in ('");
sql.append(TYPE_ASSESSMENT);
sql.append("', '");
sql.append(TYPE_MANUAL);
sql.append("') ");
if (entriesAfter != null) {
sql.appendAnd();
sql.append(COLUMN_DATE_OF_ENTRY);
sql.appendGreaterThanOrEqualsSign();
sql.append(entriesAfter.getDate());
}
sql.appendOrderBy();
sql.append(getIDColumnName());
sql.appendDescending();
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllPaymentsByUser(Group club, Group division, User user) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_CLUB_ID, club);
if (division != null) {
sql.appendAnd();
sql.appendEquals(COLUMN_DIVISION_ID, division);
}
sql.appendAnd();
sql.appendEquals(COLUMN_USER_ID, user);
sql.appendAnd();
sql.appendEqualsQuoted(COLUMN_TYPE, TYPE_PAYMENT);
sql.appendOrderBy();
sql.append(getIDColumnName());
sql.appendDescending();
return idoFindPKsByQuery(sql);
}
/**
* @param club
* @param types
* @param dateFrom
* @param dateTo
* @param divisions
* @param groups
* @return Collection
* @throws FinderException
*/
public Collection ejbFindAllFinanceEntriesByDateIntervalDivisionsAndGroupsOrderedByDivisionGroupAndDate(Group club,
String[] types, Date dateFrom, Date dateTo, Collection divisions, Collection groups, String personalID)
throws FinderException {
IDOUtil util = IDOUtil.getInstance();
IDOQuery sql = idoQuery();
IWTimestamp stampFrom = new IWTimestamp(dateFrom);
IWTimestamp stampTo = new IWTimestamp(dateTo);
stampTo.addHours(23);
stampTo.addMinutes(59);
stampTo.addSeconds(59);
final String F_ = "f."; // sql alias for finance records
final String U_ = "u."; // sql alias for user
final String[] tableNames = { ENTITY_NAME, UserBMPBean.SQL_TABLE_NAME };
final String[] tableAliases = { "f", "u" };
sql.appendSelect().append(F_).appendStar().appendFrom(tableNames, tableAliases);
sql.appendWhereEquals(F_ + COLUMN_USER_ID, U_ + User.FIELD_USER_ID);
sql.appendAnd().appendWithinStamps(COLUMN_DATE_OF_ENTRY, stampFrom.getTimestamp(), stampTo.getTimestamp());
if (types != null && !containsTypePayment(types)) {
sql.appendAndEqualsQuoted(COLUMN_OPEN, ENTRY_OPEN_YES);
}
if (types != null && types.length > 0) {
sql.appendAnd().append(COLUMN_TYPE).appendIn(util.convertArrayToCommaseparatedString(types, true));
}
if (club != null) {
sql.appendAndEquals(COLUMN_CLUB_ID, club.getPrimaryKey());
}
if (divisions != null && divisions.size() > 0) {
sql.appendAnd().append(COLUMN_DIVISION_ID).appendIn(util.convertListToCommaseparatedString(divisions));
}
if (groups != null && groups.size() > 0) {
sql.appendAnd().append(COLUMN_GROUP_ID).appendIn(util.convertListToCommaseparatedString(groups));
}
if (personalID != null && !personalID.equals("")) {
sql.appendAnd().append(U_ + User.FIELD_PERSONAL_ID).appendLike().append("\'" + personalID + "%'");
}
return idoFindIDsBySQL(sql.toString());
}
private boolean containsTypePayment(String[] types) {
boolean containsTypePayment = false;
for (int i = 0; i < types.length; i++) {
if (types[i].equals(TYPE_PAYMENT)) {
containsTypePayment = true;
}
}
return containsTypePayment;
}
/**
* @param club
* @param types
* @param divisions
* @param groups
* @return Collection
* @throws FinderException
*/
public Collection ejbFindAllFinanceEntriesByPaymentDateDivisionsAndGroupsOrderedByDivisionGroupAndDate(Group club,
String[] types, Collection divisions, Collection groups, String personalID) throws FinderException {
IWTimestamp now = new IWTimestamp();
now.addDays(1);
IDOUtil util = IDOUtil.getInstance();
IDOQuery sql = idoQuery();
final String F_ = "f."; // sql alias for finance records
final String A_ = "a."; // sql alias for assessment round
final String U_ = "u."; // sql alias for user
final String[] tableNames = { ENTITY_NAME, AssessmentRoundBMPBean.ENTITY_NAME, UserBMPBean.SQL_TABLE_NAME };
final String[] tableAliases = { "f", "a", "u" };
sql.appendSelect().append(F_).appendStar().appendFrom(tableNames, tableAliases);
sql.appendWhereEquals(F_ + COLUMN_ASSESSMENT_ROUND_ID, A_ + "ISI_ASS_ROUND_ID");
sql.appendAndEquals(F_ + COLUMN_USER_ID, U_ + User.FIELD_USER_ID);
sql.appendAnd().append(A_ + AssessmentRoundBMPBean.COLUMN_PAYMENT_DATE).appendLessThanSign().append(
now.getDate());
sql.appendAndEqualsQuoted(COLUMN_OPEN, ENTRY_OPEN_YES);
if (types != null && types.length > 0) {
sql.appendAnd().append(F_ + COLUMN_TYPE).appendIn(util.convertArrayToCommaseparatedString(types, true));
}
if (club != null) {
sql.appendAndEquals(F_ + COLUMN_CLUB_ID, club.getPrimaryKey());
}
if (divisions != null && divisions.size() > 0) {
sql.appendAnd().append(F_ + COLUMN_DIVISION_ID).appendIn(util.convertListToCommaseparatedString(divisions));
}
if (groups != null && groups.size() > 0) {
sql.appendAnd().append(F_ + COLUMN_GROUP_ID).appendIn(util.convertListToCommaseparatedString(groups));
}
if (personalID != null && !personalID.equals("")) {
sql.appendAnd().append(U_ + User.FIELD_PERSONAL_ID).appendLike().append("\'" + personalID + "%'");
}
return idoFindIDsBySQL(sql.toString());
}
public Collection ejbFindAllByGroupAndPaymentTypeNotInBatch(Group group, PaymentType type, IWTimestamp dateFrom,
IWTimestamp dateTo) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_GROUP_ID, group);
sql.appendAndEquals(COLUMN_PAYMENT_TYPE_ID, type);
sql.appendAnd();
sql.append(COLUMN_ISI_BATCH_ID);
sql.append(" is null ");
if (dateFrom != null) {
sql.appendAnd();
sql.append(COLUMN_DATE_OF_ENTRY);
sql.appendGreaterThanOrEqualsSign();
sql.append(dateFrom);
}
if (dateTo != null) {
sql.appendAnd();
sql.append(COLUMN_DATE_OF_ENTRY);
sql.appendLessThanOrEqualsSign();
sql.append(dateTo);
}
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByPaymentTypeNotInBatch(PaymentType type, IWTimestamp dateFrom,
IWTimestamp dateTo) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_PAYMENT_TYPE_ID, type);
sql.appendAnd();
sql.append(COLUMN_ISI_BATCH_ID);
sql.append(" is null ");
if (dateFrom != null) {
sql.appendAnd();
sql.append(COLUMN_DATE_OF_ENTRY);
sql.appendGreaterThanOrEqualsSign();
sql.append(dateFrom);
}
if (dateTo != null) {
sql.appendAnd();
sql.append(COLUMN_DATE_OF_ENTRY);
sql.appendLessThanOrEqualsSign();
sql.append(dateTo);
}
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByPaymentTypesNotInBatch(String [] paymentTypes, IWTimestamp dateFrom,
IWTimestamp dateTo) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhere();
sql.append(COLUMN_PAYMENT_TYPE_ID);
sql.appendInArray(paymentTypes);
sql.appendAnd();
sql.append(COLUMN_ISI_BATCH_ID);
sql.append(" is null ");
if (dateFrom != null) {
sql.appendAnd();
sql.append(COLUMN_DATE_OF_ENTRY);
sql.appendGreaterThanOrEqualsSign();
sql.append(dateFrom);
}
if (dateTo != null) {
sql.appendAnd();
sql.append(COLUMN_DATE_OF_ENTRY);
sql.appendLessThanOrEqualsSign();
sql.append(dateTo);
}
sql.appendOrderBy(getIDColumnName());
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByBatch(Batch batch) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_ISI_BATCH_ID, batch);
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByClubId(int id) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_CLUB_ID, id);
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByClubAndDivisionAndGroupAndSerial(Group club, Group division, Group group, int fromSerialNumber) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_CLUB_ID, club);
if (division != null) {
sql.appendAndEquals(COLUMN_DIVISION_ID, division);
}
if (group != null) {
sql.appendAndEquals(COLUMN_GROUP_ID, group);
}
if (fromSerialNumber > 0) {
sql.appendAnd();
sql.append(getIDColumnName());
sql.appendGreaterThanSign();
sql.append(fromSerialNumber);
}
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByClubAndDivisionAndGroupAndDate(Group club, Group division, Group group, IWTimestamp fromDate) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_CLUB_ID, club);
if (division != null) {
sql.appendAndEquals(COLUMN_DIVISION_ID, division);
}
if (group != null) {
sql.appendAndEquals(COLUMN_GROUP_ID, group);
}
if (fromDate != null) {
sql.appendAnd();
sql.append(COLUMN_DATE_OF_ENTRY);
sql.appendGreaterThanSign();
sql.append(fromDate);
}
return idoFindPKsByQuery(sql);
}
public Collection ejbFindAllByBatchID(int batchID) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this);
sql.appendWhereEquals(COLUMN_ISI_BATCH_ID, batchID);
return idoFindPKsByQuery(sql);
}
public int ejbHomeGetMaxID() throws FinderException {
Table table = new Table(this);
Column pkCol = new MaxColumn(table, getIDColumnName());
pkCol.setPostfix("AS " + getIDColumnName());
SelectQuery sql = new SelectQuery(table);
sql.addColumn(pkCol);
System.out.println("sql = " + sql.toString());
Integer pk = (Integer) idoFindOnePKByQuery(sql);
return pk.intValue();
}
// The methods needed to be implemented to be a BasketItem
/*
* (non-Javadoc)
*
* @see com.idega.block.basket.data.BasketItem#getDescription()
*/
public String getItemDescription() {
return getInfo();
}
/*
* (non-Javadoc)
*
* @see com.idega.block.basket.data.BasketItem#getItemID()
*/
public IDOPrimaryKey getItemID() {
PrimaryKey key = new PrimaryKey();
key.setPrimaryKeyValue(getIDColumnName(), getPrimaryKeyValue());
return key;
}
/*
* (non-Javadoc)
*
* @see com.idega.block.basket.data.BasketItem#getPrice()
*/
public Double getItemPrice() {
double remaining = getAmount() - getAmountEqualized() - getDiscountAmount();
return new Double(remaining);
}
/*
* (non-Javadoc)
*
* @see com.idega.block.basket.data.BasketItem#getItemName()
*/
public String getItemName() {
return getInfo();
}
}