/*
* eGov suite of products aim to improve the internal efficiency,transparency,
* accountability and the service delivery of the government organizations.
*
* Copyright (C) <2015> eGovernments Foundation
*
* The updated version of eGov suite of products as by eGovernments Foundation
* is available at http://www.egovernments.org
*
* 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
* 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/ or
* http://www.gnu.org/licenses/gpl.html .
*
* In addition to the terms of the GPL license to be adhered to in using this
* program, the following additional terms are to be complied with:
*
* 1) All versions of this program, verbatim or modified must carry this
* Legal Notice.
*
* 2) Any misrepresentation of the origin of the material is prohibited. It
* is required that all modified versions of this material be marked in
* reasonable ways as different from the original version.
*
* 3) This license does not grant any rights to any user of the program
* with regards to rights under trademark law for use of the trade names
* or trademarks of eGovernments Foundation.
*
* In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org.
*/
/**
*
*/
package org.egov.egf.web.actions.payment;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.interceptor.validation.SkipValidation;
import org.egov.billsaccounting.services.CreateVoucher;
import org.egov.billsaccounting.services.VoucherConstant;
import org.egov.commons.Accountdetailtype;
import org.egov.commons.Bankaccount;
import org.egov.commons.CFunction;
import org.egov.commons.CGeneralLedger;
import org.egov.commons.CGeneralLedgerDetail;
import org.egov.commons.CVoucherHeader;
import org.egov.commons.Relation;
import org.egov.commons.Vouchermis;
import org.egov.commons.utils.EntityType;
import org.egov.egf.commons.EgovCommon;
import org.egov.infra.admin.master.entity.AppConfigValues;
import org.egov.infra.exception.ApplicationException;
import org.egov.infra.exception.ApplicationRuntimeException;
import org.egov.infra.script.service.ScriptService;
import org.egov.infra.validation.exception.ValidationError;
import org.egov.infra.validation.exception.ValidationException;
import org.egov.infra.web.struts.annotation.ValidationErrorPage;
import org.egov.infra.workflow.entity.State;
import org.egov.infra.workflow.entity.StateAware;
import org.egov.infra.workflow.matrix.entity.WorkFlowMatrix;
import org.egov.infra.workflow.service.SimpleWorkflowService;
import org.egov.infstr.services.PersistenceService;
import org.egov.model.bills.Miscbilldetail;
import org.egov.model.instrument.InstrumentHeader;
import org.egov.model.payment.Paymentheader;
import org.egov.model.voucher.CommonBean;
import org.egov.model.voucher.VoucherDetails;
import org.egov.model.voucher.WorkflowBean;
import org.egov.payment.services.PaymentActionHelper;
import org.egov.services.contra.ContraService;
import org.egov.services.payment.MiscbilldetailService;
import org.egov.services.payment.PaymentService;
import org.egov.services.voucher.VoucherService;
import org.egov.utils.Constants;
import org.egov.utils.FinancialConstants;
import org.hibernate.HibernateException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.exilant.GLEngine.ChartOfAccounts;
import com.exilant.GLEngine.Transaxtion;
import com.exilant.exility.common.TaskFailedException;
import com.exilant.exility.dataservice.DatabaseConnectionException;
import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;
/**
* @author mani
*/
@ParentPackage("egov")
@Results({
@Result(name = DirectBankPaymentAction.NEW, location = "directBankPayment-" + DirectBankPaymentAction.NEW + ".jsp"),
@Result(name = DirectBankPaymentAction.EDIT, location = "directBankPayment-" + DirectBankPaymentAction.EDIT + ".jsp"),
@Result(name = "reverse", location = "directBankPayment-reverse.jsp"),
@Result(name = "view", location = "directBankPayment-view.jsp")
})
public class DirectBankPaymentAction extends BasePaymentAction {
private final static String FORWARD = "Forward";
private static final String FAILED_WHILE_REVERSING = "Failed while Reversing";
private static final String FAILED = "Transaction failed";
private static final String EXCEPTION_WHILE_SAVING_DATA = "Exception while saving data";
private static final long serialVersionUID = 1L;
@Autowired
@Qualifier("persistenceService")
private PersistenceService persistenceService;
@Autowired
private CreateVoucher createVoucher;
private PaymentService paymentService;
@Autowired
private PaymentActionHelper paymentActionHelper;
private static final String DD_MMM_YYYY = "dd-MMM-yyyy";
private final SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy", Constants.LOCALE);
public Map<String, String> modeOfPaymentMap;
private static final String MDP_CHEQUE = FinancialConstants.MODEOFPAYMENT_CHEQUE;
private static final String MDP_RTGS = FinancialConstants.MODEOFPAYMENT_RTGS;
private static final String MDP_CASH = FinancialConstants.MODEOFPAYMENT_CASH;
private String button;
private VoucherService voucherService;
private SimpleWorkflowService<Paymentheader> paymentWorkflowService;
private static final Logger LOGGER = Logger.getLogger(DirectBankPaymentAction.class);
public static final String ZERO = "0";
private static final String VIEW = "view";
private static final String REVERSE = "reverse";
private static final String REQUIRED = "required";
private static final String PAYMENTID = "paymentid";
private List<VoucherDetails> billDetailslist;
private List<VoucherDetails> subLedgerlist;
boolean showChequeNumber;
private CommonBean commonBean;
private EgovCommon egovCommon;
private Paymentheader paymentheader = new Paymentheader();
public boolean showApprove = false;
private Integer departmentId;
private String wfitemstate;
private String typeOfAccount;
private List<InstrumentHeader> instrumentHeaderList = new ArrayList<InstrumentHeader>();
private BigDecimal balance;
private ScriptService scriptService;
private ChartOfAccounts chartOfAccounts;
@Autowired
@Qualifier("miscbilldetailService")
private MiscbilldetailService miscbilldetailService;
private String cutOffDate;
DateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd");
Date date;
public BigDecimal getBalance() {
return balance;
}
public void setBalance(final BigDecimal balance) {
this.balance = balance;
}
@Override
public StateAware getModel() {
voucherHeader = (CVoucherHeader) super.getModel();
return voucherHeader;
}
@Override
public void prepare() {
super.prepare();
voucherHeader.setType(FinancialConstants.STANDARD_VOUCHER_TYPE_PAYMENT);
voucherHeader.setName(FinancialConstants.PAYMENTVOUCHER_NAME_DIRECTBANK);
modeOfPaymentMap = new LinkedHashMap<String, String>();
modeOfPaymentMap.put(MDP_CHEQUE, getText(MDP_CHEQUE));
modeOfPaymentMap.put(MDP_CASH, getText(MDP_CASH));
modeOfPaymentMap.put(MDP_RTGS, getText(MDP_RTGS));
addDropdownData("designationList", Collections.EMPTY_LIST);
addDropdownData("userList", Collections.EMPTY_LIST);
typeOfAccount = FinancialConstants.TYPEOFACCOUNT_PAYMENTS + "," + FinancialConstants.TYPEOFACCOUNT_RECEIPTS_PAYMENTS;
}
public void prepareNewform() {
addDropdownData("bankList", Collections.EMPTY_LIST);
addDropdownData("accNumList", Collections.EMPTY_LIST);
}
@Override
@SkipValidation
@Action(value = "/payment/directBankPayment-newform")
public String newform() {
if (LOGGER.isInfoEnabled())
LOGGER.info("Resetting all........................... ");
List<AppConfigValues> cutOffDateconfigValue = appConfigValuesService.getConfigValuesByModuleAndKey("EGF",
"DataEntryCutOffDate");
if (cutOffDateconfigValue != null && !cutOffDateconfigValue.isEmpty())
{
try {
date = df.parse(cutOffDateconfigValue.get(0).getValue());
cutOffDate = formatter.format(date);
} catch (ParseException e) {
}
}
voucherHeader.reset();
commonBean.reset();
commonBean.setModeOfPayment(MDP_CHEQUE);
voucherHeader.setVouchermis(new Vouchermis());
// voucherHeader.getVouchermis().setDepartmentid((Department)paymentService.getAssignment().getDeptId());
billDetailslist = new ArrayList<VoucherDetails>();
billDetailslist.add(new VoucherDetails());
subLedgerlist = new ArrayList<VoucherDetails>();
subLedgerlist.add(new VoucherDetails());
loadDefalutDates();
// loadApproverUser(FinancialConstants.STANDARD_VOUCHER_TYPE_PAYMENT);
return NEW;
}
@Validations(requiredFields = { @RequiredFieldValidator(fieldName = "fundId", message = "", key = REQUIRED),
@RequiredFieldValidator(fieldName = "voucherNumber", message = "", key = REQUIRED),
@RequiredFieldValidator(fieldName = "commonBean.bankId", message = "", key = REQUIRED),
@RequiredFieldValidator(fieldName = "commonBean.accountNumberId", message = "", key = REQUIRED),
@RequiredFieldValidator(fieldName = "commonBean.amount", message = "", key = REQUIRED),
@RequiredFieldValidator(fieldName = "voucherDate", message = "", key = REQUIRED),
@RequiredFieldValidator(fieldName = "commonBean.documentNumber", message = "", key = REQUIRED),
@RequiredFieldValidator(fieldName = "commonBean.documentDate", message = "", key = REQUIRED),
@RequiredFieldValidator(fieldName = "commonBean.paidTo", message = "", key = REQUIRED) })
@SkipValidation
@ValidationErrorPage(value = NEW)
@Action(value = "/payment/directBankPayment-create")
public String create() {
CVoucherHeader billVhId = null;
voucherHeader.setType(FinancialConstants.STANDARD_VOUCHER_TYPE_PAYMENT);
loadAjaxedDropDowns();
removeEmptyRowsAccoutDetail(billDetailslist);
removeEmptyRowsSubledger(subLedgerlist);
String voucherDate = formatter1.format(voucherHeader.getVoucherDate());
String cutOffDate1 = null;
try {
if (!validateDBPData(billDetailslist, subLedgerlist)) {
if (commonBean.getModeOfPayment().equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) {
if (LOGGER.isInfoEnabled())
LOGGER.info("calling Validate RTGS");
validateRTGS();
}
if (showMode != null && showMode.equalsIgnoreCase("nonbillPayment"))
if (voucherHeader.getId() != null)
billVhId = (CVoucherHeader) persistenceService.getSession().load(CVoucherHeader.class,
voucherHeader.getId());
voucherHeader.setId(null);
populateWorkflowBean();
paymentheader = paymentActionHelper.createDirectBankPayment(paymentheader, voucherHeader, billVhId, commonBean,
billDetailslist, subLedgerlist, workflowBean);
showMode = "create";
if (!cutOffDate.isEmpty() && cutOffDate != null)
{
try {
date = sdf.parse(cutOffDate);
cutOffDate1 = formatter1.format(date);
} catch (ParseException e) {
}
}
if (cutOffDate1 != null && voucherDate.compareTo(cutOffDate1) <= 0
&& FinancialConstants.CREATEANDAPPROVE.equalsIgnoreCase(workflowBean.getWorkFlowAction()))
{
if (paymentheader.getVoucherheader().getVouchermis().getBudgetaryAppnumber() == null)
{
addActionMessage(getText("directbankpayment.transaction.success")
+ paymentheader.getVoucherheader().getVoucherNumber());
} else {
addActionMessage(getText("directbankpayment.transaction.success")
+ paymentheader.getVoucherheader().getVoucherNumber()
+ " and "
+ getText("budget.recheck.sucessful", new String[] { paymentheader.getVoucherheader()
.getVouchermis()
.getBudgetaryAppnumber() }));
}
}
else
{
if (paymentheader.getVoucherheader().getVouchermis().getBudgetaryAppnumber() == null)
{
addActionMessage(getText("directbankpayment.transaction.success")
+ paymentheader.getVoucherheader().getVoucherNumber());
} else {
addActionMessage(getText("directbankpayment.transaction.success")
+ paymentheader.getVoucherheader().getVoucherNumber()
+ " and "
+ getText("budget.recheck.sucessful", new String[] { paymentheader.getVoucherheader()
.getVouchermis()
.getBudgetaryAppnumber() }));
}
addActionMessage(getText("payment.voucher.approved", new String[] { paymentService
.getEmployeeNameForPositionId(paymentheader.getState().getOwnerPosition()) }));
}
}
else
throw new ValidationException(Arrays.asList(new ValidationError("engine.validation.failed", "Validation Faild")));
} catch (final ValidationException e) {
LOGGER.error(e.getMessage(), e);
final List<ValidationError> errors = new ArrayList<ValidationError>();
errors.add(new ValidationError("exp", e.getErrors().get(0).getMessage()));
throw new ValidationException(errors);
} catch (final NumberFormatException e) {
LOGGER.error(e.getMessage(), e);
throw e;
} catch (final ApplicationRuntimeException e) {
LOGGER.error(e.getMessage(), e);
throw e;
} finally {
if (subLedgerlist.size() == 0)
subLedgerlist.add(new VoucherDetails());
// loadApproverUser(FinancialConstants.STANDARD_VOUCHER_TYPE_PAYMENT);
}
return VIEW;
}
// @ValidationErrorPage(value="/error/error,jsp")
public void prepareNonBillPayment()
{
addDropdownData("bankList", Collections.EMPTY_LIST);
addDropdownData("accNumList", Collections.EMPTY_LIST);
commonBean.setModeOfPayment(MDP_CHEQUE);
}
@ValidationErrorPage(value = NEW)
@SkipValidation
public String nonBillPayment()
{
voucherHeader = (CVoucherHeader) persistenceService.getSession().load(CVoucherHeader.class, voucherHeader.getId());
final String vName = voucherHeader.getName();
String appconfigKey = "";
if (vName.equalsIgnoreCase(FinancialConstants.JOURNALVOUCHER_NAME_CONTRACTORJOURNAL))
appconfigKey = "worksBillPurposeIds";
else if (vName.equalsIgnoreCase(FinancialConstants.JOURNALVOUCHER_NAME_SUPPLIERJOURNAL))
appconfigKey = "purchaseBillPurposeIds";
else if (vName.equalsIgnoreCase(FinancialConstants.JOURNALVOUCHER_NAME_SALARYJOURNAL))
appconfigKey = "salaryBillPurposeIds";
final AppConfigValues appConfigValues = appConfigValuesService.getConfigValuesByModuleAndKey(
FinancialConstants.MODULE_NAME_APPCONFIG, appconfigKey).get(0);
final String purposeValue = appConfigValues.getValue();
final CGeneralLedger netPay = (CGeneralLedger) persistenceService.find(
"from CGeneralLedger where voucherHeaderId.id=? and glcodeId.purposeId=?", voucherHeader.getId(), purposeValue);
if (netPay == null)
throw new ValidationException(Arrays.asList(new ValidationError("net.payable.not.selected.or.selected.wrongly",
"Either Net payable code is not selected or wrongly selected in voucher .Payment creation Failed")));
billDetailslist = new ArrayList<VoucherDetails>();
subLedgerlist = new ArrayList<VoucherDetails>();
final VoucherDetails vd = new VoucherDetails();
vd.setGlcodeDetail(netPay.getGlcode());
vd.setGlcodeIdDetail(netPay.getGlcodeId().getId());
vd.setAccounthead(netPay.getGlcodeId().getName());
vd.setDebitAmountDetail(BigDecimal.valueOf(netPay.getCreditAmount()));
if (netPay.getFunctionId() != null)
{
vd.setFunctionIdDetail(Long.valueOf(netPay.getFunctionId()));
CFunction function = (CFunction) persistenceService.getSession().load(CFunction.class,
Long.valueOf(netPay.getFunctionId()));
vd.setFunctionDetail(function.getId().toString());
}
commonBean.setAmount(BigDecimal.valueOf(netPay.getCreditAmount()));
billDetailslist.add(vd);
final Set<CGeneralLedgerDetail> generalLedgerDetails = netPay.getGeneralLedgerDetails();
final int i = 0;
for (final CGeneralLedgerDetail gldetail : generalLedgerDetails)
{
final VoucherDetails vdetails = new VoucherDetails();
vdetails.setSubledgerCode(netPay.getGlcode());
vdetails.setAmount(gldetail.getAmount());
// vdetails.setDebitAmountDetail(vdetails.getAmount());
vdetails.setGlcodeDetail(netPay.getGlcode());
vdetails.setGlcode(netPay.getGlcodeId());
vdetails.setSubledgerCode(netPay.getGlcode());
vdetails.setAccounthead(netPay.getGlcodeId().getName());
final Accountdetailtype detailType = (Accountdetailtype) persistenceService.getSession().load(
Accountdetailtype.class,
gldetail.getDetailTypeId());
vdetails.setDetailTypeName(detailType.getName());
vdetails.setDetailType(detailType);
vdetails.setDetailKey(gldetail.getDetailKeyId().toString());
vdetails.setDetailKeyId(gldetail.getDetailKeyId());
final String table = detailType.getFullQualifiedName();
Class<?> service;
try {
service = Class.forName(table);
} catch (final ClassNotFoundException e1) {
LOGGER.error(e1.getMessage(), e1);
throw new ValidationException(Arrays.asList(new ValidationError("application.error", "application.error")));
}
String simpleName = service.getSimpleName();
// simpleName=simpleName.toLowerCase()+"Service";
simpleName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1) + "Service";
final WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(ServletActionContext
.getServletContext());
final PersistenceService entityPersistenceService = (PersistenceService) wac.getBean(simpleName);
String dataType = "";
try {
final Class aClass = Class.forName(table);
final java.lang.reflect.Method method = aClass.getMethod("getId");
dataType = method.getReturnType().getSimpleName();
} catch (final Exception e) {
throw new ApplicationRuntimeException(e.getMessage());
}
EntityType entity = null;
if (dataType.equals("Long"))
entity = (EntityType) entityPersistenceService
.findById(Long.valueOf(gldetail.getDetailKeyId().toString()), false);
else
entity = (EntityType) entityPersistenceService.findById(gldetail.getDetailKeyId(), false);
vdetails.setDetailCode(entity.getCode());
vdetails.setDetailName(entity.getName());
vdetails.setDetailKey(entity.getName());
if (i == 0)
commonBean.setPaidTo(entity.getName());
subLedgerlist.add(vdetails);
}
if (subLedgerlist.size() == 0)
subLedgerlist.add(new VoucherDetails());
loadAjaxedDropDowns();
return NEW;
}
private void validateRTGS() {
{
EntityType entity = null;
final List<ValidationError> errors = new ArrayList<ValidationError>();
Relation rel = null;
String type = null;
// handle null
if (subLedgerlist != null && !subLedgerlist.isEmpty())
for (final VoucherDetails voucherDetail : subLedgerlist) {
try {
type = voucherDetail.getDetailTypeName();
entity = paymentService.getEntity(voucherDetail.getDetailType().getId(),
voucherDetail.getDetailKeyId());
if (entity == null)
throw new ValidationException(Arrays.asList(new ValidationError("No.entity.for.detailkey",
"There is no entity defined for" + voucherDetail.getDetailCode(),
new String[] { voucherDetail.getDetailCode() })));
} catch (final ApplicationException e) {
throw new ValidationException(Arrays.asList(new ValidationError("Exception to get EntityType ", e
.getMessage())));
}
voucherDetail.setDetailType((Accountdetailtype) persistenceService.getSession().load(
Accountdetailtype.class, voucherDetail.getDetailType()
.getId()));
// type will be null in case of DBP
if (type.equalsIgnoreCase("Contractor")
&& (StringUtils.isBlank(entity.getPanno()) || StringUtils.isBlank(entity.getBankname())
|| StringUtils.isBlank(entity.getBankaccount()) || StringUtils.isBlank(entity.getIfsccode()))) {
LOGGER.error("BankAccount,IFSC Code, Pan number is mandatory for RTGS Payment for " + entity.getName());
errors.add(new ValidationError("paymentMode",
"BankName, BankAccount,IFSC Code, Pan number is mandatory for RTGS Payment for "
+ entity.getName()));
throw new ValidationException(errors);
}
else if (type.equalsIgnoreCase("Supplier")
&& (StringUtils.isBlank(entity.getTinno()) || StringUtils.isBlank(entity.getBankname())
|| StringUtils.isBlank(entity.getBankaccount()) || StringUtils.isBlank(entity.getIfsccode()))) {
LOGGER.error("BankAccount,IFSC Code, Tin number is mandatory for RTGS Payment for " + entity.getName());
errors.add(new ValidationError("paymentMode",
"BankName, BankAccount,IFSC Code, Tin number is mandatory for RTGS Payment for "
+ entity.getName()));
throw new ValidationException(errors);
}
else if (StringUtils.isBlank(entity.getBankname())
|| StringUtils.isBlank(entity.getBankaccount()) || StringUtils.isBlank(entity.getIfsccode())) {
LOGGER.error("BankAccount,IFSC Code is mandatory for RTGS Payment for " + entity.getName());
errors.add(new ValidationError("paymentMode",
"BankName, BankAccount,IFSC Code is mandatory for RTGS Payment for type " + type
+ " and Entity " + entity.getName()));
throw new ValidationException(errors);
}
}
else
throw new ValidationException(Arrays.asList(new ValidationError("no.subledger.cannot.create.rtgs.payment",
"There is no subledger selected cannot create RTGS Payment")));
}
}
private void updateMiscBillDetail(final CVoucherHeader billVhId) {
final Miscbilldetail miscbillDetail = (Miscbilldetail) persistenceService.find(
" from Miscbilldetail where payVoucherHeader=?",
voucherHeader);
miscbillDetail.setBillnumber(commonBean.getDocumentNumber());
miscbillDetail.setBilldate(commonBean.getDocumentDate());
miscbillDetail.setBillVoucherHeader(billVhId);
miscbillDetail.setBillamount(commonBean.getAmount());
miscbillDetail.setPayVoucherHeader(voucherHeader);
miscbillDetail.setPaidamount(commonBean.getAmount());
miscbillDetail.setPassedamount(commonBean.getAmount());
miscbillDetail.setPaidamount(commonBean.getAmount());
miscbillDetail.setPaidto(commonBean.getPaidTo().trim());
miscbilldetailService.persist(miscbillDetail);
}
@SkipValidation
@Action(value = "/payment/directBankPayment-beforeView")
public String beforeView() {
prepareForViewModifyReverse();
wfitemstate = "END"; // requird to hide the approver drop down when view is form source
return VIEW;
}
@SkipValidation
@Action(value = "/payment/directBankPayment-beforeEdit")
public String beforeEdit() {
prepareForViewModifyReverse();
return EDIT;
}
@SkipValidation
@Action(value = "/payment/directBankPayment-beforeReverse")
public String beforeReverse() {
prepareForViewModifyReverse();
return REVERSE;
}
@SuppressWarnings("unchecked")
private void prepareForViewModifyReverse() {
final StringBuffer instrumentQuery = new StringBuffer(100);
instrumentQuery.append(
"select distinct ih from InstrumentHeader ih join ih.instrumentVouchers iv where iv.voucherHeaderId.id=?")
.append(" order by ih.id");
voucherHeader = (CVoucherHeader) persistenceService.getSession().load(CVoucherHeader.class, voucherHeader.getId());
paymentheader = (Paymentheader) persistenceService.find("from Paymentheader where voucherheader=?", voucherHeader);
commonBean.setAmount(paymentheader.getPaymentAmount());
commonBean.setAccountNumberId(paymentheader.getBankaccount().getId().toString());
commonBean.setAccnumnar(paymentheader.getBankaccount().getNarration());
final String bankBranchId = paymentheader.getBankaccount().getBankbranch().getBank().getId() + "-"
+ paymentheader.getBankaccount().getBankbranch().getId();
commonBean.setBankId(bankBranchId);
commonBean.setModeOfPayment(paymentheader.getType());
final Miscbilldetail miscbillDetail = (Miscbilldetail) persistenceService.find(
" from Miscbilldetail where payVoucherHeader=?",
voucherHeader);
commonBean.setDocumentNumber(miscbillDetail.getBillnumber());
commonBean.setDocumentDate(miscbillDetail.getBilldate());
commonBean.setPaidTo(miscbillDetail.getPaidto());
if (miscbillDetail.getBillVoucherHeader() != null)
{
commonBean.setDocumentId(miscbillDetail.getBillVoucherHeader().getId());
commonBean.setLinkReferenceNumber(miscbillDetail.getBillVoucherHeader().getVoucherNumber());
}
final String bankGlcode = paymentheader.getBankaccount().getChartofaccounts().getGlcode();
VoucherDetails bankdetail = null;
final Map<String, Object> vhInfoMap = voucherService.getVoucherInfo(voucherHeader.getId());
// voucherHeader =
// (CVoucherHeader)vhInfoMap.get(Constants.VOUCHERHEADER);
billDetailslist = (List<VoucherDetails>) vhInfoMap.get(Constants.GLDEATILLIST);
subLedgerlist = (List<VoucherDetails>) vhInfoMap.get("subLedgerDetail");
for (final VoucherDetails vd : billDetailslist)
if (vd.getGlcodeDetail().equalsIgnoreCase(bankGlcode))
bankdetail = vd;
if (bankdetail != null)
billDetailslist.remove(bankdetail);
loadAjaxedDropDowns();
// find it last so that rest of the data loaded
if ("view".equalsIgnoreCase(showMode))
{
if (LOGGER.isDebugEnabled())
LOGGER.debug("fetching cheque detail ------------------------");
instrumentHeaderList = getPersistenceService()
.findAllBy(instrumentQuery.toString(), paymentheader.getVoucherheader().getId());
}
}
private void loadAjaxedDropDowns() {
loadSchemeSubscheme();
loadBankBranchForFund();
loadBankAccountNumber(commonBean.getBankId());
loadFundSource();
}
@SuppressWarnings("deprecation")
@Action(value = "/payment/directBankPayment-edit")
public String edit() throws SQLException {
CVoucherHeader billVhId = null;
voucherHeader.setType(FinancialConstants.STANDARD_VOUCHER_TYPE_PAYMENT);
removeEmptyRowsAccoutDetail(billDetailslist);
removeEmptyRowsSubledger(subLedgerlist);
validateFields();
voucherHeader = voucherService.updateVoucherHeader(voucherHeader);
try {
if (!validateDBPData(billDetailslist, subLedgerlist)) {
if (commonBean.getModeOfPayment().equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS))
validateRTGS();
reCreateLedger();
paymentheader = (Paymentheader) persistenceService
.find("from Paymentheader where voucherheader=?", voucherHeader);
paymentService.updatePaymentHeader(paymentheader, voucherHeader,
Integer.valueOf(commonBean.getAccountNumberId()), commonBean
.getModeOfPayment(), commonBean.getAmount());
if (commonBean.getDocumentId() != null)
billVhId = (CVoucherHeader) persistenceService.getSession().load(CVoucherHeader.class,
commonBean.getDocumentId());
updateMiscBillDetail(billVhId);
sendForApproval();
addActionMessage(getText("directbankpayment.transaction.success") + voucherHeader.getVoucherNumber());
} else
throw new ValidationException(Arrays.asList(new ValidationError("engine.validation.failed", "Validation Faild")));
} catch (final NumberFormatException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(e.getMessage(), e.getMessage())));
}
finally {
if (subLedgerlist.size() == 0)
subLedgerlist.add(new VoucherDetails());
loadAjaxedDropDowns();
}
return VIEW;
}
@ValidationErrorPage("reverse")
public String reverse() {
final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
CVoucherHeader reversalVoucher = null;
final HashMap<String, Object> reversalVoucherMap = new HashMap<String, Object>();
reversalVoucherMap.put("Original voucher header id", voucherHeader.getId());
reversalVoucherMap.put("Reversal voucher type", "Receipt");
// what should be the name
reversalVoucherMap.put("Reversal voucher name", "Direct");
try {
reversalVoucherMap.put("Reversal voucher date", sdf.parse(getReversalVoucherDate()));
} catch (final ParseException e1) {
throw new ValidationException(Arrays.asList(new ValidationError("reversalVocuherDate",
"reversalVocuherDate.notinproperformat")));
}
reversalVoucherMap.put("Reversal voucher number", getReversalVoucherNumber());
final List<HashMap<String, Object>> reversalList = new ArrayList<HashMap<String, Object>>();
reversalList.add(reversalVoucherMap);
try {
reversalVoucher = createVoucher.reverseVoucher(reversalList);
} catch (final ApplicationRuntimeException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(FAILED_WHILE_REVERSING, FAILED_WHILE_REVERSING)));
} catch (final ParseException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError("Date is not in proper Format",
"Date is not in proper Format")));
}
loadAjaxedDropDowns();
addActionMessage(getText("directbankpayment.reverse.transaction.success") + reversalVoucher.getVoucherNumber());
// phoenix migration voucherHeader.setId(reversalVoucher.getId());
return REVERSE;
}
private void reCreateLedger() {
try {
createVoucher.deleteVoucherdetailAndGL(voucherHeader);
persistenceService.getSession().flush();
HashMap<String, Object> detailMap = null;
// HashMap<String, Object> headerMap = null;
HashMap<String, Object> subledgertDetailMap = null;
final List<HashMap<String, Object>> accountdetails = new ArrayList<HashMap<String, Object>>();
final List<HashMap<String, Object>> subledgerDetails = new ArrayList<HashMap<String, Object>>();
detailMap = new HashMap<String, Object>();
/*
* headerMap = new HashMap<String, Object>(); // Adding function to the map for the mandatiry field
* //createVoucher.validateFunction(headerMap,billDetailslist);
* //createVoucher.validateFunction(headerMap,subLedgerlist);
*/
detailMap.put(VoucherConstant.CREDITAMOUNT, commonBean.getAmount().toString());
detailMap.put(VoucherConstant.DEBITAMOUNT, "0");
final Bankaccount account = (Bankaccount) persistenceService.getSession().load(Bankaccount.class,
Integer.valueOf(commonBean.getAccountNumberId()));
detailMap.put(VoucherConstant.GLCODE, account.getChartofaccounts().getGlcode());
// Addind this line since function code is made mandatory for all transaction
if (voucherHeader.getVouchermis().getFunction() != null)
detailMap.put(VoucherConstant.FUNCTIONCODE, voucherHeader.getVouchermis().getFunction().getCode());
accountdetails.add(detailMap);
final Map<String, Object> glcodeMap = new HashMap<String, Object>();
for (final VoucherDetails voucherDetail : billDetailslist) {
detailMap = new HashMap<String, Object>();
if (voucherDetail.getFunctionIdDetail() != null) {
final CFunction function = (CFunction) persistenceService.getSession().load(CFunction.class,
voucherDetail.getFunctionIdDetail());
detailMap.put(VoucherConstant.FUNCTIONCODE, function.getCode());
}
if (voucherHeader.getVouchermis().getFunction() != null
&& !voucherHeader.getVouchermis().getFunction().equals("0"))
detailMap.put(VoucherConstant.FUNCTIONCODE, voucherHeader.getVouchermis().getFunction().getCode());
if (voucherDetail.getCreditAmountDetail().compareTo(BigDecimal.ZERO) == 0) {
detailMap.put(VoucherConstant.DEBITAMOUNT, voucherDetail.getDebitAmountDetail().toString());
detailMap.put(VoucherConstant.CREDITAMOUNT, ZERO);
detailMap.put(VoucherConstant.GLCODE, voucherDetail.getGlcodeDetail());
accountdetails.add(detailMap);
glcodeMap.put(voucherDetail.getGlcodeDetail(), VoucherConstant.DEBIT);
}
else {
detailMap.put(VoucherConstant.CREDITAMOUNT, voucherDetail.getCreditAmountDetail().toString());
detailMap.put(VoucherConstant.DEBITAMOUNT, ZERO);
detailMap.put(VoucherConstant.GLCODE, voucherDetail.getGlcodeDetail());
accountdetails.add(detailMap);
glcodeMap.put(voucherDetail.getGlcodeDetail(), VoucherConstant.CREDIT);
}
}
for (final VoucherDetails voucherDetail : subLedgerlist) {
subledgertDetailMap = new HashMap<String, Object>();
final String amountType = glcodeMap.get(voucherDetail.getSubledgerCode()) != null ? glcodeMap.get(
voucherDetail.getSubledgerCode()).toString() : null; // Debit or Credit.
if (null != amountType && amountType.equalsIgnoreCase(VoucherConstant.DEBIT))
subledgertDetailMap.put(VoucherConstant.DEBITAMOUNT, voucherDetail.getAmount());
else if (null != amountType)
subledgertDetailMap.put(VoucherConstant.CREDITAMOUNT, voucherDetail.getAmount());
subledgertDetailMap.put(VoucherConstant.DETAILTYPEID, voucherDetail.getDetailType().getId());
subledgertDetailMap.put(VoucherConstant.DETAILKEYID, voucherDetail.getDetailKeyId());
subledgertDetailMap.put(VoucherConstant.GLCODE, voucherDetail.getSubledgerCode());
subledgerDetails.add(subledgertDetailMap);
}
// createVoucher.validateFunction(accountdetails,subledgerDetails);
final List<Transaxtion> transactions = createVoucher.createTransaction(null, accountdetails, subledgerDetails,
voucherHeader);
persistenceService.getSession().flush();
Transaxtion txnList[] = new Transaxtion[transactions.size()];
txnList = transactions.toArray(txnList);
final SimpleDateFormat formatter = new SimpleDateFormat(DD_MMM_YYYY);
if (!chartOfAccounts.postTransaxtions(txnList, formatter.format(voucherHeader.getVoucherDate())))
throw new ValidationException(Arrays.asList(new ValidationError("Exception While Saving Data",
"Transaction Failed")));
} catch (final HibernateException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(EXCEPTION_WHILE_SAVING_DATA, FAILED)));
} catch (final NumberFormatException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(EXCEPTION_WHILE_SAVING_DATA, FAILED)));
} catch (final DatabaseConnectionException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(EXCEPTION_WHILE_SAVING_DATA, FAILED)));
} catch (final ApplicationRuntimeException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(EXCEPTION_WHILE_SAVING_DATA, FAILED)));
} catch (final SQLException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(EXCEPTION_WHILE_SAVING_DATA, FAILED)));
} catch (final TaskFailedException e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(EXCEPTION_WHILE_SAVING_DATA, FAILED)));
} catch (final Exception e) {
LOGGER.error(e.getMessage(), e);
throw new ValidationException(Arrays.asList(new ValidationError(EXCEPTION_WHILE_SAVING_DATA, FAILED)));
}
}
protected boolean validateDBPData(final List<VoucherDetails> billDetailslist, final List<VoucherDetails> subLedgerList) {
BigDecimal totalDrAmt = BigDecimal.ZERO;
BigDecimal totalCrAmt = BigDecimal.ZERO;
totalCrAmt = totalCrAmt.add(commonBean.getAmount());
int index = 0;
boolean isValFailed = false;
// isValFailed = validateOnlyRTGS();
for (final VoucherDetails voucherDetails : billDetailslist) {
index = index + 1;
totalDrAmt = totalDrAmt.add(voucherDetails.getDebitAmountDetail());
totalCrAmt = totalCrAmt.add(voucherDetails.getCreditAmountDetail());
if (voucherDetails.getDebitAmountDetail().compareTo(BigDecimal.ZERO) == 0
&& voucherDetails.getCreditAmountDetail().compareTo(BigDecimal.ZERO) == 0
&& voucherDetails.getGlcodeDetail().trim().length() == 0) {
addActionError(getText("journalvoucher.accdetail.emptyaccrow", new String[] { "" + index }));
isValFailed = true;
}
else if (voucherDetails.getDebitAmountDetail().compareTo(BigDecimal.ZERO) == 0
&& voucherDetails.getCreditAmountDetail().compareTo(BigDecimal.ZERO) == 0
&& voucherDetails.getGlcodeDetail().trim().length() != 0) {
addActionError(getText("journalvoucher.accdetail.amountZero", new String[] { voucherDetails.getGlcodeDetail() }));
isValFailed = true;
}
else if (voucherDetails.getDebitAmountDetail().compareTo(BigDecimal.ZERO) > 0
&& voucherDetails.getCreditAmountDetail().compareTo(BigDecimal.ZERO) > 0) {
addActionError(getText("journalvoucher.accdetail.amount", new String[] { voucherDetails.getGlcodeDetail() }));
isValFailed = true;
}
else if ((voucherDetails.getDebitAmountDetail().compareTo(BigDecimal.ZERO) > 0 || voucherDetails
.getCreditAmountDetail().compareTo(BigDecimal.ZERO) > 0)
&& voucherDetails.getGlcodeDetail().trim().length() == 0) {
addActionError(getText("journalvoucher.accdetail.accmissing", new String[] { "" + index }));
isValFailed = true;
}
}
if (totalDrAmt.compareTo(totalCrAmt) != 0 && !isValFailed) {
addActionError(getText("journalvoucher.accdetail.drcrmatch"));
isValFailed = true;
}
else if (!isValFailed)
isValFailed = validateSubledgerDetails(billDetailslist, subLedgerList);
return isValFailed;
}
/*
* private boolean validateOnlyRTGS() { boolean isValFailed = false; final String paymentRestrictionDateForCJV =
* paymentService.getAppConfDateValForCJVPaymentModeRTGS(); Date rtgsModeRestrictionDateForCJV = null; try {
* rtgsModeRestrictionDateForCJV = formatter.parse(paymentRestrictionDateForCJV); } catch (final ParseException e) { // TODO
* Auto-generated catch block } if (voucherHeader.getVoucherDate().after(rtgsModeRestrictionDateForCJV)
* && !commonBean.getModeOfPayment().equalsIgnoreCase(MDP_RTGS)) { EntityType entity = null; new ArrayList<ValidationError>();
* Relation rel = null; String type = null; if (subLedgerlist != null && !subLedgerlist.isEmpty()) for (final VoucherDetails
* voucherDetail : subLedgerlist) { try { type = voucherDetail.getDetailTypeName(); entity =
* paymentService.getEntity(voucherDetail.getDetailType().getId(), voucherDetail.getDetailKeyId()); if (entity == null) throw
* new ValidationException(Arrays.asList(new ValidationError("No.entity.for.detailkey", "There is no entity defined for" +
* voucherDetail.getDetailCode(), new String[] { voucherDetail.getDetailCode() }))); } catch (final ApplicationException e) {
* throw new ValidationException(Arrays.asList(new ValidationError("Exception to get EntityType ", e .getMessage()))); }
* voucherDetail.setDetailType((Accountdetailtype) persistenceService.getSession().load( Accountdetailtype.class,
* voucherDetail.getDetailType() .getId())); if (voucherDetail.getDetailType().getName().equalsIgnoreCase("creditor")) { rel =
* (Relation) entity; type = rel.getRelationtype().getName(); } if (type.equalsIgnoreCase("Supplier") ||
* type.equalsIgnoreCase("Contractor")) { isValFailed = true; throw new ValidationException( Arrays.asList(new
* ValidationError(
* "Payment Mode of any bill having Contractor/Supplier subledger should RTGS For Bill Date Greater than 01-Oct-2013",
* "Payment Mode of any bill having Contractor/Supplier subledger should RTGS For Bill Date Greater than 01-Oct-2013"))); } }
* } return isValFailed; }
*/
@ValidationErrorPage(value = VIEW)
@SkipValidation
@Action(value = "/payment/directBankPayment-viewInboxItem")
public String viewInboxItem() {
paymentheader = getPayment();
showApprove = true;
if (paymentheader.getVoucherheader() != null)
voucherHeader.setId(paymentheader.getVoucherheader().getId());
prepareForViewModifyReverse();
return VIEW;
}
@ValidationErrorPage(value = VIEW)
@SkipValidation
@Action(value = "/payment/directBankPayment-sendForApproval")
public String sendForApproval() {
if (paymentheader.getId() == null)
paymentheader = getPayment();
populateWorkflowBean();
paymentheader = paymentActionHelper.sendForApproval(paymentheader, workflowBean);
if (FinancialConstants.BUTTONREJECT.equalsIgnoreCase(workflowBean.getWorkFlowAction()))
addActionMessage(getText("payment.voucher.rejected",
new String[] { paymentService.getEmployeeNameForPositionId(paymentheader.getState()
.getOwnerPosition()) }));
if (FinancialConstants.BUTTONFORWARD.equalsIgnoreCase(workflowBean.getWorkFlowAction()))
addActionMessage(getText("payment.voucher.approved", new String[] { paymentService
.getEmployeeNameForPositionId(paymentheader.getState().getOwnerPosition()) }));
if (FinancialConstants.BUTTONCANCEL.equalsIgnoreCase(workflowBean.getWorkFlowAction()))
addActionMessage(getText("payment.voucher.cancelled"));
else if (FinancialConstants.BUTTONAPPROVE.equalsIgnoreCase(workflowBean.getWorkFlowAction())) {
if ("Closed".equals(paymentheader.getState().getValue()))
addActionMessage(getText("payment.voucher.final.approval"));
else
addActionMessage(getText("payment.voucher.approved",
new String[] { paymentService.getEmployeeNameForPositionId(paymentheader.getState()
.getOwnerPosition()) }));
setAction(workflowBean.getWorkFlowAction());
}
showMode = "view";
return viewInboxItem();
}
public List<String> getValidActions() {
List<String> validActions = Collections.emptyList();
List<AppConfigValues> cutOffDateconfigValue = appConfigValuesService.getConfigValuesByModuleAndKey("EGF",
"DataEntryCutOffDate");
if (cutOffDateconfigValue != null && !cutOffDateconfigValue.isEmpty())
{
if (null == paymentheader || null == paymentheader.getId()
|| paymentheader.getCurrentState().getValue().endsWith("NEW")) {
validActions = Arrays.asList(FORWARD, FinancialConstants.CREATEANDAPPROVE);
} else {
if (paymentheader.getCurrentState() != null) {
validActions = this.customizedWorkFlowService.getNextValidActions(paymentheader
.getStateType(), getWorkFlowDepartment(), getAmountRule(),
getAdditionalRule(), paymentheader.getCurrentState().getValue(),
getPendingActions(), paymentheader.getCreatedDate());
}
}
}
else
{
if (null == paymentheader || null == paymentheader.getId()
|| paymentheader.getCurrentState().getValue().endsWith("NEW")) {
validActions = Arrays.asList(FORWARD);
} else {
if (paymentheader.getCurrentState() != null) {
validActions = this.customizedWorkFlowService.getNextValidActions(paymentheader
.getStateType(), getWorkFlowDepartment(), getAmountRule(),
getAdditionalRule(), paymentheader.getCurrentState().getValue(),
getPendingActions(), paymentheader.getCreatedDate());
}
}
}
return validActions;
}
public String getNextAction() {
WorkFlowMatrix wfMatrix = null;
if (paymentheader.getId() != null) {
if (paymentheader.getCurrentState() != null) {
wfMatrix = this.customizedWorkFlowService.getWfMatrix(paymentheader.getStateType(),
getWorkFlowDepartment(), getAmountRule(), getAdditionalRule(), paymentheader
.getCurrentState().getValue(), getPendingActions(), paymentheader
.getCreatedDate());
} else {
wfMatrix = this.customizedWorkFlowService.getWfMatrix(paymentheader.getStateType(),
getWorkFlowDepartment(), getAmountRule(), getAdditionalRule(),
State.DEFAULT_STATE_VALUE_CREATED, getPendingActions(), paymentheader
.getCreatedDate());
}
}
return wfMatrix == null ? "" : wfMatrix.getNextAction();
}
public Paymentheader getPayment() {
String paymentid = null;
paymentid = parameters.get(PAYMENTID)[0];
if (paymentid != null)
paymentheader = paymentService.findById(Long.valueOf(paymentid), false);
if (paymentheader == null)
paymentheader = new Paymentheader();
return paymentheader;
}
@ValidationErrorPage(value = "beforeEdit")
@SkipValidation
public String cancelPayment()
{
voucherHeader = (CVoucherHeader) persistenceService.getSession().load(CVoucherHeader.class, voucherHeader.getId());
paymentheader = (Paymentheader) persistenceService.find("from Paymentheader where voucherheader=?", voucherHeader);
voucherHeader.setStatus(FinancialConstants.CANCELLEDVOUCHERSTATUS);
// persistenceService.setType(CVoucherHeader.class);
paymentheader.transition(true).end();
persistenceService.persist(voucherHeader);
addActionMessage(getText("payment.cancel.success"));
action = parameters.get(ACTIONNAME)[0];
return beforeView();
}
public void setPaymentService(final PaymentService paymentService) {
this.paymentService = paymentService;
}
public void setContraService(final ContraService contraService) {
}
public boolean isShowChequeNumber() {
return showChequeNumber;
}
public void setShowChequeNumber(final boolean showChequeNumber) {
this.showChequeNumber = showChequeNumber;
}
public List<VoucherDetails> getSubLedgerlist() {
return subLedgerlist;
}
public void setSubLedgerlist(final List<VoucherDetails> subLedgerlist) {
this.subLedgerlist = subLedgerlist;
}
public List<VoucherDetails> getBillDetailslist() {
return billDetailslist;
}
public void setBillDetailslist(final List<VoucherDetails> billDetailslist) {
this.billDetailslist = billDetailslist;
}
public void setCommonBean(final CommonBean commonBean) {
this.commonBean = commonBean;
}
public CommonBean getCommonBean() {
return commonBean;
}
public Map<String, String> getModeOfPaymentMap() {
return modeOfPaymentMap;
}
public void setModeOfPaymentMap(final Map<String, String> modeOfPaymentMap) {
this.modeOfPaymentMap = modeOfPaymentMap;
}
public String getButton() {
return button;
}
public void setButton(final String button) {
this.button = button;
}
public VoucherService getVoucherService() {
return voucherService;
}
public void setVoucherService(final VoucherService voucherService) {
this.voucherService = voucherService;
}
public Paymentheader getPaymentheader() {
return paymentheader;
}
public void setPaymentheader(final Paymentheader paymentheader) {
this.paymentheader = paymentheader;
}
public void setPaymentWorkflowService(final SimpleWorkflowService<Paymentheader> paymentWorkflowService) {
this.paymentWorkflowService = paymentWorkflowService;
}
public void setEgovCommon(final EgovCommon egovCommon) {
this.egovCommon = egovCommon;
}
public Integer getDepartmentId() {
return departmentId;
}
public void setDepartmentId(final Integer departmentId) {
this.departmentId = departmentId;
}
public String getWfitemstate() {
return wfitemstate;
}
public void setWfitemstate(final String wfitemstate) {
this.wfitemstate = wfitemstate;
}
public String getComments() {
return getText("payment.comments", new String[] { paymentheader.getPaymentAmount()
.setScale(2, BigDecimal.ROUND_HALF_EVEN).toPlainString() });
}
public String getTypeOfAccount() {
return typeOfAccount;
}
public void setTypeOfAccount(final String typeOfAccount) {
this.typeOfAccount = typeOfAccount;
}
public List<InstrumentHeader> getInstrumentHeaderList() {
return instrumentHeaderList;
}
public void setInstrumentHeaderList(final List<InstrumentHeader> instrumentHeaderList) {
this.instrumentHeaderList = instrumentHeaderList;
}
public ScriptService getScriptService() {
return scriptService;
}
public void setScriptService(final ScriptService scriptService) {
this.scriptService = scriptService;
}
public ChartOfAccounts getChartOfAccounts() {
return chartOfAccounts;
}
public void setChartOfAccounts(ChartOfAccounts chartOfAccounts) {
this.chartOfAccounts = chartOfAccounts;
}
public WorkflowBean getWorkflowBean() {
return workflowBean;
}
public void setWorkflowBean(WorkflowBean workflowBean) {
this.workflowBean = workflowBean;
}
public String getCurrentState() {
return paymentheader.getState().getValue();
}
public String getCutOffDate() {
return cutOffDate;
}
public void setCutOffDate(String cutOffDate) {
this.cutOffDate = cutOffDate;
}
}