package devopsdistilled.operp.server.data.entity.business; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.MappedSuperclass; import javax.persistence.OneToOne; import devopsdistilled.operp.server.data.entity.Entiti; import devopsdistilled.operp.server.data.entity.items.Item; import devopsdistilled.operp.server.data.entity.stock.Warehouse; @MappedSuperclass public abstract class BusinessDescRow<D extends BusinessDesc<?, ?>> extends Entiti<Long> { private static final long serialVersionUID = 9140270277994676490L; @Id @GeneratedValue(strategy = GenerationType.AUTO) protected Long businessDescRowId; @ManyToOne @JoinColumn(name = "businessDescId") protected D businessDesc; @OneToOne @JoinColumn(name = "itemId") protected Item item; @OneToOne @JoinColumn(name = "warehouseId") protected Warehouse warehouse; private Double rate = 0.0; private Long quantity = 0L; private Double amount = 0.0; public Item getItem() { return item; } public void setItem(Item item) { this.item = item; } public Warehouse getWarehouse() { return warehouse; } public void setWarehouse(Warehouse warehouse) { this.warehouse = warehouse; } public Double getRate() { return rate; } public void setRate(Double rate) { this.rate = rate; setAmount(getRate() * getQuantity()); } public Long getQuantity() { return quantity; } public void setQuantity(Long quantity) { this.quantity = quantity; setAmount(getRate() * getQuantity()); } public Double getAmount() { return amount; } public void setAmount(Double amount) { this.amount = amount; } public void setBusinessDesc(D businessDesc) { this.businessDesc = businessDesc; } @Override public Long id() { return businessDescRowId; } @Override public String toString() { return new String(getQuantity().toString() + " " + getItem().getItemName() + " at " + getRate().toString()); } }