|
|
@@ -1,22 +1,28 @@
|
|
|
package service;
|
|
|
|
|
|
+import beans.accountbalance.Accountbalance;
|
|
|
+import beans.accountbalance.CashbillEntity;
|
|
|
import beans.datacontrllog.DataContrlLog;
|
|
|
+import beans.itemclass.ItemClass;
|
|
|
+import beans.order.Order;
|
|
|
import beans.parameter.Parameter;
|
|
|
+import beans.remind.Remind;
|
|
|
import beans.uploaderpdata.UploadDataToERP_HY;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import common.Controller;
|
|
|
import common.ServiceController;
|
|
|
import common.YosException;
|
|
|
-import common.data.Row;
|
|
|
-import common.data.Rows;
|
|
|
-import common.data.RowsMap;
|
|
|
-import common.data.SQLFactory;
|
|
|
+import common.data.*;
|
|
|
import common.parameter.properties;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.log4j.Logger;
|
|
|
import restcontroller.webmanage.executorService.Executor;
|
|
|
+import restcontroller.webmanage.sale.order.OrderItemsHelper;
|
|
|
import utility.ERPDocking;
|
|
|
import utility.tools.WebRequest;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Properties;
|
|
|
@@ -174,6 +180,10 @@ public class DispatchAutoCloseService extends ServiceController {
|
|
|
sqlFactory.addParameter("actionby", "admin");
|
|
|
sqlFactory.addParameter("siteid", siteid);
|
|
|
dbConnect.runSqlUpdate(sqlFactory.getSQL());
|
|
|
+
|
|
|
+ //是否自动返利结算
|
|
|
+ executeAutoRebate(row.getLong("sa_orderid"), siteid);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -273,4 +283,202 @@ public class DispatchAutoCloseService extends ServiceController {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public void executeAutoRebate(Long sa_orderid, String siteid) throws YosException {
|
|
|
+
|
|
|
+ Rows orderRows = dbConnect.runSqlQuery("SELECT * from sa_order WHERE sa_orderid = " + sa_orderid + " and siteid = '" + siteid + "'");
|
|
|
+ if (orderRows.get(0).getString("type").equals("促销订单")) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Long sys_enterpriseid = orderRows.get(0).getLong("sys_enterpriseid");
|
|
|
+
|
|
|
+
|
|
|
+ //是否自动返利结算
|
|
|
+ String isrebate = Parameter.get(siteid, "isrebate");
|
|
|
+ if (isrebate.equals("1")) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //查询有效期内,余额大于0 的经销商装修补贴返利
|
|
|
+ String sql = "select * from sa_agentdecorationtrebate WHERE sys_enterpriseid=" + sys_enterpriseid + " and siteid='" + siteid + "' and begindate <= current_date and enddate>=current_date and balance>0";
|
|
|
+ Rows agentdecorationtrebatRows = dbConnect.runSqlQuery(sql);
|
|
|
+ if (agentdecorationtrebatRows.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //查询装修返利方案
|
|
|
+ Rows rebateschemeRows = dbConnect.runSqlQuery("select * from sa_rebatescheme where siteid='" + siteid + "'");
|
|
|
+ if (rebateschemeRows.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ArrayList<String> sqlList = new ArrayList<>();
|
|
|
+ Long sa_rebateschemeid = rebateschemeRows.get(0).getLong("sa_rebateschemeid");
|
|
|
+ Long sa_accountclassid = rebateschemeRows.get(0).getLong("sa_accountclassid");
|
|
|
+
|
|
|
+ Rows rebatecategorys = dbConnect.runSqlQuery("select itemclassid from sa_rebatecategory where siteid='" + siteid + "' and sa_rebateschemeid=" + sa_rebateschemeid);
|
|
|
+ Rows rebateunproducts = dbConnect.runSqlQuery("select itemid from sa_rebateunproducts where siteid='" + siteid + "' and sa_rebateschemeid=" + sa_rebateschemeid);
|
|
|
+
|
|
|
+ ArrayList<Long> itemclsids = rebatecategorys.toArrayList("itemclassid", new ArrayList<Long>());
|
|
|
+
|
|
|
+ itemclsids.addAll(ItemClass.getSubItemClassIds(dbConnect, siteid, itemclsids));
|
|
|
+ itemclsids.add(0l);
|
|
|
+ ArrayList<Long> itemids = rebateunproducts.toArrayList("itemid", new ArrayList<Long>());
|
|
|
+ itemids.add(0l);
|
|
|
+
|
|
|
+ SQLFactory sqlFactory = new SQLFactory(dbConnect, "查询返利数据");
|
|
|
+ sqlFactory.addParameter("sa_orderid", sa_orderid);
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter_in("itemclassid", itemclsids);
|
|
|
+ sqlFactory.addParameter_in("itemid", itemids);
|
|
|
+
|
|
|
+ Rows rows = dbConnect.runSqlQuery(sqlFactory);
|
|
|
+ BigDecimal saorderamount = BigDecimal.ZERO;
|
|
|
+ for (Row row : rows) {
|
|
|
+ saorderamount = saorderamount.add(row.getBigDecimal("amount"));
|
|
|
+ }
|
|
|
+ //查询定制费用
|
|
|
+ sql = "SELECT ifnull(sum(costamount),0) costamount from sa_order_cost WHERE sa_orderid=" + sa_orderid;
|
|
|
+ BigDecimal costamount = dbConnect.runSqlQuery(0, sql).getBigDecimal("costamount");
|
|
|
+ saorderamount = saorderamount.add(costamount);
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal balance = agentdecorationtrebatRows.get(0).getBigDecimal("balance");
|
|
|
+ BigDecimal brate = agentdecorationtrebatRows.get(0).getBigDecimal("brate");
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal approvedamount = BigDecimal.ZERO;
|
|
|
+ if (balance.compareTo(saorderamount.multiply(brate)) >= 0) {
|
|
|
+ approvedamount = saorderamount.multiply(brate);
|
|
|
+ } else if (balance.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ approvedamount = balance;
|
|
|
+ }
|
|
|
+ System.out.println(saorderamount);
|
|
|
+ System.out.println(approvedamount);
|
|
|
+
|
|
|
+ if (approvedamount.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ ArrayList<Long> sa_orderitemsids = rows.toArrayList("sa_orderitemsid", new ArrayList<>());
|
|
|
+ sa_orderitemsids.add(0l);
|
|
|
+
|
|
|
+ //更新订单明细的装修返利标志
|
|
|
+ UpdateSQL updateSQL = SQLFactory.createUpdateSQL(dbConnect, "sa_orderitems");
|
|
|
+ updateSQL.setWhere("sa_orderitemsid", sa_orderitemsids);
|
|
|
+ updateSQL.setValue("decorationrebateflag", "1");
|
|
|
+ sqlList.add(updateSQL.getSQL());
|
|
|
+
|
|
|
+ //更新sa_agentdecorationtrebate
|
|
|
+ updateSQL = SQLFactory.createUpdateSQL(dbConnect, "sa_agentdecorationtrebate");
|
|
|
+ updateSQL.setWhere("sys_enterpriseid", sys_enterpriseid);
|
|
|
+ updateSQL.setSiteid(siteid);
|
|
|
+ updateSQL.setValue("balance", balance.subtract(approvedamount));
|
|
|
+ sqlList.add(updateSQL.getSQL());
|
|
|
+
|
|
|
+ //生成收入凭证
|
|
|
+ CashbillEntity entity = new CashbillEntity();
|
|
|
+ entity.setAmount(approvedamount);
|
|
|
+ entity.setOwnerid(sa_orderid);
|
|
|
+ entity.setOwnertable("sa_order");
|
|
|
+ entity.setSource("订单自动返利");
|
|
|
+ entity.setSourcenote(orderRows.get(0).getString("sonum"));
|
|
|
+ entity.setRemarks(orderRows.get(0).getString("sonum") + "订单自动返利");
|
|
|
+ JSONObject cashbillIncome = createCashbillIncome(siteid, sys_enterpriseid, sa_accountclassid, entity, true, true);
|
|
|
+ sqlList.addAll(cashbillIncome.getJSONArray("sqlList").toJavaList(String.class));
|
|
|
+
|
|
|
+ dbConnect.runSqlUpdate(sqlList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建收入凭证(返回SQL)
|
|
|
+ *
|
|
|
+ * @param siteid
|
|
|
+ * @param sys_enterpriseid 企业id
|
|
|
+ * @param sa_accountclassid 账户id
|
|
|
+ * @param cashbillEntity 收支凭证实体
|
|
|
+ * @param ischeck 是否审核
|
|
|
+ * @return
|
|
|
+ * @throws YosException
|
|
|
+ */
|
|
|
+ public JSONObject createCashbillIncome(String siteid, long sys_enterpriseid, long sa_accountclassid, CashbillEntity cashbillEntity, boolean ischeck, boolean isupdatek3flag) throws YosException {
|
|
|
+
|
|
|
+ long userid = 1;
|
|
|
+ String username = "admin";
|
|
|
+
|
|
|
+ ArrayList<String> sqlList = new ArrayList<>();
|
|
|
+ long sa_cashbillid = createTableID("sa_cashbill");
|
|
|
+ String billcode = createBillCode(siteid, "cashbill");
|
|
|
+ SQLFactory sqlFactory = new SQLFactory(new Accountbalance(), "收支凭证新增");
|
|
|
+ sqlFactory.addParameter("billno", billcode);
|
|
|
+ sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
|
|
|
+ sqlFactory.addParameter("sa_accountclassid", sa_accountclassid);
|
|
|
+ sqlFactory.addParameter("type", 1);
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("remarks", cashbillEntity.getRemarks());
|
|
|
+ sqlFactory.addParameter("amount", cashbillEntity.getAmount());
|
|
|
+ sqlFactory.addParameter("sa_cashbillid", sa_cashbillid);
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ sqlFactory.addParameter("username", username);
|
|
|
+ sqlFactory.addParameter("ownertable", cashbillEntity.getOwnertable());
|
|
|
+ sqlFactory.addParameter("ownerid", cashbillEntity.getOwnerid());
|
|
|
+ sqlFactory.addParameter("source", cashbillEntity.getSource());
|
|
|
+ sqlFactory.addParameter("sourcenote", cashbillEntity.getSourcenote());
|
|
|
+ sqlFactory.addParameter("sa_cashbillid_rebate", "null");
|
|
|
+ sqlFactory.addParameter("class", cashbillEntity.getType());
|
|
|
+ sqlFactory.addParameter("subclass", cashbillEntity.getTypemx());
|
|
|
+ if (ischeck) {
|
|
|
+ BigDecimal balance = BigDecimal.ZERO; //当前账户余额
|
|
|
+ sqlFactory.addParameter("status", "审核");
|
|
|
+ if (isupdatek3flag) {
|
|
|
+ sqlFactory.addParameter("updatek3flag", "0");
|
|
|
+ } else {
|
|
|
+ sqlFactory.addParameter("updatek3flag", "");
|
|
|
+ }
|
|
|
+ sqlFactory.addParameter("checkby", username);
|
|
|
+ sqlFactory.addParameter_SQL("checkdate", "CURRENT_TIME");
|
|
|
+
|
|
|
+ // 审核逻辑判断
|
|
|
+ Rows rowsaccountbalance = dbConnect.runSqlQuery(
|
|
|
+ "select sa_accountbalanceid,balance,creditquota from sa_accountbalance where sys_enterpriseid ='"
|
|
|
+ + sys_enterpriseid + "' and sa_accountclassid='" + sa_accountclassid + "' and siteid='"
|
|
|
+ + siteid + "'");
|
|
|
+
|
|
|
+ if (rowsaccountbalance.isEmpty()) {
|
|
|
+ SQLFactory accountbalanceaddSqlFactory = new SQLFactory(new Accountbalance(), "营销账户余额新增");
|
|
|
+ accountbalanceaddSqlFactory.addParameter("sa_accountbalanceid",
|
|
|
+ createTableID("sa_accountbalance"));
|
|
|
+ accountbalanceaddSqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
|
|
|
+ accountbalanceaddSqlFactory.addParameter("sa_accountclassid", sa_accountclassid);
|
|
|
+ accountbalanceaddSqlFactory.addParameter("siteid", siteid);
|
|
|
+ accountbalanceaddSqlFactory.addParameter("balance", cashbillEntity.getAmount());
|
|
|
+ accountbalanceaddSqlFactory.addParameter("userid", userid);
|
|
|
+ accountbalanceaddSqlFactory.addParameter("username", username);
|
|
|
+ balance = cashbillEntity.getAmount();
|
|
|
+ sqlList.add(accountbalanceaddSqlFactory.getSQL());
|
|
|
+ } else {
|
|
|
+ BigDecimal newbalance = cashbillEntity.getAmount().add(rowsaccountbalance.get(0).getBigDecimal("balance"));
|
|
|
+ sqlList.add("update sa_accountbalance set balance='" + newbalance
|
|
|
+ + "',changedate=CURRENT_TIME,changeby ='" + username + "',changeuserid='"
|
|
|
+ + userid + "' where sys_enterpriseid ='" + sys_enterpriseid
|
|
|
+ + "' and sa_accountclassid='" + sa_accountclassid + "' and siteid='" + siteid
|
|
|
+ + "'");
|
|
|
+ balance = newbalance;
|
|
|
+ }
|
|
|
+ sqlFactory.addParameter("balance", balance);
|
|
|
+ Rows accountclassrows = dbConnect.runSqlQuery("select * from sa_accountclass where siteid='" + siteid + "' and sa_accountclassid=" + sa_accountclassid);
|
|
|
+ if (!accountclassrows.isEmpty()) {
|
|
|
+ String content = "您的" + accountclassrows.get(0).getString("accountname") + "已收入【" + cashbillEntity.getAmount() + "】元";
|
|
|
+ new Accountbalance().sendMsg(siteid, content, cashbillEntity.getOwnerid(), sys_enterpriseid);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ sqlFactory.addParameter("status", "新建");
|
|
|
+ sqlFactory.addParameter("checkby", "null");
|
|
|
+ sqlFactory.addParameter("checkdate", "null");
|
|
|
+ sqlFactory.addParameter("updatek3flag", "");
|
|
|
+ sqlFactory.addParameter("balance", 0);
|
|
|
+ }
|
|
|
+ sqlList.add(sqlFactory.getSQL());
|
|
|
+
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("sa_cashbillid", sa_cashbillid);
|
|
|
+ jsonObject.put("sqlList", sqlList);
|
|
|
+ return jsonObject;
|
|
|
+ }
|
|
|
}
|