CostLineCostingCell.java
package com.tradecloud.domain.document.invoice;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tradecloud.common.base.HibernateUtils;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.costing.CostCalculationLevel;
import com.tradecloud.domain.costing.CostLine;
import com.tradecloud.domain.costing.VatType;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.log4j.Logger;
import org.hibernate.annotations.ForeignKey;
import org.springframework.stereotype.Component;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.*;
import java.math.BigDecimal;
import java.util.Date;
/**
*
*/
@Entity
@Component(value = "costlinecostingcell")
@Table(name = "costlinecostingcell")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "CostLineCostingCell")
public class CostLineCostingCell extends PersistenceBase implements Comparable<CostLineCostingCell>, CostingCell {
private static final long serialVersionUID = 1L;
@NotNull
@ManyToOne(optional = false)
@ForeignKey(name = "fk_costline")
@JsonIgnore
private CostLine costLine;
@NotNull
@Basic(optional = false)
private BigDecimal transactionAmount = BigDecimal.ZERO;
@ManyToOne
@ForeignKey(name = "fk_transactioncurrency")
@XmlElement(name = "TransactionCurrency")
private Currency transactionCurrency;
private BigDecimal spotRate;
private BigDecimal forwardRate;
private BigDecimal percentage;
@Transient
private BigDecimal calculationPercentage;
@XmlAttribute
private Date settlementDate;
private boolean overridden;
private boolean allChildrenOverridden;
private boolean percentageOverridden;
private boolean forwardRateOverridden;
private boolean spotRateOverridden;
/*
We use this value to 'clear' an override. On clear, we set to this value.
*/
private BigDecimal initialCostedValue;
private BigDecimal initialPercentage;
private BigDecimal initialSpotRate;
private BigDecimal initialForwardRate;
private BigDecimal costApplicationBasisAmount;
private BigDecimal rateFeedSpotRate;
private BigDecimal rateFeedForwardRate;
@Enumerated(value = EnumType.STRING)
@Column
@XmlAttribute
private CostCalculationLevel costCalculationLevel;
private BigDecimal vat;
//not calculated , will show on invoice costing header
private BigDecimal integratedVat;
private transient BigDecimal varianceAgainstEstimateCosting = BigDecimal.ZERO;
private transient BigDecimal varianceAgainstEstimate = BigDecimal.ZERO;
private transient BigDecimal estimateAmount = BigDecimal.ZERO;
private transient BigDecimal estimateCostingAmount = BigDecimal.ZERO;
private transient BigDecimal costingAmount = BigDecimal.ZERO;
private boolean useIntegratedRate;
private boolean dutiable;
@Enumerated(value = EnumType.STRING)
//only applies to orders
private VatType vatType;
private boolean overriddenVatType;
private boolean primaryCosting;
public CostLineCostingCell() {
}
public CostLine getCostLine() {
return costLine;
}
public void setCostLine(CostLine costLine) {
this.costLine = costLine;
}
@Override
public BigDecimal getTransactionAmount() {
return transactionAmount;
}
@Override
public void setTransactionAmount(BigDecimal transactionAmount) {
if (transactionAmount == null) {
Logger.getLogger(CostLineCostingCell.class).debug("transactionAmount is null so set it to BigDecimal.ZERO");
transactionAmount = BigDecimal.ZERO;
}
this.transactionAmount = transactionAmount;
}
public BigDecimal getSpotRate() {
return spotRate;
}
public void setSpotRate(BigDecimal spotRate) {
this.spotRate = spotRate;
}
public BigDecimal getForwardRate() {
return forwardRate;
}
public void setForwardRate(BigDecimal forwardRate) {
this.forwardRate = forwardRate;
}
@Override
public String getCode() {
return costLine.getCostLineTemplate().getCode();
}
@Override
public Currency getTransactionCurrency() {
return transactionCurrency;
}
@Override
public void setTransactionCurrency(Currency transactionCurrency) {
this.transactionCurrency = transactionCurrency;
}
public Date getSettlementDate() {
return settlementDate;
}
public void setSettlementDate(Date settlementDate) {
this.settlementDate = settlementDate;
}
public boolean isOverridden() {
return overridden;
}
public void setOverridden(boolean overridden) {
this.overridden = overridden;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (!HibernateUtils.proxyClassEquals(this, obj)) {
return false;
}
CostLineCostingCell obj1 = (CostLineCostingCell) obj;
return new EqualsBuilder().append(getCostLine(), obj1.getCostLine()).append(getTransactionAmount(), obj1.getTransactionAmount()).append
(getTransactionCurrency(), obj1.getTransactionCurrency()).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(getCostLine()).append(getTransactionAmount()).append(getTransactionCurrency()).toHashCode();
}
@Override
public int compareTo(CostLineCostingCell clcc) {
return costLine.getCostLineTemplate().getName().compareTo(clcc.getCostLine().getCostLineTemplate().getName());
}
@Override
public String toString() {
return new ToStringBuilder(this).append(costLine).append(transactionAmount).append(transactionCurrency).append(spotRate).append
(forwardRate).toString();
}
public boolean isAllChildrenOverridden() {
return allChildrenOverridden;
}
public void setAllChildrenOverridden(boolean allChildrenOverridden) {
this.allChildrenOverridden = allChildrenOverridden;
}
public BigDecimal getPercentage() {
return percentage;
}
public void setPercentage(BigDecimal percentage) {
this.percentage = percentage;
}
public boolean isPercentageOverridden() {
return percentageOverridden;
}
public void setPercentageOverridden(boolean percentageOverridden) {
this.percentageOverridden = percentageOverridden;
}
public boolean isForwardRateOverridden() {
return forwardRateOverridden;
}
public void setForwardRateOverridden(boolean forwardRateOverridden) {
this.forwardRateOverridden = forwardRateOverridden;
}
public boolean isSpotRateOverridden() {
return spotRateOverridden;
}
public void setSpotRateOverridden(boolean spotRateOverridden) {
this.spotRateOverridden = spotRateOverridden;
}
public BigDecimal getInitialCostedValue() {
return initialCostedValue;
}
public void setInitialCostedValue(BigDecimal initialCostedValue) {
this.initialCostedValue = initialCostedValue;
}
public BigDecimal getInitialPercentage() {
return initialPercentage;
}
public void setInitialPercentage(BigDecimal initialPercentage) {
this.initialPercentage = initialPercentage;
}
public BigDecimal getCostApplicationBasisAmount() {
if (costApplicationBasisAmount == null) {
setCostApplicationBasisAmount(BigDecimal.ZERO);
}
return costApplicationBasisAmount;
}
public void setCostApplicationBasisAmount(BigDecimal costApplicationBasisAmount) {
this.costApplicationBasisAmount = costApplicationBasisAmount;
}
public BigDecimal getCalculationPercentage() {
return calculationPercentage;
}
public void setCalculationPercentage(BigDecimal calculationPercentage) {
this.calculationPercentage = calculationPercentage;
}
public CostCalculationLevel getCostCalculationLevel() {
return costCalculationLevel;
}
public void setCostCalculationLevel(CostCalculationLevel costCalculationLevel) {
this.costCalculationLevel = costCalculationLevel;
}
public BigDecimal getInitialSpotRate() {
return initialSpotRate;
}
public void setInitialSpotRate(BigDecimal initialSpotRate) {
this.initialSpotRate = initialSpotRate;
}
public BigDecimal getInitialForwardRate() {
return initialForwardRate;
}
public void setInitialForwardRate(BigDecimal initialForwardRate) {
this.initialForwardRate = initialForwardRate;
}
public BigDecimal getRateFeedSpotRate() {
return rateFeedSpotRate;
}
public void setRateFeedSpotRate(BigDecimal rateFeedSpotRate) {
this.rateFeedSpotRate = rateFeedSpotRate;
}
public BigDecimal getRateFeedForwardRate() {
return rateFeedForwardRate;
}
public void setRateFeedForwardRate(BigDecimal rateFeedForwardRate) {
this.rateFeedForwardRate = rateFeedForwardRate;
}
public BigDecimal getVat() {
return vat;
}
public void setVat(BigDecimal vat) {
this.vat = vat;
}
@Override
public boolean showVat() {
return costLine.showVat();
}
@Override
public BigDecimal getIntegratedVat() {
return integratedVat;
}
@Override
public void setIntegratedVat(BigDecimal integratedVat) {
this.integratedVat = integratedVat;
}
@Override
public BigDecimal getVarianceAgainstEstimateCosting() {
return varianceAgainstEstimateCosting;
}
@Override
public void setVarianceAgainstEstimateCosting(BigDecimal varianceAgainstEstimateCosting) {
this.varianceAgainstEstimateCosting = varianceAgainstEstimateCosting;
}
@Override
public BigDecimal getVarianceAgainstEstimate() {
return varianceAgainstEstimate;
}
@Override
public void setVarianceAgainstEstimate(BigDecimal varianceAgainstEstimate) {
this.varianceAgainstEstimate = varianceAgainstEstimate;
}
@Override
public BigDecimal getEstimateAmount() {
return estimateAmount;
}
@Override
public void setEstimateAmount(BigDecimal estimateAmount) {
this.estimateAmount = estimateAmount;
}
@Override
public BigDecimal getEstimateCostingAmount() {
return estimateCostingAmount;
}
@Override
public void setEstimateCostingAmount(BigDecimal estimateCostingAmount) {
this.estimateCostingAmount = estimateCostingAmount;
}
@Override
public BigDecimal getCostingAmount() {
return costingAmount;
}
@Override
public void setCostingAmount(BigDecimal costingAmount) {
this.costingAmount = costingAmount;
}
@Override
public boolean isUseIntegratedRate() {
return useIntegratedRate;
}
@Override
public void setUseIntegratedRate(boolean useIntegratedRate) {
this.useIntegratedRate = useIntegratedRate;
}
@Override
public boolean isDutiable() {
return dutiable;
}
@Override
public void setDutiable(boolean dutiable) {
this.dutiable = dutiable;
}
@Override
public VatType getVatType() {
return vatType;
}
@Override
public void setVatType(VatType vatType) {
this.vatType = vatType;
}
@Override
public boolean isOverriddenVatType() {
return overriddenVatType;
}
@Override
public void setOverriddenVatType(boolean overriddenVatType) {
this.overriddenVatType = overriddenVatType;
}
public boolean isPrimaryCosting() {
return primaryCosting;
}
public void setPrimaryCosting(boolean primaryCosting) {
this.primaryCosting = primaryCosting;
}
}