|
|
@@ -28,6 +28,7 @@ import restcontroller.sale.promotion.promotion;
|
|
|
import restcontroller.webmanage.executorService.Executor;
|
|
|
import restcontroller.webmanage.sale.accessoryorder.accessoryorder;
|
|
|
|
|
|
+import javax.swing.*;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
@@ -1723,6 +1724,8 @@ public class Order extends Controller {
|
|
|
querySQL.setWhere("t1.sa_orderitemsid",sa_orderitemsids);
|
|
|
Rows rowsdetail = querySQL.query();
|
|
|
Row orderRow = rows.get(0);
|
|
|
+ Rows departmenthrrows =dbConnect.runSqlQuery("select *from sys_departmenthrid where hrid="+hrid);
|
|
|
+ Rows accountbalancerows = dbConnect.runSqlQuery("select * from sa_accountbalance t1 inner join sa_accountclass t2 on t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid where t2.accountname='现金账户' and t1.sys_enterpriseid=" + orderRow.getLong("sys_enterpriseid"));
|
|
|
|
|
|
long st_stockbillid = createTableID("st_stockbill");
|
|
|
InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
|
|
|
@@ -1730,7 +1733,7 @@ public class Order extends Controller {
|
|
|
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("departmentid", departmenthrrows.isNotEmpty()?departmenthrrows.get(0).getLong("departmentid"):0);
|
|
|
insertSQL.setValue("stockid", 0);
|
|
|
insertSQL.setValue("type", "销售出库");
|
|
|
insertSQL.setValue("typemx", "");
|
|
|
@@ -1790,7 +1793,21 @@ public class Order extends Controller {
|
|
|
sqlList.add(insertSQL.getSQL());
|
|
|
}
|
|
|
dbConnect.runSqlUpdate(sqlList);
|
|
|
- dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
|
|
|
+ if(accountbalancerows.isNotEmpty()){
|
|
|
+ if(accountbalancerows.get(0).getBigDecimal("discountamount").compareTo(BigDecimal.ZERO)>0){
|
|
|
+ if(accountbalancerows.get(0).getBigDecimal("discountamount").compareTo(payamount)>0){
|
|
|
+ dbConnect.runSqlUpdate("update st_stockbill set payamount=0,discountamount="+accountbalancerows.get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
|
|
|
+ }else{
|
|
|
+ dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount.subtract(accountbalancerows.get(0).getBigDecimal("discountamount"))+",discountamount="+accountbalancerows.get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ 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();
|
|
|
}
|
|
|
@@ -1807,12 +1824,74 @@ public class Order extends Controller {
|
|
|
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!='随货'");
|
|
|
+ orderQuerySQL.setWhere("t1.status='审核' and t1.type='配件订单' and t2.undeliqty>0 and ifnull(t2.delivery,'')!='' and t2.delivery!='随货'");
|
|
|
Rows orderRows =orderQuerySQL.query();
|
|
|
|
|
|
+ QuerySQL orderQuerySQL_jundge = SQLFactory.createQuerySQL(this, "sa_order","sa_orderid","status","sonum","type","delivery");
|
|
|
+ orderQuerySQL_jundge.setTableAlias("t1");
|
|
|
+ orderQuerySQL_jundge.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","rowno");
|
|
|
+ orderQuerySQL_jundge.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sys_enterpriseid=t1.sys_enterpriseid and t4.siteid=t1.siteid", "agentnum");
|
|
|
+ orderQuerySQL_jundge.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.sys_enterpriseid=t4.sys_enterpriseid and t5.siteid=t4.siteid", "enterprisename", "abbreviation");
|
|
|
+ orderQuerySQL_jundge.setWhere("t1.siteid",siteid);
|
|
|
+ orderQuerySQL_jundge.setWhere("t1.sa_orderid",sa_orderids);
|
|
|
+ Rows orderRows_jundge =orderQuerySQL_jundge.query();
|
|
|
+ Rows errRows =new Rows();
|
|
|
+ for(Row row :orderRows_jundge){
|
|
|
+ Row errRow =new Row();
|
|
|
+ if(!row.getString("status").equals("审核")){
|
|
|
+ errRow.put("sa_orderid",row.getLong("sa_orderid"));
|
|
|
+ errRow.put("sonum",row.getString("sonum"));
|
|
|
+ errRow.put("agentnum",row.getString("agentnum"));
|
|
|
+ errRow.put("status",row.getString("status"));
|
|
|
+ errRow.put("abbreviation",row.getString("abbreviation"));
|
|
|
+ errRow.put("delivery",row.getString("delivery"));
|
|
|
+ errRow.put("errreason","非审核状态不可发货");
|
|
|
+ errRows.add(errRow);
|
|
|
+ }else if(!row.getString("type").equals("配件订单")){
|
|
|
+ errRow.put("sa_orderid",row.getLong("sa_orderid"));
|
|
|
+ errRow.put("sonum",row.getString("sonum"));
|
|
|
+ errRow.put("agentnum",row.getString("agentnum"));
|
|
|
+ errRow.put("status",row.getString("status"));
|
|
|
+ errRow.put("abbreviation",row.getString("abbreviation"));
|
|
|
+ errRow.put("delivery",row.getString("delivery"));
|
|
|
+ errRow.put("errreason","非配件申请单不可发货");
|
|
|
+ errRows.add(errRow);
|
|
|
+ }else if(row.getDouble("undeliqty")<=0){
|
|
|
+ errRow.put("sa_orderid",row.getLong("sa_orderid"));
|
|
|
+ errRow.put("sonum",row.getString("sonum"));
|
|
|
+ errRow.put("agentnum",row.getString("agentnum"));
|
|
|
+ errRow.put("status",row.getString("status"));
|
|
|
+ errRow.put("abbreviation",row.getString("abbreviation"));
|
|
|
+ errRow.put("delivery",row.getString("delivery"));
|
|
|
+ errRow.put("errreason","行号"+row.getString("rowno")+"的商品已发货,不可发货");
|
|
|
+ errRows.add(errRow);
|
|
|
+ }else if(StringUtils.isBlank(row.getString("delivery"))){
|
|
|
+ errRow.put("sa_orderid",row.getLong("sa_orderid"));
|
|
|
+ errRow.put("sonum",row.getString("sonum"));
|
|
|
+ errRow.put("agentnum",row.getString("agentnum"));
|
|
|
+ errRow.put("status",row.getString("status"));
|
|
|
+ errRow.put("abbreviation",row.getString("abbreviation"));
|
|
|
+ errRow.put("delivery",row.getString("delivery"));
|
|
|
+ errRow.put("errreason","行号"+row.getString("rowno")+"的商品发货方式为空,不可发货");
|
|
|
+ errRows.add(errRow);
|
|
|
+ }else if(row.getString("delivery").equals("随货")){
|
|
|
+ errRow.put("sa_orderid",row.getLong("sa_orderid"));
|
|
|
+ errRow.put("sonum",row.getString("sonum"));
|
|
|
+ errRow.put("agentnum",row.getString("agentnum"));
|
|
|
+ errRow.put("status",row.getString("status"));
|
|
|
+ errRow.put("abbreviation",row.getString("abbreviation"));
|
|
|
+ errRow.put("delivery",row.getString("delivery"));
|
|
|
+ errRow.put("errreason","行号"+row.getString("rowno")+"的商品发货方式为随货,不可发货");
|
|
|
+ errRows.add(errRow);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
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.addJoinTable(JOINTYPE.left, "sa_orderitems", "t4", "t4.sa_orderitemsid=t1.sa_orderitemsid and t4.siteid=t1.siteid", "sa_orderid");
|
|
|
stockbillQuerySQL.setWhere("t1.siteid",siteid);
|
|
|
if(orderRows.toArrayList("sa_orderitemsid").isEmpty()){
|
|
|
stockbillQuerySQL.setWhere("1=2");
|
|
|
@@ -1820,24 +1899,73 @@ public class Order extends Controller {
|
|
|
stockbillQuerySQL.setWhere("t1.sa_orderitemsid",orderRows.toArrayList("sa_orderitemsid"));
|
|
|
}
|
|
|
Rows stockbillRows =stockbillQuerySQL.query();
|
|
|
- if(stockbillRows.isNotEmpty()){
|
|
|
- return getErrReturnObject().setErrMsg("存在配件申请单明细已生成销售出库单,无法一键出库").toString();
|
|
|
+ RowsMap stockbillRowsMap =stockbillRows.toRowsMap("sa_orderitemsid");
|
|
|
+ RowsMap orderRows_jundgeMap =orderRows_jundge.toRowsMap("sa_orderid");
|
|
|
+ for(Row row :stockbillRows){
|
|
|
+ Row errRow =new Row();
|
|
|
+ if(orderRows_jundgeMap.containsKey(row.getString("sa_orderid"))){
|
|
|
+ errRow.put("sa_orderid",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getLong("sa_orderid"));
|
|
|
+ errRow.put("sonum",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("sonum"));
|
|
|
+ errRow.put("agentnum",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("agentnum"));
|
|
|
+ errRow.put("status",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("status"));
|
|
|
+ errRow.put("abbreviation",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("abbreviation"));
|
|
|
+ errRow.put("delivery",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("delivery"));
|
|
|
+ errRow.put("errreason","已存在出库单");
|
|
|
+ errRows.add(errRow);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ RowsMap errRowsMap=errRows.toRowsMap("sa_orderid");
|
|
|
+ Set<String> errSet=errRowsMap.keySet();
|
|
|
+ for(String sa_orderid :errSet){
|
|
|
+ if(errRowsMap.get(sa_orderid).size()>1){
|
|
|
+ String errreason = String.join(", ", errRowsMap.get(sa_orderid).toArrayList("errreason"));
|
|
|
+ for(Row row : errRowsMap.get(sa_orderid)){
|
|
|
+ row.put("errreason",errreason);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LinkedHashSet<Row> linkedSet = new LinkedHashSet<>(errRows);
|
|
|
+ Rows errRows_result = new Rows();
|
|
|
+ for(Row row :linkedSet){
|
|
|
+ errRows_result.add(row);
|
|
|
+ }
|
|
|
+
|
|
|
+ Rows orderRows_result = new Rows();
|
|
|
+ for(Row row :orderRows){
|
|
|
+ if(!stockbillRowsMap.containsKey(row.getString("sa_orderitemsid"))){
|
|
|
+ orderRows_result.add(row);
|
|
|
+ }
|
|
|
}
|
|
|
+// 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);
|
|
|
+ enterprisefinanceQuerySQL.setWhere("t2.sa_orderid",orderRows_result.toArrayList("sa_orderid"));
|
|
|
Rows enterprisefinancerows =enterprisefinanceQuerySQL.query();
|
|
|
|
|
|
|
|
|
RowsMap enterprisefinancerowsMap =enterprisefinancerows.toRowsMap("sys_enterpriseid");
|
|
|
- RowsMap enterpriserowsMap = orderRows.toRowsMap("sys_enterpriseid");
|
|
|
- RowsMap deliveryrowsMap = orderRows.toRowsMap("delivery");
|
|
|
+ RowsMap enterpriserowsMap = orderRows_result.toRowsMap("sys_enterpriseid");
|
|
|
+ RowsMap deliveryrowsMap = orderRows_result.toRowsMap("delivery");
|
|
|
Set<String> enterpriseSet = enterpriserowsMap.keySet();
|
|
|
Set<String> deliverySet = deliveryrowsMap.keySet();
|
|
|
int stockbillcount=0;
|
|
|
+
|
|
|
+ QuerySQL accountbalanceQuerySQL = SQLFactory.createQuerySQL(this, "sa_accountbalance","*");
|
|
|
+ accountbalanceQuerySQL.setTableAlias("t1");
|
|
|
+ accountbalanceQuerySQL.addJoinTable(JOINTYPE.inner, "sa_accountclass", "t2", "t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid");
|
|
|
+ accountbalanceQuerySQL.setWhere("t1.siteid",siteid);
|
|
|
+ accountbalanceQuerySQL.setWhere("t2.accountname='现金账户'");
|
|
|
+ accountbalanceQuerySQL.setWhere("t1.sys_enterpriseid",orderRows_result.toArrayList("sys_enterpriseid"));
|
|
|
+ Rows accountbalancerows =accountbalanceQuerySQL.query();
|
|
|
+ RowsMap accountbalancerowsMap = accountbalancerows.toRowsMap("sys_enterpriseid");
|
|
|
+
|
|
|
+ Rows departmenthrrows =dbConnect.runSqlQuery("select *from sys_departmenthrid where hrid="+hrid);
|
|
|
for(String sys_enterpriseid :enterpriseSet){
|
|
|
for(String delivery:deliverySet){
|
|
|
if(enterpriserowsMap.get(sys_enterpriseid).toRowsMap("delivery").containsKey(delivery)){
|
|
|
@@ -1848,7 +1976,7 @@ public class Order extends Controller {
|
|
|
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("departmentid", departmenthrrows.isNotEmpty()?departmenthrrows.get(0).getLong("departmentid"):0);
|
|
|
insertSQL.setValue("stockid", 0);
|
|
|
insertSQL.setValue("type", "销售出库");
|
|
|
insertSQL.setValue("typemx", "");
|
|
|
@@ -1907,13 +2035,31 @@ public class Order extends Controller {
|
|
|
i++;
|
|
|
sqlList.add(insertSQL.getSQL());
|
|
|
}
|
|
|
- sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
|
|
|
+
|
|
|
+ if(accountbalancerowsMap.containsKey(sys_enterpriseid)){
|
|
|
+ if(accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount").compareTo(BigDecimal.ZERO)>0){
|
|
|
+ if(accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount").compareTo(payamount)>0){
|
|
|
+ sqlList.add("update st_stockbill set payamount=0,discountamount="+accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
|
|
|
+ }else{
|
|
|
+ sqlList.add("update st_stockbill set payamount="+payamount.subtract(accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount"))+",discountamount="+accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
|
|
|
+ }
|
|
|
+// sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
|
|
|
stockbillcount++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
dbConnect.runSqlUpdate(sqlList);
|
|
|
- return getSucReturnObject().setData("已生成"+enterpriseSet.size()+"家经销商,共"+stockbillcount+"张出库单").toString();
|
|
|
+ HashMap<String,Object> result=new HashMap<>();
|
|
|
+ String success= "已生成"+enterpriseSet.size()+" 家经销商,共"+stockbillcount+"张出库单;失败"+errRows_result.toRowsMap("agentnum").size()+"家经销商,共"+errRows_result.toRowsMap("sonum").size()+"张订单!";
|
|
|
+ result.put("success",success);
|
|
|
+ result.put("errinfo",errRows_result);
|
|
|
+ return getSucReturnObject().setData(result).toString();
|
|
|
}
|
|
|
|
|
|
@API(title = "提交", apiversion = R.ID20221108153402.v1.class, intervaltime = 5000)
|