|
@@ -2,17 +2,12 @@
|
|
|
|
|
|
namespace App\Service;
|
|
|
|
|
|
-use App\Model\Depart;
|
|
|
use App\Model\Employee;
|
|
|
-use App\Model\InvoiceOrder;
|
|
|
-use App\Model\InvoiceOrderInfo;
|
|
|
-use App\Model\ProductRange;
|
|
|
use App\Model\ReturnExchangeOrder;
|
|
|
use App\Model\ReturnExchangeOrderProductInfo;
|
|
|
use App\Model\ReturnExchangeOrderRange;
|
|
|
use App\Model\SalesOrder;
|
|
|
-use App\Model\TakeOrder;
|
|
|
-use App\Model\TakeOrderInfo;
|
|
|
+use App\Model\SalesOrderProductInfo;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class ReturnExchangeOrderService extends Service
|
|
@@ -337,12 +332,33 @@ class ReturnExchangeOrderService extends Service
|
|
|
$sale = SalesOrder::where('del_time',0)->where('id',$data['sales_order_id'])->first();
|
|
|
if(empty($sale)) return [false,'合同不存在或已被删除'];
|
|
|
if($sale['state'] < SalesOrder::State_two) return [false,'合同未施工,不能进行退换货操作'];
|
|
|
+ //退货
|
|
|
+ $return_submit_add = [];
|
|
|
if(empty($data['product_one'])) return [false,'退货产品不能为空'];
|
|
|
foreach ($data['product_one'] as $value){
|
|
|
if(empty($value['number'])) return [false,'退货产品数量不能为空'];
|
|
|
$res = $this->checkNumber($value['number']);
|
|
|
if(! $res) return [false,'请输入正确的退货产品数量'];
|
|
|
+ if(isset($return_submit_add[$value['product_id']])){
|
|
|
+ $return_submit_add[$value['product_id']] += $value['number'];
|
|
|
+ }else{
|
|
|
+ $return_submit_add[$value['product_id']] = $value['number'];
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ //剩余能退
|
|
|
+ $id = $data['id'] ?? '';
|
|
|
+ $s_product = $this->getSaveReturnCompareMessage($id, $data['sales_order_id']);
|
|
|
+
|
|
|
+ //比较
|
|
|
+ foreach ($return_submit_add as $pro => $number){
|
|
|
+ if(! isset($s_product[$pro])) return [false,'退货产品错误,合同中不存在该产品'];
|
|
|
+ $s_number = $s_product[$pro];
|
|
|
+
|
|
|
+ if($number > $s_number) return [false,'退货产品数量不能超过合同产品数据'];
|
|
|
+ }
|
|
|
+
|
|
|
+ //换货
|
|
|
$product_submit_minus = $product_save_minus = [];
|
|
|
if($data['model_type'] == ReturnExchangeOrder::Model_type_two){
|
|
|
if(empty($data['product_two'])) return [false,'换货产品不能为空'];
|
|
@@ -357,7 +373,6 @@ class ReturnExchangeOrderService extends Service
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $id = $data['id'] ?? '';
|
|
|
$product_save_minus = $this->getSaveDetailMinus($id);
|
|
|
list($status,$msg) = (new ProductInventoryService())->compareStock(array_keys($product_submit_minus), $product_submit_minus, $product_save_minus);
|
|
|
if(! $status) return [false, $msg];
|
|
@@ -403,4 +418,36 @@ class ReturnExchangeOrderService extends Service
|
|
|
|
|
|
return $product_save;
|
|
|
}
|
|
|
+
|
|
|
+ public function getSaveReturnCompareMessage($id = 0, $sales_order_id = 0){
|
|
|
+ $product_save = [];
|
|
|
+ $sub = ReturnExchangeOrderProductInfo::where('type',ReturnExchangeOrderProductInfo::type_one)
|
|
|
+ ->where('del_time',0)
|
|
|
+ ->when(! empty($id), function ($query) use ($id) {
|
|
|
+ return $query->where('return_exchange_id', '<>',$id);
|
|
|
+ })
|
|
|
+ ->get()->toArray();
|
|
|
+ foreach ($sub as $value){
|
|
|
+ if(isset($product_save[$value['product_id']])){
|
|
|
+ $product_save[$value['product_id']] += $value['number'];
|
|
|
+ }else{
|
|
|
+ $product_save[$value['product_id']] = $value['number'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $sales_order_product = [];
|
|
|
+ $sales_product = SalesOrderProductInfo::where('del_time',0)
|
|
|
+ ->where('sales_order_id',$sales_order_id)
|
|
|
+ ->get()->toArray();
|
|
|
+ foreach ($sales_product as $value){
|
|
|
+ $product_save_tmp = $product_save[$value['product_id']] ?? 0;
|
|
|
+ if(isset($sales_order_product[$value['product_id']])){
|
|
|
+ $sales_order_product[$value['product_id']] += $value['number'];
|
|
|
+ }else{
|
|
|
+ $sales_order_product[$value['product_id']] = $value['number'] - $product_save_tmp;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $sales_order_product;
|
|
|
+ }
|
|
|
}
|