/* * @(#)CommitFundsActivityInformation.java * * Copyright 2012 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.domain.acquisitions.activities.commons; import java.util.ArrayList; import java.util.List; import module.mission.domain.MissionFinancer; import module.mission.domain.MissionProcess; import module.workflow.activities.ActivityInformation; import module.workflow.activities.WorkflowActivity; import module.workflow.domain.WorkflowProcess; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.bennu.core.security.Authenticate; import pt.ist.expenditureTrackingSystem.domain.acquisitions.AcquisitionRequest; import pt.ist.expenditureTrackingSystem.domain.acquisitions.Financer; import pt.ist.expenditureTrackingSystem.domain.acquisitions.RegularAcquisitionProcess; import pt.ist.expenditureTrackingSystem.domain.dto.CommitmentNumberBean; import pt.ist.expenditureTrackingSystem.domain.organization.Person; /** * * @author Luis Cruz * */ public class CommitFundsActivityInformation extends ActivityInformation<RegularAcquisitionProcess> { private List<CommitmentNumberBean> commitmentNumberBeans = new ArrayList<CommitmentNumberBean>(); public CommitFundsActivityInformation(final RegularAcquisitionProcess process, final WorkflowActivity<? extends WorkflowProcess, ? extends ActivityInformation> activity) { super(process, activity); process.takeProcess(); final User user = Authenticate.getUser(); Person person = user.getExpenditurePerson(); final AcquisitionRequest acquisitionRequest = process.getAcquisitionRequest(); for (final Financer financer : acquisitionRequest.getFinancersSet()) { if (!financer.isCommitted() && financer.isAccountingEmployee(person)) { final CommitmentNumberBean bean = new CommitmentNumberBean(financer); commitmentNumberBeans.add(bean); if (bean.getCommitmentNumber() == null || bean.getCommitmentNumber().isEmpty()) { final MissionProcess missionProcess = process.getMissionProcess(); if (missionProcess != null) { final MissionFinancer missionFinancer = findMissionFinance(missionProcess, financer); if (missionFinancer != null) { bean.setCommitmentNumber(missionFinancer.getCommitmentNumber()); } } } } } } private MissionFinancer findMissionFinance(final MissionProcess missionProcess, final Financer financer) { for (final MissionFinancer missionFinancer : missionProcess.getMission().getFinancerSet()) { if (missionFinancer.getUnit() == financer.getUnit()) { return missionFinancer; } } return null; } @Override public boolean hasAllneededInfo() { return isForwardedFromInput() && super.hasAllneededInfo() && hasAllCommitmentNumbers(); } private boolean hasAllCommitmentNumbers() { if (commitmentNumberBeans.isEmpty()) { return false; } for (final CommitmentNumberBean commitmentNumberBean : commitmentNumberBeans) { final String commitmentNumber = commitmentNumberBean.getCommitmentNumber(); if (commitmentNumber == null || commitmentNumber.isEmpty()) { return false; } } return true; } public List<CommitmentNumberBean> getCommitmentNumberBeans() { return commitmentNumberBeans; } public void setCommitmentNumberBeans(List<CommitmentNumberBean> commitmentNumberBeans) { this.commitmentNumberBeans = commitmentNumberBeans; } }