/* * @(#)ExpenditureConfigurationAction.java * * Copyright 2011 Instituto Superior Tecnico * Founding Authors: Luis Cruz, Nuno Ochoa, Paulo Abrantes * * https://fenix-ashes.ist.utl.pt/ * * This file is part of the Expenditure Tracking Module. * * The Expenditure Tracking 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 Expenditure Tracking 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 Expenditure Tracking Module. If not, see <http://www.gnu.org/licenses/>. * */ package pt.ist.expenditureTrackingSystem.presentationTier.actions; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.fenixedu.bennu.core.domain.Bennu; import org.fenixedu.bennu.struts.annotations.Mapping; import org.fenixedu.bennu.struts.portal.EntryPoint; import org.fenixedu.bennu.struts.portal.StrutsFunctionality; import module.finance.util.Money; import module.organization.domain.OrganizationalModel; import module.organization.domain.Party; import module.organization.domain.Unit; import module.organization.presentationTier.actions.OrganizationModelAction.OrganizationalModelChart; import pt.ist.expenditureTrackingSystem.domain.ExpenditureTrackingSystem; import pt.ist.expenditureTrackingSystem.domain.acquisitions.search.SearchProcessValues; import pt.ist.expenditureTrackingSystem.domain.acquisitions.search.SearchProcessValuesArray; import pt.ist.expenditureTrackingSystem.presentationTier.actions.acquisitions.SearchPaymentProcessesAction; @StrutsFunctionality(app = SearchPaymentProcessesAction.class, path = "expenditureConfiguration", titleKey = "link.topBar.configuration", accessGroup = "#managers") @Mapping(path = "/expenditureConfiguration") /** * * @author João Neves * @author Luis Cruz * */ public class ExpenditureConfigurationAction extends BaseAction { @EntryPoint public ActionForward viewConfiguration(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) { return forward("/expenditureConfiguration.jsp"); } public ActionForward saveConfiguration(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) { final Set<SearchProcessValues> valuesToSet = new HashSet<SearchProcessValues>(); for (final SearchProcessValues values : SearchProcessValues.values()) { final String parameter = request.getParameter(values.name()); if ("on".equals(parameter)) { valuesToSet.add(values); } } final SearchProcessValuesArray array = SearchProcessValuesArray.importFromString(valuesToSet); final String acquisitionCreationWizardJsp = request.getParameter("acquisitionCreationWizardJsp"); final String institutionalProcessNumberPrefix = request.getParameter("institutionalProcessNumberPrefix"); final String institutionalRequestDocumentPrefix = request.getParameter("institutionalRequestDocumentPrefix"); final String documentationUrl = request.getParameter("documentationUrl"); final String documentationLabel = request.getParameter("documentationLabel"); final String createSupplierUrl = request.getParameter("createSupplierUrl"); final String createSupplierLabel = request.getParameter("createSupplierLabel"); final String invoiceAllowedToStartAcquisitionProcessParam = request.getParameter("invoiceAllowedToStartAcquisitionProcess"); final Boolean invoiceAllowedToStartAcquisitionProcess = Boolean.valueOf("on".equals(invoiceAllowedToStartAcquisitionProcessParam)); final String requireFundAllocationPriorToAcquisitionRequestParam = request.getParameter("requireFundAllocationPriorToAcquisitionRequest"); final Boolean requireFundAllocationPriorToAcquisitionRequest = Boolean.valueOf("on".equals(requireFundAllocationPriorToAcquisitionRequestParam)); final String registerDiaryNumbersAndTransactionNumbersParam = request.getParameter("registerDiaryNumbersAndTransactionNumbers"); final Boolean registerDiaryNumbersAndTransactionNumbers = Boolean.valueOf("on".equals(registerDiaryNumbersAndTransactionNumbersParam)); final String maxValueStartedWithInvoiveParam = request.getParameter("maxValueStartedWithInvoive"); final Money maxValueStartedWithInvoive = maxValueStartedWithInvoiveParam == null || maxValueStartedWithInvoiveParam.isEmpty() ? null : new Money( maxValueStartedWithInvoiveParam); final String valueRequireingTopLevelAuthorizationParam = request.getParameter("valueRequireingTopLevelAuthorization"); final Money valueRequireingTopLevelAuthorization = valueRequireingTopLevelAuthorizationParam == null || valueRequireingTopLevelAuthorizationParam.isEmpty() ? null : new Money( valueRequireingTopLevelAuthorizationParam); final String requireCommitmentNumberParam = request.getParameter("requireCommitmentNumber"); final Boolean requireCommitmentNumber = Boolean.valueOf("on".equals(requireCommitmentNumberParam)); final String processesNeedToBeReverifiedParam = request.getParameter("processesNeedToBeReverified"); final Boolean processesNeedToBeReverified = Boolean.valueOf("on".equals(processesNeedToBeReverifiedParam)); ExpenditureTrackingSystem.getInstance().saveConfiguration(institutionalProcessNumberPrefix, institutionalRequestDocumentPrefix, acquisitionCreationWizardJsp, array, invoiceAllowedToStartAcquisitionProcess, requireFundAllocationPriorToAcquisitionRequest, registerDiaryNumbersAndTransactionNumbers, maxValueStartedWithInvoive, valueRequireingTopLevelAuthorization, documentationUrl, documentationLabel, requireCommitmentNumber, processesNeedToBeReverified, createSupplierUrl, createSupplierLabel); return viewConfiguration(mapping, form, request, response); } public ActionForward createNewSystem(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) { ExpenditureTrackingSystem.createSystem(); return viewConfiguration(mapping, form, request, response); } public ActionForward prepareCreateTopLevelUnits(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) { final ExpenditureTrackingSystem expenditureTrackingSystem = getDomainObject(request, "systemId"); request.setAttribute("systemId", expenditureTrackingSystem.getExternalId()); final Set<OrganizationalModel> organizationalModels = new TreeSet<OrganizationalModel>(OrganizationalModel.COMPARATORY_BY_NAME); organizationalModels.addAll(Bennu.getInstance().getOrganizationalModelsSet()); request.setAttribute("organizationalModels", organizationalModels); final OrganizationalModelChart organizationalModelChart = new OrganizationalModelChart(organizationalModels); request.setAttribute("organizationalModelChart", organizationalModelChart); return forward("/createTopLevelUnits.jsp"); } public ActionForward createTopLevelUnits(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) { final OrganizationalModel organizationModel = getDomainObject(request, "organizationalModelOid"); final ExpenditureTrackingSystem expenditureTrackingSystem = getDomainObject(request, "systemId"); for (Party party : organizationModel.getPartiesSet()) { if (!party.isUnit()) { continue; } Unit unit = (Unit) party; if (unit.getExpenditureUnit() != null) { throw new RuntimeException("error.configuration.organization.already.has.system"); } pt.ist.expenditureTrackingSystem.domain.organization.Unit.createTopLevelUnit(unit, expenditureTrackingSystem); } return viewConfiguration(mapping, form, request, response); } public ActionForward selectOrganizationalModel(final ActionMapping mapping, final ActionForm form, final HttpServletRequest request, final HttpServletResponse response) { final OrganizationalModel model = getDomainObject(request, "modelId"); ExpenditureTrackingSystem.getInstance().selectOrganizationalModel(model); return viewConfiguration(mapping, form, request, response); } }