RFQProduct.java
package com.tradecloud.domain.model.requestforquote;
import com.tradecloud.domain.item.Product;
import com.tradecloud.domain.place.FinalDestination;
import com.tradecloud.domain.place.NamedPlace;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlIDREF;
import java.math.BigDecimal;
import java.util.Objects;
import java.util.Optional;
@Entity
@Table(name = "rfqproduct")
public class RFQProduct extends StockLevelRow {
@ManyToOne(fetch = FetchType.LAZY)
@XmlIDREF
private Product product;
@XmlAttribute
@Column
private BigDecimal quantitySupplied = BigDecimal.ZERO;
@XmlAttribute
@Column
private BigDecimal price = BigDecimal.ZERO;
@XmlAttribute
@Column
private BigDecimal costAndAntiDumping = BigDecimal.ZERO;
@XmlAttribute
@Column
private BigDecimal antiDumpingPercent = BigDecimal.ZERO;
@ManyToOne(fetch = FetchType.LAZY)
private SupplierStyle supplierStyle;
@XmlAttribute
@Column
private BigDecimal awardedQuantity = BigDecimal.ZERO;
private boolean awardedOverridden;
private boolean antiDumpingPercentOverridden;
@ManyToOne
private NamedPlace factory;
@Column
private BigDecimal quantityRequested = null;
@ManyToOne
private FinalDestination finalDestination;
private boolean approved;
@ManyToOne
private RFQRegion rfqRegion;
private boolean originalQuantitySelected;
private boolean branchQuantitySelected;
public RFQProduct() {
}
public RFQProduct(Product product, SupplierStyle supplierStyle, NamedPlace factory) {
this.product = product;
this.supplierStyle = supplierStyle;
this.factory = factory;
}
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public BigDecimal getQuantitySupplied() {
return quantitySupplied;
}
public void setQuantitySupplied(BigDecimal quantitySupplied) {
this.quantitySupplied = quantitySupplied;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public SupplierStyle getSupplierStyle() {
return supplierStyle;
}
public void setSupplierStyle(SupplierStyle supplierStyle) {
this.supplierStyle = supplierStyle;
}
public BigDecimal getAwardedQuantity() {
return awardedQuantity;
}
public void setAwardedQuantity(BigDecimal awardedQuantity) {
this.awardedQuantity = awardedQuantity;
}
public int getPosition() {
return getSupplierStyle().getRfqOrganisationalUnitSupplier().getPosition();
}
public BigDecimal getReamingQuantitySupplied() {
return quantitySupplied.subtract(Optional.ofNullable(getAwardedQuantity()).orElse(BigDecimal.ZERO));
}
public BigDecimal getQuantityRequested() {
return quantityRequested;
}
public void setQuantityRequested(BigDecimal quantityRequested) {
this.quantityRequested = quantityRequested;
}
@Override
public boolean equals(Object object) {
if (this == object) return true;
if (object == null || getClass() != object.getClass()) return false;
if (!super.equals(object)) return false;
RFQProduct that = (RFQProduct) object;
return Objects.equals(product.getId(), that.product.getId()) && Objects.equals(finalDestination, that.finalDestination);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), product.getId(), finalDestination);
}
public boolean isProductLevel() {
return true;
}
@Override
public boolean isStyleLevel() {
return false;
}
public boolean isAwardedOverridden() {
return awardedOverridden;
}
public void setAwardedOverridden(boolean awardedOverridden) {
this.awardedOverridden = awardedOverridden;
}
public boolean isAntiDumpingPercentOverridden() {
return antiDumpingPercentOverridden;
}
public void setAntiDumpingPercentOverridden(boolean antiDumpingPercentOverridden) {
this.antiDumpingPercentOverridden = antiDumpingPercentOverridden;
}
public NamedPlace getFactory() {
return factory;
}
public void setFactory(NamedPlace factory) {
this.factory = factory;
}
public BigDecimal getCostAndAntiDumping() {
return costAndAntiDumping;
}
public void setCostAndAntiDumping(BigDecimal costAndAntiDumping) {
this.costAndAntiDumping = costAndAntiDumping;
}
public BigDecimal getAntiDumpingPercent() {
return antiDumpingPercent;
}
public void setAntiDumpingPercent(BigDecimal antiDumpingPercent) {
this.antiDumpingPercent = antiDumpingPercent;
}
@Override
public FinalDestination getFinalDestination() {
return finalDestination;
}
public void setFinalDestination(FinalDestination finalDestination) {
this.finalDestination = finalDestination;
}
public boolean isApproved() {
return approved;
}
public void setApproved(boolean approved) {
this.approved = approved;
}
@Override
public boolean isProduct(){
return true;
}
@Override
public String getCode(){
return getProduct().getCode();
}
@Override
public String getDescription(){
return getProduct().getDescription();
}
@Override
public String getBrand(){
return Optional.ofNullable(getProduct().getBrand()).map(brand -> brand.getName()).orElse(null);
}
public RFQRegion getRfqRegion() {
return rfqRegion;
}
public void setRfqRegion(RFQRegion rfqRegion) {
this.rfqRegion = rfqRegion;
}
public boolean isOriginalQuantitySelected() {
return originalQuantitySelected;
}
public void setOriginalQuantitySelected(boolean originalQuantitySelected) {
this.originalQuantitySelected = originalQuantitySelected;
}
public boolean isBranchQuantitySelected() {
return branchQuantitySelected;
}
public void setBranchQuantitySelected(boolean branchQuantitySelected) {
this.branchQuantitySelected = branchQuantitySelected;
}
@Override
public String getStyle() {
return finalDestination.getName();
}
}