|
@@ -22,6 +22,8 @@ use bizGhs\order\classes\OrderExpressClass;
|
|
|
use bizGhs\order\classes\OrderForwardClass;
|
|
use bizGhs\order\classes\OrderForwardClass;
|
|
|
use bizGhs\order\classes\OrderItemClass;
|
|
use bizGhs\order\classes\OrderItemClass;
|
|
|
use bizGhs\order\classes\OrderSendClass;
|
|
use bizGhs\order\classes\OrderSendClass;
|
|
|
|
|
+use bizGhs\order\classes\RefundOrderClass;
|
|
|
|
|
+use bizGhs\order\classes\RefundOrderItemClass;
|
|
|
use bizGhs\product\classes\ProductClass;
|
|
use bizGhs\product\classes\ProductClass;
|
|
|
use bizGhs\shop\classes\MainClass;
|
|
use bizGhs\shop\classes\MainClass;
|
|
|
use bizGhs\shop\classes\ShopMoneyChangeClass;
|
|
use bizGhs\shop\classes\ShopMoneyChangeClass;
|
|
@@ -1033,7 +1035,46 @@ class OrderService extends BaseService
|
|
|
$shopAdminName = $post['shopAdminName'] ?? '';
|
|
$shopAdminName = $post['shopAdminName'] ?? '';
|
|
|
$ghsId = $custom['ghsId'] ?? 0;
|
|
$ghsId = $custom['ghsId'] ?? 0;
|
|
|
|
|
|
|
|
- $productList = $post['product'] ?? [];
|
|
|
|
|
|
|
+ //售后申请审核转冲销单场景:refundOrderId 是待审核的售后申请(xhRefund)id,
|
|
|
|
|
+ //由 refundDetail.vue"通过"弹框直接提交而来,商品明细以售后申请里已提交的为准(不信任前端重新传的product),
|
|
|
|
|
+ //避免和客户/花店实际申请的售后商品不一致;这里锁行是因为最后要把它标记为"已通过"。ssh 冲销单功能
|
|
|
|
|
+ $refundOrderId = $post['refundOrderId'] ?? 0;
|
|
|
|
|
+ $refundOrder = null;
|
|
|
|
|
+ if (!empty($refundOrderId)) {
|
|
|
|
|
+ $refundOrder = RefundOrderClass::getLockById($refundOrderId);
|
|
|
|
|
+ if (empty($refundOrder)) {
|
|
|
|
|
+ util::fail('没有找到售后申请');
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($refundOrder->mainId != $mainId) {
|
|
|
|
|
+ util::fail('售后申请信息不匹配');
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($refundOrder->status != 0) {
|
|
|
|
|
+ util::fail('该售后申请已被处理,请刷新页面');
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($refundOrder->customId != $customId) {
|
|
|
|
|
+ util::fail('售后申请客户信息不匹配');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $relateOrderSnFromRefund = $refundOrder->relateOrderSn ?? '';
|
|
|
|
|
+ $relateOrderFromRefund = OrderClass::getByCondition(['orderSn' => $relateOrderSnFromRefund], true);
|
|
|
|
|
+ if (empty($relateOrderFromRefund)) {
|
|
|
|
|
+ util::fail('没有找到售后申请关联的原订单');
|
|
|
|
|
+ }
|
|
|
|
|
+ $post['relateOrderId'] = $relateOrderFromRefund->id;
|
|
|
|
|
+
|
|
|
|
|
+ $refundItems = RefundOrderItemClass::getAllByCondition(['orderSn' => $refundOrder->orderSn], null, '*');
|
|
|
|
|
+ $productList = [];
|
|
|
|
|
+ foreach ($refundItems as $refundItem) {
|
|
|
|
|
+ $productList[] = [
|
|
|
|
|
+ 'productId' => $refundItem['productId'] ?? 0,
|
|
|
|
|
+ 'bigNum' => ($refundItem['xhUnitType'] ?? 0) == 0 ? ($refundItem['xhNum'] ?? 0) : 0,
|
|
|
|
|
+ 'smallNum' => ($refundItem['xhUnitType'] ?? 0) == 1 ? ($refundItem['xhNum'] ?? 0) : 0,
|
|
|
|
|
+ 'price' => $refundItem['xhUnitPrice'] ?? 0,
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $productList = $post['product'] ?? [];
|
|
|
|
|
+ }
|
|
|
if (empty($productList)) {
|
|
if (empty($productList)) {
|
|
|
util::fail('请选择花材');
|
|
util::fail('请选择花材');
|
|
|
}
|
|
}
|
|
@@ -1322,6 +1363,24 @@ class OrderService extends BaseService
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //售后申请审核转冲销单:这条售后申请本身并没有走老的 passRefund 流程(没有原路退款/没有改原订单actPrice等),
|
|
|
|
|
+ //真正的退款/退货/返余额是由上面新生成的这张冲销单完成的,所以不能标"已通过"(会让人误以为是走了老流程原路退款)。
|
|
|
|
|
+ //这里标"已取消",并把冲销单号写进 hdRemark 备注,方便后续排查这条售后申请最终去了哪。ssh 冲销单功能
|
|
|
|
|
+ if (!empty($refundOrder)) {
|
|
|
|
|
+ $refundOrder->status = RefundOrderClass::STATUS_CANCEL;
|
|
|
|
|
+ $refundOrder->hdRemark = '已转为冲销单处理,退款/退货/返余额流程详见冲销单:' . $orderSn;
|
|
|
|
|
+ $refundOrder->shopAdminId = $shopAdminId;
|
|
|
|
|
+ $refundOrder->shopAdminName = $shopAdminName;
|
|
|
|
|
+ $refundOrder->save(false, ['status', 'hdRemark', 'shopAdminId', 'shopAdminName']);
|
|
|
|
|
+
|
|
|
|
|
+ //明细项同步标记为已处理,避免和"待处理"的正常售后混在一起统计
|
|
|
|
|
+ $refundItemModels = RefundOrderItemClass::getAllByCondition(['orderSn' => $refundOrder->orderSn], null, '*', null, true);
|
|
|
|
|
+ foreach ($refundItemModels as $refundItemModel) {
|
|
|
|
|
+ $refundItemModel->status = 1;
|
|
|
|
|
+ $refundItemModel->save(false, ['status']);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return ['order' => $order, 'customBalance' => $customBalance];
|
|
return ['order' => $order, 'customBalance' => $customBalance];
|
|
|
}
|
|
}
|
|
|
|
|
|