فهرست منبع

采购过程中状态更新

zhangyao 4 ماه پیش
والد
کامیت
df6ef3d50f

BIN
com.awspaas.user.apps.donenow_ctt/lib/com.awspaas.user.apps.donenow_ctt.jar


+ 4 - 4
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/costCanclePickFormAfterSave.java

@@ -63,18 +63,18 @@ public class costCanclePickFormAfterSave extends ExecuteListener {
             }
 
             //修改采购合同状态
-            if (DBSql.getInt(conn, "SELECT DOES_NOT_REQUIRE_PROCUREMENT FROM BO_EU_DNIVT_PRODUCT WHERE ID=?", new Object[]{canclePickBO.getString("PRODUCT_ID")}) == 1) {
+            if (DBSql.getInt(conn, "SELECT DOES_NOT_REQUIRE_PROCUREMENT FROM BO_EU_DNIVT_PRODUCT WHERE ID=?", new Object[]{canclePickBO.getString("PRODUCT_ID")}) == 1) { //无需采购产品
 
                 Map<String, Object> contractCostEdit = new HashMap<>();
                 contractCostEdit.put("ID", canclePickBO.getString("CONTRACT_COST_ID"));
-                contractCostEdit.put("STATUS_ID", 1234);
+                contractCostEdit.put("STATUS_ID", 1234);//待采购/待拣货
                 //记录表单修改
                 dn.recordFormChanges.record(processExecutionContext.getUserContext(), "BO_EU_DNCTT_CONTRACT_COST", contractCostEdit, "修改采购合同状态", conn);
 
-                DBSql.update(conn, "UPDATE BO_EU_DNCTT_CONTRACT_COST SET STATUS_ID=? WHERE ID=?", new Object[]{1233, canclePickBO.get("CONTRACT_COST_ID")});
+                DBSql.update(conn, "UPDATE BO_EU_DNCTT_CONTRACT_COST SET STATUS_ID=? WHERE ID=?", new Object[]{1233, canclePickBO.get("CONTRACT_COST_ID")});//1233
 
             } else {
-                DBSql.update(conn, "UPDATE BO_EU_DNCTT_CONTRACT_COST SET STATUS_ID=? WHERE ID=?", new Object[]{1234, canclePickBO.get("CONTRACT_COST_ID")});
+                DBSql.update(conn, "UPDATE BO_EU_DNCTT_CONTRACT_COST SET STATUS_ID=? WHERE ID=?", new Object[]{1234, canclePickBO.get("CONTRACT_COST_ID")});//待采购/待拣货
             }
 
             conn.commit();

+ 19 - 1
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/costPickFormAfterSave.java

@@ -119,7 +119,7 @@ public class costPickFormAfterSave extends ExecuteListener {
             costProductBO.set("SN", pick_sns);
             costProductBO.set("STATUS_ID", STATUS_ID);
             costProductBO.set("OLD_QUANTITY", costProductBO.get("QUANTITY"));//配送数量
-            SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", costProductBO, processInstance,processExecutionContext.getUserContext(), conn);
+            SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", costProductBO, processInstance, processExecutionContext.getUserContext(), conn);
 
 
             //修改状态
@@ -170,6 +170,24 @@ public class costPickFormAfterSave extends ExecuteListener {
                 wareHouseProductService.getInstance().transfer(processExecutionContext.getUserContext(), conn, pickBO.getString("PRODUCT_ID"), pickBO.getString("WAREHOUSE_ID"), null, ObjToInt(pickBO.get("PICK_QUANTITY")), pick_sns, 1482, ivtTransfer); // 转移给客户
             }
 
+
+            //已完成拣货或者在采购中
+
+            //仍需数量:
+            String sql = "SELECT a.QUANTITY-SUM(ifnull(b.QUANTITY,0)) FROM BO_EU_DNCTT_CONTRACT_COST a LEFT JOIN BO_EU_DNCTT_CONTRACT_COST_PRODUCT b ON a.ID=b.CONTRACT_COST_ID AND b.CLOSED = 0 WHERE a.ID=?";
+            if (DBSql.getInt(conn, sql, new Object[]{contractCostId}) <= 0) {
+                //更新状态
+                BO costBO = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_COST").connection(conn).addQuery("ID=", contractCostId).detail();
+                if (DBSql.getInt(conn, "select count(ID) from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where CONTRACT_COST_ID=? AND STATUS_ID=2156  AND CLOSED=0", new Object[]{contractCostId}) > 0) {
+                    costBO.set("STATUS_ID", 1235); //1235 采购中
+                } else if (DBSql.getInt(conn, "select count(ID) from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where CONTRACT_COST_ID=? AND (STATUS_ID=2158 OR STATUS_ID=2157)  AND CLOSED=0", new Object[]{contractCostId}) > 0) {
+                    costBO.set("STATUS_ID", 1236); //1236 待配送
+                } else {
+                    costBO.set("STATUS_ID", 1237); //1236 已配送
+                }
+                SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST", costBO, conn);
+            }
+
             conn.commit();
         } catch (Exception e) {
             conn.rollback();

+ 5 - 1
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/costProductShipFormAfterSave.java

@@ -85,6 +85,7 @@ public class costProductShipFormAfterSave extends ExecuteListener {
                     toCostProductBO.set("OLD_QUANTITY", notShipQuantity);//配送数量
                     toCostProductBO.set("SN", notShipSN);//未配送的产品序列号
                     toCostProductBO.set("SHIPPING_SN", notShipSN);
+                    dn.recordFormChanges.record(processExecutionContext.getUserContext(), productBO, "新增", conn);
                     SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", toCostProductBO, processInstance, processExecutionContext.getUserContext(), conn);
                 }
 
@@ -191,6 +192,7 @@ public class costProductShipFormAfterSave extends ExecuteListener {
 
                 productBO.set("UNIT_COST", totalCost / Integer.parseInt(productBO.getString("QUANTITY")));//计算平均成本
 
+                dn.recordFormChanges.record(processExecutionContext.getUserContext(), productBO, "产品配送后", conn);
                 SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", productBO, conn);
 
                 //生成运费成本
@@ -230,7 +232,6 @@ public class costProductShipFormAfterSave extends ExecuteListener {
                 //配送成功后,更新产品成本:产品来源于采购---从采购单获取,成本取自采购单;库存拣货,成本取自库存产品
                 if (DBSql.getInt(conn, "select count(ID) from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where CONTRACT_COST_ID=? AND STATUS_ID<2159  AND CLOSED=0", new Object[]{costBO.getId()}) == 0) {
                     //已全部配送完成
-
                     costBO.set("STATUS_ID", 1237);//已配送
                     double UNIT_COST = 0;
                     if (OUT_RULE.equals("1030")) {
@@ -243,6 +244,9 @@ public class costProductShipFormAfterSave extends ExecuteListener {
 
                     costBO.set("UNIT_COST", UNIT_COST);
                     costBO.set("EXTENDED_COST", UNIT_COST * Integer.parseInt(costBO.getString("QUANTITY")));
+
+                    dn.recordFormChanges.record(processExecutionContext.getUserContext(), costBO, "产品配送后", conn);
+
                     SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST", costBO, conn);
 
                 }

BIN
com.awspaas.user.apps.donenow_ivt/lib/com.awspaas.user.apps.donenow_ivt.jar


+ 17 - 15
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/DoWorkThread.java

@@ -126,14 +126,17 @@ public class DoWorkThread extends Thread {
                     SDK.getBOAPI().update(IVTConstant.BO_EU_DNIVT_WAREHOUSE_PRODUCT_LOT, warehouseProductLotBo);
                 }
 
-
                 //更新 产品信息
                 //BO_EU_DNIVT_PRODUCT 上面的 库存平均单元成本 UNIT_COST_AVG
+                //入库时,需要计算库存成本(客户虚拟仓不需要)
                 BO productBo = SDK.getBOAPI().query(IVTConstant.BO_EU_DNIVT_PRODUCT).addQuery("ID=", warehouseProductLotBo.getString("PRODUCT_ID")).detail();
-                double UNIT_COST_AVG = Double.parseDouble(productBo.getString("UNIT_COST_AVG"));
-                UNIT_COST_AVG = (oldQuantity * UNIT_COST_AVG + intBenReceive * Double.parseDouble(bo.getString("UNIT_COST"))) / (oldQuantity + intBenReceive);
-                productBo.set("UNIT_COST_AVG", UNIT_COST_AVG);
-                SDK.getBOAPI().update(IVTConstant.BO_EU_DNIVT_PRODUCT, productBo);
+                if (productBo.getString("OUT_RULE").equals("1030") && DBSql.getString("SELECT CATE_ID FROM BO_EU_DNIVT_WAREHOUSE WHERE ID=?", new Object[]{warehouseProductLotBo.getString("WAREHOUSE_ID")}).equals("1")) {
+
+                    double UNIT_COST_AVG = Double.parseDouble(productBo.getString("UNIT_COST_AVG"));
+                    UNIT_COST_AVG = (oldQuantity * UNIT_COST_AVG + intBenReceive * Double.parseDouble(bo.getString("UNIT_COST"))) / (oldQuantity + intBenReceive);
+                    productBo.set("UNIT_COST_AVG", UNIT_COST_AVG);
+                    SDK.getBOAPI().update(IVTConstant.BO_EU_DNIVT_PRODUCT, productBo);
+                }
 
                 //2、库存转移记录 BO_EU_DNIVT_TRANSFER
                 ProcessInstance warehouseTransferInstance = SDK.getProcessAPI().createBOProcessInstance("obj_e15a8fedeaeb43dc85aa258a7e1cffcf", uc.getUID(), "采购接收-" + warehouseProductLotBo.get("LOT"));
@@ -262,23 +265,22 @@ public class DoWorkThread extends Thread {
                 DBSql.update("UPDATE " + IVTConstant.BO_EU_DNIVT_ORDER + " SET STATUS_ID=" + IVTConstant.STATUS_2150 + " WHERE BINDID='" + orderBindId + "'");
 
                 for (BO bo : orderProductList) {
-                    //采购项全部接收后,更改关联合同产品的状态
-                    BO contractProductBo = SDK.getBOAPI().get(IVTConstant.BO_EU_DNCTT_CONTRACT_COST, bo.getString("CONTRACT_COST_ID"));
-                    contractProductBo.set("STATUS_ID", IVTConstant.STATUS_1236);//待配送
-                    SDK.getBOAPI().update(IVTConstant.BO_EU_DNCTT_CONTRACT_COST, contractProductBo);
 
+                    //采购项全部接收后,更改关联合同产品的状态
+                    String sql = "SELECT a.QUANTITY-SUM(ifnull(b.QUANTITY,0)) FROM BO_EU_DNCTT_CONTRACT_COST a LEFT JOIN BO_EU_DNCTT_CONTRACT_COST_PRODUCT b ON a.ID=b.CONTRACT_COST_ID AND b.CLOSED = 0 WHERE a.ID=?";
+                    if (DBSql.getInt(sql, new Object[]{bo.getString("CONTRACT_COST_ID")}) <= 0) {
+                        BO contractProductBo = SDK.getBOAPI().get(IVTConstant.BO_EU_DNCTT_CONTRACT_COST, bo.getString("CONTRACT_COST_ID"));
+                        contractProductBo.set("STATUS_ID", IVTConstant.STATUS_1236);//待配送
+                        SDK.getBOAPI().update(IVTConstant.BO_EU_DNCTT_CONTRACT_COST, contractProductBo);
+                    }
                     //更新合同产品上面的合同产品状态
 
                     BO costProduct = SDK.getBOAPI().query(IVTConstant.BO_EU_DNCTT_CONTRACT_COST_PRODUCT).addQuery("ORDER_ID=", bo.getString("ORDER_ID")).addQuery("CONTRACT_COST_ID=", bo.getString("CONTRACT_COST_ID")).detail();
                     if (costProduct != null) {
                         costProduct.set("STATUS_ID", "2158");//待配送
                         costProduct.set("SN", DBSql.getString("SELECT GROUP_CONCAT(SN) FROM BO_EU_DNIVT_WAREHOUSE_PRODUCT_LOT WHERE ORDER_PRODUCT_ID=?", new Object[]{bo.getId()}));
-                        try {
-                            //记录日志
-                            dn.recordFormChanges.record(uc, costProduct, "采购产品接收后更新");
-                        } catch (Exception e) {
-
-                        }
+                        //记录日志
+                        dn.recordFormChanges.record(uc, costProduct, "采购产品接收后更新");
                         SDK.getBOAPI().update(IVTConstant.BO_EU_DNCTT_CONTRACT_COST_PRODUCT, costProduct);
                     }
                 }

+ 11 - 0
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/ivtOrderProcessAfterComplete.java

@@ -72,6 +72,17 @@ public class ivtOrderProcessAfterComplete extends ExecuteListener {
 
                 SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", costProduct, processInstance, uc);
 
+
+                //已完成拣货或者在采购中
+
+                //仍需数量:
+                String needsql = "SELECT a.QUANTITY-SUM(ifnull(b.QUANTITY,0)) FROM BO_EU_DNCTT_CONTRACT_COST a LEFT JOIN BO_EU_DNCTT_CONTRACT_COST_PRODUCT b ON a.ID=b.CONTRACT_COST_ID AND b.CLOSED = 0 WHERE a.ID=?";
+                if (DBSql.getInt(needsql, new Object[]{cost.getId()}) <= 0) {
+                    //更新状态
+                    cost.set("STATUS_ID", 1235); //1235 采购中
+                    SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST", cost);
+                }
+
             }
 
         }

BIN
libs/dn_form_before_save.jar