|
|
@@ -251,34 +251,75 @@ class ServiceWorkLogic extends BaseLogic
|
|
|
throw new Exception('请勿重复操作');
|
|
|
}
|
|
|
|
|
|
- // 关联配件信息.计算配件总价 id company_price original_price offering_price number
|
|
|
+ // 商城配件.计算配件总价 id company_price original_price offering_price number
|
|
|
$spare_total = 0;
|
|
|
$work->spare_total = 0;
|
|
|
isset($params['spare_parts']) && $params['spare_parts'] && $params['spare_parts'] = json_decode($params['spare_parts'], true);
|
|
|
+ $spare_parts_ids = ServiceWorkSpare::where('service_work_id',$work['id'])->column('id');
|
|
|
+
|
|
|
if(isset($params['spare_parts']) && $params['spare_parts']){
|
|
|
- $spare_parts = $params['spare_parts'];
|
|
|
- foreach ($spare_parts as $spare){
|
|
|
- $spare_total += $spare['company_price']*$spare['number'];
|
|
|
+ if (count($params['spare_parts']) > 10) {
|
|
|
+ throw new Exception('商城配件最多10个');
|
|
|
+ }
|
|
|
+ $ids = array_column($params['spare_parts'],'id');
|
|
|
+ $spare_parts = SparePart::where('id','in',$ids)->column('id as spare_part_id,spare_name,spare_image,company_price,original_price,offering_price,spare_number,spare_unit,brand');
|
|
|
+ $spare_parts = array_column($spare_parts,null,'spare_part_id');
|
|
|
+
|
|
|
+ foreach ($params['spare_parts'] as $k => $item){
|
|
|
+ if (!isset($spare_parts[$item['id']])){
|
|
|
+ throw new Exception('配件信息错误');
|
|
|
+ }
|
|
|
+ $spare_part = $spare_parts[$item['id']];
|
|
|
+ $spare_total += $spare_part['company_price']*$item['spare_number'];
|
|
|
+ $data = array_merge($spare_part, ['service_work_id' => $work['id'], 'spare_number' => $item['spare_number'] * $spare_part['spare_number']]);
|
|
|
+
|
|
|
+ if (current($spare_parts_ids)) {
|
|
|
+ //修改
|
|
|
+ ServiceWorkSpare::where("id",current($spare_parts_ids))->update($data);
|
|
|
+ } else {
|
|
|
+ //新增
|
|
|
+ ServiceWorkSpare::create($data);
|
|
|
+ }
|
|
|
+ array_shift($spare_parts_ids);
|
|
|
}
|
|
|
$work->spare_total += $spare_total;
|
|
|
-
|
|
|
- $service_work_spare = ServiceWorkSpare::where(['service_work_id'=>$work['id']])->findOrEmpty();
|
|
|
- if($service_work_spare->isEmpty()){
|
|
|
- //新增
|
|
|
- $service_work_spare = ServiceWorkSpare::create([
|
|
|
+ }
|
|
|
+ //自选配件
|
|
|
+ isset($params['self_spare_parts']) && $params['self_spare_parts'] && $params['self_spare_parts'] = json_decode($params['self_spare_parts'], true);
|
|
|
+ if(isset($params['self_spare_parts']) && $params['self_spare_parts']){
|
|
|
+ if (count($params['self_spare_parts']) > 10) {
|
|
|
+ throw new Exception('自选配件最多10个');
|
|
|
+ }
|
|
|
+ foreach ($params['self_spare_parts'] as $item){
|
|
|
+ $spare_total += $item['offering_price']*$item['spare_number'];
|
|
|
+ $data = [
|
|
|
'service_work_id'=>$work['id'],
|
|
|
- 'spare_parts'=>$params['spare_parts'],
|
|
|
- 'remark'=>''
|
|
|
- ]);
|
|
|
- }else{
|
|
|
- //修改
|
|
|
- $service_work_spare->spare_parts = $params['spare_parts'];
|
|
|
- $service_work_spare->save();
|
|
|
+ 'spare_name' => $item['spare_name'],
|
|
|
+ 'spare_image' => $item['spare_image'],
|
|
|
+ 'offering_price' => $item['offering_price'],
|
|
|
+ 'company_price' => 0,
|
|
|
+ 'original_price' => 0,
|
|
|
+ 'spare_number' => $item['spare_number'],
|
|
|
+ 'spare_part_id' => 0,
|
|
|
+ 'brand' => $item['brand']
|
|
|
+ ];
|
|
|
+ if (current($spare_parts_ids)) {
|
|
|
+ //修改
|
|
|
+ ServiceWorkSpare::where("id",current($spare_parts_ids))->update($data);
|
|
|
+ } else {
|
|
|
+ //新增
|
|
|
+ ServiceWorkSpare::create($data);
|
|
|
+ }
|
|
|
+ array_shift($spare_parts_ids);
|
|
|
}
|
|
|
- $work->service_work_spare_id = $service_work_spare->id;
|
|
|
- }elseif (isset($params['spare_total']) && $params['spare_total']){
|
|
|
- $work->spare_total += $params['spare_total'];
|
|
|
+ $work->spare_total += $spare_total;
|
|
|
}
|
|
|
+
|
|
|
+ //删除多余的配件数据
|
|
|
+ if ($spare_parts_ids) {
|
|
|
+ ServiceWorkSpare::where('id','in',$spare_parts_ids)->delete();
|
|
|
+ }
|
|
|
+
|
|
|
// 添加工单尾款报价记录 - 即配件费用
|
|
|
if(isset($params['price_content'])){
|
|
|
!is_array($params['price_content']) && $params['price_content'] = json_decode($params['price_content'], true);
|
|
|
@@ -290,7 +331,6 @@ class ServiceWorkLogic extends BaseLogic
|
|
|
$work->spare_total += array_sum('price');
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// order_amount 原 = $params['amount'] 修改为 = 配件总价 + 服务尾款
|
|
|
$order_amount = $params['amount'] + $spare_total;
|
|
|
|
|
|
@@ -349,8 +389,6 @@ class ServiceWorkLogic extends BaseLogic
|
|
|
];
|
|
|
ServiceWorkLogLogic::add($work_log);
|
|
|
|
|
|
-
|
|
|
-
|
|
|
Db::commit();
|
|
|
// 商家报价通知外部平台 即报价
|
|
|
if($work->external_platform_id > 0){
|
|
|
@@ -608,17 +646,10 @@ class ServiceWorkLogic extends BaseLogic
|
|
|
|
|
|
// 配件信息
|
|
|
$result['spare_parts'] = [];
|
|
|
- if($result['service_work_spare_id']){
|
|
|
- $work_spare_parts = json_decode(ServiceWorkSpare::where('id',$result['service_work_spare_id'])->value('spare_parts'),true);
|
|
|
- $spare_parts = SparePart::where('id','in',array_column($work_spare_parts,'id'))
|
|
|
- ->field(['id', 'goods_category_id', 'spare_name', 'spare_image', 'spare_number', 'spare_unit','spare_status'])
|
|
|
- ->select()
|
|
|
- ->toArray();
|
|
|
- $spare_parts = array_column($spare_parts,null,'id');
|
|
|
- foreach (array_column($work_spare_parts,null,'id') as $k=>&$v){
|
|
|
- $spare_parts[$k] = array_merge($spare_parts[$k],$v);
|
|
|
- }
|
|
|
- $result['spare_parts'] = array_values($spare_parts)??[];
|
|
|
+ $result['self_spare_parts'] = [];
|
|
|
+ if($result['spare_total'] > 0){
|
|
|
+ $result['spare_parts'] = ServiceWorkSpare::getLists($result['id'], 1);
|
|
|
+ $result['self_spare_parts'] = ServiceWorkSpare::getLists($result['id'], 2);
|
|
|
}
|
|
|
// 保修卡信息
|
|
|
$result['order_effectives'] = OrderEffectiveLog::with(['goods'=>function ($query) {
|