P15GEN2\59518
2025-10-10 9f6890646993d16260d4201d613c092132856127
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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);
    }
}