/* * 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.bill; import net.sf.jasperreports.engine.JRException; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.apache.struts2.interceptor.validation.SkipValidation; import org.egov.commons.Accountdetailtype; import org.egov.commons.CChartOfAccounts; import org.egov.commons.CFinancialYear; import org.egov.commons.CFunction; import org.egov.commons.CVoucherHeader; import org.egov.commons.dao.FinancialYearDAO; import org.egov.commons.utils.EntityType; import org.egov.dao.budget.BudgetDetailsHibernateDAO; import org.egov.egf.budget.model.BudgetControlType; import org.egov.egf.budget.service.BudgetControlTypeService; import org.egov.egf.commons.EgovCommon; import org.egov.eis.service.EisCommonService; import org.egov.infra.admin.master.entity.AppConfigValues; 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.util.ReportUtil; import org.egov.infra.utils.NumberToWord; import org.egov.infra.validation.exception.ValidationError; import org.egov.infra.validation.exception.ValidationException; import org.egov.infra.web.struts.actions.BaseFormAction; import org.egov.infra.workflow.entity.StateHistory; import org.egov.infstr.services.PersistenceService; import org.egov.model.bills.EgBillPayeedetails; import org.egov.model.bills.EgBilldetails; import org.egov.model.bills.EgBillregister; import org.egov.model.bills.EgBillregistermis; import org.egov.model.budget.BudgetGroup; import org.egov.model.voucher.VoucherDetails; import org.egov.utils.Constants; import org.egov.utils.ReportHelper; import org.hibernate.SQLQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @Results(value = { @Result(name = "PDF", type = "stream", location = "inputStream", params = { "inputName", "inputStream", "contentType", "application/pdf", "contentDisposition", "no-cache;filename=ExpenseJournalVoucherReport.pdf" }), @Result(name = "XLS", type = "stream", location = "inputStream", params = { "inputName", "inputStream", "contentType", "application/xls", "contentDisposition", "no-cache;filename=ExpenseJournalVoucherReport.xls" }), @Result(name = "HTML", type = "stream", location = "inputStream", params = { "inputName", "inputStream", "contentType", "text/html" }) }) @org.apache.struts2.convention.annotation.ParentPackage("egov") public class ExpenseBillPrintAction extends BaseFormAction { final static private Logger LOGGER = Logger.getLogger(ExpenseBillPrintAction.class); String jasperpath = "/reports/templates/expenseBillReport.jasper"; String subReportPath = "/reports/templates/budgetAppropriationDetail.jasper"; private static final long serialVersionUID = 1L; private static final String PRINT = "print"; String functionName; @Autowired @Qualifier("persistenceService") private PersistenceService persistenceService; @Autowired AppConfigValueService appConfigValuesService; @Autowired private EisCommonService eisCommonService; private BudgetDetailsHibernateDAO budgetDetailsDAO; @Autowired private FinancialYearDAO financialYearDAO; private final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Map<String, Object> budgetDataMap = new HashMap<String, Object>(); Map<String, Object> paramMap = new HashMap<String, Object>(); @Autowired private EgovCommon egovCommon; public BudgetDetailsHibernateDAO getBudgetDetailsDAO() { return budgetDetailsDAO; } public void setBudgetDetailsDAO(final BudgetDetailsHibernateDAO budgetDetailsDAO) { this.budgetDetailsDAO = budgetDetailsDAO; } public String getFunctionName() { return functionName; } private CVoucherHeader voucher = new CVoucherHeader(); public List<Object> getBillReportList() { return billReportList; } public void setBillReportList(final List<Object> billReportList) { this.billReportList = billReportList; } List<Object> billReportList = new ArrayList<Object>(); InputStream inputStream; ReportHelper reportHelper; Long id; EgBillregistermis billRegistermis; List<EgBillPayeedetails> billPayeeDetails = new ArrayList<EgBillPayeedetails>(); private static final String ACCDETAILTYPEQUERY = " from Accountdetailtype where id=?"; EgBillregister cbill = new EgBillregister(); @Autowired private BudgetControlTypeService budgetControlTypeService; // private InboxService inboxService; public Long getId() { return id; } public void setReportHelper(final ReportHelper helper) { reportHelper = helper; } public void setId(final Long id) { this.id = id; } public InputStream getInputStream() { return inputStream; } @Override public String execute() { return print(); } @SkipValidation @Action(value = "/bill/expenseBillPrint-ajaxPrint") public String ajaxPrint() { return exportHtml(); } @Override public Object getModel() { return voucher; } @Action(value = "/bill/expenseBillPrint-print") public String print() { return PRINT; } private void populateBill() { if (parameters.get("id") != null && !parameters.get("id")[0].isEmpty()) { cbill = (EgBillregister) persistenceService.find("from EgBillregister where id=?", Long.valueOf(parameters.get("id")[0])); billRegistermis = cbill.getEgBillregistermis(); } generateVoucherReportList(); } private void generateVoucherReportList() { prepareForPrint(); } private String getUlbName() { final SQLQuery query = persistenceService.getSession().createSQLQuery("select name from companydetail"); final List<String> result = query.list(); if (result != null) return result.get(0); return ""; } @Action(value = "/bill/expenseBillPrint-exportPdf") public String exportPdf() throws JRException, IOException { populateBill(); inputStream = reportHelper.exportPdf(inputStream, jasperpath, getParamMap(), billReportList); return "PDF"; } public String exportHtml() { populateBill(); inputStream = reportHelper.exportHtml(inputStream, jasperpath, getParamMap(), billReportList, "px"); return "HTML"; } @Action(value = "/bill/expenseBillPrint-exportXls") public String exportXls() throws JRException, IOException { populateBill(); inputStream = reportHelper.exportXls(inputStream, jasperpath, getParamMap(), billReportList); return "XLS"; } protected Map<String, Object> getParamMap() { paramMap.put("billNumber", cbill.getBillnumber()); if (cbill.getBilldate() != null) paramMap.put("billDate", sdf.format(cbill.getBilldate())); paramMap.put("voucherDescription", getVoucherDescription()); if (cbill != null && cbill.getState() != null) loadInboxHistoryData(cbill.getStateHistory(), paramMap); if (billRegistermis != null) { paramMap.put("billDate", Constants.DDMMYYYYFORMAT2.format(billRegistermis.getEgBillregister().getBilldate())); paramMap.put("partyBillNumber", billRegistermis.getPartyBillNumber()); paramMap.put("serviceOrder", billRegistermis.getEgBillregister().getNarration()); paramMap.put("partyName", billRegistermis.getPayto()); if (billRegistermis.getPartyBillDate() != null) paramMap.put("partyBillDate", sdf.format(billRegistermis.getPartyBillDate())); paramMap.put("netAmount", cbill.getPassedamount()); final BigDecimal amt = cbill.getPassedamount().setScale(2, BigDecimal.ROUND_HALF_EVEN); String amountInWords = NumberToWord.convertToWord(amt.toString()); amountInWords = "(" + amountInWords + " )"; amountInWords = "Bill is in order. Sanction is accorded for Rs." + amt + "/-" + amountInWords; paramMap.put("netAmountText", amountInWords); if (LOGGER.isInfoEnabled()) LOGGER.info("amountInWords" + amountInWords); paramMap.put("netAmountInWords", amountInWords); paramMap.put("billNumber", billRegistermis.getEgBillregister().getBillnumber()); paramMap.put("functionName", getFunctionName()); paramMap.put("departmentName", billRegistermis.getEgDepartment().getName()); paramMap.put("fundName", billRegistermis.getFund().getName()); billRegistermis.getEgBillregister().getBillamount(); paramMap.put("budgetApprNumber", billRegistermis.getBudgetaryAppnumber()); paramMap.put("budgetAppropriationDetailJasper", reportHelper.getClass().getResourceAsStream(subReportPath)); // Stritng amountInFigures = billamount==null?" ":billamount.toPlainString(); // String amountInWords = billamount==null?" ":NumberToWord.convertToWord(billamount.toPlainString()); // paramMap.put("certificate", getText("ejv.report.text", new String[]{amountInFigures,amountInWords})); } paramMap.put("ulbName", ReportUtil.getCityName()); return paramMap; } /** * @param paramMap * @return */ private Map<String, Object> getBudgetDetails(final CChartOfAccounts coa, final EgBilldetails billDetail, final String functionName) { final Map<String, Object> budgetApprDetailsMap = new HashMap<String, Object>(); budgetDataMap.put(Constants.FUNCTIONID, Long.valueOf(billDetail.getFunctionid().toString())); if (cbill.getEgBillregistermis().getVoucherHeader() != null) budgetDataMap.put(Constants.ASONDATE, cbill.getEgBillregistermis().getVoucherHeader().getVoucherDate());// this date // plays // important // roles else budgetDataMap.put(Constants.ASONDATE, cbill.getBilldate()); Date billDate = cbill.getBilldate(); final CFinancialYear financialYearById = financialYearDAO.getFinYearByDate(billDate); budgetApprDetailsMap.put("financialYear", "BE-" + financialYearById.getFinYearRange() + " & Addl Funds(Rs)"); budgetDataMap.put("fromdate", financialYearById.getStartingDate()); budgetDataMap.put("glcode", coa.getGlcode()); budgetDataMap.put("glcodeid", coa.getId()); final List<BudgetGroup> budgetHeadByGlcode = budgetDetailsDAO.getBudgetHeadByGlcode(coa); budgetDataMap.put("budgetheadid", budgetHeadByGlcode); final BigDecimal budgetedAmtForYear = budgetDetailsDAO.getBudgetedAmtForYear(budgetDataMap); paramMap.put("budgetedAmtForYear", budgetedAmtForYear); if (LOGGER.isDebugEnabled()) LOGGER.debug("budgetedAmtForYear .......... " + budgetedAmtForYear); budgetDataMap.put("budgetApprNumber", cbill.getEgBillregistermis().getBudgetaryAppnumber()); // budgetDetailsDAO.getActualBudgetUtilized(budgetDataMap); if (LOGGER.isDebugEnabled()) LOGGER.debug("Getting actuals .............................. for print"); final BigDecimal actualAmtFromVoucher = budgetDetailsDAO.getActualBudgetUtilizedForBudgetaryCheck(budgetDataMap); // get // actual // amount if (LOGGER.isDebugEnabled()) LOGGER.debug("actualAmtFromVoucher .............................. " + actualAmtFromVoucher); budgetDataMap.put(Constants.ASONDATE, cbill.getBilldate()); final BigDecimal actualAmtFromBill = budgetDetailsDAO.getBillAmountForBudgetCheck(budgetDataMap); // get actual amount if (LOGGER.isDebugEnabled()) LOGGER.debug("actualAmtFromBill .............................. " + actualAmtFromBill); BigDecimal currentBillAmount = BigDecimal.ZERO; BigDecimal soFarAppropriated = BigDecimal.ZERO; BigDecimal actualAmount = BigDecimal.ZERO; actualAmount = actualAmtFromVoucher != null ? actualAmtFromVoucher : BigDecimal.ZERO; actualAmount = actualAmtFromBill != null ? actualAmount.add(actualAmtFromBill) : actualAmount; if (LOGGER.isDebugEnabled()) LOGGER.debug("actualAmount ...actualAmtFromVoucher+actualAmtFromBill........ " + actualAmount); if (billDetail.getDebitamount() != null && billDetail.getDebitamount().compareTo(BigDecimal.ZERO) != 0) { actualAmount = actualAmount.subtract(billDetail.getDebitamount()); currentBillAmount = billDetail.getDebitamount(); } else { actualAmount = actualAmount.subtract(billDetail.getCreditamount()); currentBillAmount = billDetail.getCreditamount(); } if (LOGGER.isDebugEnabled()) LOGGER.debug("actualAmount ...actualAmount-billamount........ " + actualAmount); BigDecimal balance = budgetedAmtForYear; balance = balance.subtract(actualAmount); soFarAppropriated = actualAmount; if (LOGGER.isDebugEnabled()) LOGGER.debug("soFarAppropriated ...actualAmount==soFarAppropriated........ " + soFarAppropriated); if (LOGGER.isDebugEnabled()) LOGGER.debug("balance ...budgetedAmtForYear-actualAmount........ " + balance); final BigDecimal cumilativeIncludingCurrentBill = soFarAppropriated.add(currentBillAmount); final BigDecimal currentBalanceAvailable = balance.subtract(currentBillAmount); budgetApprDetailsMap.put("budgetApprNumber", cbill.getEgBillregistermis().getBudgetaryAppnumber()); budgetApprDetailsMap.put("budgetedAmtForYear", budgetedAmtForYear); budgetApprDetailsMap.put("soFarAppropriated", soFarAppropriated); budgetApprDetailsMap.put("balance", balance); budgetApprDetailsMap.put("cumilativeIncludingCurrentBill", cumilativeIncludingCurrentBill); budgetApprDetailsMap.put("currentBalanceAvailable", currentBalanceAvailable); budgetApprDetailsMap.put("currentBillAmount", currentBillAmount); budgetApprDetailsMap.put("AccountCode", coa.getGlcode()); budgetApprDetailsMap.put("departmentName", cbill.getEgBillregistermis().getEgDepartment().getName()); budgetApprDetailsMap.put("functionName", functionName); budgetApprDetailsMap.put("fundName", cbill.getEgBillregistermis().getFund().getName()); return budgetApprDetailsMap; } /** * @param cbill will set data in budgetDataMap will be called only once per bill */ private void getRequiredDataForBudget(final EgBillregister cbill) { final String financialYearId = null;// commonsService.getFinancialYearId(cbill.getBilldate().getTime()); Date billDate = cbill.getBilldate(); final CFinancialYear financialYearById = financialYearDAO.getFinYearByDate(billDate); budgetDataMap.put("financialyearid", financialYearById.getId()); budgetDataMap.put(Constants.DEPTID, cbill.getEgBillregistermis().getEgDepartment().getId()); if (cbill.getEgBillregistermis().getFunctionaryid() != null) budgetDataMap.put(Constants.FUNCTIONARYID, cbill.getEgBillregistermis().getFunctionaryid().getId()); if (cbill.getEgBillregistermis().getScheme() != null) budgetDataMap.put(Constants.SCHEMEID, cbill.getEgBillregistermis().getScheme().getId()); if (cbill.getEgBillregistermis().getSubScheme() != null) budgetDataMap.put(Constants.SUBSCHEMEID, cbill.getEgBillregistermis().getSubScheme().getId()); budgetDataMap.put(Constants.FUNDID, cbill.getEgBillregistermis().getFund().getId()); budgetDataMap.put(Constants.BOUNDARYID, cbill.getDivision()); } public Map<String, Object> getAccountDetails(final Integer detailtypeid, final Integer detailkeyid, final Map<String, Object> tempMap) throws ApplicationException { final Accountdetailtype detailtype = (Accountdetailtype) getPersistenceService().find(ACCDETAILTYPEQUERY, detailtypeid); tempMap.put("detailtype", detailtype.getName()); tempMap.put("detailtypeid", detailtype.getId()); tempMap.put("detailkeyid", detailkeyid); egovCommon.setPersistenceService(persistenceService); final EntityType entityType = egovCommon.getEntityType(detailtype, detailkeyid); tempMap.put(Constants.DETAILKEY, entityType.getName()); tempMap.put(Constants.DETAILCODE, entityType.getCode()); return tempMap; } private String getVoucherDescription() { return voucher == null || voucher.getDescription() == null ? "" : voucher.getDescription(); } void loadInboxHistoryData(List<StateHistory> stateHistory, final Map<String, Object> paramMap) throws ApplicationRuntimeException { final List<String> history = new ArrayList<String>(); final List<String> workFlowDate = new ArrayList<String>(); if (!stateHistory.isEmpty()) { for (final StateHistory historyState : stateHistory) if (!"NEW".equalsIgnoreCase(historyState.getValue())) { history.add(historyState.getSenderName()); workFlowDate.add(Constants.DDMMYYYYFORMAT2 .format(historyState.getLastModifiedDate())); if (historyState.getValue().equalsIgnoreCase("Rejected")) { history.clear(); workFlowDate.clear(); } } history.add(cbill.getState().getSenderName()); workFlowDate.add(Constants.DDMMYYYYFORMAT2.format(cbill.getState() .getLastModifiedDate())); } else { history.add(cbill.getState().getSenderName()); workFlowDate.add(Constants.DDMMYYYYFORMAT2.format(cbill.getState() .getLastModifiedDate())); } for (int i = 0; i < history.size(); i++) { paramMap.put("workFlow_" + i, history.get(i)); paramMap.put("workFlowDate_" + i, workFlowDate.get(i)); } /* * if(cbill.getState()!=null && * cbill.getState().getValue().equalsIgnoreCase("Closed")){ * paramMap.put("workFlow_approver" * ,eisCommonService.getUserForPosition( * cbill.getState().getOwnerPosition().getId(), * cbill.getCreatedDate())); paramMap.put("workFlowDate_approval_date" , * cbill.getState().getLastModifiedDate() ); } */ } private void prepareForPrint() { final Set<EgBilldetails> egBilldetailes = cbill.getEgBilldetailes(); boolean budgetcheck = false; if (!BudgetControlType.BudgetCheckOption.NONE.toString().equalsIgnoreCase(budgetControlTypeService.getConfigValue())) { budgetcheck = true; getRequiredDataForBudget(cbill); } final List<Map<String, Object>> budget = new ArrayList<Map<String, Object>>(); for (final EgBilldetails detail : egBilldetailes) if (detail.getDebitamount() != null && detail.getDebitamount().compareTo(BigDecimal.ZERO) != 0) { CFunction functionById = null; Map<String, Object> budgetApprDetails = null; final VoucherDetails vd = new VoucherDetails(); final BigDecimal glcodeid = detail.getGlcodeid(); if (detail.getFunctionid() != null) { functionById = (CFunction) persistenceService.find("from CFunction where id=?", Long.valueOf(detail.getFunctionid().toString())); setFunctionName(functionById.getName()); paramMap.put("functionName", functionById.getName()); } final CChartOfAccounts coa = (CChartOfAccounts) persistenceService.find("from CChartOfAccounts where id=?", Long.valueOf(glcodeid.toString())); if (budgetcheck && coa.getBudgetCheckReq() != null && coa.getBudgetCheckReq()) { budgetApprDetails = getBudgetDetails(coa, detail, functionById.getName()); budget.add(budgetApprDetails); } vd.setGlcodeDetail(coa.getGlcode()); vd.setGlcodeIdDetail(coa.getId()); vd.setAccounthead(coa.getName()); vd.setCreditAmountDetail(BigDecimal.ZERO); vd.setDebitAmountDetail(detail.getDebitamount()); final Set<EgBillPayeedetails> egBillPaydetailes = detail.getEgBillPaydetailes(); for (final EgBillPayeedetails payeedetail : egBillPaydetailes) { try { EntityType entity = null; final Accountdetailtype detailType = (Accountdetailtype) persistenceService.find( "from Accountdetailtype where id=? order by name", payeedetail.getAccountDetailTypeId()); vd.setDetailTypeName(detailType.getName()); final Class<?> service = Class.forName(detailType.getFullQualifiedName()); // getting the entity type service. final String detailTypeName = service.getSimpleName(); String dataType = ""; final java.lang.reflect.Method method = service.getMethod("getId"); dataType = method.getReturnType().getSimpleName(); if (dataType.equals("Long")) entity = (EntityType) persistenceService.find( "from " + detailTypeName + " where id=? order by name", payeedetail.getAccountDetailKeyId() .longValue()); else entity = (EntityType) persistenceService.find( "from " + detailTypeName + " where id=? order by name", payeedetail.getAccountDetailKeyId()); vd.setDetailKey(entity.getCode()); vd.setDetailName(entity.getName()); } catch (final Exception e) { final List<ValidationError> errors = new ArrayList<ValidationError>(); errors.add(new ValidationError("exp", e.getMessage())); throw new ValidationException(errors); } } final BillReport billReport = new BillReport(persistenceService, vd, cbill, budgetApprDetails); billReportList.add(billReport); } for (final EgBilldetails detail : egBilldetailes) if (detail.getCreditamount() != null && detail.getCreditamount().compareTo(BigDecimal.ZERO) != 0) { CFunction functionById = null; Map<String, Object> budgetApprDetails = null; final VoucherDetails vd = new VoucherDetails(); final BigDecimal glcodeid = detail.getGlcodeid(); if (detail.getFunctionid() != null) { functionById = (CFunction) persistenceService.find("from CFunction where id=?", Long.valueOf(detail.getFunctionid().toString())); setFunctionName(functionById.getName()); paramMap.put("functionName", functionById.getName()); } final CChartOfAccounts coa = (CChartOfAccounts) persistenceService.find("from CChartOfAccounts where id=?", Long.valueOf(glcodeid.toString())); if (budgetcheck && coa.getBudgetCheckReq() != null && coa.getBudgetCheckReq()) { budgetApprDetails = getBudgetDetails(coa, detail, functionName); budget.add(budgetApprDetails); } vd.setGlcodeDetail(coa.getGlcode()); vd.setGlcodeIdDetail(coa.getId()); vd.setAccounthead(coa.getName()); vd.setCreditAmountDetail(detail.getCreditamount()); vd.setDebitAmountDetail(BigDecimal.ZERO); final Set<EgBillPayeedetails> egBillPaydetailes = detail.getEgBillPaydetailes(); for (final EgBillPayeedetails payeedetail : egBillPaydetailes) { try { EntityType entity = null; final Accountdetailtype detailType = (Accountdetailtype) persistenceService.find( "from Accountdetailtype where id=? order by name", payeedetail.getAccountDetailTypeId()); vd.setDetailTypeName(detailType.getName()); final Class<?> service = Class.forName(detailType.getFullQualifiedName()); // getting the entity type service. final String detailTypeName = service.getSimpleName(); String dataType = ""; final java.lang.reflect.Method method = service.getMethod("getId"); dataType = method.getReturnType().getSimpleName(); if (dataType.equals("Long")) entity = (EntityType) persistenceService.find( "from " + detailTypeName + " where id=? order by name", payeedetail.getAccountDetailKeyId() .longValue()); else entity = (EntityType) persistenceService.find( "from " + detailTypeName + " where id=? order by name", payeedetail.getAccountDetailKeyId()); vd.setDetailKey(entity.getCode()); vd.setDetailName(entity.getName()); } catch (final Exception e) { final List<ValidationError> errors = new ArrayList<ValidationError>(); errors.add(new ValidationError("exp", e.getMessage())); throw new ValidationException(errors); } } final BillReport billReport = new BillReport(persistenceService, vd, cbill, budgetApprDetails); billReportList.add(billReport); } paramMap.put("budgetDetail", budget); } /** * @param name */ private void setFunctionName(final String name) { functionName = name; } public AppConfigValueService getAppConfigValuesService() { return appConfigValuesService; } public void setAppConfigValuesService( AppConfigValueService appConfigValuesService) { this.appConfigValuesService = appConfigValuesService; } public EisCommonService getEisCommonService() { return eisCommonService; } public void setEisCommonService(EisCommonService eisCommonService) { this.eisCommonService = eisCommonService; } public FinancialYearDAO getFinancialYearDAO() { return financialYearDAO; } public void setFinancialYearDAO(FinancialYearDAO financialYearDAO) { this.financialYearDAO = financialYearDAO; } }