package ch.elexis.core.model;
import ch.elexis.core.interfaces.INumericEnum;
public enum InvoiceState implements INumericEnum {
//@formatter:off
UNBEKANNT(0),
VERRECHNET(1),
NICHT_VERRECHNET(2),
LAUFEND(3),
OFFEN(4),
OFFEN_UND_GEDRUCKT(5),
MAHNUNG_1(6),
MAHNUNG_1_GEDRUCKT(7),
MAHNUNG_2(8),
MAHNUNG_2_GEDRUCKT(9),
MAHNUNG_3(10),
MAHNUNG_3_GEDRUCKT(11),
IN_BETREIBUNG(12),
TEILVERLUST(13),
TOTALVERLUST(14),
TEILZAHLUNG(15),
BEZAHLT(16),
ZUVIEL_BEZAHLT(17),
STORNIERT(18),
VON_HEUTE(19),
NICHT_VON_HEUTE(20),
NICHT_VON_IHNEN(21),
FEHLERHAFT(22),
ZU_DRUCKEN(23),
AUSSTEHEND(24),
MAHNSTOPP(25),
ABGESCHRIEBEN(26), // Storniert und Kons nicht mehr freigegeben
ZURUECKGEWIESEN(27);
//@formatter:on
private int state;
public static enum REJECTCODE {
RG_KONS_NO_BILLABLES_NOR_REVENUE, NO_DIAG, NO_MANDATOR, NO_CASE, NO_DEBITOR,
NO_GUARANTOR, VALIDATION_ERROR, REJECTED_BY_PEER, SUM_MISMATCH, INTERNAL_ERROR;
};
private InvoiceState(int state){
this.state = state;
}
public int getState(){
return state;
}
@Override
public int numericValue(){
return state;
}
/**
* Decide whether this state means an "active" state, i.e. the bill is not paid or closed by any
* means
*
* @return true if there are still payments awaited
*/
public boolean isActive(){
if (state > LAUFEND.getState() && state < TEILVERLUST.getState()) {
return true;
}
if (state == TEILZAHLUNG.getState()) {
return true;
}
if (state > FEHLERHAFT.getState() && state < ABGESCHRIEBEN.getState()) {
return true;
}
return false;
}
public static InvoiceState fromState(int value){
for (InvoiceState is : InvoiceState.values()) {
if (value == is.getState()) {
return is;
}
}
return InvoiceState.UNBEKANNT;
}
}