package biz.target;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.entity.Filter;
|
import foundation.data.entity.OrderBy;
|
import foundation.data.object.DataObject;
|
import foundation.json.IJSONProvider;
|
import foundation.persist.NamedSQL;
|
import foundation.preload.Tree;
|
import foundation.token.IOnlineUser;
|
|
public class TargetPlanning extends Tree<PositionTarget> implements IJSONProvider{
|
private String id;
|
private BigDecimal finalQty;
|
private BigDecimal finalAmt;
|
private Entity entity;
|
protected static Logger logger;
|
|
static {
|
logger = LogManager.getLogger(Entity.class);
|
}
|
|
public void load(Entity entity) {
|
id = entity.getId();
|
finalQty = entity.getBigDecimal("final_qty", BigDecimal.ZERO);
|
finalAmt = entity.getBigDecimal("final_amt", BigDecimal.ZERO);
|
this.entity = entity;
|
}
|
|
public void createPositionTarget() throws Exception {
|
IOnlineUser user = IOnlineUser.getInstance();
|
|
// 1. create position target
|
List<NamedSQL> targetActions = TargetType.Position.getTargetAction();
|
for (NamedSQL action : targetActions) {
|
action = setParams(action, user);
|
action.execute();
|
}
|
|
// 2. create position customer target
|
targetActions = TargetType.Customer.getTargetAction();
|
for (NamedSQL action : targetActions) {
|
action = setParams(action, user);
|
action.execute();
|
}
|
//
|
// // 3. create position product target
|
// targetActions = TargetType.Product.getTargetAction();
|
// for (NamedSQL action : targetActions) {
|
// action = setParams(action, user);
|
// action.execute();
|
// }
|
|
// 3. create position sku target
|
targetActions = TargetType.Sku.getTargetAction();
|
for (NamedSQL action : targetActions) {
|
action = setParams(action, user);
|
action.execute();
|
}
|
}
|
|
private NamedSQL setParams(NamedSQL namedSQL, IOnlineUser user) throws Exception {
|
namedSQL.setParam("planning_id", id);
|
|
if (user != null) {
|
namedSQL.setParam("creator_id", user.getId());
|
namedSQL.setParam("creator_name", user.getName());
|
}
|
|
return namedSQL;
|
}
|
|
public void loadWholeFromDB() throws Exception {
|
DataObject dataObject = DataObject.getInstance("tgt_planning_position");
|
|
Filter filter = new Filter();
|
filter.add("planning_id", id);
|
EntitySet positionSet = dataObject.getBrowseEntitySet(filter, new OrderBy("position_level desc, parent_position_id"));
|
|
for (Entity positionTarget : positionSet) {
|
PositionTarget positionTargetNode = new PositionTarget();
|
positionTargetNode.load(positionTarget);
|
|
loadOne(positionTargetNode.getId(), positionTargetNode);
|
}
|
|
onAfterLoad();
|
}
|
|
public String getId() {
|
return id;
|
}
|
|
public BigDecimal getFinalQty() {
|
return finalQty;
|
}
|
|
public BigDecimal getFinalAmt() {
|
return finalAmt;
|
}
|
|
public boolean isCurrent() {
|
return true;
|
}
|
|
public void create(String dataVersion, String quarterNo) throws Exception {
|
DataObject planningDataObject = DataObject.getInstance("tgt_planning");
|
Entity planningEntity = planningDataObject.createTableEntity(true);
|
|
planningEntity.setId(dataVersion);
|
planningEntity.set("year", quarterNo.substring(0, 4));
|
planningEntity.set("quarter", quarterNo.substring(5));
|
planningEntity.set("quarter_no", quarterNo);
|
planningEntity.set("init_qty", 0);
|
planningEntity.set("init_amt", 0);
|
planningEntity.set("actual_qty", 0);
|
planningEntity.set("actual_amt", 0);
|
planningEntity.set("history_qty", 0);
|
planningEntity.set("history_amt", 0);
|
planningEntity.set("final_qty", 0);
|
planningEntity.set("final_amt", 0);
|
planningEntity.set("creator_id", "Admin");
|
planningEntity.set("creator_name", "Admin");
|
planningDataObject.insertEntity(planningEntity);
|
|
load(planningEntity);
|
}
|
}
|