package org.mifos.accounting.struts.actionform;
import java.util.Calendar;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.mifos.application.accounting.util.helpers.SimpleAccountingConstants;
import org.mifos.application.admin.servicefacade.InvalidDateException;
import org.mifos.framework.struts.actionforms.BaseActionForm;
import org.mifos.framework.util.helpers.DateUtils;
import org.mifos.framework.util.helpers.DoubleConversionResult;
import org.mifos.framework.util.helpers.FilePaths;
import org.mifos.security.util.UserContext;
public class ConsolidatedTransactionActionForm extends BaseActionForm {
private String branch;
private String trxnDate;
private String officeLevelId;
private String crtotal;
private String cptotal;
private String [] transactionNo;
private String[] amount;
private String[] subAccountType;
private String[] transactionCpBpNo;
private String[] CpBpamount;
private String[] subAccountCpBpType;
public static final int approveStage = 1;
public static final int rejectStage = -1;
private String stageTransactionNo;
private String stageTrxnDate;
private String stageTrxnId;
private String stageTrxnType;
private String stageMainAccount;
private String stageOfficeHierarchy;
private String stageOffice;
private String stageAccountHead;
private String stageAmount;
private String stageNotes;
// staging
private String stage;
private String transactionDetailID;
// chequeDetails
private String stageChequeNo;
private String chequeDate;
private String stageBankName;
private String stageankBranch;
// Audit
private String audit;
private String auditComments;
private String toTrxnDate;
private String fromTrxnDate;
private String transactiondate;
private String lastProcessDateDD;
private String lastProcessDateMM;
private String lastProcessDateYY;
public String getCrtotal() {
return crtotal;
}
public String getCptotal() {
return cptotal;
}
public void setCrtotal(String crtotal) {
this.crtotal = crtotal;
}
public void setCptotal(String cptotal) {
this.cptotal = cptotal;
}
public String getLastProcessDateDD() {
return lastProcessDateDD;
}
public String getLastProcessDateMM() {
return lastProcessDateMM;
}
public String getLastProcessDateYY() {
return lastProcessDateYY;
}
public void setLastProcessDateDD(String lastProcessDateDD) {
this.lastProcessDateDD = lastProcessDateDD;
}
public void setLastProcessDateMM(String lastProcessDateMM) {
this.lastProcessDateMM = lastProcessDateMM;
}
public void setLastProcessDateYY(String lastProcessDateYY) {
this.lastProcessDateYY = lastProcessDateYY;
}
public String getTransactiondate() {
return transactiondate;
}
public void setTransactiondate(String transactiondate) {
this.transactiondate = transactiondate;
}
public String getStageTransactionNo() {
return stageTransactionNo;
}
public String getStageTrxnDate() {
return stageTrxnDate;
}
public String getStageTrxnId() {
return stageTrxnId;
}
public String getStageTrxnType() {
return stageTrxnType;
}
public String getStageMainAccount() {
return stageMainAccount;
}
public String getStageOfficeHierarchy() {
return stageOfficeHierarchy;
}
public String getStageOffice() {
return stageOffice;
}
public String getStageAccountHead() {
return stageAccountHead;
}
public String getStageAmount() {
return stageAmount;
}
public String getStageNotes() {
return stageNotes;
}
public String getStage() {
return stage;
}
public String getTransactionDetailID() {
return transactionDetailID;
}
public String getStageChequeNo() {
return stageChequeNo;
}
public String getStageBankName() {
return stageBankName;
}
public String getStageankBranch() {
return stageankBranch;
}
public String getAudit() {
return audit;
}
public String getAuditComments() {
return auditComments;
}
public String getToTrxnDate() {
return toTrxnDate;
}
public String getFromTrxnDate() {
return fromTrxnDate;
}
public void setStageTransactionNo(String stageTransactionNo) {
this.stageTransactionNo = stageTransactionNo;
}
public void setStageTrxnDate(String stageTrxnDate) {
this.stageTrxnDate = stageTrxnDate;
}
public void setStageTrxnId(String stageTrxnId) {
this.stageTrxnId = stageTrxnId;
}
public void setStageTrxnType(String stageTrxnType) {
this.stageTrxnType = stageTrxnType;
}
public void setStageMainAccount(String stageMainAccount) {
this.stageMainAccount = stageMainAccount;
}
public void setStageOfficeHierarchy(String stageOfficeHierarchy) {
this.stageOfficeHierarchy = stageOfficeHierarchy;
}
public void setStageOffice(String stageOffice) {
this.stageOffice = stageOffice;
}
public void setStageAccountHead(String stageAccountHead) {
this.stageAccountHead = stageAccountHead;
}
public void setStageAmount(String stageAmount) {
this.stageAmount = stageAmount;
}
public void setStageNotes(String stageNotes) {
this.stageNotes = stageNotes;
}
public void setStage(String stage) {
this.stage = stage;
}
public void setTransactionDetailID(String transactionDetailID) {
this.transactionDetailID = transactionDetailID;
}
public void setStageChequeNo(String stageChequeNo) {
this.stageChequeNo = stageChequeNo;
}
public void setStageBankName(String stageBankName) {
this.stageBankName = stageBankName;
}
public void setStageankBranch(String stageankBranch) {
this.stageankBranch = stageankBranch;
}
public void setAudit(String audit) {
this.audit = audit;
}
public void setAuditComments(String auditComments) {
this.auditComments = auditComments;
}
public void setToTrxnDate(String toTrxnDate) {
this.toTrxnDate = toTrxnDate;
}
public void setFromTrxnDate(String fromTrxnDate) {
this.fromTrxnDate = fromTrxnDate;
}
public String[] getTransactionNo() {
return transactionNo;
}
public String[] getAmount() {
return amount;
}
public String[] getSubAccountType() {
return subAccountType;
}
public String[] getTransactionCpBpNo() {
return transactionCpBpNo;
}
public String[] getCpBpamount() {
return CpBpamount;
}
public String[] getSubAccountCpBpType() {
return subAccountCpBpType;
}
public void setTransactionNo(String[] transactionNo) {
this.transactionNo = transactionNo;
}
public void setAmount(String[] amount) {
this.amount = amount;
}
public void setSubAccountType(String[] subAccountType) {
this.subAccountType = subAccountType;
}
public void setTransactionCpBpNo(String[] transactionCpBpNo) {
this.transactionCpBpNo = transactionCpBpNo;
}
public void setCpBpamount(String[] cpBpamount) {
CpBpamount = cpBpamount;
}
public void setSubAccountCpBpType(String[] subAccountCpBpType) {
this.subAccountCpBpType = subAccountCpBpType;
}
public String getOfficeLevelId() {
return officeLevelId;
}
public void setOfficeLevelId(String officeLevelId) {
this.officeLevelId = officeLevelId;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
public String getChequeDateDD() {
return chequeDateDD;
}
public void setChequeDateDD(String chequeDateDD) {
this.chequeDateDD = chequeDateDD;
}
public String getChequeDateMM() {
return chequeDateMM;
}
public void setChequeDateMM(String chequeDateMM) {
this.chequeDateMM = chequeDateMM;
}
public String getChequeDateYY() {
return chequeDateYY;
}
public void setChequeDateYY(String chequeDateYY) {
this.chequeDateYY = chequeDateYY;
}
private String chequeDateDD;
private String chequeDateMM;
private String chequeDateYY;
public void setChequeDate(String s) {
setChequeDate(DateUtils.getDate(s));
}
public void setTrxnDate(String trxnDate) {
this.trxnDate = trxnDate;
}
public void setTrxnDate(java.util.Date date) {
this.trxnDate = DateUtils.format(date);
}
public String getTrxnDate() {
return trxnDate;
}
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
if (request.getParameter(SimpleAccountingConstants.METHOD).equals(
"load")) {
this.trxnDate = null;
this.branch=null;
this.toTrxnDate=null;
}
}
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (request.getParameter(SimpleAccountingConstants.METHOD)
.equalsIgnoreCase(SimpleAccountingConstants.APPROVE)) {
return mandatoryCheck(getUserContext(request));
}
if (request.getParameter(SimpleAccountingConstants.METHOD)
.equalsIgnoreCase(SimpleAccountingConstants.REJECT)) {
return mandatoryCheck(getUserContext(request));
}
return errors;
}
private ActionErrors mandatoryCheck(UserContext userContext) {
Locale locale = userContext.getPreferredLocale();
ResourceBundle resources = ResourceBundle.getBundle(
FilePaths.SIMPLE_ACCOUNTING_RESOURCE, locale);
String trxn_Date = resources
.getString(SimpleAccountingConstants.TRXNDATE);
String officeId = resources.getString(SimpleAccountingConstants.OFFICE);
ActionErrors errors = new ActionErrors();
if (branch == null || "".equals(branch.trim())) {
errors.add(
SimpleAccountingConstants.MANDATORYFIELDS,
new ActionMessage(
SimpleAccountingConstants.MANDATORYFIELDS, officeId));
}
return errors;
}
public void setChequeDate(java.util.Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
// note that Calendar retrieves 0-based month, so increment month field
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH) + 1;
int year = c.get(Calendar.YEAR);
setChequeDateDD(Integer.toString(day));
setChequeDateMM(Integer.toString(month));
setChequeDateYY(Integer.toString(year));
}
public void setLastProcessDate(String s) {
setLastProcessDate(DateUtils.getDate(s));
}
public String getLastProcessDate() {
if (StringUtils.isBlank(lastProcessDateDD)
|| StringUtils.isBlank(lastProcessDateMM)
|| StringUtils.isBlank(lastProcessDateYY)) {
return null;
}
return lastProcessDateDD + "/" + lastProcessDateMM + "/"
+ lastProcessDateYY;
}
public void setLastProcessDate(java.util.Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
// note that Calendar retrieves 0-based month, so increment month field
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH) + 1;
int year = c.get(Calendar.YEAR);
setLastProcessDateDD(Integer.toString(day));
setLastProcessDateMM(Integer.toString(month));
setLastProcessDateYY(Integer.toString(year));
}
public String getChequeDate() {
if (StringUtils.isBlank(chequeDateDD)
|| StringUtils.isBlank(chequeDateMM)
|| StringUtils.isBlank(chequeDateYY)) {
return null;
}
return chequeDateDD + "/" + chequeDateMM + "/" + chequeDateYY;
}
}