package devopsdistilled.operp.server.data.entity.business;
import java.util.LinkedList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import devopsdistilled.operp.server.data.entity.Entiti;
@MappedSuperclass
public abstract class BusinessDesc<B extends Business<?, ?>, DR extends BusinessDescRow<?>>
extends Entiti<Long> {
private static final long serialVersionUID = 7790361115068372068L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long businessDescId;
@OneToOne(mappedBy = "businessDesc")
protected B business;
@OneToMany(mappedBy = "businessDesc", cascade = CascadeType.ALL)
protected List<DR> descRows = new LinkedList<>();
private Double discountAmount = 0.0;
// Total Amount without Discount
private Double totalAmount = 0.0;
public Double getDiscountAmount() {
return discountAmount;
}
public void setDiscountAmount(Double discountAmount) {
this.discountAmount = discountAmount;
business.setAmount(getTotalAmount() - getDiscountAmount());
}
public B getBusiness() {
return business;
}
public void setBusiness(B business) {
this.business = business;
}
public Double getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(Double totalAmount) {
this.totalAmount = totalAmount;
business.setAmount(getTotalAmount() - getDiscountAmount());
}
public List<DR> getDescRows() {
return descRows;
}
public void setDescRows(List<DR> descRows) {
this.descRows = descRows;
}
@Override
public Long id() {
return businessDescId;
}
@Override
public String toString() {
return new String(business.getBusinessId() + ": "
+ business.getAmount().toString());
}
}