AccountingEvent.java
package com.tradecloud.domain.model.events;
import org.hibernate.annotations.AccessType;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import java.util.Date;
/**
* Encapsulation of accounting events.
* <p>
* TODO: remove local AccountingEventType
*/
@SuppressWarnings("serial")
@Entity
@Table(name = "accountingevent")
@AccessType("field")
@NamedQueries({@NamedQuery(query = "select e from AccountingEvent e where e.reference = :reference and e.eventType = " +
":eventType order by created asc", name = "findEventByTypeAndReference"),
@NamedQuery(query = "select e from AccountingEvent e where e.consumerTag = :consumerTag order by created asc",
name = "findAllAccountingEventsForUser")})
public class AccountingEvent extends Event {
private String shipmentNumber;
private Long paymentId;
private String serviceProvider;
/**
* The event types on an accounting event..
*/
public static enum AccountingEventType {
SUBMITTED, DIRECT_INVOICE_SIGN_OFF, DIRECT_INVOICE_UNSIGN_OFF, INDIRECT_INVOICE_SIGN_OFF, INDIRECT_INVOICE_UNSIGN_OFF,
DIRECT_CREDIT_NOTE_SIGN_OFF, DIRECT_CREDIT_NOTE_UNSIGN_OFF, INDIRECT_CREDIT_NOTE_SIGN_OFF, INDIRECT_CREDIT_NOTE_UNSIGN_OFF,
ORDER_PAYMENT, SPI_PAYMENT, CI_PAYMENT, SPLIT_INDIRECT_INVOICE_SIGN_OFF, SPLIT_INDIRECT_INVOICE_UNSIGN_OFF, INVOICE_BALANCED,
ORDER_PAYMENT_REALLOCATION, PAYMENT_TO_INVOICE_ALLOCATION, COMMERCIAL_INVOICE_COMPLETE, BONDED_INVOICE_SIGN_OFF,
BONDED_INVOICE_UNSIGN_OFF, BONDED_INVOICE_SETTLED, BONDED_INVOICE_REJECT, BONDED_INVOICE_DELETE;
}
/**
* only used by hibernate.
*/
protected AccountingEvent() {
}
@Override
public Class getInstanceClass() {
return AccountingEvent.class;
}
/**
* Initialising constructor.
*
* @param reference {@link Event#getId()}
* @param reference {@link Event#getReference()}
* @param timestamp {@link Event#getTimestamp()}
* @param organisationalUnit {@link Event#getOrganisationalUnit()}
* @param eventType {@link Event#getEventType()}
*/
public AccountingEvent(final Long id, final String reference, final Date timestamp, final String organisationalUnit,
final AccountingEventType eventType, final String consumerTag) {
super(id, reference, timestamp, organisationalUnit, eventType.name(), consumerTag);
}
public AccountingEvent(String reference, Date timestamp, String organisationalUnit, String eventType, String consumerTag) {
super(reference, timestamp, organisationalUnit, eventType, consumerTag);
}
public AccountingEvent(String reference, Date timestamp, String organisationalUnit, String eventType, String consumerTag,
String shipmentNumber, Long paymentId, String serviceProvider) {
super(reference, timestamp, organisationalUnit, eventType, consumerTag);
this.shipmentNumber = shipmentNumber;
this.paymentId = paymentId;
this.serviceProvider = serviceProvider;
}
public boolean isDirectInvoiceSignOff() {
return AccountingEventType.DIRECT_INVOICE_SIGN_OFF.equals(AccountingEventType.valueOf(getEventType()))
|| AccountingEventType.COMMERCIAL_INVOICE_COMPLETE.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isDirectInvoiceUnSignOff() {
return AccountingEventType.DIRECT_INVOICE_UNSIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isDirectCreditNoteSignOff() {
return AccountingEventType.DIRECT_CREDIT_NOTE_SIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isDirectCreditNoteUnSignOff() {
return AccountingEventType.DIRECT_CREDIT_NOTE_UNSIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isInDirectInvoiceSignOff() {
return AccountingEventType.INDIRECT_INVOICE_SIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isInDirectInvoiceUnSignOff() {
return AccountingEventType.INDIRECT_INVOICE_UNSIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isSplitInvoice() {
if (isDirectInvoiceSignOff()) {
return AccountingEventType.SPLIT_INDIRECT_INVOICE_SIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
} else {
return AccountingEventType.SPLIT_INDIRECT_INVOICE_UNSIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
}
}
public boolean isInDirectCreditNoteSignOff() {
return AccountingEventType.INDIRECT_CREDIT_NOTE_SIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isInDirectCreditNoteUnSignOff() {
return AccountingEventType.INDIRECT_CREDIT_NOTE_UNSIGN_OFF.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isOrderPayment() {
return AccountingEventType.ORDER_PAYMENT.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isDirectPayment() {
return AccountingEventType.CI_PAYMENT.equals(AccountingEventType.valueOf(getEventType()));
}
public boolean isInDirectPayment() {
return AccountingEventType.SPI_PAYMENT.equals(AccountingEventType.valueOf(getEventType()));
}
public String getShipmentNumber() {
return shipmentNumber;
}
public void setShipmentNumber(String shipmentNumber) {
this.shipmentNumber = shipmentNumber;
}
public Long getPaymentId() {
return paymentId;
}
public void setPaymentId(Long paymentId) {
this.paymentId = paymentId;
}
public String getServiceProvider() {
return serviceProvider;
}
public void setServiceProvider(String serviceProvider) {
this.serviceProvider = serviceProvider;
}
}