Browse Source

Merge remote-tracking branch 'origin/develop' into develop

shenjingwei 6 months ago
parent
commit
de2d6d1de1

+ 11 - 2
src/custom/restcontroller/webmanage/sale/stockbill/stockbillitems.java

@@ -18,6 +18,7 @@ import restcontroller.R;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 
 public class stockbillitems extends Controller {
     public stockbillitems(JSONObject content) throws YosException {
@@ -164,6 +165,14 @@ public class stockbillitems extends Controller {
         if (!maxidRows.isEmpty()) {
             maxid = maxidRows.get(0).getLong("rowno");
         }
+        List<Long> list = new ArrayList<>();
+
+        for (Object object : iteminfos) {
+            list.add(((JSONObject)object).getLong("itemid"));
+        }
+
+        RowsMap itemRowsMap = SQLFactory.createQuerySQL(this, "plm_item", "*").setWhere("itemid", list).query().toRowsMap("itemid");
+
 
         for (Object obj : iteminfos) {
             JSONObject iteminfo = (JSONObject) obj;
@@ -192,7 +201,7 @@ public class stockbillitems extends Controller {
                 insertSQL.setValue("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
                 insertSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP));
                 insertSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
-                insertSQL.setValue("skucontrol", iteminfo.getBoolean("skucontrol"));
+                insertSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBoolean("skucontrol"));
                 i++;
                 sqlList.add(insertSQL.getSQL());
             } else {
@@ -221,7 +230,7 @@ public class stockbillitems extends Controller {
                         updateSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
                         updateSQL.setValue("batchno", iteminfo.getString("batchno"));
                         updateSQL.setValue("stockid", iteminfo.getString("stockid"));
-                        updateSQL.setValue("skucontrol", iteminfo.getBoolean("skucontrol"));
+                        updateSQL.setValue("skucontrol",itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBoolean("skucontrol"));
                         if(detailRowsMap.containsKey(iteminfo.getString("st_stockbill_itemsid"))){
                             if(iteminfo.getBigDecimal("discountrate").compareTo(detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getBigDecimal("discountrate"))!=0
                                     || iteminfo.getBigDecimal("defaultprice").compareTo(detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getBigDecimal("defaultprice"))!=0