001/**
002 * Copyright 2005-2017 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.kim.api.identity.employment;
017
018import org.kuali.rice.core.api.mo.common.GloballyUnique;
019import org.kuali.rice.core.api.mo.common.Identifiable;
020import org.kuali.rice.core.api.mo.common.Versioned;
021import org.kuali.rice.core.api.mo.common.active.Inactivatable;
022import org.kuali.rice.core.api.util.type.KualiDecimal;
023import org.kuali.rice.kim.api.identity.CodedAttributeContract;
024import org.kuali.rice.kim.api.identity.affiliation.EntityAffiliationContract;
025
026/**
027 * employment information for a KIM identity
028 * 
029 * @author Kuali Rice Team (rice.collab@kuali.org)
030 */
031public interface EntityEmploymentContract extends Versioned, GloballyUnique, Inactivatable, Identifiable {
032
033
034    /**
035     * Gets this id of the parent identity object.
036     * @return the identity id for this {@link org.kuali.rice.kim.api.identity.email.EntityEmailContract}
037     */
038    String getEntityId();
039
040        /**
041     * Gets this {@link EntityEmploymentContract}'s identity affiliation.
042     * @return the identity affiliation for this {@link EntityEmploymentContract}, or null if none has been assigned.
043     */
044        EntityAffiliationContract getEntityAffiliation();
045        
046        /**
047     * Gets this {@link EntityEmploymentContract}'s employee status.
048     * @return the employee status for this {@link EntityEmploymentContract}, or null if none has been assigned.
049     */
050        CodedAttributeContract getEmployeeStatus();
051        
052        /**
053     * Gets this {@link EntityEmploymentContract}'s employee type.
054     * @return the employee type for this {@link EntityEmploymentContract}, or null if none has been assigned.
055     */
056        CodedAttributeContract getEmployeeType();
057        
058        /**
059     * Gets this {@link EntityEmploymentContract}'s primary department code.
060     * @return the primary department code for this {@link EntityEmploymentContract}, or null if none has been assigned.
061     */
062        String getPrimaryDepartmentCode();
063        
064        /**
065     * Gets this {@link EntityEmploymentContract}'s employee id.
066     * @return the employee id for this {@link EntityEmploymentContract}, or null if none has been assigned.
067     */
068        String getEmployeeId();
069        
070        /**
071     * Gets this {@link EntityEmploymentContract}'s employment record id.
072     * @return the employment record id for this {@link EntityEmploymentContract}, or null if none has been assigned.
073     */
074        String getEmploymentRecordId();
075        
076        /**
077     * Gets this {@link EntityEmploymentContract}'s base salary amount.
078     * @return the base salary amount for this {@link EntityEmploymentContract}, or null if none has been assigned.
079     */
080        KualiDecimal getBaseSalaryAmount();
081
082    /**
083         * The primary value for this object.
084         *
085         * @return returns true if the record is the primary Employment record for the parent entity
086         */
087        boolean isPrimary();
088
089}