|
|
@@ -31,10 +31,7 @@ import restcontroller.webmanage.sale.accessoryorder.accessoryorder;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
+import java.util.*;
|
|
|
|
|
|
import static beans.order.Order.*;
|
|
|
|
|
|
@@ -1509,6 +1506,12 @@ public class Order extends Controller {
|
|
|
stockbillQuerySQL.setWhere("t1.siteid",siteid);
|
|
|
stockbillQuerySQL.setWhere("t1.sa_orderitemsid",sa_orderitemsids);
|
|
|
Rows stockbillRows =stockbillQuerySQL.query();
|
|
|
+
|
|
|
+ Row enterprisefinancerow =new Row();
|
|
|
+ Rows enterprisefinancerows = dbConnect.runSqlQuery("select t1.* from sys_enterprise_finance t1 inner join sa_order t2 on t1.sys_enterprise_financeid=t2.sys_enterprise_financeid where t2.sa_orderid="+sa_orderid);
|
|
|
+ if(enterprisefinancerows.isNotEmpty()){
|
|
|
+ enterprisefinancerow=enterprisefinancerows.get(0);
|
|
|
+ }
|
|
|
if(stockbillRows.isNotEmpty()){
|
|
|
return getErrReturnObject().setErrMsg("存在订单明细已生成销售出库单,无法一键出库").toString();
|
|
|
}
|
|
|
@@ -1552,9 +1555,123 @@ public class Order extends Controller {
|
|
|
|
|
|
insertSQL.setValue("outplace", outplace);
|
|
|
insertSQL.setValue("delivery", orderRow.getString("delivery"));
|
|
|
- insertSQL.setValue("invoice_enterprisename", "");
|
|
|
- insertSQL.setValue("invoice_address", "");
|
|
|
- insertSQL.setValue("invoice_taxno", "");
|
|
|
+ insertSQL.setValue("invoice_enterprisename", enterprisefinancerow.getString("enterprisename"));
|
|
|
+ insertSQL.setValue("invoice_address", enterprisefinancerow.getString("address"));
|
|
|
+ insertSQL.setValue("invoice_taxno", enterprisefinancerow.getString("taxno"));
|
|
|
+ insertSQL.setValue("tracknumber",enterprisefinancerow.getString(""));
|
|
|
+ insertSQL.setValue("isconfirm", 0);
|
|
|
+
|
|
|
+ insertSQL.setValue("period", getDate_Str().substring(0, 7));
|
|
|
+
|
|
|
+ insertSQL.setValue("createby", username);
|
|
|
+ insertSQL.setDateValue("createdate");
|
|
|
+ insertSQL.setValue("changeby", username);
|
|
|
+ insertSQL.setDateValue("changedate");
|
|
|
+ insertSQL.setValue("status", "新建");
|
|
|
+ insertSQL.setValue("payamount", 0);
|
|
|
+ insertSQL.setValue("paydiscountamount", 0);
|
|
|
+ sqlList.add(insertSQL.getSQL());
|
|
|
+
|
|
|
+ sqlList.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "新增", "销售出库单新增成功").getSQL());
|
|
|
+
|
|
|
+ int i = 1;
|
|
|
+ BigDecimal payamount =BigDecimal.ZERO;
|
|
|
+ for (Row row : rowsdetail) {
|
|
|
+ payamount=payamount.add(row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price")));
|
|
|
+ insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
|
|
|
+ insertSQL.setUniqueid(createTableID("st_stockbill_items"));
|
|
|
+ insertSQL.setSiteid(siteid);
|
|
|
+ insertSQL.setValue("rowno",i);
|
|
|
+ insertSQL.setValue("st_stockbillid", st_stockbillid);
|
|
|
+ insertSQL.setValue("sa_orderitemsid", row.getLong("sa_orderitemsid"));
|
|
|
+ insertSQL.setValue("itemid", row.getLong("itemid"));
|
|
|
+ insertSQL.setValue("sa_orderid", row.getLong("sa_orderid"));
|
|
|
+ insertSQL.setValue("qty", row.getLong("undeliqty"));
|
|
|
+ insertSQL.setValue("discountrate", row.getBigDecimal("discountrate"));
|
|
|
+ insertSQL.setValue("sa_dispatch_itemsid", 0);
|
|
|
+ insertSQL.setValue("defaultprice", row.getBigDecimal("defaultprice"));
|
|
|
+ insertSQL.setValue("remarks", row.getString("remarks"));
|
|
|
+ insertSQL.setValue("itemno", row.getString("itemno"));
|
|
|
+ insertSQL.setValue("itemname", row.getString("itemname"));
|
|
|
+ insertSQL.setValue("model", row.getString("model"));
|
|
|
+ insertSQL.setValue("price", row.getBigDecimal("price"));
|
|
|
+ insertSQL.setValue("amount", row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price")));
|
|
|
+ insertSQL.setValue("untaxedprice", row.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ insertSQL.setValue("untaxedamount", row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
|
|
|
+ insertSQL.setValue("skucontrol", row.getBoolean("skucontrol"));
|
|
|
+ i++;
|
|
|
+ sqlList.add(insertSQL.getSQL());
|
|
|
+ }
|
|
|
+ dbConnect.runSqlUpdate(sqlList);
|
|
|
+ dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
|
|
|
+ content.put("st_stockbillid",st_stockbillid);
|
|
|
+ return getSucReturnObject().setData(st_stockbillid).toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @API(title = "一键出库_配件", apiversion = R.ID2025110514571903.v1.class)
|
|
|
+ public String oneClickcreateStockbill_pj() throws YosException {
|
|
|
+ long sa_orderid =content.getLong("sa_orderid");
|
|
|
+// String outplace=content.getString("outplace");
|
|
|
+ JSONArray sa_orderitemsids=content.getJSONArray("sa_orderitemsids");
|
|
|
+ QuerySQL stockbillQuerySQL = SQLFactory.createQuerySQL(this, "st_stockbill_items");
|
|
|
+ stockbillQuerySQL.setTableAlias("t1");
|
|
|
+ stockbillQuerySQL.addJoinTable(JOINTYPE.inner, "st_stockbill", "t2", "t2.st_stockbillid=t1.st_stockbillid and t1.siteid=t2.siteid");
|
|
|
+ stockbillQuerySQL.setWhere("t1.siteid",siteid);
|
|
|
+ stockbillQuerySQL.setWhere("t1.sa_orderitemsid",sa_orderitemsids);
|
|
|
+ Rows stockbillRows =stockbillQuerySQL.query();
|
|
|
+
|
|
|
+ Row enterprisefinancerow =new Row();
|
|
|
+ Rows enterprisefinancerows = dbConnect.runSqlQuery("select t1.* from sys_enterprise_finance t1 inner join sa_order t2 on t1.sys_enterprise_financeid=t2.sys_enterprise_financeid where t2.sa_orderid="+sa_orderid);
|
|
|
+ if(enterprisefinancerows.isNotEmpty()){
|
|
|
+ enterprisefinancerow=enterprisefinancerows.get(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(stockbillRows.isNotEmpty()){
|
|
|
+ return getErrReturnObject().setErrMsg("存在配件申请单明细已生成销售出库单,无法一键出库").toString();
|
|
|
+ }
|
|
|
+ Rows rows = getOrderRows(this, sa_orderid);
|
|
|
+ if (rows.isEmpty()) {
|
|
|
+ return getErrReturnObject().setErrMsg("配件申请单不存在").toString();
|
|
|
+ }
|
|
|
+ if (!rows.get(0).getString("status").equals("审核")) {
|
|
|
+ return getErrReturnObject().setErrMsg("非审核状态的配件申请单无法一键出库").toString();
|
|
|
+ }
|
|
|
+ if(sa_orderitemsids.isEmpty()){
|
|
|
+ return getErrReturnObject().setErrMsg("未选择配件申请单明细,无法一键出库").toString();
|
|
|
+ }
|
|
|
+ if(sa_orderitemsids.isEmpty()){
|
|
|
+ return getErrReturnObject().setErrMsg("未选择配件申请单明细,无法一键出库").toString();
|
|
|
+ }
|
|
|
+ ArrayList<String> sqlList = new ArrayList<>();
|
|
|
+ QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems","*");
|
|
|
+ querySQL.setTableAlias("t1");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.inner, "plm_item", "t2", "t2.itemid=t1.itemid and t1.siteid=t2.siteid","skucontrol","outplace");
|
|
|
+ querySQL.setWhere("t1.siteid",siteid);
|
|
|
+ querySQL.setWhere("t1.sa_orderitemsid",sa_orderitemsids);
|
|
|
+ Rows rowsdetail = querySQL.query();
|
|
|
+ Row orderRow = rows.get(0);
|
|
|
+
|
|
|
+ long st_stockbillid = createTableID("st_stockbill");
|
|
|
+ InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
|
|
|
+ insertSQL.setUniqueid(st_stockbillid);
|
|
|
+ insertSQL.setSiteid(siteid);
|
|
|
+ insertSQL.setValue("sys_enterpriseid", orderRow.getLong("sys_enterpriseid"));
|
|
|
+ insertSQL.setValue("rec_contactsid", orderRow.getLong("rec_contactsid"));
|
|
|
+ insertSQL.setValue("departmentid", 0);
|
|
|
+ insertSQL.setValue("stockid", 0);
|
|
|
+ insertSQL.setValue("type", "销售出库");
|
|
|
+ insertSQL.setValue("typemx", "");
|
|
|
+ insertSQL.setValue("sa_supplierid", 0);
|
|
|
+ insertSQL.setValue("rb", 1);
|
|
|
+ insertSQL.setValue("remarks", "");
|
|
|
+ insertSQL.setDateValue("billdate");
|
|
|
+ insertSQL.setValue("billno", createBillCode("stockbill"));
|
|
|
+
|
|
|
+ insertSQL.setValue("outplace", rowsdetail.get(0).getString("outplace"));
|
|
|
+ insertSQL.setValue("delivery", orderRow.getString("delivery"));
|
|
|
+ insertSQL.setValue("invoice_enterprisename", enterprisefinancerow.getString("enterprisename"));
|
|
|
+ insertSQL.setValue("invoice_address", enterprisefinancerow.getString("address"));
|
|
|
+ insertSQL.setValue("invoice_taxno", enterprisefinancerow.getString("taxno"));
|
|
|
insertSQL.setValue("tracknumber", "");
|
|
|
insertSQL.setValue("isconfirm", 0);
|
|
|
|
|
|
@@ -1605,6 +1722,123 @@ public class Order extends Controller {
|
|
|
return getSucReturnObject().setData(st_stockbillid).toString();
|
|
|
}
|
|
|
|
|
|
+ @API(title = "批量一键出库_配件", apiversion = R.ID2025110515173403.v1.class)
|
|
|
+ public String oneClickcreateStockbills_pj() throws YosException {
|
|
|
+ JSONArray sa_orderids =content.getJSONArray("sa_orderids");
|
|
|
+// String outplace=content.getString("outplace");
|
|
|
+ ArrayList<String> sqlList = new ArrayList<>();
|
|
|
+ QuerySQL orderQuerySQL = SQLFactory.createQuerySQL(this, "sa_order","sa_orderid","sys_enterpriseid","sys_enterprise_financeid","rec_contactsid");
|
|
|
+ orderQuerySQL.setTableAlias("t1");
|
|
|
+ orderQuerySQL.addJoinTable(JOINTYPE.inner, "sa_orderitems", "t2", "t2.sa_orderid=t1.sa_orderid and t1.siteid=t2.siteid",
|
|
|
+ "sa_orderitemsid","itemid","undeliqty","defaultprice","remarks","itemno","itemname","model","price","delivery");
|
|
|
+ orderQuerySQL.addJoinTable(JOINTYPE.inner, "plm_item", "t3", "t2.itemid=t3.itemid and t3.siteid=t2.siteid","skucontrol","outplace");
|
|
|
+ orderQuerySQL.setWhere("t1.siteid",siteid);
|
|
|
+ orderQuerySQL.setWhere("t1.sa_orderid",sa_orderids);
|
|
|
+ orderQuerySQL.setWhere("t1.status='审核' and t2.undeliqty>0 and ifnull(t2.delivery,'')!='' and t2.delivery!='随货'");
|
|
|
+ Rows orderRows =orderQuerySQL.query();
|
|
|
+
|
|
|
+ QuerySQL stockbillQuerySQL = SQLFactory.createQuerySQL(this, "st_stockbill_items");
|
|
|
+ stockbillQuerySQL.setTableAlias("t1");
|
|
|
+ stockbillQuerySQL.addJoinTable(JOINTYPE.inner, "st_stockbill", "t2", "t2.st_stockbillid=t1.st_stockbillid and t1.siteid=t2.siteid");
|
|
|
+ stockbillQuerySQL.setWhere("t1.siteid",siteid);
|
|
|
+ stockbillQuerySQL.setWhere("t1.sa_orderitemsid",orderRows.toArrayList("sa_orderitemsid"));
|
|
|
+ Rows stockbillRows =stockbillQuerySQL.query();
|
|
|
+ if(stockbillRows.isNotEmpty()){
|
|
|
+ return getErrReturnObject().setErrMsg("存在配件申请单明细已生成销售出库单,无法一键出库").toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ QuerySQL enterprisefinanceQuerySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_finance","*");
|
|
|
+ enterprisefinanceQuerySQL.setTableAlias("t1");
|
|
|
+ enterprisefinanceQuerySQL.addJoinTable(JOINTYPE.inner, "sa_order", "t2", "t1.sys_enterprise_financeid=t2.sys_enterprise_financeid");
|
|
|
+ enterprisefinanceQuerySQL.setWhere("t1.siteid",siteid);
|
|
|
+ enterprisefinanceQuerySQL.setWhere("t2.sa_orderid",sa_orderids);
|
|
|
+ Rows enterprisefinancerows =enterprisefinanceQuerySQL.query();
|
|
|
+
|
|
|
+
|
|
|
+ RowsMap enterprisefinancerowsMap =enterprisefinancerows.toRowsMap("sys_enterpriseid");
|
|
|
+ RowsMap enterpriserowsMap = orderRows.toRowsMap("sys_enterpriseid");
|
|
|
+ RowsMap deliveryrowsMap = orderRows.toRowsMap("delivery");
|
|
|
+ Set<String> enterpriseSet = enterpriserowsMap.keySet();
|
|
|
+ Set<String> deliverySet = deliveryrowsMap.keySet();
|
|
|
+ int stockbillcount=0;
|
|
|
+ for(String sys_enterpriseid :enterpriseSet){
|
|
|
+ for(String delivery:deliverySet){
|
|
|
+ if(enterpriserowsMap.get(sys_enterpriseid).toRowsMap("delivery").containsKey(delivery)){
|
|
|
+ Rows orderdetailRows = enterpriserowsMap.get(sys_enterpriseid).toRowsMap("delivery").get(delivery);
|
|
|
+ long st_stockbillid = createTableID("st_stockbill");
|
|
|
+ InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
|
|
|
+ insertSQL.setUniqueid(st_stockbillid);
|
|
|
+ insertSQL.setSiteid(siteid);
|
|
|
+ insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
|
|
|
+ insertSQL.setValue("rec_contactsid", orderdetailRows.get(0).getLong("rec_contactsid"));
|
|
|
+ insertSQL.setValue("departmentid", 0);
|
|
|
+ insertSQL.setValue("stockid", 0);
|
|
|
+ insertSQL.setValue("type", "销售出库");
|
|
|
+ insertSQL.setValue("typemx", "");
|
|
|
+ insertSQL.setValue("sa_supplierid", 0);
|
|
|
+ insertSQL.setValue("rb", 1);
|
|
|
+ insertSQL.setValue("remarks", "");
|
|
|
+ insertSQL.setDateValue("billdate");
|
|
|
+ insertSQL.setValue("billno", createBillCode("stockbill"));
|
|
|
+
|
|
|
+ insertSQL.setValue("outplace", orderdetailRows.get(0).getString("outplace"));
|
|
|
+ insertSQL.setValue("delivery", orderdetailRows.get(0).getString("delivery"));
|
|
|
+ insertSQL.setValue("invoice_enterprisename",enterprisefinancerowsMap.containsKey(sys_enterpriseid)?enterprisefinancerowsMap.get(sys_enterpriseid).get(0).getString("enterprisename"):"");
|
|
|
+ insertSQL.setValue("invoice_address",enterprisefinancerowsMap.containsKey(sys_enterpriseid)?enterprisefinancerowsMap.get(sys_enterpriseid).get(0).getString("address"):"");
|
|
|
+ insertSQL.setValue("invoice_taxno",enterprisefinancerowsMap.containsKey(sys_enterpriseid)?enterprisefinancerowsMap.get(sys_enterpriseid).get(0).getString("taxno"):"");
|
|
|
+ insertSQL.setValue("tracknumber", "");
|
|
|
+ insertSQL.setValue("isconfirm", 0);
|
|
|
+
|
|
|
+ insertSQL.setValue("period", getDate_Str().substring(0, 7));
|
|
|
+
|
|
|
+ insertSQL.setValue("createby", username);
|
|
|
+ insertSQL.setDateValue("createdate");
|
|
|
+ insertSQL.setValue("changeby", username);
|
|
|
+ insertSQL.setDateValue("changedate");
|
|
|
+ insertSQL.setValue("status", "新建");
|
|
|
+ insertSQL.setValue("payamount", 0);
|
|
|
+ insertSQL.setValue("paydiscountamount", 0);
|
|
|
+ sqlList.add(insertSQL.getSQL());
|
|
|
+
|
|
|
+ sqlList.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "新增", "销售出库单新增成功").getSQL());
|
|
|
+
|
|
|
+ int i = 1;
|
|
|
+ BigDecimal payamount =BigDecimal.ZERO;
|
|
|
+ for (Row row : orderdetailRows) {
|
|
|
+ payamount=payamount.add(row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price")));
|
|
|
+ insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
|
|
|
+ insertSQL.setUniqueid(createTableID("st_stockbill_items"));
|
|
|
+ insertSQL.setSiteid(siteid);
|
|
|
+ insertSQL.setValue("rowno",i);
|
|
|
+ insertSQL.setValue("st_stockbillid", st_stockbillid);
|
|
|
+ insertSQL.setValue("sa_orderitemsid", row.getLong("sa_orderitemsid"));
|
|
|
+ insertSQL.setValue("itemid", row.getLong("itemid"));
|
|
|
+ insertSQL.setValue("sa_orderid", row.getLong("sa_orderid"));
|
|
|
+ insertSQL.setValue("qty", row.getLong("undeliqty"));
|
|
|
+ insertSQL.setValue("discountrate", 1);
|
|
|
+ insertSQL.setValue("sa_dispatch_itemsid", 0);
|
|
|
+ insertSQL.setValue("defaultprice", row.getBigDecimal("defaultprice"));
|
|
|
+ insertSQL.setValue("remarks", row.getString("remarks"));
|
|
|
+ insertSQL.setValue("itemno", row.getString("itemno"));
|
|
|
+ insertSQL.setValue("itemname", row.getString("itemname"));
|
|
|
+ insertSQL.setValue("model", row.getString("model"));
|
|
|
+ insertSQL.setValue("price", row.getBigDecimal("price"));
|
|
|
+ insertSQL.setValue("amount", row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price")));
|
|
|
+ insertSQL.setValue("untaxedprice", row.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ insertSQL.setValue("untaxedamount", row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
|
|
|
+ insertSQL.setValue("skucontrol", row.getBoolean("skucontrol"));
|
|
|
+ i++;
|
|
|
+ sqlList.add(insertSQL.getSQL());
|
|
|
+ }
|
|
|
+ sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
|
|
|
+ stockbillcount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dbConnect.runSqlUpdate(sqlList);
|
|
|
+ return getSucReturnObject().setData("已生成"+enterpriseSet.size()+"家经销商,共"+stockbillcount+"张出库单").toString();
|
|
|
+ }
|
|
|
+
|
|
|
@API(title = "提交", apiversion = R.ID20221108153402.v1.class, intervaltime = 5000)
|
|
|
@CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, cashbill.class, promotion.class, restcontroller.webmanage.sale.promotion.promotion.class, accessoryorder.class})
|
|
|
public String submit() throws YosException {
|