Package org.fenixedu.academic.domain.phd.debts

Source Code of org.fenixedu.academic.domain.phd.debts.PhdEvent

/**
* Copyright © 2002 Instituto Superior Técnico
*
* This file is part of FenixEdu Academic.
*
* FenixEdu Academic 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.
*
* FenixEdu Academic 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 FenixEdu Academic.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.fenixedu.academic.domain.phd.debts;

import org.fenixedu.academic.domain.accounting.Account;
import org.fenixedu.academic.domain.accounting.AccountType;
import org.fenixedu.academic.domain.accounting.EntryType;
import org.fenixedu.academic.domain.accounting.Exemption;
import org.fenixedu.academic.domain.accounting.PostingRule;
import org.fenixedu.academic.domain.phd.PhdIndividualProgramProcess;
import org.fenixedu.academic.domain.phd.PhdProgram;
import org.fenixedu.academic.domain.phd.PhdProgramUnit;

import pt.utl.ist.fenix.tools.resources.LabelFormatter;

abstract public class PhdEvent extends PhdEvent_Base {

    protected PhdEvent() {
        super();
    }

    @Override
    protected Account getFromAccount() {
        return getPerson().getAccountBy(AccountType.EXTERNAL);
    }

    @Override
    public Account getToAccount() {
        return getUnit().getAccountBy(AccountType.INTERNAL);
    }

    protected PhdProgramUnit getUnit() {
        return getPhdProgram().getPhdProgramUnit();
    }

    @Override
    public LabelFormatter getDescriptionForEntryType(final EntryType entryType) {
        return new LabelFormatter().appendLabel(entryType.name(), "enum").appendLabel(" (")
                .appendLabel(getPhdProgram().getName().getContent()).appendLabel(")");
    }

    abstract protected PhdProgram getPhdProgram();

    @Override
    public PostingRule getPostingRule() {
        return getPhdProgram().getServiceAgreementTemplate().findPostingRuleByEventTypeAndDate(getEventType(), getWhenOccured());
    }

    @Override
    public boolean isExemptionAppliable() {
        return true;
    }

    public boolean hasPhdEventExemption() {
        return getPhdEventExemption() != null;
    }

    public PhdEventExemption getPhdEventExemption() {
        for (final Exemption exemption : getExemptionsSet()) {
            if (exemption instanceof PhdEventExemption) {
                return (PhdEventExemption) exemption;
            }
        }
        return null;
    }

    @Override
    public boolean isPhdEvent() {
        return true;
    }

    public abstract PhdIndividualProgramProcess getPhdIndividualProgramProcess();

    public boolean isPhdThesisRequestFee() {
        return false;
    }
}
TOP

Related Classes of org.fenixedu.academic.domain.phd.debts.PhdEvent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.