package com.salesmanager.core.model.shipping;
import java.math.BigDecimal;
import org.json.simple.JSONAware;
import org.json.simple.JSONObject;
/**
* Object saved in the database maintaining various shipping options
* @author casams1
*
*/
public class ShippingConfiguration implements JSONAware {
//enums
private ShippingType shippingType = ShippingType.NATIONAL;
private ShippingBasisType shippingBasisType = ShippingBasisType.SHIPPING;
private ShippingOptionPriceType shippingOptionPriceType = ShippingOptionPriceType.ALL;
private ShippingPackageType shippingPackageType = ShippingPackageType.ITEM;
private ShippingDescription shippingDescription = ShippingDescription.SHORT_DESCRIPTION;
private ShippingType freeShippingType = null;
private int boxWidth = 0;
private int boxHeight = 0;
private int boxLength = 0;
private double boxWeight = 0;
private double maxWeight = 0;
//free shipping
private boolean freeShippingEnabled = false;
private BigDecimal orderTotalFreeShipping = null;
private BigDecimal handlingFees = null;
private boolean taxOnShipping = false;
//JSON bindings
private String shipType;
private String shipBaseType;
private String shipOptionPriceType = ShippingOptionPriceType.ALL.name();
private String shipPackageType;
private String shipDescription;
private String shipFreeType;
//Transient
private String orderTotalFreeShippingText = null;
private String handlingFeesText = null;
public String getShipType() {
return shipType;
}
public String getShipBaseType() {
return shipBaseType;
}
public String getShipOptionPriceType() {
return shipOptionPriceType;
}
public void setShippingOptionPriceType(ShippingOptionPriceType shippingOptionPriceType) {
this.shippingOptionPriceType = shippingOptionPriceType;
this.shipOptionPriceType = this.shippingOptionPriceType.name();
}
public ShippingOptionPriceType getShippingOptionPriceType() {
return shippingOptionPriceType;
}
public void setShippingBasisType(ShippingBasisType shippingBasisType) {
this.shippingBasisType = shippingBasisType;
this.shipBaseType = this.shippingBasisType.name();
}
public ShippingBasisType getShippingBasisType() {
return shippingBasisType;
}
public void setShippingType(ShippingType shippingType) {
this.shippingType = shippingType;
this.shipType = this.shippingType.name();
}
public ShippingType getShippingType() {
return shippingType;
}
public ShippingPackageType getShippingPackageType() {
return shippingPackageType;
}
public void setShippingPackageType(ShippingPackageType shippingPackageType) {
this.shippingPackageType = shippingPackageType;
this.shipPackageType = shippingPackageType.name();
}
public String getShipPackageType() {
return shipPackageType;
}
/** JSON bindding **/
public void setShipType(String shipType) {
this.shipType = shipType;
ShippingType sType = ShippingType.NATIONAL;
if(shipType.equals(ShippingType.INTERNATIONAL.name())) {
sType = ShippingType.INTERNATIONAL;
}
setShippingType(sType);
}
public void setShipOptionPriceType(String shipOptionPriceType) {
this.shipOptionPriceType = shipOptionPriceType;
ShippingOptionPriceType sType = ShippingOptionPriceType.ALL;
if(shipOptionPriceType.equals(ShippingOptionPriceType.HIGHEST.name())) {
sType = ShippingOptionPriceType.HIGHEST;
}
if(shipOptionPriceType.equals(ShippingOptionPriceType.LEAST.name())) {
sType = ShippingOptionPriceType.LEAST;
}
setShippingOptionPriceType(sType);
}
public void setShipBaseType(String shipBaseType) {
this.shipBaseType = shipBaseType;
ShippingBasisType sType = ShippingBasisType.SHIPPING;
if(shipBaseType.equals(ShippingBasisType.BILLING.name())) {
sType = ShippingBasisType.BILLING;
}
setShippingBasisType(sType);
}
public void setShipPackageType(String shipPackageType) {
this.shipPackageType = shipPackageType;
ShippingPackageType sType = ShippingPackageType.ITEM;
if(shipPackageType.equals(ShippingPackageType.BOX.name())) {
sType = ShippingPackageType.BOX;
}
this.setShippingPackageType(sType);
}
public void setShipDescription(String shipDescription) {
this.shipDescription = shipDescription;
ShippingDescription sType = ShippingDescription.SHORT_DESCRIPTION;
if(shipDescription.equals(ShippingDescription.LONG_DESCRIPTION.name())) {
sType = ShippingDescription.LONG_DESCRIPTION;
}
this.setShippingDescription(sType);
}
public void setShipFreeType(String shipFreeType) {
this.shipFreeType = shipFreeType;
ShippingType sType = ShippingType.NATIONAL;
if(shipFreeType.equals(ShippingType.INTERNATIONAL.name())) {
sType = ShippingType.INTERNATIONAL;
}
setFreeShippingType(sType);
}
@SuppressWarnings("unchecked")
@Override
public String toJSONString() {
JSONObject data = new JSONObject();
data.put("shipBaseType", this.getShippingBasisType().name());
data.put("shipOptionPriceType", this.getShippingOptionPriceType().name());
data.put("shipType", this.getShippingType().name());
data.put("shipPackageType", this.getShippingPackageType().name());
if(shipFreeType!=null) {
data.put("shipFreeType", this.getFreeShippingType().name());
}
data.put("shipDescription", this.getShippingDescription().name());
data.put("boxWidth", this.getBoxWidth());
data.put("boxHeight", this.getBoxHeight());
data.put("boxLength", this.getBoxLength());
data.put("boxWeight", this.getBoxWeight());
data.put("maxWeight", this.getMaxWeight());
data.put("freeShippingEnabled", this.freeShippingEnabled);
data.put("orderTotalFreeShipping", this.orderTotalFreeShipping);
data.put("handlingFees", this.handlingFees);
data.put("taxOnShipping", this.taxOnShipping);
return data.toJSONString();
}
public int getBoxWidth() {
return boxWidth;
}
public void setBoxWidth(int boxWidth) {
this.boxWidth = boxWidth;
}
public int getBoxHeight() {
return boxHeight;
}
public void setBoxHeight(int boxHeight) {
this.boxHeight = boxHeight;
}
public int getBoxLength() {
return boxLength;
}
public void setBoxLength(int boxLength) {
this.boxLength = boxLength;
}
public double getBoxWeight() {
return boxWeight;
}
public void setBoxWeight(double boxWeight) {
this.boxWeight = boxWeight;
}
public double getMaxWeight() {
return maxWeight;
}
public void setMaxWeight(double maxWeight) {
this.maxWeight = maxWeight;
}
public boolean isFreeShippingEnabled() {
return freeShippingEnabled;
}
public void setFreeShippingEnabled(boolean freeShippingEnabled) {
this.freeShippingEnabled = freeShippingEnabled;
}
public BigDecimal getOrderTotalFreeShipping() {
return orderTotalFreeShipping;
}
public void setOrderTotalFreeShipping(BigDecimal orderTotalFreeShipping) {
this.orderTotalFreeShipping = orderTotalFreeShipping;
}
public void setHandlingFees(BigDecimal handlingFees) {
this.handlingFees = handlingFees;
}
public BigDecimal getHandlingFees() {
return handlingFees;
}
public void setTaxOnShipping(boolean taxOnShipping) {
this.taxOnShipping = taxOnShipping;
}
public boolean isTaxOnShipping() {
return taxOnShipping;
}
public String getShipDescription() {
return shipDescription;
}
public void setShippingDescription(ShippingDescription shippingDescription) {
this.shippingDescription = shippingDescription;
}
public ShippingDescription getShippingDescription() {
return shippingDescription;
}
public void setFreeShippingType(ShippingType freeShippingType) {
this.freeShippingType = freeShippingType;
}
public ShippingType getFreeShippingType() {
return freeShippingType;
}
public String getShipFreeType() {
return shipFreeType;
}
public void setOrderTotalFreeShippingText(String orderTotalFreeShippingText) {
this.orderTotalFreeShippingText = orderTotalFreeShippingText;
}
public String getOrderTotalFreeShippingText() {
return orderTotalFreeShippingText;
}
public void setHandlingFeesText(String handlingFeesText) {
this.handlingFeesText = handlingFeesText;
}
public String getHandlingFeesText() {
return handlingFeesText;
}
}