|
|
@@ -30,6 +30,7 @@ use bizGhs\shop\classes\ShopMoneyChangeClass;
|
|
|
use bizGhs\stat\classes\StatYjClass;
|
|
|
use biz\stat\classes\StatOrderCountClass;
|
|
|
use bizGhs\stock\classes\StockRecordClass;
|
|
|
+use bizHd\cg\classes\CgRefundClass;
|
|
|
use bizHd\cg\services\CgRefundService;
|
|
|
use bizHd\purchase\classes\PurchaseItemClass;
|
|
|
use bizHd\purchase\services\PurchaseService;
|
|
|
@@ -1365,20 +1366,34 @@ class OrderService extends BaseService
|
|
|
|
|
|
//售后申请审核转冲销单:这条售后申请本身并没有走老的 passRefund 流程(没有原路退款/没有改原订单actPrice等),
|
|
|
//真正的退款/退货/返余额是由上面新生成的这张冲销单完成的,所以不能标"已通过"(会让人误以为是走了老流程原路退款)。
|
|
|
- //这里标"已取消",并把冲销单号写进 hdRemark 备注,方便后续排查这条售后申请最终去了哪。ssh 冲销单功能
|
|
|
+ //这里标"已取消",并把冲销单号写进 hdRemark 备注,同时用 forwardOrderId 结构化记录对应的冲销单id,
|
|
|
+ //方便后续排查/统计这条售后申请最终去了哪(forwardOrderId=0表示常规售后,未转冲销单)。ssh 冲销单功能
|
|
|
if (!empty($refundOrder)) {
|
|
|
$refundOrder->status = RefundOrderClass::STATUS_CANCEL;
|
|
|
+ $refundOrder->forwardOrderId = $order->id;
|
|
|
$refundOrder->hdRemark = '已转为冲销单处理,退款/退货/返余额流程详见冲销单:' . $orderSn;
|
|
|
$refundOrder->shopAdminId = $shopAdminId;
|
|
|
$refundOrder->shopAdminName = $shopAdminName;
|
|
|
- $refundOrder->save(false, ['status', 'hdRemark', 'shopAdminId', 'shopAdminName']);
|
|
|
+ $refundOrder->save(false, ['status', 'forwardOrderId', 'hdRemark', 'shopAdminId', 'shopAdminName']);
|
|
|
|
|
|
- //明细项同步标记为已处理,避免和"待处理"的正常售后混在一起统计
|
|
|
+ //明细项同步标记为"已取消",与父级售后申请的status保持一致(不再是"已处理",因为并没有走老的passRefund流程去处理它)
|
|
|
$refundItemModels = RefundOrderItemClass::getAllByCondition(['orderSn' => $refundOrder->orderSn], null, '*', null, true);
|
|
|
foreach ($refundItemModels as $refundItemModel) {
|
|
|
- $refundItemModel->status = 1;
|
|
|
+ $refundItemModel->status = RefundOrderClass::STATUS_CANCEL;
|
|
|
$refundItemModel->save(false, ['status']);
|
|
|
}
|
|
|
+
|
|
|
+ //同步花店端(hdApp)对应的售后记录(xhCgRefund):一条售后在GHS/HD两端各有一条记录(通过cgRefundId关联),
|
|
|
+ //两端都要能看出"这条售后已转冲销单",HD侧记录的是花店视角的冲销采购单id(xhCg.id)
|
|
|
+ $cgRefundId = $refundOrder->cgRefundId ?? 0;
|
|
|
+ if (!empty($cgRefundId)) {
|
|
|
+ $cgRefund = CgRefundClass::getLockById($cgRefundId);
|
|
|
+ if (!empty($cgRefund)) {
|
|
|
+ $cgRefund->forwardCgId = $cg->id ?? 0;
|
|
|
+ $cgRefund->hdRemark = '已转为冲销单处理,退款/退货/返余额流程详见冲销单:' . $cgSn;
|
|
|
+ $cgRefund->save(false, ['forwardCgId', 'hdRemark']);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return ['order' => $order, 'customBalance' => $customBalance];
|