/* * 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.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; 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.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; 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.VoucherConstant; import org.egov.commons.Bankaccount; import org.egov.commons.CChartOfAccounts; import org.egov.commons.CFinancialYear; import org.egov.commons.CFunction; import org.egov.commons.EgwStatus; import org.egov.commons.Fund; import org.egov.commons.dao.FinancialYearDAO; import org.egov.commons.service.BankAccountService; import org.egov.commons.utils.EntityType; import org.egov.egf.autonumber.RtgsNumberGenerator; import org.egov.egf.commons.EgovCommon; import org.egov.egf.model.BankAdviceReportInfo; import org.egov.egf.web.actions.voucher.BaseVoucherAction; import org.egov.eis.entity.DrawingOfficer; import org.egov.infra.admin.master.entity.AppConfigValues; import org.egov.infra.admin.master.entity.Department; import org.egov.infra.admin.master.service.AppConfigValueService; import org.egov.infra.exception.ApplicationException; import org.egov.infra.exception.ApplicationRuntimeException; import org.egov.infra.reporting.engine.ReportConstants.FileFormat; import org.egov.infra.script.entity.Script; import org.egov.infra.utils.autonumber.AutonumberServiceBeanResolver; 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.infstr.services.PersistenceService; import org.egov.model.instrument.InstrumentHeader; import org.egov.model.instrument.InstrumentVoucher; import org.egov.model.payment.ChequeAssignment; import org.egov.model.payment.Paymentheader; import org.egov.model.recoveries.Recovery; import org.egov.model.service.RecoveryService; import org.egov.payment.client.BankAdviceForm; import org.egov.services.cheque.ChequeService; import org.egov.services.contra.ContraService; import org.egov.services.instrument.InstrumentHeaderService; import org.egov.services.instrument.InstrumentService; import org.egov.services.instrument.InstrumentVoucherService; import org.egov.services.masters.BankService; import org.egov.services.payment.ChequeAssignmentHelper; import org.egov.services.payment.PaymentService; import org.egov.utils.Constants; import org.egov.utils.FinancialConstants; import org.egov.utils.ReportHelper; import org.egov.utils.VoucherHelper; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.transform.Transformers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import net.sf.jasperreports.engine.JRException; @ParentPackage("egov") @Results({ @Result(name = "search", location = "chequeAssignment-search.jsp"), @Result(name = "view", location = "chequeAssignment-view.jsp"), @Result(name = "viewRtgs", location = "chequeAssignment-viewRtgs.jsp"), @Result(name = "surrenderRTGSsearch", location = "chequeAssignment-surrenderRTGSsearch.jsp"), @Result(name = "viewReceiptDetailsResult", location = "chequeAssignment-viewReceiptDetailsResult.jsp"), @Result(name = "before_pension_search", location = "chequeAssignment-before_pension_search.jsp"), @Result(name = "surrenderRTGS", location = "chequeAssignment-surrenderRTGS.jsp"), @Result(name = "viewsurrender", location = "chequeAssignment-viewsurrender.jsp"), @Result(name = "remittanceRtgsSearch", location = "chequeAssignment-remittanceRtgsSearch.jsp"), @Result(name = "before_remittance_search", location = "chequeAssignment-before_remittance_search.jsp"), @Result(name = "before_salary_search", location = "chequeAssignment-before_salary_search.jsp"), @Result(name = "searchRtgsResult", location = "chequeAssignment-searchRtgsResult.jsp"), @Result(name = "surrendersearch", location = "chequeAssignment-surrendersearch.jsp"), @Result(name = "searchremittance", location = "chequeAssignment-searchremittance.jsp"), @Result(name = "searchpayment", location = "chequeAssignment-searchpayment.jsp"), @Result(name = "surrendercheques", location = "chequeAssignment-surrendercheques.jsp"), @Result(name = "rtgsSearch", location = "chequeAssignment-rtgsSearch.jsp"), @Result(name = "tnebRtgsSearch", location = "chequeAssignment-tnebRtgsSearch.jsp"), @Result(name = "bankAdvice-PDF", type = "stream", location = Constants.INPUT_STREAM, params = { Constants.INPUT_NAME, Constants.INPUT_STREAM, Constants.CONTENT_TYPE, "application/pdf", Constants.CONTENT_DISPOSITION, "no-cache;filename=BandAdvice.pdf" }), @Result(name = "bankAdvice-XLS", type = "stream", location = Constants.INPUT_STREAM, params = { Constants.INPUT_NAME, Constants.INPUT_STREAM, Constants.CONTENT_TYPE, "application/xls", Constants.CONTENT_DISPOSITION, "no-cache;filename=${fileName}" }), @Result(name = "bankAdvice-HTML", type = "stream", location = Constants.INPUT_STREAM, params = { Constants.INPUT_NAME, Constants.INPUT_STREAM, Constants.CONTENT_TYPE, "text/html" }) }) public class ChequeAssignmentAction extends BaseVoucherAction { private static final long serialVersionUID = -3721873563220007939L; private static final String SURRENDERSEARCH = "surrendersearch"; private static final String SURRENDERRTGSSEARCH = "surrenderRTGSsearch"; private String paymentMode, inFavourOf; private Integer bankaccount, selectedRows = 0, bankbranch; private String bank_branch; private String bank_account; private Integer department; public Map<String, String> modeOfPaymentMap; private Date chequeDt; private boolean chequeNoGenerationAuto; private boolean rtgsNoGenerationAuto; private String typeOfAccount; private List<Map<String, Object>> bankbranchList; private String fileName; @Autowired @Qualifier("persistenceService") private PersistenceService persistenceService; @Autowired @Qualifier("paymentService") private PaymentService paymentService; @Autowired @Qualifier("chequeAssignmentHelper") private ChequeAssignmentHelper chequeAssignmentHelper; @Autowired @Qualifier("instrumentService") private InstrumentService instrumentService; @Autowired @Qualifier("instrumentHeaderService") private InstrumentHeaderService instrumentHeaderService; @Autowired @Qualifier("bankService") private BankService bankService; @Autowired @Qualifier("bankAccountService") private BankAccountService bankAccountService; private List<ChequeAssignment> chequeAssignmentList; private List<InstrumentHeader> instHeaderList = null; List<InstrumentVoucher> instVoucherList; List<InstrumentHeader> instVoucherDisplayList; private static final Logger LOGGER = Logger.getLogger(ChequeAssignmentAction.class); @Autowired private AppConfigValueService appConfigValuesService; private static final String JASPER_PATH = "/org/egov/payment/client/bankAdviceReport.jasper"; InputStream inputStream; ReportHelper reportHelper; Map<String, Object> paramMap = new HashMap<String, Object>(); List<Object> adviceList = new ArrayList<Object>(); String fromDate; String toDate; private String rtgsDate; private String rtgsRefNo; private final SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Constants.LOCALE); private final SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy", Constants.LOCALE); private List<InstrumentVoucher> instrumentVoucherList; private List<InstrumentHeader> instrumentHeaderList; @Autowired private AutonumberServiceBeanResolver beanResolver; String[] surrender; String instrumentNumber; Long recoveryId; private String button; String[] newInstrumentNumber; String[] newSerialNo; String[] newInstrumentDate; String[] surrendarReasons; private ChequeService chequeService; String bank_account_dept; private Date currentDate; Map<String, String> bankBranchMap = Collections.EMPTY_MAP; Map<String, String> billTypeMap = Collections.EMPTY_MAP; String billType; Map<String, String> bankAccountMap = Collections.EMPTY_MAP; @Autowired @Qualifier("remittanceRecoveryService") private RecoveryService recoveryService; Map<String, String> surrendarReasonMap = Collections.EMPTY_MAP; private boolean reassignSurrenderChq = false; // to overriding department Mandatory Condition only for remittance cheque assignment search private Boolean deptNonMandatory = false; private Boolean functionNonMandatory = false; private Boolean rtgsContractorAssignment = false; private String assignmentType = "BillPayment";// SalaryPayment or RemittancePayment private List<String> chequeSlNoList = new ArrayList<String>(); private Map chequeSlNoMap; Map<Bankaccount, List<ChequeAssignment>> accountNoAndRtgsEntryMap = new HashMap<Bankaccount, List<ChequeAssignment>>(); Map<BankAccountRemittanceCOA, List<ChequeAssignment>> accountNoAndRemittanceRtgsEntryMap = new HashMap<BankAccountRemittanceCOA, List<ChequeAssignment>>(); Map<String, String> rtgsdateMap = new HashMap<String, String>(); Map<String, String> rtgsRefNoMap = new HashMap<String, String>(); Map<String, Boolean> rtgsSeceltedAccMap = new HashMap<String, Boolean>(); List<ChequeAssignment> rtgsList = new LinkedList<ChequeAssignment>(); List<ChequeAssignment> viewReceiptDetailsList = new ArrayList<ChequeAssignment>(); public static final String RTGSAUTOGENERATIONNUMBERFORMAT = "000000"; private final NumberFormat ackNumberFormat = new DecimalFormat(RTGSAUTOGENERATIONNUMBERFORMAT); String bankAdviceJasperPath = "/reports/templates/bankAdviceExcelReport.jasper"; private Integer drawingOfficerId; private String drawingOfficerCode; private String billSubType; private String region; private String recoveryCode; private String paymentId; private BigDecimal totalDeductedAmount; private Boolean nonSubledger = false; private FinancialYearDAO financialYearDAO; private boolean containsRTGS = false; private List<CFinancialYear> yearCodeList; private Long departmentId; private boolean chequePrintingEnabled; private String chequePrintAvailableAt; private String instrumentHeader; private String chequeFormat; private Long instHeaderId; @Autowired private InstrumentVoucherService instrumentVoucherService; public List<String> getChequeSlNoList() { return chequeSlNoList; } public void setChequeSlNoList(final List<String> chequeSlNoList) { this.chequeSlNoList = chequeSlNoList; } public String getRtgsRefNo() { return rtgsRefNo; } public void setRtgsRefNo(final String rtgsRefNo) { this.rtgsRefNo = rtgsRefNo; } public String getRtgsDate() { return rtgsDate; } public void setRtgsDate(final String rtgsDate) { this.rtgsDate = rtgsDate; } public String getAssignmentType() { return assignmentType; } public void setAssignmentType(final String assignmentType) { this.assignmentType = assignmentType; } public boolean getReassignSurrenderChq() { return reassignSurrenderChq; } public void setReassignSurrenderChq(final boolean reassignSurrenderChq) { this.reassignSurrenderChq = reassignSurrenderChq; } public Map<String, String> getSurrendarReasonMap() { return surrendarReasonMap; } public void setSurrendarReasonMap(final Map<String, String> surrendarReasonMap) { this.surrendarReasonMap = surrendarReasonMap; } @Override public void prepare() { super.prepare(); if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepare..."); addDropdownData("bankaccountList", Collections.EMPTY_LIST); addDropdownData("regionsList", VoucherHelper.TNEB_REGIONS); chequeNoGenerationAuto = paymentService.isChequeNoGenerationAuto(); rtgsNoGenerationAuto = paymentService.isRtgsNoGenerationAuto(); typeOfAccount = FinancialConstants.TYPEOFACCOUNT_PAYMENTS + "," + FinancialConstants.TYPEOFACCOUNT_RECEIPTS_PAYMENTS; currentDate = new Date(); // overriding department Mandatory Condition only for remittance cheque assignment search if (deptNonMandatory == true) mandatoryFields.remove("department"); // overriding function Mandatory Condition only for cheque assignment search mandatoryFields.remove("function"); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepare."); } @SkipValidation @Action(value = "/payment/chequeAssignment-beforeSearch") public String beforeSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforeSearch..."); paymentMode = FinancialConstants.MODEOFPAYMENT_CHEQUE; loadBillTypeMap(); // typeOfAccount = FinancialConstants.TYPEOFACCOUNT_PAYMENTS+","+FinancialConstants.TYPEOFACCOUNT_RECEIPTS_PAYMENTS; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforeSearch."); // overriding department Mandatory Condition only for cheque assignment search mandatoryFields.remove("department"); mandatoryFields.remove("function"); deptNonMandatory = true; functionNonMandatory = true; return "search"; } @SkipValidation @Action(value = "/payment/chequeAssignment-beforeRtgsSearch") public String beforeRtgsSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforeRtgsSearch..."); paymentMode = FinancialConstants.MODEOFPAYMENT_RTGS; rtgsContractorAssignment = true; // loadBillTypeMap(); // typeOfAccount = FinancialConstants.TYPEOFACCOUNT_PAYMENTS+","+FinancialConstants.TYPEOFACCOUNT_RECEIPTS_PAYMENTS; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforeRtgsSearch."); return "rtgsSearch"; } @SkipValidation @Action(value = "/payment/chequeAssignment-beforeTNEBRtgsSearch") public String beforeTNEBRtgsSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforeRtgsSearch..."); paymentMode = FinancialConstants.MODEOFPAYMENT_RTGS; rtgsContractorAssignment = true; setTNEBMandatoryFields(); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforeRtgsSearch."); return "tnebRtgsSearch"; } private void setTNEBMandatoryFields() { billType = "Expense"; final List<String> propartyAppConfigKeysList = new ArrayList<String>(); final Map<String, String> propartyAppConfigResultList = new LinkedHashMap<String, String>(); propartyAppConfigKeysList.add(FinancialConstants.EB_VOUCHER_PROPERTY_FUND); propartyAppConfigKeysList.add(FinancialConstants.EB_VOUCHER_PROPERTY_FUNCTION); propartyAppConfigKeysList.add(FinancialConstants.EB_VOUCHER_PROPERTY_DEPARTMENT); propartyAppConfigKeysList.add(FinancialConstants.EB_VOUCHER_PROPERTY_BANKBRANCH); propartyAppConfigKeysList.add(FinancialConstants.EB_VOUCHER_PROPERTY_BANKACCOUNT); // Get App config value for (final String key : propartyAppConfigKeysList) { String value = null; try { final List<AppConfigValues> configValues = appConfigValuesService. getConfigValuesByModuleAndKey(FinancialConstants.MODULE_NAME_APPCONFIG, key); for (final AppConfigValues appConfigVal : configValues) { value = appConfigVal.getValue(); propartyAppConfigResultList.put(key, value); } } catch (final Exception e) { throw new ApplicationRuntimeException("Appconfig value for EB Voucher propartys is not defined in the system"); } } for (final String key : propartyAppConfigResultList.keySet()) { if (key.equals("EB Voucher Property-Fund")) voucherHeader.setFundId((Fund) persistenceService.find("from Fund where code = ?", propartyAppConfigResultList.get(key))); if (key.equals("EB Voucher Property-Function")) voucherHeader.getVouchermis() .setFunction( (CFunction) persistenceService.find("from CFunction where code = ?", propartyAppConfigResultList.get(key))); if (key.equals("EB Voucher Property-Department")) voucherHeader.getVouchermis().setDepartmentid( (Department) persistenceService.find("from Department where deptCode = ?", propartyAppConfigResultList.get(key))); if (key.equals("EB Voucher Property-BankBranch")) bank_branch = propartyAppConfigResultList.get(key); if (key.equals("EB Voucher Property-BankAccount")) { bank_account = propartyAppConfigResultList.get(key); final Bankaccount ba = (Bankaccount) persistenceService.find(" from Bankaccount where accountnumber=?", bank_account); if (ba.getId() != null) bankaccount = ba.getId().intValue(); } } } public void prepareBeforeRemittanceRtgsSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareBeforeRemittanceRtgsSearch..."); addDropdownData("drawingofficerList", getPersistenceService().findAllBy("from DrawingOfficer where id in" + " (select drawingOfficer.id from DepartmentDOMapping) order by code")); final List<Recovery> listRecovery = recoveryService.getAllActiveAutoRemitTds(); if (LOGGER.isDebugEnabled()) LOGGER.debug("RemitRecoveryAction | Tds list size : " + listRecovery.size()); addDropdownData("recoveryList", listRecovery); paymentMode = FinancialConstants.MODEOFPAYMENT_RTGS; rtgsContractorAssignment = true; if (deptNonMandatory == true) mandatoryFields.remove("department"); if (mandatoryFields.contains("fund")) mandatoryFields.remove("fund"); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepareBeforeRemittanceRtgsSearch."); } @SkipValidation @Action(value = "/payment/chequeAssignment-beforeRemittanceRtgsSearch") public String beforeRemittanceRtgsSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforeRemittanceRtgsSearch..."); paymentMode = FinancialConstants.MODEOFPAYMENT_RTGS; rtgsContractorAssignment = true; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforeRemittanceRtgsSearch."); return "remittanceRtgsSearch"; } @ValidationErrorPage(value = "remittanceRtgsSearch") @SkipValidation public String searchRemittanceRTGS() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting searchRemittanceRTGS..."); List<ChequeAssignment> rtgsChequeAssignmentList = null; List<ChequeAssignment> rtgsEntry = new ArrayList<ChequeAssignment>(); rtgsContractorAssignment = true; boolean addList = false; // TODO Initialize to null not new () Bankaccount bnkAcc = new Bankaccount(); new BankAccountRemittanceCOA(); // TODO Initialize to null not new () CChartOfAccounts coa = new CChartOfAccounts(); rtgsChequeAssignmentList = paymentService.getPaymentVoucherForRemittanceRTGSInstrument(parameters, voucherHeader); for (final ChequeAssignment chqAssgn : rtgsChequeAssignmentList) { BankAccountRemittanceCOA bnkAccCOA = new BankAccountRemittanceCOA(); if (accountNoAndRemittanceRtgsEntryMap.isEmpty()) { rtgsEntry = new ArrayList<ChequeAssignment>(); bnkAcc = (Bankaccount) persistenceService.find("from Bankaccount where id=?", Long.parseLong(chqAssgn.getBankAccountId().toString())); coa = (CChartOfAccounts) persistenceService.find("from CChartOfAccounts where id =?", new Long(chqAssgn .getGlcodeId().toString())); bnkAccCOA.setBankAccount(bnkAcc); bnkAccCOA.setRemittanceCOA(coa); rtgsEntry.add(chqAssgn); accountNoAndRemittanceRtgsEntryMap.put(bnkAccCOA, rtgsEntry); rtgsdateMap.put(bnkAcc.getId().toString(), formatter.format(currentDate)); } else { final Set<BankAccountRemittanceCOA> bankAccntKeySet = accountNoAndRemittanceRtgsEntryMap.keySet(); final java.util.Iterator keySetitr = bankAccntKeySet.iterator(); while (keySetitr.hasNext()) { final BankAccountRemittanceCOA bkcoa = (BankAccountRemittanceCOA) keySetitr.next(); addList = false; if (bkcoa.getBankAccount().getId().equals(Integer.parseInt(chqAssgn.getBankAccountId().toString())) && bkcoa.getRemittanceCOA().getId().toString().equals(chqAssgn.getGlcodeId().toString())) { bnkAccCOA = bkcoa; addList = false; break; } else addList = true; } if (!addList) { accountNoAndRemittanceRtgsEntryMap.get(bnkAccCOA).add(chqAssgn); } else { rtgsEntry = new ArrayList<ChequeAssignment>(); bnkAcc = (Bankaccount) persistenceService.find("from Bankaccount where id=?", Long.parseLong(chqAssgn.getBankAccountId().toString())); coa = (CChartOfAccounts) persistenceService.find("from CChartOfAccounts where id =?", new Long(chqAssgn .getGlcodeId().toString())); bnkAccCOA.setBankAccount(bnkAcc); bnkAccCOA.setRemittanceCOA(coa); rtgsEntry.add(chqAssgn); accountNoAndRemittanceRtgsEntryMap.put(bnkAccCOA, rtgsEntry); rtgsdateMap.put(bnkAcc.getId().toString(), formatter.format(currentDate)); } } } getSession().put("accountNoAndRtgsEntryMapSession", accountNoAndRemittanceRtgsEntryMap); if (0 != drawingOfficerId) { final DrawingOfficer drawingOfficer = (DrawingOfficer) persistenceService.find("from DrawingOfficer where id =?", drawingOfficerId); drawingOfficerCode = drawingOfficer.getCode(); } assignmentType = "BillPayment"; if (!"".equals(parameters.get("recoveryId")[0])) { final Recovery recovery = (Recovery) persistenceService.find("from Recovery where id=?", new Long(parameters.get("recoveryId")[0])); if (recovery.getChartofaccounts().getChartOfAccountDetails().isEmpty()) nonSubledger = true; } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed searchRemittanceRTGS."); return "searchRemittanceRtgsResult"; } @SkipValidation @Action(value = "/payment/chequeAssignment-getReceiptDetails") public String getReceiptDetails() { Query query = null; query = persistenceService.getSession() .createSQLQuery( "select vh.id as voucherid ,vh.voucherNumber as voucherNumber ," + " redtl.remittedamt as receiptAmount,redtl.remittedamt as deductedAmount" + " FROM voucherheader vh,eg_remittance re,eg_remittance_detail redtl,generalledger gl" + " WHERE re.paymentvhid = " + paymentId + " AND re.id = redtl.remittanceid AND redtl.generalledgerid = gl.id AND gl.voucherheaderid = " + " vh.id group by vh.id,vh.voucherNumber,redtl.remittedamt order by vh.voucherNumber") .addScalar("voucherid").addScalar("voucherNumber") .addScalar("receiptAmount").addScalar("deductedAmount") .setResultTransformer(Transformers.aliasToBean(ChequeAssignment.class)); viewReceiptDetailsList = query.list(); totalDeductedAmount = BigDecimal.ZERO; for (final ChequeAssignment ch : viewReceiptDetailsList) totalDeductedAmount = totalDeductedAmount.add(ch.getDeductedAmount()); return "viewReceiptDetailsResult"; } public void prepareBeforeSearchForRemittance() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareBeforeSearchForRemittance..."); paymentMode = FinancialConstants.MODEOFPAYMENT_CASH; if (getSession().get("recoveryList") == null) { final List<Recovery> listRecovery = recoveryService.getAllActiveRecoverys(); getSession().put("RecoveryList", listRecovery); } addDropdownData("recoveryList", (List) getSession().get("recoveryList")); // overriding department Mandatory Condition only for remittance cheque assignment search deptNonMandatory = true; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepareBeforeSearchForRemittance."); } public void prepareBeforeRtgsSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareBeforeRemittanceRtgsSearch..."); addDropdownData("drawingofficerList", getPersistenceService().findAllBy("from DrawingOfficer order by code")); recoveryService.getAllActiveAutoRemitTds(); if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareBeforeRtgsSearch..."); paymentMode = FinancialConstants.MODEOFPAYMENT_RTGS; rtgsContractorAssignment = true; if (deptNonMandatory == true) mandatoryFields.remove("department"); if (mandatoryFields.contains("fund")) mandatoryFields.remove("fund"); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepareBeforeRtgsSearch."); } @SkipValidation @Action(value = "/payment/chequeAssignment-beforeSearchForRemittance") public String beforeSearchForRemittance() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforeSearchForRemittance..."); paymentMode = FinancialConstants.MODEOFPAYMENT_CASH; modeOfPaymentMap = new LinkedHashMap<String, String>(); modeOfPaymentMap.put(FinancialConstants.MODEOFPAYMENT_CASH, getText("cash.consolidated.cheque")); final List<Recovery> listRecovery = recoveryService.getAllActiveRecoverys(); if (LOGGER.isDebugEnabled()) LOGGER.debug("RemitRecoveryAction | Tds list size : " + listRecovery.size()); addDropdownData("recoveryList", listRecovery); // typeOfAccount = FinancialConstants.TYPEOFACCOUNT_PAYMENTS+","+FinancialConstants.TYPEOFACCOUNT_RECEIPTS_PAYMENTS; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforeSearchForRemittance."); return "before_remittance_search"; } @ValidationErrorPage(value = "rtgsSearch") @SkipValidation @Action(value = "/payment/chequeAssignment-searchRTGS") public String searchRTGS() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting searchRTGS..."); List<ChequeAssignment> rtgsChequeAssignmentList = null; List<ChequeAssignment> dbpRtgsAssignmentList = null; List<ChequeAssignment> rtgsEntry = new ArrayList<ChequeAssignment>(); rtgsContractorAssignment = true; boolean addList = false; Bankaccount bnkAcc = new Bankaccount(); Bankaccount selBnkAcc = new Bankaccount(); Set<Bankaccount> bankAccSet = new HashSet<Bankaccount>(); ArrayList<Bankaccount> bankAccntList = new ArrayList<Bankaccount>(); ChequeAssignment obj = new ChequeAssignment(); rtgsChequeAssignmentList = paymentService.getPaymentVoucherForRTGSInstrument(parameters, voucherHeader); dbpRtgsAssignmentList = paymentService.getDirectBankPaymentVoucherForRTGSInstrument(parameters, voucherHeader); rtgsChequeAssignmentList.addAll(dbpRtgsAssignmentList); if (!paymentMode.equals(FinancialConstants.MODEOFPAYMENT_CHEQUE)) { final List<AppConfigValues> appList = appConfigValuesService.getConfigValuesByModuleAndKey(Constants.EGF, "cheque.assignment.infavourof"); inFavourOf = appList.get(0).getValue(); } chequeDt = new Date(); for (final ChequeAssignment chqAssgn : rtgsChequeAssignmentList) // to set date if (accountNoAndRtgsEntryMap.isEmpty()) { rtgsEntry = new ArrayList<ChequeAssignment>(); bnkAcc = (Bankaccount) persistenceService.find("from Bankaccount where id=?", Long.parseLong(chqAssgn.getBankAccountId().toString())); selBnkAcc = bnkAcc; rtgsEntry.add(chqAssgn); accountNoAndRtgsEntryMap.put(bnkAcc, rtgsEntry); rtgsdateMap.put(bnkAcc.getId().toString(), formatter.format(currentDate)); } else { final Set<Bankaccount> bankAccntSet = accountNoAndRtgsEntryMap.keySet(); final java.util.Iterator ir = bankAccntSet.iterator(); while (ir.hasNext()) { final Bankaccount bk = (Bankaccount) ir.next(); addList = false; if (bk.getId().compareTo(chqAssgn.getBankAccountId().longValue()) == 0) { selBnkAcc = bk; addList = false; break; } else addList = true; } if (!addList) { accountNoAndRtgsEntryMap.get(selBnkAcc).add(chqAssgn); selBnkAcc = null; } else { rtgsEntry = new ArrayList<ChequeAssignment>(); bnkAcc = (Bankaccount) persistenceService.find("from Bankaccount where id=?", Long.parseLong(chqAssgn.getBankAccountId().toString())); selBnkAcc = bnkAcc; rtgsEntry.add(chqAssgn); accountNoAndRtgsEntryMap.put(selBnkAcc, rtgsEntry); rtgsdateMap.put(bnkAcc.getId().toString(), formatter.format(currentDate)); selBnkAcc = null; } } getSession().put("accountNoAndRtgsEntryMapSession", accountNoAndRtgsEntryMap); // getSession().put("voucherIdOwnerNameMap", voucherIDOwnerNameMap); // chequeAssignmentList=rtgsChequeAssignmentList; // if(LOGGER.isInfoEnabled()) LOGGER.info("rtgsChequeAssignmentList>>>>>"+rtgsdateMap); assignmentType = "BillPayment"; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed searchRTGS."); return "searchRtgsResult"; } @SkipValidation public String searchTNEBRTGS() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting searchTNEBRTGS..."); List<ChequeAssignment> rtgsChequeAssignmentList = null; List<ChequeAssignment> rtgsEntry = new ArrayList<ChequeAssignment>(); rtgsContractorAssignment = true; boolean addList = false; Bankaccount bnkAcc = new Bankaccount(); Bankaccount selBnkAcc = new Bankaccount(); new HashSet<Bankaccount>(); new ArrayList<Bankaccount>(); new ChequeAssignment(); rtgsChequeAssignmentList = paymentService.getPaymentVoucherForTNEBRTGSInstrument(parameters, voucherHeader); chequeDt = new Date(); for (final ChequeAssignment chqAssgn : rtgsChequeAssignmentList) // to set date if (accountNoAndRtgsEntryMap.isEmpty()) { rtgsEntry = new ArrayList<ChequeAssignment>(); bnkAcc = (Bankaccount) persistenceService.find("from Bankaccount where id=?", Long.parseLong(chqAssgn.getBankAccountId().toString())); selBnkAcc = bnkAcc; rtgsEntry.add(chqAssgn); accountNoAndRtgsEntryMap.put(bnkAcc, rtgsEntry); rtgsdateMap.put(bnkAcc.getId().toString(), formatter.format(currentDate)); } else { final Set<Bankaccount> bankAccntSet = accountNoAndRtgsEntryMap.keySet(); final java.util.Iterator ir = bankAccntSet.iterator(); while (ir.hasNext()) { final Bankaccount bk = (Bankaccount) ir.next(); addList = false; if (bk.getId().equals(Integer.parseInt(chqAssgn.getBankAccountId().toString()))) { selBnkAcc = bk; addList = false; break; } else addList = true; } if (!addList) { accountNoAndRtgsEntryMap.get(selBnkAcc).add(chqAssgn); selBnkAcc = null; } else { rtgsEntry = new ArrayList<ChequeAssignment>(); bnkAcc = (Bankaccount) persistenceService.find("from Bankaccount where id=?", Long.parseLong(chqAssgn.getBankAccountId().toString())); selBnkAcc = bnkAcc; rtgsEntry.add(chqAssgn); accountNoAndRtgsEntryMap.put(selBnkAcc, rtgsEntry); rtgsdateMap.put(bnkAcc.getId().toString(), formatter.format(currentDate)); selBnkAcc = null; } } getSession().put("accountNoAndRtgsEntryMapSession", accountNoAndRtgsEntryMap); assignmentType = "BillPayment"; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed searchRTGS."); return "searchRtgsResult"; } @ValidationErrorPage(value = "search") @Action(value = "/payment/chequeAssignment-search") public String search() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting search..."); chequeSlNoMap = loadChequeSerialNo(bankaccount); chequeAssignmentList = paymentService.getPaymentVoucherNotInInstrument(parameters, voucherHeader); if (!paymentMode.equals(FinancialConstants.MODEOFPAYMENT_CHEQUE)) { chequeDt = new Date(); final List<AppConfigValues> appList = appConfigValuesService.getConfigValuesByModuleAndKey(Constants.EGF, "cheque.assignment.infavourof"); inFavourOf = appList.get(0).getValue(); } loadBankAndAccount(); if (LOGGER.isInfoEnabled()) LOGGER.info("" + reassignSurrenderChq); assignmentType = "BillPayment"; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed search."); return "searchpayment"; } @SuppressWarnings("unchecked") private Map<String, String> loadChequeSerialNo(final Integer acc) { chequeSlNoMap = new LinkedHashMap<String, String>(); try { if (bankaccount != null) { if (department != null) { final List<Object[]> yearCodeList = persistenceService .findAllBy( "select ac.serialNo ,fs.finYearRange from AccountCheques ac,CFinancialYear fs,ChequeDeptMapping cd where ac.serialNo = fs.id and bankAccountId=?" + "and ac.id=cd.accountCheque and cd.allotedTo=(select id from Department where id = " + department + ")" + " order by serialNo desc ", bankaccount); if (yearCodeList != null) { for (final Object[] s : yearCodeList) chequeSlNoMap.put(s[0], s[1]); } } else if (departmentId != null) { final List<Object[]> yearCodeList = persistenceService .findAllBy( "select ac.serialNo ,fs.finYearRange from AccountCheques ac,CFinancialYear fs,ChequeDeptMapping cd where ac.serialNo = fs.id and bankAccountId=?" + "and ac.id=cd.accountCheque and cd.allotedTo=(select id from Department where id = " + departmentId + ")" + " order by serialNo desc ", bankaccount); if (yearCodeList != null) { for (final Object[] s : yearCodeList) chequeSlNoMap.put(s[0], s[1]); } } else { final List<Object[]> yearCodeList = persistenceService .findAllBy( "select ac.serialNo ,fs.finYearRange from AccountCheques ac,CFinancialYear fs,ChequeDeptMapping cd where ac.serialNo = fs.id and bankAccountId=?" + "and ac.id=cd.accountCheque and cd.allotedTo=(select id from Department where upper(name) = 'ACCOUNTS')" + " order by serialNo desc ", bankaccount); if (yearCodeList != null) { for (final Object[] s : yearCodeList) chequeSlNoMap.put(s[0], s[1]); } } } } catch (final HibernateException e) { LOGGER.error("Exception occured while getting year code " + e.getMessage(), new HibernateException(e.getMessage())); } catch (final Exception e) { LOGGER.error("Exception occured while getting year code " + e.getMessage(), new HibernateException(e.getMessage())); } return chequeSlNoMap; } public Map getChequeSlNoMap() { return chequeSlNoMap; } public void setChequeSlNoMap(final Map chequeSlNoMap) { this.chequeSlNoMap = chequeSlNoMap; } public void prepareSearchChequesOfRemittance() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareSearchChequesOfRemittance..."); beforeSearchForRemittance(); assignmentType = "RemittancePayment"; mandatoryFields.add(Constants.RECOVERY); // overriding department Mandatory Condition only for remittance cheque assignment search deptNonMandatory = true; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepareSearchChequesOfRemittance."); } @ValidationErrorPage(value = "before_salary_search") public String searchForSalaryPayments() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting searchForSalaryPayments..."); voucherHeader.setName(FinancialConstants.PAYMENTVOUCHER_NAME_SALARY); loadChequeSerialNo(bankaccount); chequeAssignmentList = paymentService.getPaymentVoucherNotInInstrument(parameters, voucherHeader); if (LOGGER.isInfoEnabled()) LOGGER.info("" + reassignSurrenderChq); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed searchForSalaryPayments."); return "searchsalpayment"; } @ValidationErrorPage(value = "before_pension_search") public String searchForPensionPayments() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting searchForPensionPayments..."); voucherHeader.setName(FinancialConstants.PAYMENTVOUCHER_NAME_PENSION); loadChequeSerialNo(bankaccount); chequeAssignmentList = paymentService.getPaymentVoucherNotInInstrument(parameters, voucherHeader); if (LOGGER.isInfoEnabled()) LOGGER.info("" + reassignSurrenderChq); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed searchForSalaryPayments."); return "searchpensionpayment"; } @SkipValidation @Action(value = "/payment/chequeAssignment-beforeSalarySearch") public String beforeSalarySearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforeSalarySearch..."); modeOfPaymentMap = new LinkedHashMap<String, String>(); modeOfPaymentMap.put(FinancialConstants.MODEOFPAYMENT_CASH, getText("cash.consolidated.cheque")); modeOfPaymentMap.put(FinancialConstants.MODEOFPAYMENT_RTGS, getText("rtgs")); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforeSalarySearch."); return "before_salary_search"; } @SkipValidation @Action(value = "/payment/chequeAssignment-beforePensionSearch") public String beforePensionSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforePensionSearch..."); modeOfPaymentMap = new LinkedHashMap<String, String>(); modeOfPaymentMap.put(FinancialConstants.MODEOFPAYMENT_CASH, getText("cash.consolidated.cheque")); modeOfPaymentMap.put(FinancialConstants.MODEOFPAYMENT_RTGS, getText("rtgs")); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforePensionSearch."); return "before_pension_search"; } public void prepareBeforeSalarySearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareBeforeSalarySearch..."); paymentMode = FinancialConstants.MODEOFPAYMENT_CASH; deptNonMandatory = true; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepareBeforeSalarySearch."); } public void prepareBeforePensionSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareBeforePensionSearch..."); paymentMode = FinancialConstants.MODEOFPAYMENT_CASH; deptNonMandatory = true; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepareBeforePensionSearch."); } public void prepareSearchForSalaryPayments() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareSearchForSalaryPayments..."); beforeSalarySearch(); deptNonMandatory = true; assignmentType = "SalaryPayment"; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepareSearchForSalaryPayments."); } public void prepareSearchForPensionPayments() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting prepareSearchForPensionPayments..."); beforePensionSearch(); deptNonMandatory = true; assignmentType = "PensionPayment"; if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed prepareSearchForPensionPayments."); } @ValidationErrorPage(value = "before_remittance_search") @Action(value = "/payment/chequeAssignment-searchChequesOfRemittance") public String searchChequesOfRemittance() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting searchChequesOfRemittance..."); final Recovery recovery = (Recovery) persistenceService.find("from Recovery where id=?", recoveryId); voucherHeader.setType(FinancialConstants.STANDARD_VOUCHER_TYPE_PAYMENT); voucherHeader.setName(FinancialConstants.PAYMENTVOUCHER_NAME_REMITTANCE); loadChequeSerialNo(bankaccount); chequeAssignmentList = paymentService.getPaymentVoucherNotInInstrument(parameters, voucherHeader); inFavourOf = recovery.getRemitted(); loadBankAndAccount(); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed searchChequesOfRemittance."); return "searchremittance"; } private void loadBankAndAccount() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting loadBankAndAccount..."); if (voucherHeader.getFundId() != null) { setTypeOfAccount(typeOfAccount); bankbranchList = bankService.getPaymentApprovedBankAndBranchName(voucherHeader.getFundId().getId(), currentDate); addDropdownData("bankbranchList", bankbranchList); bankBranchMap = new LinkedHashMap<>(); for (final Map mp : bankbranchList) bankBranchMap.put((String) mp.get("bankBranchId"), (String) mp.get("bankBranchName")); } if (getBankbranch() != null) { setTypeOfAccount(typeOfAccount); addDropdownData("bankaccountList", bankAccountService.getBankaccountsHasApprovedPayment(voucherHeader.getFundId().getId(), getBankbranch())); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed loadBankAndAccount."); } @ValidationErrorPage(value = "searchRtgsResult") @SkipValidation @Action(value = "/payment/chequeAssignment-update") public String update() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Start createInstrumentForRTGS"); Map<String, List<ChequeAssignment>> resultMap = new HashMap<String, List<ChequeAssignment>>(); instHeaderList = new ArrayList<InstrumentHeader>(); try { // validateData(); resultMap = prepareMapForRTGS(); if (!getFieldErrors().isEmpty()) { // searchRTGS(); accountNoAndRtgsEntryMap = (Map<Bankaccount, List<ChequeAssignment>>) getSession().get( "accountNoAndRtgsEntryMapSession"); return "searchRtgsResult"; } createRtgsAssignment(resultMap); } catch (final ValidationException e) { searchRTGS(); LOGGER.error(e.getMessage()); final List<ValidationError> errors = new ArrayList<ValidationError>(); errors.add(new ValidationError("exp", e.getMessage())); throw new ValidationException(e.getErrors()); } catch (final Exception e) { // searchRTGS(); LOGGER.error(e.getMessage()); final List<ValidationError> errors = new ArrayList<ValidationError>(); errors.add(new ValidationError("exp", e.getMessage())); throw new ValidationException(errors); } addActionMessage(getMessage("rtgs.transaction.success")); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed createInstrument."); return "viewRtgs"; } @ValidationErrorPage(value = "searchpayment") @SkipValidation @Action(value = "/payment/chequeAssignment-create") public String create() throws ApplicationException { final List<AppConfigValues> printAvailConfig = appConfigValuesService. getConfigValuesByModuleAndKey(FinancialConstants.MODULE_NAME_APPCONFIG, "chequeprintavailableat"); chequePrintingEnabled = isChequePrintEnabled(); for (final AppConfigValues appConfigVal : printAvailConfig) chequePrintAvailableAt = appConfigVal.getValue(); if (chequePrintAvailableAt == null) chequePrintAvailableAt = ""; Bankaccount bankAccount = new Bankaccount(); if (bankaccount != null && bankaccount.equals("")) { bankAccount = (Bankaccount) persistenceService.find("from Bankaccount where id=?", bankaccount.longValue()); if (bankAccount.getChequeformat() != null && !bankAccount.getChequeformat().equals("")) { chequeFormat = bankAccount.getChequeformat().getId().toString(); } } if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting createInstrument..."); loadChequeSerialNo(bankaccount); try { validateData(); if (reassignSurrenderChq || !isChequeNoGenerationAuto()) validateDataForManual(); if (getFieldErrors().isEmpty()) { if (reassignSurrenderChq && !paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) instHeaderList = chequeAssignmentHelper.reassignInstrument(chequeAssignmentList, paymentMode, bankaccount, parameters, voucherHeader.getVouchermis().getDepartmentid()); else instHeaderList = chequeAssignmentHelper.createInstrument(chequeAssignmentList, paymentMode, bankaccount, parameters, voucherHeader.getVouchermis().getDepartmentid()); selectedRows = paymentService.selectedRows; if (paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) addActionMessage(getMessage("rtgs.transaction.success")); else addActionMessage(getMessage("chq.assignment.transaction.success")); instVoucherList = paymentService.getInstVoucherList(); } else { loadChequeSerialNo(bankaccount); return "searchpayment"; } } catch (final ValidationException e) { final List<ValidationError> errors = new ArrayList<ValidationError>(); errors.add(new ValidationError("exp", e.getErrors().get(0).getMessage())); throw new ValidationException(errors); } catch (final Exception e) { final List<ValidationError> errors = new ArrayList<ValidationError>(); errors.add(new ValidationError("exp", e.getMessage())); throw new ValidationException(errors); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed createInstrument."); return "view"; } private void createRtgsAssignment(final Map<String, List<ChequeAssignment>> resultMap) throws Exception { instVoucherList = new ArrayList<InstrumentVoucher>(); // InstrumentHeader instHeaderObj=new InstrumentHeader(); // InstrumentVoucher instVoucherObj=new InstrumentVoucher(); instVoucherDisplayList = new ArrayList<InstrumentHeader>(); for (final Entry<String, List<ChequeAssignment>> row : resultMap.entrySet()) if (row.getKey() != null) if (getRtgsSeceltedAccMap().get(row.getKey()) != null && getRtgsSeceltedAccMap().get(row.getKey())) { if (isRtgsNoGenerationAuto()) { final String[] dateArray = new String[] { getRtgsdateMap().get(row.getKey()) }; // LOGGER.debug(dateArray); Date rtgsdate = null; final Date autoNoCutOffDate = FinancialConstants.RTGS_FINYEAR_WISE_ROLLING_SEQ_CUTOFF_DATE; String rtgsNo = ""; if (dateArray[0] != null) { final String date = dateArray[0]; // LOGGER.debug(date); rtgsdate = formatter.parse(date); // LOGGER.debug(rtgsdate); } final String finYearRange = financialYearDAO.getFinancialYearByDate(rtgsdate).getFinYearRange(); RtgsNumberGenerator r = (RtgsNumberGenerator) beanResolver .getAutoNumberServiceFor(RtgsNumberGenerator.class); if (null == autoNoCutOffDate || rtgsdate.after(autoNoCutOffDate)) { rtgsNo = r.getNextNumber("RTGS_RefNumber_" + finYearRange.replace('-', '_')); rtgsNo = rtgsNo + "/" + finYearRange; } else rtgsNo = r.getNextNumber("RTGS_RefNumber"); // LOGGER.debug(rtgsNo); final String[] refNoArray = new String[] { rtgsNo }; parameters.put("rtgsRefNo", refNoArray); } else { final String[] refNoArray = new String[] { getRtgsRefNoMap().get(row.getKey()) }; parameters.put("rtgsRefNo", refNoArray); } final String[] dateArray = new String[] { getRtgsdateMap().get(row.getKey()) }; parameters.put("rtgsDate", dateArray); chequeAssignmentList = resultMap.get(row.getKey()); bankaccount = Integer.parseInt(row.getKey()); paymentService.createInstrument(chequeAssignmentList, paymentMode, bankaccount, parameters, voucherHeader .getVouchermis().getDepartmentid()); instVoucherList.addAll(paymentService.getInstVoucherList()); List<InstrumentVoucher> tempInstVoucherList = new ArrayList<InstrumentVoucher>(); for (InstrumentVoucher iv : instVoucherList) { Paymentheader payment = paymentService.getPaymentHeaderByVoucherHeaderId(iv.getVoucherHeaderId().getId()); iv.setPaymentAmount(payment.getPaymentAmount().setScale(2, BigDecimal.ROUND_HALF_EVEN)); tempInstVoucherList.add(iv); } instVoucherList = new ArrayList<InstrumentVoucher>(); instVoucherList = tempInstVoucherList; // if(LOGGER.isInfoEnabled()) LOGGER.info("addded instrunment"+instList); } } private Map<String, List<ChequeAssignment>> prepareMapForRTGS() throws ParseException { ArrayList<ChequeAssignment> rtgsEntry; final List<ChequeAssignment> ContractorbillList = new ArrayList<ChequeAssignment>(); new ArrayList<ChequeAssignment>(); new ArrayList<ChequeAssignment>(); Date rtgsdate = null; final Map<String, List<ChequeAssignment>> resultMap = new HashMap<String, List<ChequeAssignment>>(); new ArrayList<InstrumentHeader>(); // if(expType==null || expType.equals("-1") || expType.equals("Purchase")) Works // FinancialConstants.STANDARD_EXPENDITURETYPE_CONTINGENT for (final ChequeAssignment chqAssgn : rtgsList) if (resultMap.isEmpty()) { rtgsEntry = new ArrayList<ChequeAssignment>(); rtgsEntry.add(chqAssgn); if (chqAssgn.getBankAccountId() != null && !"".equals(chqAssgn.getBankAccountId())) resultMap.put(chqAssgn.getBankAccountId().toString(), rtgsEntry); if (chqAssgn.getIsSelected()) { rtgsSeceltedAccMap.put(chqAssgn.getBankAccountId().toString(), true); if (chqAssgn.getExpenditureType() != null && !"".equals(chqAssgn.getExpenditureType())) if (chqAssgn.getExpenditureType().equalsIgnoreCase("Works")) ContractorbillList.add(chqAssgn); rtgsdate = Constants.DDMMYYYYFORMAT2.parse(getRtgsdateMap().get(chqAssgn.getBankAccountId().toString())); if (chqAssgn.getVoucherDate().compareTo(rtgsdate) > 0) addFieldError("rtgs.date.less.than.payment.date", " RTGS Date cannot be less than Payment Date." + chqAssgn.getVoucherNumber()); } } else if (resultMap.containsKey(chqAssgn.getBankAccountId().toString())) { resultMap.get(chqAssgn.getBankAccountId().toString()).add(chqAssgn); if (chqAssgn.getIsSelected()) { rtgsSeceltedAccMap.put(chqAssgn.getBankAccountId().toString(), true); if (chqAssgn.getExpenditureType() != null && !"".equals(chqAssgn.getExpenditureType())) if (chqAssgn.getExpenditureType().equalsIgnoreCase("Works")) ContractorbillList.add(chqAssgn); rtgsdate = Constants.DDMMYYYYFORMAT2.parse(getRtgsdateMap().get(chqAssgn.getBankAccountId().toString())); if (chqAssgn.getVoucherDate().compareTo(rtgsdate) > 0) addFieldError("rtgs.date.less.than.payment.date", "RTGS Date cannot be less than Payment Date." + chqAssgn.getVoucherNumber()); } } else { rtgsEntry = new ArrayList<ChequeAssignment>(); rtgsEntry.add(chqAssgn); resultMap.put(chqAssgn.getBankAccountId().toString(), rtgsEntry); if (chqAssgn.getIsSelected()) { rtgsSeceltedAccMap.put(chqAssgn.getBankAccountId().toString(), true); if (chqAssgn.getExpenditureType() != null && !"".equals(chqAssgn.getExpenditureType())) if (chqAssgn.getExpenditureType().equalsIgnoreCase("Works")) ContractorbillList.add(chqAssgn); rtgsdate = Constants.DDMMYYYYFORMAT2.parse(getRtgsdateMap().get(chqAssgn.getBankAccountId().toString())); if (chqAssgn.getVoucherDate().compareTo(rtgsdate) > 0) addFieldError("rtgs.date.less.than.payment.date", "RTGS Date cannot be less than Payment Date." + chqAssgn.getVoucherNumber()); } } try { paymentService.validatePaymentForRTGSAssignment(ContractorbillList, "Contractor"); // paymentService.validatePaymentForRTGSAssignment(SupplierbillList,"Supplier") ; // paymentService.validatePaymentForRTGSAssignment(ContingentbillList,FinancialConstants.STANDARD_EXPENDITURETYPE_CONTINGENT) // ; } catch (final ValidationException e) { accountNoAndRtgsEntryMap = (Map<Bankaccount, List<ChequeAssignment>>) getSession().get("accountNoAndRtgsEntryMap"); addFieldError("rtgs.payment.mandatory.details.missing", e.getErrors().get(0).getMessage()); // getMessage("rtgs.payment.mandatory.details.missing")); } catch (final ApplicationException e) { accountNoAndRtgsEntryMap = (Map<Bankaccount, List<ChequeAssignment>>) getSession().get("accountNoAndRtgsEntryMap"); addFieldError("rtgs.payment.mandatory.details.missing", e.getMessage()); } return resultMap; } @ValidationErrorPage(value = "searchsalpayment") @SkipValidation public String createInstrumentForSalaryPayment() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting createInstrumentForSalaryPayment..."); // loadBankAndAccount(); loadChequeSerialNo(bankaccount); try { validateData(); if (reassignSurrenderChq || !isChequeNoGenerationAuto()) validateDataForManual(); if (getFieldErrors().isEmpty()) { if (reassignSurrenderChq && !paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) instHeaderList = paymentService.reassignInstrument(chequeAssignmentList, paymentMode, bankaccount, parameters, voucherHeader.getVouchermis().getDepartmentid()); else instHeaderList = paymentService.createInstrument(chequeAssignmentList, paymentMode, bankaccount, parameters, voucherHeader.getVouchermis().getDepartmentid()); selectedRows = paymentService.selectedRows; if (paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) addActionMessage(getMessage("rtgs.transaction.success")); else addActionMessage(getMessage("chq.assignment.transaction.success")); instVoucherList = paymentService.getInstVoucherList(); // if(paymentMode.equals(FinancialConstants.MODEOFPAYMENT_RTGS)) // return "bankadvice"; } else { loadChequeSerialNo(bankaccount); return "searchsalpayment"; } } catch (final ValidationException e) { throw new ValidationException(e.getErrors()); } catch (final Exception e) { LOGGER.error(e.getMessage()); final List<ValidationError> errors = new ArrayList<ValidationError>(); errors.add(new ValidationError("exp", e.getMessage())); throw new ValidationException(errors); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed createInstrumentForSalaryPayment."); if (paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) { prepareBeforeSalarySearch(); beforeSalarySearch(); mandatoryFields.remove("department"); return "before_salary_search"; } else return "view"; } @ValidationErrorPage(value = "searchpensionpayment") @SkipValidation public String createInstrumentForPensionPayment() throws ApplicationException, ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting createInstrumentForPensionPayment..."); // loadBankAndAccount(); loadChequeSerialNo(bankaccount); try { validateData(); if (reassignSurrenderChq || !isChequeNoGenerationAuto()) validateDataForManual(); if (getFieldErrors().isEmpty()) { if (reassignSurrenderChq && !paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) instHeaderList = paymentService.reassignInstrument(chequeAssignmentList, paymentMode, bankaccount, parameters, voucherHeader.getVouchermis().getDepartmentid()); else instHeaderList = paymentService.createInstrument(chequeAssignmentList, paymentMode, bankaccount, parameters, voucherHeader.getVouchermis().getDepartmentid()); selectedRows = paymentService.selectedRows; if (paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) addActionMessage(getMessage("rtgs.transaction.success")); else addActionMessage(getMessage("chq.assignment.transaction.success")); instVoucherList = paymentService.getInstVoucherList(); // if(paymentMode.equals(FinancialConstants.MODEOFPAYMENT_RTGS)) // return "bankadvice"; } else { loadChequeSerialNo(bankaccount); return "searchpensionpayment"; } } catch (final ValidationException e) { throw new ValidationException(e.getErrors()); } catch (final Exception e) { LOGGER.error(e.getMessage()); final List<ValidationError> errors = new ArrayList<ValidationError>(); errors.add(new ValidationError("exp", e.getMessage())); throw new ValidationException(errors); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed createInstrumentForPensionPayment."); if (paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) { prepareBeforePensionSearch(); beforePensionSearch(); mandatoryFields.remove("department"); return "before_pension_search"; } else return "view"; } public void generateAdvice() throws Exception { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting generateAdvice..."); BankAdviceForm baf; EntityType entity = null; String voucherno = ""; final InstrumentHeader instrumentHeader = (InstrumentHeader) persistenceService.find("from InstrumentHeader where id=?", Long.valueOf(parameters.get("instHeaderId")[0])); for (final InstrumentVoucher instrumentVoucher : instrumentHeader.getInstrumentVouchers()) { final Object[] obj = (Object[]) persistenceService .find(" select gld.detailTypeId.id,gld.detailKeyId,gld.amount from CGeneralLedgerDetail gld,CGeneralLedger gl where gl.id=gld.generalLedgerId.id and gl.voucherHeaderId=?", instrumentVoucher.getVoucherHeaderId()); if (obj != null) { entity = paymentService.getEntity((Integer) obj[0], (Serializable) obj[1]); baf = new BankAdviceForm(); baf.setContractorCode(entity.getCode()); baf.setContractorName(entity.getName()); baf.setBankName(entity.getBankname()); baf.setBankAccountNo(entity.getBankaccount()); baf.setIfscCode(entity.getIfsccode()); baf.setNetAmount((BigDecimal) obj[2]); voucherno = voucherno + instrumentVoucher.getVoucherHeaderId().getVoucherNumber() + ","; adviceList.add(baf); } } if (adviceList.size() != 0) { voucherno = voucherno.substring(0, voucherno.length() - 1); paramMap.put("chequeNo", instrumentHeader.getInstrumentNumber()); paramMap.put("chequeDate", paymentService.formatter.format(instrumentHeader.getInstrumentDate())); paramMap.put("pymtVhNo", voucherno); paramMap.put("inFavourOf", instrumentHeader.getPayTo()); paramMap.put("pymtBank", instrumentHeader.getBankAccountId().getBankbranch().getBank().getName() + "-" + instrumentHeader.getBankAccountId().getBankbranch().getBranchname()); paramMap.put("pymtAcNo", instrumentHeader.getBankAccountId().getAccountnumber()); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed generateAdvice."); } public void validateData() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting validateData..."); // rtgsContractorAssignment is true only for rtgs assignment for asstbudget user if (paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) { if (!rtgsContractorAssignment) { if (rtgsRefNo == null || rtgsRefNo.equalsIgnoreCase("")) addFieldError("rtgsrefno", getMessage("rtgs.refno.empty")); if (rtgsDate == null || rtgsDate.equalsIgnoreCase("")) addFieldError("rtgsdate", getMessage("rtgs.date.empty")); } return; } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed validateData."); checkMandatory("vouchermis.departmentid", Constants.DEPARTMENT, voucherHeader.getVouchermis().getDepartmentid(), "voucher.department.mandatory"); } @SkipValidation @Action(value = "/payment/chequeAssignment-beforeSearchForSurrender") public String beforeSearchForSurrender() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforeSearchForSurrender..."); addDropdownData("bankaccountList", Collections.EMPTY_LIST); loadBankAndAccounForSurender(); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforeSearchForSurrender."); return SURRENDERSEARCH; } @SkipValidation @Action(value = "/payment/chequeAssignment-beforeSearchForRTGSSurrender") public String beforeSearchForRTGSSurrender() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting beforeSearchForSurrender..."); addDropdownData("bankaccountList", Collections.EMPTY_LIST); loadBankAndAccounForRTGSSurender(); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed beforeSearchForSurrender."); return SURRENDERRTGSSEARCH; } @SkipValidation @ValidationErrorPage(value = SURRENDERSEARCH) @Action(value = "/payment/chequeAssignment-searchChequesForSurrender") public String searchChequesForSurrender() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting searchChequesForSurrender..."); validateForSuurenderSearch(); if (getFieldErrors().size() > 0) { if (bank_branch != null && !bank_branch.equals("-1")) addDropdownData( "bankaccountList", persistenceService.findAllBy(" from Bankaccount where bankbranch.id=? and isactive=true ", Integer.valueOf(bank_branch.split("-")[1]))); loadReasonsForSurrendaring(); return beforeSearchForSurrender(); } final StringBuffer sql = new StringBuffer(); try { if (!"".equals(fromDate)) sql.append(" and iv.voucherHeaderId.voucherDate>='" + sdf.format(formatter.parse(fromDate)) + "' "); if (!"".equals(toDate)) sql.append(" and iv.voucherHeaderId.voucherDate<='" + sdf.format(formatter.parse(toDate)) + "'"); if (bankaccount != null && bankaccount != -1) sql.append(" and ih.bankAccountId.id=" + bankaccount); if (instrumentNumber != null && !instrumentNumber.isEmpty()) sql.append(" and ih.instrumentNumber='" + instrumentNumber + "'"); if (department != null && department != -1) sql.append(" and iv.voucherHeaderId.vouchermis.departmentid.id=" + department); if (voucherHeader.getVoucherNumber() != null && !voucherHeader.getVoucherNumber().isEmpty()) sql.append(" and iv.voucherHeaderId.voucherNumber='" + voucherHeader.getVoucherNumber() + "'"); final String mainquery = "select ih from InstrumentVoucher iv ,InstrumentHeader ih ,InstrumentType it where iv.instrumentHeaderId.id =ih.id and ih.instrumentNumber is not null and ih.instrumentType=it.id and ( it.type = 'cheque' or it.type = 'cash' ) and iv.voucherHeaderId.status=0 and iv.voucherHeaderId.type='" + FinancialConstants.STANDARD_VOUCHER_TYPE_PAYMENT + "' " + sql + " " + " and ih.statusId.id in (?) order by iv.voucherHeaderId.voucherDate"; final EgwStatus created = instrumentService.getStatusId(FinancialConstants.INSTRUMENT_CREATED_STATUS); instrumentHeaderList = persistenceService.findAllBy(mainquery, created.getId()); final LinkedHashSet lhs = new LinkedHashSet(); lhs.addAll(instrumentHeaderList); instrumentHeaderList.clear(); instrumentHeaderList.addAll(lhs); instrumentVoucherList = new ArrayList<InstrumentVoucher>(); for (final InstrumentHeader ih : instrumentHeaderList) instrumentVoucherList.addAll(ih.getInstrumentVouchers()); getSession().put("instrumentVoucherList", instrumentVoucherList); getSession().put("instrumentHeaderList", instrumentHeaderList); if (instrumentVoucherList.size() > 0) { loadReasonsForSurrendaring(); loadChequeSerialNo(bankaccount); } } catch (final ParseException e) { LOGGER.error(e.getMessage()); throw new ValidationException(Arrays.asList(new ValidationError("Unparsable Date", "Unparsable Date"))); } getheader(); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed searchChequesForSurrender."); containsRTGS = false; return "surrendercheques"; } @SkipValidation @ValidationErrorPage(value = SURRENDERRTGSSEARCH) @Action(value = "/payment/chequeAssignment-searchForRTGSSurrender") public String searchForRTGSSurrender() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting searchRTGSForSurrender..."); validateForSuurenderSearch(); if (getFieldErrors().size() > 0) { if (bank_branch != null && !bank_branch.equals("-1")) addDropdownData( "bankaccountList", persistenceService.findAllBy(" from Bankaccount where bankbranch.id=? and isactive=true ", Integer.valueOf(bank_branch.split("-")[1]))); loadReasonsForSurrendaring(); return beforeSearchForRTGSSurrender(); } final StringBuffer sql = new StringBuffer(); try { if (!"".equals(fromDate)) sql.append(" and iv.voucherHeaderId.voucherDate>='" + sdf.format(formatter.parse(fromDate)) + "' "); if (!"".equals(toDate)) sql.append(" and iv.voucherHeaderId.voucherDate<='" + sdf.format(formatter.parse(toDate)) + "'"); if (bankaccount != null && bankaccount != -1) sql.append(" and ih.bankAccountId.id=" + bankaccount); if (instrumentNumber != null && !instrumentNumber.isEmpty()) sql.append(" and ih.transactionNumber='" + instrumentNumber + "'"); if (department != null && department != -1) sql.append(" and iv.voucherHeaderId.vouchermis.departmentid.id=" + department); if (voucherHeader.getVoucherNumber() != null && !voucherHeader.getVoucherNumber().isEmpty()) sql.append(" and iv.voucherHeaderId.voucherNumber='" + voucherHeader.getVoucherNumber() + "'"); final String mainquery = "select ih from InstrumentVoucher iv,InstrumentHeader ih ,InstrumentType it where iv.instrumentHeaderId.id =ih.id and ih.transactionNumber is not null and ih.instrumentType=it.id and it.type = 'advice' and iv.voucherHeaderId.status=0 and iv.voucherHeaderId.type='" + FinancialConstants.STANDARD_VOUCHER_TYPE_PAYMENT + "' " + sql + " " + " and ih.statusId.id in (?) order by iv.voucherHeaderId.voucherDate"; final EgwStatus created = instrumentService.getStatusId(FinancialConstants.INSTRUMENT_CREATED_STATUS); instrumentHeaderList = persistenceService.findAllBy(mainquery, created.getId()); final LinkedHashSet lhs = new LinkedHashSet(); lhs.addAll(instrumentHeaderList); instrumentHeaderList.clear(); instrumentHeaderList.addAll(lhs); instrumentVoucherList = new ArrayList<InstrumentVoucher>(); for (final InstrumentHeader ih : instrumentHeaderList) instrumentVoucherList.addAll(ih.getInstrumentVouchers()); getSession().put("instrumentVoucherList", instrumentVoucherList); getSession().put("instrumentHeaderList", instrumentHeaderList); if (instrumentVoucherList.size() > 0) loadReasonsForSurrendaring(); loadChequeSerialNo(bankaccount); } catch (final ParseException e) { LOGGER.error(e.getMessage()); throw new ValidationException(Arrays.asList(new ValidationError("Unparsable Date", "Unparsable Date"))); } getheader(); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed searchRTGSForSurrender."); return "surrenderRTGS"; } /** * */ private void loadReasonsForSurrendaring() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting loadReasonsForSurrendaring..."); List<AppConfigValues> appConfigValuesList; surrendarReasonMap = new LinkedHashMap<String, String>(); appConfigValuesList = appConfigValuesService.getConfigValuesByModuleAndKey("EGF", "Reason For Cheque Surrendaring"); for (final AppConfigValues app : appConfigValuesList) { final String value = app.getValue(); if (app.getValue().indexOf('|') != -1) surrendarReasonMap.put(app.getValue(), value.substring(0, app.getValue().indexOf('|'))); else surrendarReasonMap.put(app.getValue(), app.getValue()); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed loadReasonsForSurrendaring."); } /** * */ private void loadBankAndAccounForSurender() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting loadBankAndAccounForSurender..."); setTypeOfAccount(typeOfAccount); addDropdownData("bankbranchList", bankService.getChequeAssignedBankAndBranchName(currentDate)); if (getBankbranch() != null) { addDropdownData("bankaccountList", bankAccountService.getBankaccountsWithAssignedCheques(getBankbranch(), null, currentDate)); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed loadBankAndAccounForSurender."); } private void loadBankAndAccounForRTGSSurender() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting loadBankAndAccounForSurender..."); setTypeOfAccount(typeOfAccount); addDropdownData("bankbranchList", bankService.getRTGSAssignedBankAndBranchName(currentDate)); if (getBankbranch() != null) { addDropdownData("bankaccountList", bankAccountService.getBankaccountsWithAssignedRTGS(getBankbranch(), currentDate)); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed loadBankAndAccounForSurender."); } /** * */ private void getheader() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting getheader..."); final Bankaccount account = (Bankaccount) persistenceService.find("from Bankaccount where id=?", bankaccount.longValue()); bank_account_dept = account.getBankbranch().getBank().getName() + "-" + account.getBankbranch().getBranchname() + "-" + account.getAccountnumber(); if (department != null && department != -1) { final Department dept = (Department) persistenceService.find("from Department where id=?", department.longValue()); bank_account_dept = bank_account_dept + "-" + dept.getName(); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed getheader."); } @SkipValidation private void validateForSuurenderSearch() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting validateForSuurenderSearch..."); if (bankaccount == null || bankaccount == -1) addFieldError("bankaccount", getMessage("bankaccount.empty")); if (bank_branch == null || bank_branch.equals("-1")) addFieldError("bankbranch", getMessage("bankbranch.empty")); if (isFieldMandatory("department") && (null == department || department == -1)) addFieldError("department", getMessage("validate.department.null")); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed validateForSuurenderSearch."); } @ValidationErrorPage(value = "surrendercheques") @SkipValidation @Action(value = "/payment/chequeAssignment-save") public String save() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting surrenderCheques..."); final StringBuffer reasonMissingRows = new StringBuffer(50); loadBankAndAccount(); loadReasonsForSurrendaring(); loadChequeSerialNo(bankaccount); try { if (surrender == null) throw new ValidationException(Arrays.asList(new ValidationError("Exception while surrender Cheque ", "Please select atleast one Cheque for Surrendering "))); final List<InstrumentHeader> suurenderChequelist = new ArrayList<InstrumentHeader>(); final List<String> chequeNoList = new ArrayList<String>(); final List<String> serialNoList = new ArrayList<String>(); final List<Date> chequeDateList = new ArrayList<Date>(); InstrumentHeader instrumentHeader = null; if (null == department || -1 == department) throw new ValidationException(Arrays.asList(new ValidationError("Exception while surrender Cheque ", "please select department"))); int j = 0; instrumentHeaderList = (List<InstrumentHeader>) getSession().get("instrumentHeaderList"); final String[] newSurrender = new String[instrumentHeaderList.size()]; for (final InstrumentHeader iheader : instrumentHeaderList) { newSurrender[j] = null; for (final String ih : surrender) if (ih.equalsIgnoreCase(iheader.getId().toString())) newSurrender[j] = ih; j++; } surrender = newSurrender; if (surrender != null && surrender.length > 0) { for (int i = 0; i < surrender.length; i++) { if (surrender[i] == null) instrumentHeader = null; else instrumentHeader = (InstrumentHeader) persistenceService.find("from InstrumentHeader where id=?", Long.valueOf(surrender[i])); if (instrumentHeader != null && (surrendarReasons[i] == null || surrendarReasons[i].equalsIgnoreCase("-1"))) { reasonMissingRows.append(i + 1); reasonMissingRows.append(","); } if (instrumentHeader != null) { instrumentHeader.setSurrendarReason(surrendarReasons[i]); suurenderChequelist.add(instrumentHeader); if (instrumentHeader.getTransactionNumber() != null) containsRTGS = true; } } if (!reasonMissingRows.toString().isEmpty()) throw new ValidationException(Arrays.asList(new ValidationError("Exception while surrender Cheque ", "please select the Reason for Surrendering the cheque for selected rows"))); instrumentService.surrenderCheques(suurenderChequelist); if (button.equalsIgnoreCase("surrenderAndReassign") && containsRTGS == true) throw new ValidationException(Arrays.asList(new ValidationError( "Cannot reassign RTGS Numbers. Use RTGS Screen ", "Cannot reassign RTGS Numbers. Use RTGS Screen"))); else if (button.equalsIgnoreCase("surrenderAndReassign") && containsRTGS == false) { for (int i = 0; i < surrender.length; i++) if (surrender[i] != null) if (!isChequeNoGenerationAuto()) { chequeNoList.add(newInstrumentNumber[i]); serialNoList.add(newSerialNo[i]); try { chequeDateList.add(formatter.parse(newInstrumentDate[i])); } catch (final ParseException e) { throw new ValidationException(Arrays.asList(new ValidationError( "Exception while formatting ChequeDate ", "TRANSACTION_FAILED"))); } } else { chequeNoList.add(getNewChequenumbers(instrumentHeader, department)); chequeDateList.add(new Date()); } if (!isChequeNoGenerationAuto()) { validateNewChequeNumbers(suurenderChequelist, chequeNoList, department, serialNoList); if (getFieldErrors().size() > 0) throw new ValidationException(Arrays.asList(new ValidationError("TRANSACTION FAILED", "TRANSACTION FAILED"))); } // instrumentService.surrenderCheques(suurenderChequelist); paymentMode = "cheque"; instHeaderList = addNewInstruments(suurenderChequelist, chequeNoList, chequeDateList, serialNoList); addActionMessage(getMessage("surrender.reassign.succesful")); } else { instHeaderList = suurenderChequelist; paymentMode = "cheque"; addActionMessage(getMessage("surrender.succesful")); } } else throw new ValidationException(Arrays.asList(new ValidationError("Exception while surrender ChequeDate ", "please select at least one cheque"))); } catch (final ValidationException e) { instrumentVoucherList = (List<InstrumentVoucher>) getSession().get("instrumentVoucherList"); instrumentHeaderList = (List<InstrumentHeader>) getSession().get("instrumentHeaderList"); getheader(); throw e; } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed surrenderCheques."); return "viewsurrender"; } private String getNewChequenumbers(final InstrumentHeader instrumentHeader, final Integer department) { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting getNewChequenumbers..."); return chequeService.nextChequeNumber(instrumentHeader.getBankAccountId().getId().toString(), 1, department); } /** * @param suurenderChequelist */ private List<InstrumentHeader> addNewInstruments(final List<InstrumentHeader> suurenderChequelist, final List<String> chequeNoList, final List<Date> chequeDatelist, final List<String> serialNoList) { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting addNewInstruments..."); Map<String, Object> instrumentVoucherMap = null; final List<Map<String, Object>> instrumentVoucherList = new ArrayList<Map<String, Object>>(); instHeaderList = new ArrayList<InstrumentHeader>(); int i = 0; for (final InstrumentHeader instrumentHeader : suurenderChequelist) { final InstrumentHeader newInstrumentHeader = instrumentHeader.clone(); newInstrumentHeader.setInstrumentNumber(chequeNoList.get(i).toString()); newInstrumentHeader.setSerialNo(financialYearDAO.findById(Long.valueOf(serialNoList.get(i).toString()), false)); newInstrumentHeader.setStatusId(instrumentService.getStatusId(FinancialConstants.INSTRUMENT_CREATED_STATUS)); newInstrumentHeader.setInstrumentDate(chequeDatelist.get(i)); i++; instHeaderList.add(instrumentHeaderService.persist(newInstrumentHeader)); final Set<InstrumentVoucher> instrumentVouchers = instrumentHeader.getInstrumentVouchers(); for (final InstrumentVoucher iv : instrumentVouchers) { instrumentVoucherMap = new HashMap<String, Object>(); instrumentVoucherMap.put(VoucherConstant.VOUCHER_HEADER, iv.getVoucherHeaderId()); instrumentVoucherMap.put(VoucherConstant.INSTRUMENT_HEADER, newInstrumentHeader); instrumentVoucherList.add(instrumentVoucherMap); } } instVoucherList = instrumentService.updateInstrumentVoucherReference(instrumentVoucherList); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed addNewInstruments."); return instHeaderList; } private void validateNewChequeNumbers(final List<InstrumentHeader> suurenderChequelist, final List<String> chequeNoList, final Integer department, final List<String> serialNoList) { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting validateNewChequeNumbers..."); if (newInstrumentNumber != null && newInstrumentNumber.length > 0) { int i = 0; InstrumentHeader instrumentHeader = null; for (i = 0; i < suurenderChequelist.size(); i++) { instrumentHeader = suurenderChequelist.get(i); /* * Set<InstrumentVoucher> instrumentVouchers = instrumentHeader.getInstrumentVouchers(); for(InstrumentVoucher * iv:instrumentVouchers) { dept=iv.getVoucherHeaderId().getVouchermis().getDepartmentid().getId(); if(dept!=null) * {break; } } */ if (!instrumentService.isChequeNumberValid(chequeNoList.get(i), instrumentHeader.getBankAccountId().getId(), department, serialNoList.get(i))) addFieldError("newInstrumentNumber[" + i + "]", getMessage("payment.chequenumber.invalid") + " " + chequeNoList.get(i).toString()); } } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed validateNewChequeNumbers."); } public void validateDataForManual() throws ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting validateDataForManual..."); int i = 0; final Map<String, String> chqNoMap = new HashMap<String, String>(); if (paymentMode.equals(FinancialConstants.MODEOFPAYMENT_CHEQUE)) { for (final ChequeAssignment assignment : chequeAssignmentList) if (assignment.getIsSelected()) { if (assignment.getSerialNo() == null) { addFieldError("Year code should not be empty", getMessage("payment.yearcode.invalid")); break; } if (null == assignment.getChequeNumber() || "".equals(assignment.getChequeNumber())) { addFieldError("chequeAssignmentList[" + i + "].chequeNumber", getMessage("payment.chequeno.empty")); break; } else if (reassignSurrenderChq) { if (!instrumentService.isReassigningChequeNumberValid(assignment.getChequeNumber(), bankaccount.longValue(), voucherHeader.getVouchermis().getDepartmentid().getId().intValue(), assignment.getSerialNo())) addFieldError("chequeAssignmentList[" + i + "].chequeNumber", getMessage("payment.chequenumber.invalid")); } else if (!instrumentService.isChequeNumberValid(assignment.getChequeNumber(), bankaccount.longValue(), voucherHeader.getVouchermis().getDepartmentid().getId().intValue(), assignment.getSerialNo())) addFieldError("chequeAssignmentList[" + i + "].chequeNumber", getMessage("payment.chequenumber.invalid")); if (null == assignment.getChequeDate()) { addFieldError("chequeAssignmentList[" + i + "].chequeNumber", getMessage("payment.chequeno.empty")); break; } if (assignment.getChequeDate().compareTo(assignment.getVoucherDate()) < 0) { addFieldError("Cheque date cannot be less than paymnet date", getMessage("payment.chequedate.invalid")); break; } if (chqNoMap.containsKey(assignment.getChequeNumber())) { if (!chqNoMap.get(assignment.getChequeNumber()).equals(assignment.getPaidTo())) // can't give the same // cheque to different // parties. addFieldError( "chequeAssignmentList[" + i + "].chequeNumber", getMessage("payment.duplicate.chequeno", new String[] { assignment.getChequeNumber(), chqNoMap.get(assignment.getChequeNumber()), assignment.getPaidTo() })); } else chqNoMap.put(assignment.getChequeNumber(), assignment.getPaidTo()); i++; } } else // cash or RTGS { // / Validations are done for RTGS payment mode String chequedt = null; if (paymentMode.equalsIgnoreCase(FinancialConstants.MODEOFPAYMENT_RTGS)) return; chequedt = parameters.get("chequeDt")[0]; if (StringUtils.isEmpty(parameters.get("inFavourOf")[0])) addFieldError("inFavourOf", getMessage("inFavourOf.is.empty")); if (StringUtils.isEmpty(parameters.get("chequeNo")[0])) addFieldError("chequeNo", getMessage("payment.chequeno.empty")); else { for (int j = 0; j < chequeAssignmentList.size(); j++) if (parameters.get("chequeAssignmentList[" + j + "].isSelected") != null && parameters.get("chequeAssignmentList[" + j + "].isSelected")[0].equals("true")) { final String paymentdt = parameters.get("chequeAssignmentList[" + j + "].tempPaymentDate")[0]; if (formatter.parse(chequedt).compareTo(formatter.parse(paymentdt)) < 0) addFieldError("Cheque date cannot be less than paymnet date", getMessage("payment.chequedate.invalid")); } if (reassignSurrenderChq) { if (!instrumentService.isReassigningChequeNumberValid(parameters.get("chequeNo")[0], bankaccount.longValue(), voucherHeader.getVouchermis().getDepartmentid().getId().intValue(), parameters.get("serialNo")[0])) addFieldError("chequeAssignmentList[" + i + "].chequeNumber", getMessage("payment.chequenumber.invalid")); } else if (!instrumentService.isChequeNumberValid(parameters.get("chequeNo")[0], bankaccount.longValue(), voucherHeader.getVouchermis().getDepartmentid().getId().intValue(), parameters.get("serialNo")[0])) addFieldError("chequeN0", getMessage("payment.chequenumber.invalid")); } if (null == getChequeDt()) addFieldError("chequeDt", getMessage("payment.chequedate.empty")); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed validateDataForManual."); } @SkipValidation public boolean validateUser(final String purpose) throws ParseException { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting validateUser..."); getPersistenceService().findAllByNamedQuery(Script.BY_NAME, "Paymentheader.show.bankbalance").get(0); final List<String> list = null;// (List<String>) // validScript.eval(Script.createContext("persistenceService",paymentService,"purpose",purpose)); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed validateUser."); if (list.get(0).equals("true")) return true; else return false; } @Override public void validate() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting validate..."); if (!rtgsContractorAssignment) { checkMandatory("fundId", Constants.FUND, voucherHeader.getFundId(), "voucher.fund.mandatory"); checkMandatory("vouchermis.departmentid", Constants.DEPARTMENT, voucherHeader.getVouchermis().getDepartmentid(), "voucher.department.mandatory"); checkMandatory("voucher.function", Constants.FUNCTION, voucherHeader.getVouchermis().getFunction(), "voucher.function.mandatory"); checkMandatory("vouchermis.schemeid", Constants.SCHEME, voucherHeader.getVouchermis().getSchemeid(), "voucher.scheme.mandatory"); checkMandatory("vouchermis.subschemeid", Constants.SUBSCHEME, voucherHeader.getVouchermis().getSubschemeid(), "voucher.subscheme.mandatory"); checkMandatory("vouchermis.functionary", Constants.FUNCTIONARY, voucherHeader.getVouchermis().getFunctionary(), "voucher.functionary.mandatory"); checkMandatory("fundsourceId", Constants.FUNDSOURCE, voucherHeader.getVouchermis().getFundsource(), "voucher.fundsource.mandatory"); checkMandatory("vouchermis.divisionId", Constants.FIELD, voucherHeader.getVouchermis().getDivisionid(), "voucher.field.mandatory"); checkMandatory("Recovery Code", Constants.RECOVERY, recoveryId, "recovery.mandatory"); loadBankAndAccount(); loadBillTypeMap(); if (getBankbranch() == null || getBankbranch() == -1) addFieldError("bankbranch", getMessage("bankbranch.empty")); if (getBankaccount() == null || getBankaccount() == -1) addFieldError("bankaccount", getMessage("bankaccount.empty")); } if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed validate."); } private void loadBillTypeMap() { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting loadBillTypeMap..."); billTypeMap = new HashMap<String, String>(); billTypeMap.put(FinancialConstants.STANDARD_EXPENDITURETYPE_CONTINGENT, FinancialConstants.STANDARD_EXPENDITURETYPE_CONTINGENT); billTypeMap.put(FinancialConstants.STANDARD_EXPENDITURETYPE_WORKS + "-" + FinancialConstants.STANDARD_EXPENDITURETYPE_PURCHASE, "Contractor/Supplier"); billTypeMap.put(FinancialConstants.PAYMENTVOUCHER_NAME_DIRECTBANK, "No associated bills"); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed loadBillTypeMap."); } private void checkMandatory(final String objectName, final String fieldName, final Object value, final String errorKey) { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting checkMandatory..."); if (mandatoryFields.contains(fieldName) && value == null) addFieldError(objectName, getMessage(errorKey)); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed checkMandatory."); } @SkipValidation public String ajaxGenerateAdviceHtml() throws Exception { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting ajaxGenerateAdviceHtml..."); generateAdvice(); inputStream = reportHelper.exportHtml(inputStream, JASPER_PATH, getParamMap(), getAdviceList(), "pt"); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed ajaxGenerateAdviceHtml."); return "bankAdvice-HTML"; } @SkipValidation public String generateAdvicePdf() throws Exception { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting generateAdvicePdf..."); generateAdvice(); inputStream = reportHelper.exportPdf(inputStream, JASPER_PATH, getParamMap(), getAdviceList()); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed generateAdvicePdf."); return "bankAdvice-PDF"; } public Map<String, String> getBankBranchMap() { return bankBranchMap; } public void setBillTypeMap(final Map<String, String> billTypeMap) { this.billTypeMap = billTypeMap; } public Map<String, String> getBillTypeMap() { return billTypeMap; } public void setBankBranchMap(final Map<String, String> bankBranchMap) { this.bankBranchMap = bankBranchMap; } public Map<String, String> getBankAccountMap() { return bankAccountMap; } public void setBankAccountMap(final Map<String, String> bankAccountMap) { this.bankAccountMap = bankAccountMap; } @SkipValidation public String generateAdviceXls() throws Exception { if (LOGGER.isDebugEnabled()) LOGGER.debug("Starting generateAdviceXls..."); generateAdvice(); inputStream = reportHelper.exportXls(inputStream, JASPER_PATH, getParamMap(), getAdviceList()); if (LOGGER.isDebugEnabled()) LOGGER.debug("Completed generateAdviceXls."); return "bankAdvice-XLS"; } public boolean isChequePrintEnabled() { String chequePrintEnabled = null; final List<AppConfigValues> enablePrintConfig = appConfigValuesService. getConfigValuesByModuleAndKey(FinancialConstants.MODULE_NAME_APPCONFIG, "chequeprintingenabled"); for (final AppConfigValues appConfigVal : enablePrintConfig) chequePrintEnabled = appConfigVal.getValue(); if (chequePrintEnabled == null) return false; if (chequePrintEnabled.equalsIgnoreCase("Y")) return true; else return false; } @SkipValidation @Action(value = "/payment/chequeAssignment-bankAdviceExcel") public String bankAdviceExcel() throws JRException, IOException { BankAdviceReportInfo bankAdvice = new BankAdviceReportInfo(); final InstrumentVoucher instrumentHeader =instrumentVoucherService.getInstrumentVoucherByVoucherHeader(instHeaderId); bankAdvice.setPartyName(instrumentHeader.getInstrumentHeaderId().getPayTo()); bankAdvice.setAmount(instrumentHeader.getInstrumentHeaderId().getInstrumentAmount()); final List<Object> data = new ArrayList<Object>(); data.add(bankAdvice); setFileName(instrumentHeader.getVoucherHeaderId().getVoucherNumber()+"." + FileFormat.XLS.toString().toLowerCase()); inputStream = reportHelper.exportXls(getInputStream(), bankAdviceJasperPath, null, data); return "bankAdvice-XLS"; } protected String getMessage(final String key) { return getText(key); } protected String getMessage(final String key, final String[] value) { return getText(key, value); } public String getPaymentMode() { return paymentMode; } public void setPaymentMode(final String paymentMode) { this.paymentMode = paymentMode; } public void setPaymentService(final PaymentService paymentService) { this.paymentService = paymentService; } public Integer getBankaccount() { return bankaccount; } public void setBankaccount(final Integer bankaccount) { this.bankaccount = bankaccount; } public List<InstrumentHeader> getInstHeaderList() { return instHeaderList; } public void setInstHeaderList(final List<InstrumentHeader> instHeaderList) { this.instHeaderList = instHeaderList; } public Integer getSelectedRows() { return selectedRows; } public void setSelectedRows(final Integer selectedRows) { this.selectedRows = selectedRows; } public List<ChequeAssignment> getChequeAssignmentList() { return chequeAssignmentList; } public void setChequeAssignmentList(final List<ChequeAssignment> chequeAssignmentList) { this.chequeAssignmentList = chequeAssignmentList; } public boolean isChequeNoGenerationAuto() { if (LOGGER.isInfoEnabled()) LOGGER.info(chequeNoGenerationAuto); return chequeNoGenerationAuto; } public void setChequeNoGenerationAuto(final boolean chequeNoGenerationAuto) { this.chequeNoGenerationAuto = chequeNoGenerationAuto; } public void setInstrumentService(final InstrumentService instrumentService) { this.instrumentService = instrumentService; } public Integer getBankbranch() { return bankbranch; } public void setBankbranch(final Integer bankbranch) { this.bankbranch = bankbranch; } public Date getChequeDt() { return chequeDt; } public void setChequeDt(final Date chequeDt) { this.chequeDt = chequeDt; } public String getInFavourOf() { return inFavourOf; } public void setInFavourOf(final String inFavourOf) { this.inFavourOf = inFavourOf; } public InputStream getInputStream() { return inputStream; } public void setReportHelper(final ReportHelper reportHelper) { this.reportHelper = reportHelper; } public Map<String, Object> getParamMap() { return paramMap; } public void setParamMap(final Map<String, Object> paramMap) { this.paramMap = paramMap; } public List<Object> getAdviceList() { return adviceList; } public List<InstrumentVoucher> getInstVoucherList() { return instVoucherList; } public void setInstVoucherList(final List<InstrumentVoucher> instVoucherList) { this.instVoucherList = instVoucherList; } public String getFromDate() { return fromDate; } public void setFromDate(final String fromDate) { this.fromDate = fromDate; } public String getToDate() { return toDate; } public void setToDate(final String toDate) { this.toDate = toDate; } public List<InstrumentVoucher> getInstrumentVoucherList() { return instrumentVoucherList; } public void setInstrumentVoucherList(final List<InstrumentVoucher> instrumentVoucherList) { this.instrumentVoucherList = instrumentVoucherList; } public String getInstrumentNumber() { return instrumentNumber; } public void setInstrumentNumber(final String instrumentNumber) { this.instrumentNumber = instrumentNumber; } public String[] getSurrender() { return surrender; } public void setSurrender(final String[] surrender) { this.surrender = surrender; } public void setContraService(final ContraService contraService) { } public String getBank_branch() { return bank_branch; } public void setBank_branch(final String bank_branch) { this.bank_branch = bank_branch; } public String getBillType() { return billType; } public void setBillType(final String billType) { this.billType = billType; } public String getButton() { return button; } public void setButton(final String button) { this.button = button; } public void setChequeService(final ChequeService chequeService) { this.chequeService = chequeService; } public String[] getNewInstrumentNumber() { return newInstrumentNumber; } public void setNewInstrumentNumber(final String[] newInstrumentNumber) { this.newInstrumentNumber = newInstrumentNumber; } public Integer getDepartment() { return department; } public void setDepartment(final Integer department) { this.department = department; } public String getBank_account_dept() { return bank_account_dept; } public void setBank_account_dept(final String bank_account_dept) { this.bank_account_dept = bank_account_dept; } public String[] getNewInstrumentDate() { return newInstrumentDate; } public void setNewInstrumentDate(final String[] newInstrumentDate) { this.newInstrumentDate = newInstrumentDate; } public List<InstrumentHeader> getInstrumentHeaderList() { return instrumentHeaderList; } public void setInstrumentHeaderList(final List<InstrumentHeader> instrumentHeaderList) { this.instrumentHeaderList = instrumentHeaderList; } public void setEgovCommon(final EgovCommon egovCommon) { } public String getTypeOfAccount() { return typeOfAccount; } public void setTypeOfAccount(final String typeOfAccount) { this.typeOfAccount = typeOfAccount; } public Date getCurrentDate() { return currentDate; } public void setCurrentDate(final Date currentDate) { this.currentDate = currentDate; } public RecoveryService getRecoveryService() { return recoveryService; } public void setRecoveryService(final RecoveryService recoveryService) { this.recoveryService = recoveryService; } public Long getRecoveryId() { return recoveryId; } public void setRecoveryId(final Long recoveryId) { this.recoveryId = recoveryId; } public Map<String, String> getModeOfPaymentMap() { return modeOfPaymentMap; } public void setModeOfPaymentMap(final Map<String, String> modeOfPaymentMap) { this.modeOfPaymentMap = modeOfPaymentMap; } public String[] getSurrendarReasons() { return surrendarReasons; } public void setSurrendarReasons(final String[] surrendarReasons) { this.surrendarReasons = surrendarReasons; } public String[] getNewSerialNo() { return newSerialNo; } public void setNewSerialNo(final String[] newSerialNo) { this.newSerialNo = newSerialNo; } public Boolean getRtgsContractorAssignment() { return rtgsContractorAssignment; } public void setRtgsContractorAssignment(final Boolean rtgsContractorAssignment) { this.rtgsContractorAssignment = rtgsContractorAssignment; } public Map<Bankaccount, List<ChequeAssignment>> getAccountNoAndRtgsEntryMap() { return accountNoAndRtgsEntryMap; } public void setAccountNoAndRtgsEntryMap( final Map<Bankaccount, List<ChequeAssignment>> accountNoAndRtgsEntryMap) { this.accountNoAndRtgsEntryMap = accountNoAndRtgsEntryMap; } public boolean isRtgsNoGenerationAuto() { return rtgsNoGenerationAuto; } public void setRtgsNoGenerationAuto(final boolean rtgsNoGenerationAuto) { this.rtgsNoGenerationAuto = rtgsNoGenerationAuto; } public Map<String, String> getRtgsdateMap() { return rtgsdateMap; } public void setRtgsdateMap(final Map<String, String> rtgsdateMap) { this.rtgsdateMap = rtgsdateMap; } public Map<String, String> getRtgsRefNoMap() { return rtgsRefNoMap; } public List<ChequeAssignment> getRtgsList() { return rtgsList; } public void setRtgsRefNoMap(final Map<String, String> rtgsRefNoMap) { this.rtgsRefNoMap = rtgsRefNoMap; } public void setRtgsList(final List<ChequeAssignment> rtgsList) { this.rtgsList = rtgsList; } public Map<String, Boolean> getRtgsSeceltedAccMap() { return rtgsSeceltedAccMap; } public void setRtgsSeceltedAccMap(final Map<String, Boolean> rtgsSeceltedAccMap) { this.rtgsSeceltedAccMap = rtgsSeceltedAccMap; } public List<InstrumentHeader> getInstVoucherDisplayList() { return instVoucherDisplayList; } public void setInstVoucherDisplayList( final List<InstrumentHeader> instVoucherDisplayList) { this.instVoucherDisplayList = instVoucherDisplayList; } public Integer getDrawingOfficerId() { return drawingOfficerId; } public void setDrawingOfficerId(final Integer drawingOfficerId) { this.drawingOfficerId = drawingOfficerId; } public String getDrawingOfficerCode() { return drawingOfficerCode; } public void setDrawingOfficerCode(final String drawingOfficerCode) { this.drawingOfficerCode = drawingOfficerCode; } public Map<BankAccountRemittanceCOA, List<ChequeAssignment>> getAccountNoAndRemittanceRtgsEntryMap() { return accountNoAndRemittanceRtgsEntryMap; } public void setAccountNoAndRemittanceRtgsEntryMap( final Map<BankAccountRemittanceCOA, List<ChequeAssignment>> accountNoAndRemittanceRtgsEntryMap) { this.accountNoAndRemittanceRtgsEntryMap = accountNoAndRemittanceRtgsEntryMap; } public String getBillSubType() { return billSubType; } public void setBillSubType(final String billSubType) { this.billSubType = billSubType; } public String getRegion() { return region; } public void setRegion(final String region) { this.region = region; } public String getBank_account() { return bank_account; } public void setBank_account(final String bank_account) { this.bank_account = bank_account; } public String getRecoveryCode() { return recoveryCode; } public void setRecoveryCode(final String recoveryCode) { this.recoveryCode = recoveryCode; } public String getPaymentId() { return paymentId; } public void setPaymentId(final String paymentId) { this.paymentId = paymentId; } public List<ChequeAssignment> getViewReceiptDetailsList() { return viewReceiptDetailsList; } public void setViewReceiptDetailsList( final List<ChequeAssignment> viewReceiptDetailsList) { this.viewReceiptDetailsList = viewReceiptDetailsList; } public BigDecimal getTotalDeductedAmount() { return totalDeductedAmount; } public void setTotalDeductedAmount(final BigDecimal totalDeductedAmount) { this.totalDeductedAmount = totalDeductedAmount; } public Boolean getNonSubledger() { return nonSubledger; } public void setNonSubledger(final Boolean nonSubledger) { this.nonSubledger = nonSubledger; } public void setFinancialYearDAO(final FinancialYearDAO financialYearDAO) { this.financialYearDAO = financialYearDAO; } public boolean isContainsRTGS() { return containsRTGS; } public void setContainsRTGS(boolean containsRTGS) { this.containsRTGS = containsRTGS; } public Boolean getFunctionNonMandatory() { return functionNonMandatory; } public void setFunctionNonMandatory(Boolean functionNonMandatory) { this.functionNonMandatory = functionNonMandatory; } public Boolean getDeptNonMandatory() { return deptNonMandatory; } public void setDeptNonMandatory(Boolean deptNonMandatory) { this.deptNonMandatory = deptNonMandatory; } public List<CFinancialYear> getYearCodeList() { return yearCodeList; } public void setYearCodeList(List<CFinancialYear> yearCodeList) { this.yearCodeList = yearCodeList; } public Long getDepartmentId() { return departmentId; } public void setDepartmentId(Long departmentId) { this.departmentId = departmentId; } public boolean isChequePrintingEnabled() { return chequePrintingEnabled; } public String getChequePrintAvailableAt() { return chequePrintAvailableAt; } public String getInstrumentHeader() { return instrumentHeader; } public void setChequePrintingEnabled(boolean chequePrintingEnabled) { this.chequePrintingEnabled = chequePrintingEnabled; } public void setChequePrintAvailableAt(String chequePrintAvailableAt) { this.chequePrintAvailableAt = chequePrintAvailableAt; } public void setInstrumentHeader(String instrumentHeader) { this.instrumentHeader = instrumentHeader; } public String getChequeFormat() { return chequeFormat; } public void setChequeFormat(String chequeFormat) { this.chequeFormat = chequeFormat; } public Long getInstHeaderId() { return instHeaderId; } public void setInstHeaderId(Long instHeaderId) { this.instHeaderId = instHeaderId; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } }