From c9b157e19d101fd2d9a79c3db673f0c2cacd481c Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 12 Jan 2021 18:10:50 +0800
Subject: [PATCH] modify
---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 136 ++++++++++++++++++++++++++++-----------------
1 files changed, 85 insertions(+), 51 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index e76196b..bef07ea 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -159,8 +159,22 @@
// 计算订单折扣金额,收款情况下 计算订单总额
double zkTotal = 0.0;
+ // 判断是否为退款
+ String orderStatus = Dictionary.ORDER_STATU_DFK;
+ if (Dictionary.ORDER_STATU_TK.equals(sysOrder.getStatu())) {
+ orderStatus = Dictionary.ORDER_STATU_TK;
+ }
+
// 页面的pageOrder 参数只包含支付金额信息,不带有购买商品
for (SysOrderItem item : sysOrder.getItems()) {
+ // 若为退款,则先更新原有数量
+ if (orderStatus.equals(Dictionary.ORDER_STATU_TK)) {
+ SysOrderItem sysOrderItem = new SysOrderItem();
+ sysOrderItem.setId(item.getId());
+ sysOrderItem.setCount(item.getPreCount() - item.getCount());
+ orderItemDao.update(sysOrderItem);
+ }
+ item.setId(null);
ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(item.getGoodsId());
item.setType(shoppingGoods.getGoodType());
@@ -171,12 +185,12 @@
// 订单欠款减去支付金额 设置实际欠款
Double itemZkTotal = MoneyUtil.mul(item.getZkPrice(), Double.valueOf(item.getCount()));
zkTotal=MoneyUtil.add(zkTotal, itemZkTotal);
- item.setStatus(Dictionary.ORDER_STATU_DFK);
+ item.setStatus(orderStatus);
}
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
sysOrder.setZkTotal(zkTotal);
- sysOrder.setStatu(Dictionary.ORDER_STATU_DFK);
+ sysOrder.setStatu(orderStatus);
sysOrder.setStaffId(user.getSuId());
sysOrder.setCompanyId(user.getCompanyId());
@@ -464,6 +478,8 @@
private void changeOrderStatu(SysOrder sourceOrder) {
int i = 1;
String orderStatus = Dictionary.ORDER_STATU_YFK;
+ double cashPayTotal = 0D;
+ double cardPayTotal = 0D;
for (SysOrderFlow flow : sourceOrder.getFlows()) {
flow.setFlowNo(codeService.getFlowCode() + "-" + i);
Long goodsId = sourceOrder.getItems().get(0).getGoodsId();
@@ -478,6 +494,7 @@
if (flow.getCardId() != null) {
MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
cardPaySk(moneyCardUse, sourceOrder, flow);
+ cardPayTotal += flow.getAmount().doubleValue();
}
}
@@ -485,12 +502,22 @@
orderStatus = Dictionary.ORDER_STATU_QK;
sourceOrder.setArrears(flow.getAmount().doubleValue());
}
+
+ if (!SysOrderFlow.PAY_METHOD_ARREARS.equals(flow.getPayMethod()) && !SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+ cashPayTotal += flow.getAmount().doubleValue();
+ }
sysOrderFlowDao.insert(flow);
i++;
}
+ if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) {
+ orderStatus = Dictionary.ORDER_STATU_TK;
+ }
+
// 更新收款状态
sourceOrder.setStatu(orderStatus);
+ sourceOrder.setCardPay(cardPayTotal);
+ sourceOrder.setCashPay(cashPayTotal);
sysOrderDao.update(sourceOrder);
}
@@ -720,66 +747,54 @@
@Transactional(rollbackFor = Exception.class)
@Override
public void updateAfterMoney(SysOrder pageOrder) {
-
SysOrder sourceOrder = sysOrderDao.selectById(pageOrder.getId());
+
+ int i = 1;
+ double refundTotal = 0D;
+ double cardPayTotal = 0D;
+ double cashPayTotal = 0D;
+ for (SysOrderFlow flow : pageOrder.getFlows()) {
+ flow.setFlowNo(codeService.getFlowCode() + "-" + i);
+ Long goodsId = pageOrder.getItems().get(0).getGoodsId();
+ ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
+ flow.setFlowContent(goods.getName() + "等" + pageOrder.getItems().size() + "件产品");
+
+ flow.setOrderId(pageOrder.getId());
+ flow.setVipId(pageOrder.getVipId());
+ flow.setFlowType(SysOrderFlow.FLOW_TYPE_REPAY);
+ // 若使用储值卡付款
+ if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
+ if (flow.getCardId() != null) {
+ cardPayTotal += flow.getAmount().doubleValue();
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(flow.getCardId());
+ cardPaySk(moneyCardUse, pageOrder, flow);
+ }
+ } else {
+ cashPayTotal += flow.getAmount().doubleValue();
+ }
+
+ refundTotal += flow.getAmount().doubleValue();
+ sysOrderFlowDao.insert(flow);
+ i++;
+ }
boolean haQk=false;
- double cardPayTotal=0D;
- double carshPayTotal=0D;
-
-
- for(SysOrderItem pageItem:pageOrder.getItems()){
- SysOrderItem sourceItem=orderItemDao.selectById(pageItem.getId());
-
- //结清
- if(sourceItem.getArrears() == pageItem.getPayMoney()){
-
- sourceItem.setStatus(Dictionary.ORDER_STATU_YFK);
- }else if(sourceItem.getArrears() > pageItem.getPayMoney()) {
- //未结清
- sourceItem.setStatus(Dictionary.ORDER_STATU_QK);
- haQk=true;
- }else if(sourceItem.getArrears() < pageItem.getPayMoney()) {
-
- throw new GlobleException("支付金额不能大于欠款金额");
-
- }
-
- //更新卡支付
- if (!pageItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY)) {
- // 查询要支付的充值卡
- MoneyCardUse moneyCardUse = moneyCardUseDao.selectById(Long.parseLong(pageItem.getPayMethod()));
- // 扣除付款卡金额并添加流水 TODO 补交卡支付
-// cardPaySk(moneyCardUse, sourceOrder, pageItem);
- sourceItem.setCardPay((sourceItem.getCardPay()==null?0:sourceItem.getCardPay())+pageItem.getPayMoney());
- cardPayTotal+=pageItem.getPayMoney();
- }else{
- carshPayTotal+=pageItem.getPayMoney();
- sourceItem.setCashPay((sourceItem.getCashPay()==null?0:sourceItem.getCashPay())+pageItem.getPayMoney());
- }
-
- //更新订单明细状态
- sourceItem.setArrears(sourceItem.getArrears()-pageItem.getPayMoney());
-
- orderItemDao.update(sourceItem);
-
+ if (refundTotal == pageOrder.getArrears()) {
+ haQk = true;
}
+
//更新收款状态
if(haQk){
- sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
- }else{
sourceOrder.setStatu(Dictionary.ORDER_STATU_YFK);
+ }else{
+ sourceOrder.setStatu(Dictionary.ORDER_STATU_QK);
}
- sourceOrder.setArrears(sourceOrder.getArrears()-carshPayTotal-cardPayTotal);
- sourceOrder.setCardPay(sourceOrder.getCardPay()+cardPayTotal);
- sourceOrder.setCashPay(sourceOrder.getCashPay()+carshPayTotal);
+ sourceOrder.setArrears(sourceOrder.getArrears() - refundTotal);
+ sourceOrder.setCardPay(sourceOrder.getCardPay() + cardPayTotal);
+ sourceOrder.setCashPay(sourceOrder.getCashPay() + cashPayTotal);
sysOrderDao.update(sourceOrder);
-
- // 设置业绩
- achieveNewService.addAchaeveByOrder(pageOrder);
-
}
@@ -1208,4 +1223,23 @@
public List<RankingVo> findStaffSaleAchieveRanking(SysOrder sysOrder) {
return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder);
}
+
+ @Override
+ public void refundOrderMoney(SysOrder pageOrder) {
+
+ changeOrderStatu(pageOrder);
+ // 设置会员充值卡使用情况
+ addMoneyCardUse(pageOrder);
+
+ // 新增出库单
+ addOutStore(pageOrder);
+
+ // 改变客户项目套餐使用情况
+ addTaocanProj(pageOrder);
+
+ // 设置业绩
+ achieveNewService.addAchaeveByOrder(pageOrder);
+
+ setShopSelCount(pageOrder);
+ }
}
--
Gitblit v1.9.1