/**
*/
package Taxation;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
/**
*
* A representation of the model object 'Income'.
*
*
*
* The following features are supported:
*
*
* - {@link Taxation.Income#getIncome_amount Income amount}
* - {@link Taxation.Income#getIncome_type Income type}
* - {@link Taxation.Income#getTax_card Tax card}
* - {@link Taxation.Income#getTax_liability Tax liability}
* - {@link Taxation.Income#getTaxPayer Tax Payer}
* - {@link Taxation.Income#getDetails Details}
* - {@link Taxation.Income#getNum Num}
* - {@link Taxation.Income#getExpenses Expenses}
*
*
* @see Taxation.TaxationPackage#getIncome()
* @model abstract="true"
* @generated
*/
public interface Income extends EObject {
/**
* Returns the value of the 'Income amount' attribute.
*
*
* @return the value of the 'Income amount' attribute.
* @see #setIncome_amount(double)
* @see Taxation.TaxationPackage#getIncome_Income_amount()
* @model unique="false" required="true" ordered="false"
* annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in\nnon_null_amounts->collect(amount)->min()'"
* @generated
*/
double getIncome_amount();
/**
* Sets the value of the '{@link Taxation.Income#getIncome_amount Income amount}' attribute.
*
*
* @param value the new value of the 'Income amount' attribute.
* @see #getIncome_amount()
* @generated
*/
void setIncome_amount(double value);
/**
* Returns the value of the 'Income type' containment reference.
* It is bidirectional and its opposite is '{@link Taxation.Income_Type#getIncome Income}'.
*
*
* @return the value of the 'Income type' containment reference.
* @see #setIncome_type(Income_Type)
* @see Taxation.TaxationPackage#getIncome_Income_type()
* @see Taxation.Income_Type#getIncome
* @model opposite="income" containment="true" required="true"
* @generated
*/
Income_Type getIncome_type();
/**
* Sets the value of the '{@link Taxation.Income#getIncome_type Income type}' containment reference.
*
*
* @param value the new value of the 'Income type' containment reference.
* @see #getIncome_type()
* @generated
*/
void setIncome_type(Income_Type value);
/**
* Returns the value of the 'Tax card' containment reference.
* It is bidirectional and its opposite is '{@link Taxation.Tax_Card#getIncome Income}'.
*
*
* @return the value of the 'Tax card' containment reference.
* @see #setTax_card(Tax_Card)
* @see Taxation.TaxationPackage#getIncome_Tax_card()
* @see Taxation.Tax_Card#getIncome
* @model opposite="income" containment="true"
* @generated
*/
Tax_Card getTax_card();
/**
* Sets the value of the '{@link Taxation.Income#getTax_card Tax card}' containment reference.
*
*
* @param value the new value of the 'Tax card' containment reference.
* @see #getTax_card()
* @generated
*/
void setTax_card(Tax_Card value);
/**
* Returns the value of the 'Tax liability' attribute.
*
*
* @return the value of the 'Tax liability' attribute.
* @see #setTax_liability(double)
* @see Taxation.TaxationPackage#getIncome_Tax_liability()
* @model required="true"
* @generated
*/
double getTax_liability();
/**
* Sets the value of the '{@link Taxation.Income#getTax_liability Tax liability}' attribute.
*
*
* @param value the new value of the 'Tax liability' attribute.
* @see #getTax_liability()
* @generated
*/
void setTax_liability(double value);
/**
* Returns the value of the 'Tax Payer' container reference.
* It is bidirectional and its opposite is '{@link Taxation.Tax_Payer#getIncomes Incomes}'.
*
*
* @return the value of the 'Tax Payer' container reference.
* @see #setTaxPayer(Tax_Payer)
* @see Taxation.TaxationPackage#getIncome_TaxPayer()
* @see Taxation.Tax_Payer#getIncomes
* @model opposite="incomes" required="true" transient="false" ordered="false"
* @generated
*/
Tax_Payer getTaxPayer();
/**
* Sets the value of the '{@link Taxation.Income#getTaxPayer Tax Payer}' container reference.
*
*
* @param value the new value of the 'Tax Payer' container reference.
* @see #getTaxPayer()
* @generated
*/
void setTaxPayer(Tax_Payer value);
/**
* Returns the value of the 'Details' containment reference list.
* The list contents are of type {@link Taxation.Income_Detail}.
* It is bidirectional and its opposite is '{@link Taxation.Income_Detail#getIncome Income}'.
*
*
* @return the value of the 'Details' containment reference list.
* @see Taxation.TaxationPackage#getIncome_Details()
* @see Taxation.Income_Detail#getIncome
* @model opposite="income" containment="true" lower="12" upper="12"
* @generated
*/
EList getDetails();
/**
* Returns the value of the 'Num' attribute.
*
*
* @return the value of the 'Num' attribute.
* @see #setNum(int)
* @see Taxation.TaxationPackage#getIncome_Num()
* @model id="true" required="true" ordered="false"
* @generated
*/
int getNum();
/**
* Sets the value of the '{@link Taxation.Income#getNum Num}' attribute.
*
*
* @param value the new value of the 'Num' attribute.
* @see #getNum()
* @generated
*/
void setNum(int value);
/**
* Returns the value of the 'Expenses' containment reference list.
* The list contents are of type {@link Taxation.Expense}.
* It is bidirectional and its opposite is '{@link Taxation.Expense#getIncome Income}'.
*
*
* @return the value of the 'Expenses' containment reference list.
* @see Taxation.TaxationPackage#getIncome_Expenses()
* @see Taxation.Expense#getIncome
* @model opposite="income" containment="true" ordered="false"
* @generated
*/
EList getExpenses();
} // Income