package biz.policy.price;
|
|
import java.math.BigDecimal;
|
|
import foundation.data.entity.Entity;
|
import foundation.util.ContentBuilder;
|
import foundation.util.MapList;
|
import foundation.util.Util;
|
|
public class PackageLine {
|
private String id;
|
private String name;
|
private String typeCode;
|
private String productId;
|
private String productName;
|
private String skuId;
|
private String spec;
|
private int qty;
|
private PackagePolicy packagePoicy;
|
private ProductPolicy product;
|
private MapList<String, SKUPolicy> skus;
|
|
public PackageLine() {
|
skus = new MapList<String, SKUPolicy>();
|
}
|
|
public PackageLine(PackagePolicy packagePoicy) {
|
this.packagePoicy = packagePoicy;
|
this.skus = new MapList<String, SKUPolicy>();
|
}
|
|
public PackageLine(String id, PackagePolicy packagePoicy) {
|
this.id = id;
|
this.packagePoicy = packagePoicy;
|
this.skus = new MapList<String, SKUPolicy>();
|
}
|
|
public void load(Entity entity) {
|
id = entity.getString("agm_record_product__id");
|
name = entity.getString("record_name");
|
|
String productLineId = entity.getString("bu_id");
|
productId = entity.getString("agm_record_product__product_id");
|
productName = entity.getString("agm_record_product__product_name");
|
skuId = entity.getString("agm_record_product__sku_id");
|
spec = entity.getString("agm_record_product__spec");
|
|
qty = entity.getInteger("agm_record_product__base_qty", 0);
|
|
String key = productLineId + "-" + productId;
|
PolicyBucket policyBucket = PolicyBucket.getInstance();
|
product = policyBucket.getProductPolicy(key);
|
packagePoicy = policyBucket.getPackagePolicy(entity.getId());
|
|
ContentBuilder nameBuilder = new ContentBuilder("-");
|
nameBuilder.append(productName);
|
|
if (!Util.isEmpty(skuId)) {
|
key = productLineId + "-" + productId + "-" + skuId;
|
nameBuilder.append(spec);
|
typeCode = OnsiteLine.Type_Package_SKU;
|
|
SKUPolicy sku = skus.get(key);
|
|
if (sku == null) {
|
sku = policyBucket.getSKUPolicy(key);
|
skus.add(key, sku);
|
}
|
|
sku.loadOnePricePackageDiscount(entity);
|
}
|
//2. 产品折扣
|
else {
|
typeCode = OnsiteLine.Type_Package_Product;
|
product.loadOnePricePackageDiscount(entity);
|
}
|
|
name = nameBuilder.toString();
|
}
|
|
public BigDecimal getDiscountRate() {
|
return packagePoicy.getDiscountRate();
|
}
|
|
public String getId() {
|
return id;
|
}
|
|
public String getName() {
|
return name;
|
}
|
|
public String getProductId() {
|
return productId;
|
}
|
|
public String getProductName() {
|
return productName;
|
}
|
|
public String getSkuId() {
|
return skuId;
|
}
|
|
public String getSpec() {
|
return spec;
|
}
|
|
public void addQty(int qty) {
|
this.qty = this.qty + qty;
|
}
|
|
public int getQty() {
|
return qty;
|
}
|
|
public PackagePolicy getPackagePolicy() {
|
return packagePoicy;
|
}
|
|
public String getTypeCode() {
|
return typeCode;
|
}
|
}
|