|
|
@@ -76,15 +76,13 @@ class CgRefundController extends BaseController
|
|
|
if ($cg->status == PurchaseClass::STATUS_UN_PAY) {
|
|
|
util::fail("待付款订单,不能申请售后");
|
|
|
}
|
|
|
- if ($cg->status == PurchaseClass::STATUS_UN_SEND) {
|
|
|
- util::fail("待发货订单,不能申请售后");
|
|
|
- }
|
|
|
- if ($cg->status == PurchaseClass::STATUS_SENDING) {
|
|
|
- util::fail("订单配送中,不能申请售后");
|
|
|
- }
|
|
|
if ($cg->status == PurchaseClass::STATUS_CANCEL) {
|
|
|
util::fail("订单已取消,不能申请售后");
|
|
|
}
|
|
|
+ // 未完成时不在此拦截:提交申请时再「仅入库不改价」收货;预订单未发货仍不可售后
|
|
|
+ if (intval($cg->status) === PurchaseClass::STATUS_UN_SEND && intval($cg->book ?? 0) === 1) {
|
|
|
+ util::fail('预订单发货后才能申请售后');
|
|
|
+ }
|
|
|
// 配对销售单:无支付时间不能售后;非当天/已结清走跨天售后
|
|
|
$saleOrder = OrderClass::getById(intval($cg->saleId ?? 0), true);
|
|
|
if (empty($saleOrder)) {
|
|
|
@@ -125,7 +123,28 @@ class CgRefundController extends BaseController
|
|
|
$connection = Yii::$app->db;
|
|
|
$transaction = $connection->beginTransaction();
|
|
|
try {
|
|
|
-
|
|
|
+ // 发起售后且采购单未完成:自动「仅入库不改价」收货,再创建售后单
|
|
|
+ $cg = PurchaseClass::getLockById($id);
|
|
|
+ if (empty($cg)) {
|
|
|
+ util::fail('没有找到采购单');
|
|
|
+ }
|
|
|
+ if (intval($cg->status) !== PurchaseClass::STATUS_COMPLETE
|
|
|
+ && intval($cg->status) !== PurchaseClass::STATUS_CANCEL
|
|
|
+ && intval($cg->status) !== PurchaseClass::STATUS_UN_PAY
|
|
|
+ ) {
|
|
|
+ if (intval($cg->status) === PurchaseClass::STATUS_UN_SEND && intval($cg->book ?? 0) === 1) {
|
|
|
+ util::fail('预订单发货后才能申请售后');
|
|
|
+ }
|
|
|
+ PurchaseClass::confirmTake($cg);
|
|
|
+ $cg = PurchaseClass::getById($id, true);
|
|
|
+ if (empty($cg) || intval($cg->status) !== PurchaseClass::STATUS_COMPLETE) {
|
|
|
+ util::fail('自动确认收货失败,请稍后重试');
|
|
|
+ }
|
|
|
+ $saleOrder = OrderClass::getById(intval($cg->saleId ?? 0), true);
|
|
|
+ if (empty($saleOrder)) {
|
|
|
+ util::fail('没有订单信息');
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if ($refundType == CgRefundClass::REFUND_TYPE_MONEY_GOOD) {
|
|
|
//花材列表结构
|