package biz.policy.price;
|
|
import java.math.BigDecimal;
|
|
import foundation.data.entity.Entity;
|
import foundation.json.IJSONProvider;
|
import foundation.json.IJSONWriter;
|
|
public class OnsiteLine extends Line implements IJSONProvider {
|
|
public static String Type_ProductLine_Qty = "ProductLine-Qty";
|
public static String Type_Product_Qty = "Product-Qty";
|
public static String Type_SKU_Qty = "SKU-Qty";
|
public static String Type_ProductLine_Price = "ProductLine-Price";
|
public static String Type_Product_Price = "Product-Price";
|
public static String Type_SKU_Price = "SKU-Price";
|
public static String Type_Package_SKU = "Package-SKU-Price";
|
public static String Type_Package_Product = "Package-Product-Price";
|
|
public OnsiteLine(String typeCode) {
|
super(typeCode);
|
}
|
|
private Entity entity;
|
private BigDecimal discountRate;
|
private BigDecimal price;
|
|
public void load(Entity entity) {
|
this.entity = entity;
|
super.load(entity);
|
this.price = entity.getBigDecimal("price", null);
|
this.discountRate = entity.getBigDecimal("discount_rate", BigDecimal.ONE);
|
|
if (Type_Package_SKU.equalsIgnoreCase(typeCode) || Type_Package_Product.equalsIgnoreCase(typeCode) ) {
|
this.id = entity.getString("agm_record_product__id");
|
}
|
}
|
|
public PriceLine transToPrice(BigDecimal price) {
|
PriceLine priceLine = new PriceLine(getTypeCode());
|
priceLine.format(this);
|
|
if (this.price == null) {
|
priceLine.setPrice(discountRate.multiply(price));
|
}
|
else {
|
priceLine.setPrice(this.price);
|
}
|
|
return priceLine;
|
}
|
|
public void writeJSON(IJSONWriter writer) {
|
writer.beginObject();
|
|
super.writeJSONBody(writer);
|
entity.writeJSONBody(writer);
|
|
writer.endObject();
|
}
|
}
|