From 214fa33aaf05c24e896a6b5b6347780e68c12d17 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Wed, 23 Mar 2022 15:25:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8D=A2=E8=B4=A7=E8=A1=A5?= =?UTF-8?q?=E8=B4=A7=E8=B0=83=E6=95=B4=E6=95=B0=E9=87=8F=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E9=87=91=E9=A2=9D=E5=AF=B9=E4=B8=8D=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Forms/AfterSaleVerify.php | 10 +++++++++- app/Services/AfterSaleService.php | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/Admin/Forms/AfterSaleVerify.php b/app/Admin/Forms/AfterSaleVerify.php index 046d8c46..9e6c1afe 100644 --- a/app/Admin/Forms/AfterSaleVerify.php +++ b/app/Admin/Forms/AfterSaleVerify.php @@ -64,7 +64,15 @@ class AfterSaleVerify extends Form implements LazyRenderable if ($num > $afterSale->orderProduct->quantity) { throw new BizException('调整数量不能大于下单数量'); } - $afterSaleService->verify($afterSale, $input['remarks3'], (int) Arr::get($input, 'amount', 0), $num); + //调整换货,补货时amount问题 + $amount = (int) Arr::get($input, 'amount', 0) ?: $afterSale->amount; + if (in_array($afterSale->type, [Aftersale::TYPE_CHANGE, Aftersale::TYPE_FILL])) { + //如果调整数量, 则同时调整价格 + if ($num != $afterSale->num) { + $amount = bcmul(bcdiv($afterSale->amount, $afterSale->num), $num); + } + } + $afterSaleService->verify($afterSale, $input['remarks3'], $amount, $num); } elseif ($input['state'] == 1) {//需要补充资料 $afterSaleService->backApply($afterSale, $input['remarks1']); } diff --git a/app/Services/AfterSaleService.php b/app/Services/AfterSaleService.php index c405cf54..0af0eaec 100644 --- a/app/Services/AfterSaleService.php +++ b/app/Services/AfterSaleService.php @@ -183,6 +183,7 @@ class AfterSaleService case AfterSale::TYPE_CHANGE: $afterSale->update([ 'num' => $num, + 'amount' => $amount, 'state' => $afterSale::STATE_AGREE, 'remarks' => $remarks, ]); @@ -195,6 +196,7 @@ class AfterSaleService case AfterSale::TYPE_FILL: $afterSale->update([ 'num' => $num, + 'amount' => $amount, 'state' => $afterSale::STATE_AGREE, 'remarks' => $remarks, ]);