/*
* @(#)WorkingCapitalAction.java
*
* Copyright 2010 Instituto Superior Tecnico
* Founding Authors: Luis Cruz
*
* https://fenix-ashes.ist.utl.pt/
*
* This file is part of the Working Capital Module.
*
* The Working Capital Module is free software: you can
* redistribute it and/or modify it under the terms of the GNU Lesser General
* Public License as published by the Free Software Foundation, either version
* 3 of the License, or (at your option) any later version.
*
* The Working Capital Module 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the Working Capital Module. If not, see <http://www.gnu.org/licenses/>.
*
*/
package module.workingCapital.presentationTier.action;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import module.finance.util.Money;
import module.organization.domain.Party;
import module.organization.domain.Person;
import module.workflow.presentationTier.actions.ProcessManagement;
import module.workflow.util.WorkflowProcessViewer;
import module.workingCapital.domain.AcquisitionClassification;
import module.workingCapital.domain.WorkingCapital;
import module.workingCapital.domain.WorkingCapitalAcquisition;
import module.workingCapital.domain.WorkingCapitalAcquisitionTransaction;
import module.workingCapital.domain.WorkingCapitalInitialization;
import module.workingCapital.domain.WorkingCapitalProcess;
import module.workingCapital.domain.WorkingCapitalSystem;
import module.workingCapital.domain.WorkingCapitalTransaction;
import module.workingCapital.domain.WorkingCapitalYear;
import module.workingCapital.domain.util.AcquisitionClassificationBean;
import module.workingCapital.domain.util.WorkingCapitalInitializationBean;
import module.workingCapital.presentationTier.action.util.WorkingCapitalContext;
import org.apache.commons.beanutils.BeanComparator;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.fenixedu.bennu.core.i18n.BundleUtil;
import org.fenixedu.bennu.struts.annotations.Mapping;
import org.fenixedu.bennu.struts.portal.EntryPoint;
import org.fenixedu.bennu.struts.portal.StrutsApplication;
import org.fenixedu.bennu.struts.portal.StrutsFunctionality;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import pt.ist.expenditureTrackingSystem.domain.authorizations.Authorization;
import pt.ist.expenditureTrackingSystem.domain.organization.AccountingUnit;
import pt.ist.expenditureTrackingSystem.domain.util.DomainException;
import pt.ist.expenditureTrackingSystem.presentationTier.actions.BaseAction;
import pt.ist.fenixWebFramework.renderers.utils.RenderUtils;
import pt.utl.ist.fenix.tools.spreadsheet.SheetData;
import pt.utl.ist.fenix.tools.spreadsheet.SpreadsheetBuilder;
import pt.utl.ist.fenix.tools.spreadsheet.WorkbookExportFormat;
import pt.utl.ist.fenix.tools.spreadsheet.converters.CellConverter;
@StrutsApplication(bundle = "WorkingCapitalResources", path = "workingCapital", titleKey = "link.sideBar.workingCapital",
accessGroup = "logged", hint = "Working Capital")
@StrutsFunctionality(app = WorkingCapitalAction.class, path = "workingCapital",
titleKey = "link.sideBar.workingCapital.frontPage")
@Mapping(path = "/workingCapital")
@WorkflowProcessViewer(value = WorkingCapitalProcess.class)
/**
*
* @author João Neves
* @author Paulo Abrantes
* @author Luis Cruz
*
*/
public class WorkingCapitalAction extends BaseAction {
@EntryPoint
public ActionForward frontPage(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) {
WorkingCapitalContext workingCapitalContext = getRenderedObject("workingCapitalContext");
if (workingCapitalContext == null) {
workingCapitalContext = new WorkingCapitalContext();
}
return frontPage(request, workingCapitalContext);
}
public ActionForward frontPage(final HttpServletRequest request, final WorkingCapitalContext workingCapitalContext) {
request.setAttribute("workingCapitalContext", workingCapitalContext);
return forward("/workingCapital/frontPage.jsp");
}
public ActionForward search(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) {
final WorkingCapitalContext workingCapitalContext = getRenderedObject("workingCapitalInitializationBean");
if (workingCapitalContext.getParty() == null) {
request.setAttribute("workingCapitalYearOid", workingCapitalContext.getWorkingCapitalYear().getExternalId());
return listProcesses(mapping, form, request, response);
}
final SortedSet<WorkingCapitalProcess> unitProcesses = workingCapitalContext.getWorkingCapitalSearchByUnit();
return showList(request, workingCapitalContext, unitProcesses);
}
public ActionForward sort(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) {
final WorkingCapitalContext workingCapitalContext = new WorkingCapitalContext();
final String partyId = request.getParameter("partyId");
if (partyId != null && !partyId.isEmpty() && !partyId.equals("null")) {
workingCapitalContext.setParty((Party) getDomainObject(request, partyId));
final SortedSet<WorkingCapitalProcess> unitProcesses = workingCapitalContext.getWorkingCapitalSearchByUnit();
return showList(request, workingCapitalContext, unitProcesses);
}
return listProcesses(mapping, form, request, response);
}
private ActionForward showList(final HttpServletRequest request, final WorkingCapitalContext workingCapitalContext,
final SortedSet<WorkingCapitalProcess> unitProcesses) {
if (unitProcesses.size() == 1) {
final WorkingCapitalProcess workingCapitalProcess = unitProcesses.first();
return ProcessManagement.forwardToProcess(workingCapitalProcess);
} else {
final List<WorkingCapitalProcess> list = new ArrayList<WorkingCapitalProcess>(unitProcesses);
final String sortByArg = request.getParameter("sortBy");
if (sortByArg != null && !sortByArg.isEmpty()) {
final int i = sortByArg.indexOf('=');
if (i > 0) {
final BeanComparator comparator = new BeanComparator(sortByArg.substring(0, i));
Collections.sort(list, comparator);
final char c = sortByArg.charAt(i + 1);
if (c == 'd' || c == 'D') {
Collections.reverse(list);
}
}
}
request.setAttribute("unitProcesses", list);
return frontPage(request, workingCapitalContext);
}
}
public ActionForward listProcesses(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) {
final WorkingCapitalContext workingCapitalContext = new WorkingCapitalContext();
final WorkingCapitalYear workingCapitalYear = getDomainObject(request, "workingCapitalYearOid");
workingCapitalContext.setWorkingCapitalYear(workingCapitalYear);
final SortedSet<WorkingCapitalProcess> unitProcesses = getAllProcesses(workingCapitalYear);
return showList(request, workingCapitalContext, unitProcesses);
}
private SortedSet<WorkingCapitalProcess> getAllProcesses(final WorkingCapitalYear workingCapitalYear) {
final SortedSet<WorkingCapitalProcess> unitProcesses =
new TreeSet<WorkingCapitalProcess>(WorkingCapitalProcess.COMPARATOR_BY_UNIT_NAME);
for (final WorkingCapital workingCapital : workingCapitalYear.getWorkingCapitalsSet()) {
final WorkingCapitalProcess workingCapitalProcess = workingCapital.getWorkingCapitalProcess();
if (workingCapitalProcess.isAccessibleToCurrentUser()) {
unitProcesses.add(workingCapitalProcess);
}
}
return unitProcesses;
}
public ActionForward configuration(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) {
final WorkingCapitalSystem workingCapitalSystem = WorkingCapitalSystem.getInstanceForCurrentHost();
request.setAttribute("currentWorkingCapitalSystem", workingCapitalSystem);
return forward("/workingCapital/configuration.jsp");
}
public ActionForward createNewSystem(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) {
WorkingCapitalSystem.createSystem();
return configuration(mapping, form, request, response);
}
public ActionForward prepareCreateWorkingCapitalInitialization(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final WorkingCapitalInitializationBean workingCapitalInitializationBean = new WorkingCapitalInitializationBean();
return prepareCreateWorkingCapitalInitialization(request, workingCapitalInitializationBean);
}
public ActionForward prepareCreateWorkingCapitalInitialization(final HttpServletRequest request,
final WorkingCapitalInitializationBean workingCapitalInitializationBean) {
request.setAttribute("workingCapitalInitializationBean", workingCapitalInitializationBean);
return forward("/workingCapital/createWorkingCapitalInitialization.jsp");
}
public ActionForward createWorkingCapitalInitialization(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final WorkingCapitalInitializationBean workingCapitalInitializationBean = getRenderedObject();
try {
final WorkingCapitalInitialization workingCapitalInitialization = workingCapitalInitializationBean.create();
final WorkingCapital workingCapital = workingCapitalInitialization.getWorkingCapital();
final WorkingCapitalProcess workingCapitalProcess = workingCapital.getWorkingCapitalProcess();
return viewWorkingCapital(request, workingCapitalProcess);
} catch (final DomainException domainException) {
RenderUtils.invalidateViewState();
addLocalizedMessage(request, BundleUtil.getString("resources.WorkingCapitalResources", domainException.getKey()));
return prepareCreateWorkingCapitalInitialization(request, workingCapitalInitializationBean);
}
}
public ActionForward viewWorkingCapital(final HttpServletRequest request, final WorkingCapitalProcess workingCapitalProcess) {
return ProcessManagement.forwardToProcess(workingCapitalProcess);
}
public ActionForward viewWorkingCapital(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) {
final WorkingCapital workingCapital = getDomainObject(request, "workingCapitalOid");
final WorkingCapitalProcess workingCapitalProcess = workingCapital.getWorkingCapitalProcess();
return viewWorkingCapital(request, workingCapitalProcess);
}
public ActionForward configureManagementUnit(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final WorkingCapitalSystem workingCapitalSystem = WorkingCapitalSystem.getInstanceForCurrentHost();
request.setAttribute("workingCapitalSystem", workingCapitalSystem);
return forward("/workingCapital/configureManagementUnit.jsp");
}
public ActionForward configureAcquisitionLimit(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final WorkingCapitalSystem workingCapitalSystem = WorkingCapitalSystem.getInstanceForCurrentHost();
request.setAttribute("workingCapitalSystem", workingCapitalSystem);
return forward("/workingCapital/configureAcquisitionLimit.jsp");
}
public ActionForward resetAcquisitionLimit(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final WorkingCapitalSystem workingCapitalSystem = WorkingCapitalSystem.getInstanceForCurrentHost();
workingCapitalSystem.resetAcquisitionValueLimit();
return configuration(mapping, form, request, response);
}
public ActionForward prepareAddAcquisitionClassification(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final AcquisitionClassificationBean acquisitionClassificationBean = new AcquisitionClassificationBean();
request.setAttribute("acquisitionClassificationBean", acquisitionClassificationBean);
return forward("/workingCapital/addAcquisitionClassification.jsp");
}
public ActionForward addAcquisitionClassification(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final AcquisitionClassificationBean acquisitionClassificationBean = getRenderedObject();
acquisitionClassificationBean.create();
return configuration(mapping, form, request, response);
}
public ActionForward deleteAcquisitionClassification(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final AcquisitionClassification acquisitionClassification = getDomainObject(request, "acquisitionClassificationOid");
acquisitionClassification.delete();
return configuration(mapping, form, request, response);
}
public ActionForward viewWorkingCapitalTransaction(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final WorkingCapitalTransaction workingCapitalTransaction = getDomainObject(request, "workingCapitalTransactionOid");
request.setAttribute("workingCapitalTransaction", workingCapitalTransaction);
request.setAttribute("process", workingCapitalTransaction.getWorkingCapital().getWorkingCapitalProcess());
request.setAttribute("viewWorkingCapitalTransaction", Boolean.TRUE);
return forward("/module/workingCapital/domain/WorkingCapitalProcess/workingCapitalTransaction.jsp");
}
public ActionForward viewAllCapitalInitializations(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) {
final WorkingCapital workingCapital = getDomainObject(request, "workingCapitalOid");
request.setAttribute("workingCapital", workingCapital);
return forward("/workingCapital/viewAllWorkingCapitalInitializations.jsp");
}
public final ActionForward exportSearchToExcel(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final String partyid = request.getParameter("party0id");
final WorkingCapitalContext workingCapitalContext = new WorkingCapitalContext();
if (!partyid.equals("blank")) {
workingCapitalContext.setParty((Party) getDomainObject(request, "party0id"));
}
workingCapitalContext.setWorkingCapitalYear((WorkingCapitalYear) getDomainObject(request, "yearOid"));
final SortedSet<WorkingCapitalProcess> unitProcesses;
if (workingCapitalContext.getParty() == null) {
unitProcesses = getAllProcesses(workingCapitalContext.getWorkingCapitalYear());
} else {
unitProcesses = workingCapitalContext.getWorkingCapitalSearchByUnit();
}
return exportInfoToExcel(unitProcesses, workingCapitalContext, response);
}
private ActionForward exportInfoToExcel(Set<WorkingCapitalProcess> processes, WorkingCapitalContext context,
HttpServletResponse response) throws Exception {
final Integer year = context.getWorkingCapitalYear().getYear();
SheetData<WorkingCapitalProcess> sheetData = new SheetData<WorkingCapitalProcess>(processes) {
@Override
protected void makeLine(WorkingCapitalProcess workingCapitalProcess) {
if (workingCapitalProcess == null) {
return;
}
final WorkingCapital workingCapital = workingCapitalProcess.getWorkingCapital();
final WorkingCapitalInitialization initialization = workingCapital.getWorkingCapitalInitialization();
final AccountingUnit accountingUnit = workingCapital.getAccountingUnit();
addCell(getLocalizedMessate("label.module.workingCapital.year"), year);
addCell(getLocalizedMessate("label.module.workingCapital"), workingCapitalProcess.getWorkingCapital().getUnit()
.getPresentationName());
addCell(getLocalizedMessate("WorkingCapitalProcessState"), workingCapitalProcess
.getPresentableAcquisitionProcessState().getLocalizedName());
addCell(getLocalizedMessate("label.module.workingCapital.unit.responsible"), getUnitResponsibles(workingCapital));
addCell(getLocalizedMessate("label.module.workingCapital.initialization.accountingUnit"),
accountingUnit == null ? "" : accountingUnit.getName());
addCell(getLocalizedMessate("label.module.workingCapital.requestingDate"), initialization.getRequestCreation()
.toString("yyyy-MM-dd HH:mm:ss"));
addCell(getLocalizedMessate("label.module.workingCapital.requester"), initialization.getRequestor().getName());
final Person movementResponsible = workingCapital.getMovementResponsible();
addCell(getLocalizedMessate("label.module.workingCapital.movementResponsible"),
movementResponsible == null ? "" : movementResponsible.getName());
addCell(getLocalizedMessate("label.module.workingCapital.fiscalId"), initialization.getFiscalId());
addCell(getLocalizedMessate("label.module.workingCapital.internationalBankAccountNumber"),
initialization.getInternationalBankAccountNumber());
addCell(getLocalizedMessate("label.module.workingCapital.fundAllocationId"), initialization.getFundAllocationId());
final Money requestedAnualValue = initialization.getRequestedAnualValue();
addCell(getLocalizedMessate("label.module.workingCapital.requestedAnualValue.requested"), requestedAnualValue);
addCell(getLocalizedMessate("label.module.workingCapital.requestedMonthlyValue.requested"),
requestedAnualValue.divideAndRound(new BigDecimal(6)));
final Money authorizedAnualValue = initialization.getAuthorizedAnualValue();
addCell(getLocalizedMessate("label.module.workingCapital.authorizedAnualValue"),
authorizedAnualValue == null ? "" : authorizedAnualValue);
final Money maxAuthorizedAnualValue = initialization.getMaxAuthorizedAnualValue();
addCell(getLocalizedMessate("label.module.workingCapital.maxAuthorizedAnualValue"),
maxAuthorizedAnualValue == null ? "" : maxAuthorizedAnualValue);
final DateTime lastSubmission = initialization.getLastSubmission();
addCell(getLocalizedMessate("label.module.workingCapital.initialization.lastSubmission"),
lastSubmission == null ? "" : lastSubmission.toString("yyyy-MM-dd"));
final DateTime refundRequested = initialization.getRefundRequested();
addCell(getLocalizedMessate("label.module.workingCapital.initialization.refundRequested"),
refundRequested == null ? "" : refundRequested.toString("yyyy-MM-dd"));
final WorkingCapitalTransaction lastTransaction = workingCapital.getLastTransaction();
if (lastTransaction == null) {
addCell(getLocalizedMessate("label.module.workingCapital.transaction.accumulatedValue"), Money.ZERO);
addCell(getLocalizedMessate("label.module.workingCapital.transaction.balance"), Money.ZERO);
addCell(getLocalizedMessate("label.module.workingCapital.transaction.debt"), Money.ZERO);
} else {
addCell(getLocalizedMessate("label.module.workingCapital.transaction.accumulatedValue"),
lastTransaction.getAccumulatedValue());
addCell(getLocalizedMessate("label.module.workingCapital.transaction.balance"), lastTransaction.getBalance());
addCell(getLocalizedMessate("label.module.workingCapital.transaction.debt"), lastTransaction.getDebt());
}
for (final AcquisitionClassification classification : WorkingCapitalSystem.getInstance()
.getAcquisitionClassificationsSet()) {
final String description = classification.getDescription();
final String pocCode = classification.getPocCode();
final String key = pocCode + " - " + description;
final Money value = calculateValueForClassification(workingCapital, classification);
addCell(key, value);
}
}
private Money calculateValueForClassification(final WorkingCapital workingCapital,
final AcquisitionClassification classification) {
Money result = Money.ZERO;
for (final WorkingCapitalTransaction transaction : workingCapital.getWorkingCapitalTransactionsSet()) {
if (transaction.isAcquisition()) {
final WorkingCapitalAcquisitionTransaction acquisitionTransaction =
(WorkingCapitalAcquisitionTransaction) transaction;
final WorkingCapitalAcquisition acquisition = acquisitionTransaction.getWorkingCapitalAcquisition();
final AcquisitionClassification acquisitionClassification = acquisition.getAcquisitionClassification();
if (acquisitionClassification == classification) {
result = result.add(acquisition.getValueAllocatedToSupplier());
}
}
}
return result;
}
private String getUnitResponsibles(final WorkingCapital workingCapital) {
final StringBuilder builder = new StringBuilder();
final SortedMap<Person, Set<Authorization>> authorizations = workingCapital.getSortedAuthorizations();
if (!authorizations.isEmpty()) {
for (final Entry<Person, Set<Authorization>> entry : authorizations.entrySet()) {
if (builder.length() > 0) {
builder.append("; ");
}
builder.append(entry.getKey().getName());
}
}
return builder.toString();
}
};
final LocalDate currentLocalDate = new LocalDate();
final SpreadsheetBuilder builder = new SpreadsheetBuilder();
builder.addConverter(Money.class, new CellConverter() {
@Override
public Object convert(final Object source) {
final Money money = (Money) source;
return money == null ? null : new Double(money.getValue().round(new MathContext(2, RoundingMode.HALF_EVEN))
.doubleValue());
}
});
builder.addSheet(getLocalizedMessate("label.module.workingCapital") + " " + year + " - " + currentLocalDate.toString(),
sheetData);
final List<WorkingCapitalTransaction> transactions = new ArrayList<WorkingCapitalTransaction>();
for (final WorkingCapitalProcess process : processes) {
final WorkingCapital workingCapital = process.getWorkingCapital();
transactions.addAll(workingCapital.getSortedWorkingCapitalTransactions());
}
final SheetData<WorkingCapitalTransaction> transactionsSheet = new SheetData<WorkingCapitalTransaction>(transactions) {
@Override
protected void makeLine(WorkingCapitalTransaction transaction) {
final WorkingCapital workingCapital = transaction.getWorkingCapital();
final WorkingCapitalProcess workingCapitalProcess = workingCapital.getWorkingCapitalProcess();
addCell(getLocalizedMessate("label.module.workingCapital.year"), year);
addCell(getLocalizedMessate("label.module.workingCapital"), workingCapitalProcess.getWorkingCapital().getUnit()
.getPresentationName());
addCell(getLocalizedMessate("label.module.workingCapital.transaction.number"), transaction.getNumber());
addCell(getLocalizedMessate("WorkingCapitalProcessState.CANCELED"),
transaction.isCanceledOrRejected() ? getLocalizedMessate("label.yes") : getLocalizedMessate("label.no"));
addCell(getLocalizedMessate("label.module.workingCapital.transaction.description") + " "
+ getLocalizedMessate("label.module.workingCapital.transaction.number"), transaction.getDescription());
addCell(getLocalizedMessate("label.module.workingCapital.transaction.approval"), approvalLabel(transaction));
addCell(getLocalizedMessate("label.module.workingCapital.transaction.verification"),
verificationLabel(transaction));
addCell(getLocalizedMessate("label.module.workingCapital.transaction.value"), transaction.getValue());
addCell(getLocalizedMessate("label.module.workingCapital.transaction.accumulatedValue"),
transaction.getAccumulatedValue());
addCell(getLocalizedMessate("label.module.workingCapital.transaction.balance"), transaction.getBalance());
addCell(getLocalizedMessate("label.module.workingCapital.transaction.debt"), transaction.getDebt());
if (transaction.isAcquisition()) {
final WorkingCapitalAcquisitionTransaction acquisitionTx = (WorkingCapitalAcquisitionTransaction) transaction;
final WorkingCapitalAcquisition acquisition = acquisitionTx.getWorkingCapitalAcquisition();
final AcquisitionClassification acquisitionClassification = acquisition.getAcquisitionClassification();
final String economicClassification = acquisitionClassification.getEconomicClassification();
final String pocCode = acquisitionClassification.getPocCode();
addCell(getLocalizedMessate("label.module.workingCapital.configuration.acquisition.classifications.economicClassification"),
economicClassification);
addCell(getLocalizedMessate("label.module.workingCapital.configuration.acquisition.classifications.pocCode"),
pocCode);
addCell(getLocalizedMessate("label.module.workingCapital.configuration.acquisition.classifications.description"),
acquisition.getDescription());
}
}
private Object verificationLabel(final WorkingCapitalTransaction transaction) {
if (transaction.isAcquisition()) {
final WorkingCapitalAcquisitionTransaction acquisition = (WorkingCapitalAcquisitionTransaction) transaction;
if (acquisition.getWorkingCapitalAcquisition().getVerified() != null) {
return getLocalizedMessate("label.verified");
}
if (acquisition.getWorkingCapitalAcquisition().getNotVerified() != null) {
return getLocalizedMessate("label.notVerified");
}
}
return "-";
}
private String approvalLabel(final WorkingCapitalTransaction transaction) {
if (transaction.isAcquisition()) {
final WorkingCapitalAcquisitionTransaction acquisition = (WorkingCapitalAcquisitionTransaction) transaction;
if (acquisition.getWorkingCapitalAcquisition().getApproved() != null) {
return getLocalizedMessate("label.approved");
}
if (acquisition.getWorkingCapitalAcquisition().getRejectedApproval() != null) {
return getLocalizedMessate("label.rejected");
}
}
return "-";
}
};
builder.addSheet(getLocalizedMessate("label.module.workingCapital.transactions"), transactionsSheet);
return streamSpreadsheet(response, "FundosManeio_" + year + "-" + currentLocalDate.getDayOfMonth() + "-"
+ currentLocalDate.getMonthOfYear() + "-" + currentLocalDate.getYear(), builder);
}
private String getLocalizedMessate(String msg) {
return BundleUtil.getString(WorkingCapital.bundleResource, msg);
}
private ActionForward streamSpreadsheet(final HttpServletResponse response, final String fileName,
final SpreadsheetBuilder spreadSheetBuilder) throws IOException {
response.setContentType("application/xls ");
response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls");
ServletOutputStream outputStream = response.getOutputStream();
spreadSheetBuilder.build(WorkbookExportFormat.EXCEL, outputStream);
outputStream.flush();
outputStream.close();
return null;
}
}