diff --git a/admin/controllers/items/Cost.php b/admin/controllers/items/Cost.php index 85f701d9..9378256a 100644 --- a/admin/controllers/items/Cost.php +++ b/admin/controllers/items/Cost.php @@ -251,7 +251,8 @@ class Cost extends HD_Controller{ 'company_name' => $company['short'], 'name' => $order_row['owner_name']."({$order_row['owner_mobile']})", // 'name' => $order_row['name']."({$order_row['mobile']})", 'payway' => $order_row['payway'], - 'biz_type' => $this->biz_model->type_ary($biz['type']), + 'biz_type' => $biz['type'], + 'biz_type_name' => $this->biz_model->type_ary($biz['type']), 'biz_name' => $biz['biz_name'], 'admin_name' => $admin['uname'], 'order_time' => date('Y-m-d',$order_row['c_time']), @@ -300,6 +301,26 @@ class Cost extends HD_Controller{ 'promotion_json' => json_encode($post_data['promotion_json'],JSON_UNESCAPED_UNICODE), 'srv_json' => json_encode($post_data['srv_json'],JSON_UNESCAPED_UNICODE), ]; + + /* + 水平 + 品牌店按现有逻辑 (1) + 合伙店取商务政策的固定值 (2) + 代理店没有水平业务 (3) + */ + $order_row = $this->receiver_orders_v2_model->get(['id'=>$row['o_id']], 'id, (select type from lc_biz where id = lc_receiver_orders_v2.biz_id) as biz_type'); + $biz_type = $order_row['biz_type']; + if ($biz_type == 2){ + $insurance_price = $post_data['insurance_price'] ? $post_data['insurance_price'] : 0; + $insurance_price != $row['insurance_price'] && $data['insurance_price'] = $insurance_price; + + $fee_carno_price = $post_data['fee_carno_price'] ? $post_data['fee_carno_price'] : 0; + $fee_carno_price != $row['fee_carno_price'] && $data['fee_carno_price'] = $fee_carno_price; + + $loan_price = $post_data['loan_price'] ? $post_data['loan_price'] : 0; + $loan_price != $row['loan_price'] && $data['loan_price'] = $loan_price; + } + $res = $this->items_cost_model->update($data,['id'=>$row['id']]); if(is_numeric($res_item) || is_numeric($res)){ $this->items_cost_model->update_total($row['id']); diff --git a/admin/views/items/cost/get.php b/admin/views/items/cost/get.php index 37dcd5fb..a4114f66 100644 --- a/admin/views/items/cost/get.php +++ b/admin/views/items/cost/get.php @@ -99,7 +99,7 @@
- +
@@ -261,7 +261,7 @@
-
+
水平业务 @@ -454,6 +454,40 @@
+
+
+ 水平业务 + + +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+
+
+
整车合计 @@ -606,6 +640,9 @@ post_data['srv_json'] = vm.info.srv_json; post_data['price'] = vm.info.price; post_data['buy_price'] = vm.info.buy_price; + post_data['insurance_price'] = vm.info.row.insurance_price; + post_data['fee_carno_price'] = vm.info.row.fee_carno_price; + post_data['loan_price'] = vm.info.row.loan_price; $.ajax({ url: '/items/cost/edit', type: 'post', diff --git a/api/controllers/plan/Order.php b/api/controllers/plan/Order.php index f897bfc0..d35b004c 100644 --- a/api/controllers/plan/Order.php +++ b/api/controllers/plan/Order.php @@ -373,6 +373,24 @@ class Order extends CI_Controller{ $srv_json['price_floor'] = $b_row_one['price_floor'] ? $b_row_one['price_floor'] : 0; $srv_json['profix_car'] = $biz['type']==2 ? $b_row_one['proxy_profix_car'] : $b_row_one['profix_car']; $srv_json['insurance_ins_price'] = $srv_json['insurance_fd'] = 0; + + /* + 水平 + 品牌店按现有逻辑 (1) + 合伙店取商务政策的固定值 (2) + 代理店没有水平业务 (3) + */ + if ($biz['type']==2){ + $add_data['insurance_price'] = $b_row_one['profix_insure'] ? $b_row_one['profix_insure'] : 0.00; + $add_data['fee_carno_price'] = $b_row_one['profix_carno'] ? $b_row_one['profix_carno'] : 0.00; + $add_data['loan_price'] = $b_row_one['profix_loan'] ? $b_row_one['profix_loan'] : 0.00; + } + elseif ($biz['type']==3){ + $add_data['insurance_price'] = 0.00; + $add_data['fee_carno_price'] = 0.00; + $add_data['loan_price'] = 0.00; + } + if($insurance_img){//强险 $time = strtotime($insurance_img['date']); $where = [ @@ -497,4 +515,79 @@ class Order extends CI_Controller{ echo "数据不存在"; } } + + /** + * 修复成本数据的非品牌店的水平业务 + * @return void + */ + public function cost_repair_spyw(){ + $this->load->model("biz/biz_model"); + $this->load->model('auto/auto_business_model'); + $this->load->model('items/items_cost_model'); + $where = [ + '(status = 1 or ( status = 0 and id in (select o_id from `lc_receiver_order_status` where (pid_status = 4 and `status` in (1,2)) or (pid_status = 3 and `status` = 1) group by o_id having count(distinct pid_status) = 2 ) ))' => null, + 'id in (select o_id from lc_items_cost)' => null, + 'item_id>' => 0, + 'id>=' => Orders_v2_entity::V2_START_ID, + 'biz_id in (select id from lc_biz where type <> 1)' => null, + ]; + $rows = $this->receiver_orders_v2_model->select($where,'',0,0); + if (!$rows){ + echo "数据不存在";exit(); + } + + foreach ($rows as $item) { + $o_id = $item['id']; + $cost = $this->items_cost_model->get(['o_id'=>$o_id]); + if (!$cost){ + echo "{$o_id}, cost not found
"; + } + + $biz = $this->biz_model->get(['id'=>$item['biz_id']]); + if (!$biz){ + echo "{$o_id}, biz not found, biz_id: {$item['biz_id']}
"; + } + + $info_json = json_decode($item['info_json'],true); + //获取创建订单时商务政策 + $b_row_one = $this->auto_business_model->get(['id' => $info_json['business_id']]); + if (!$b_row_one){ + echo "{$o_id}, business not found, business_id: {$item['business_id']}
"; + } + + /* + 水平 + 品牌店按现有逻辑 (1) + 合伙店取商务政策的固定值 (2) + 代理店没有水平业务 (3) + */ + $add_data = []; + if ($biz['type']==2){ + $add_data['insurance_price'] = $b_row_one['profix_insure'] ? $b_row_one['profix_insure'] : 0.00; + $add_data['fee_carno_price'] = $b_row_one['profix_carno'] ? $b_row_one['profix_carno'] : 0.00; + $add_data['loan_price'] = $b_row_one['profix_loan'] ? $b_row_one['profix_loan'] : 0.00; + } + elseif ($biz['type']==3){ + $add_data['insurance_price'] = 0.00; + $add_data['fee_carno_price'] = 0.00; + $add_data['loan_price'] = 0.00; + } + echo "{$o_id}, biz_type: {$biz['type']}
"; + + $id = $cost['id']; + if ($add_data){ + $res = $this->items_cost_model->update($add_data, array('id'=>$id)); + $sql = $this->items_cost_model->db->last_query(); + $res = is_numeric($res) ? is_numeric($res) : 0; + echo "{$o_id}, cost {$id} update: {$res}, ({$sql})
"; + } + else{ + echo "{$o_id}, cost {$id} update: ignore
"; + } + + $res = $this->items_cost_model->update_total($id); + echo "{$o_id}, cost {$id} update_total: {$res}

"; + } + echo "repair ".count($rows)." rows ok!"; + } } diff --git a/common/models/items/Items_cost_model.php b/common/models/items/Items_cost_model.php index a8f1e157..307f9b30 100644 --- a/common/models/items/Items_cost_model.php +++ b/common/models/items/Items_cost_model.php @@ -17,6 +17,7 @@ class Items_cost_model extends HD_Model */ public function update_total($id){ $this->load->model('items/items_model'); + $this->load->model('receiver/order/receiver_orders_v2_model'); $row = $this->get(['id'=>$id]); if($row){ $item_row = $this->items_model->get(['id'=>$row['item_id']]); @@ -33,14 +34,33 @@ class Items_cost_model extends HD_Model $car_buy_price = $item_row['buy_price'] - $promotion_json['factory_price']; //【整车采购毛利】(销售收入合计 - 整车采购成本 - 促销成本合计 - 选装金额 -选装工时费) $car_profit_price = $sale_price - $car_buy_price - $promotion_price - $cost_json['select_price'] - $cost_json['labor_price']; - //【保险收入合计】 - $insurance_price = $srv_json['business_ins_price']+$srv_json['insurance_ins_price']-$srv_json['back_price']; - //【挂牌收入合计】 - $fee_carno_price = $srv_json['fee_carno'] - $srv_json['cb_fee_carno']; - //【按揭收入合计】(按揭综合服务费+按揭解抵服务费+利息补贴收入+金融公司手续费收入+其他收入-其他支出) - $loan_price = $srv_json['loan_srv_price']+$srv_json['loan_offset_price']+$srv_json['loan_subsidy_price']+$srv_json['commission_price']+$srv_json['loan_in_price']-$srv_json['loan_out_price']; - //【水平业务总毛利】(保险收入合计+挂牌收入合计+按揭收入合计+其他收入-其他支出) - $srv_price = $insurance_price+$fee_carno_price+$loan_price+$srv_json['other_in_price']-$srv_json['other_out_price']; + + /* + 水平 + 品牌店按现有逻辑 (1) + 合伙店取商务政策的固定值 (2) + 代理店没有水平业务 (3) + */ + $order_row = $this->receiver_orders_v2_model->get(['id'=>$row['o_id']], 'id, (select type from lc_biz where id = lc_receiver_orders_v2.biz_id) as biz_type'); + $biz_type = $order_row['biz_type']; + $insurance_price = $fee_carno_price = $loan_price = $srv_price = 0; + if ($biz_type == 1){ + //【保险收入合计】 + $insurance_price = $srv_json['business_ins_price']+$srv_json['insurance_ins_price']-$srv_json['back_price']; + //【挂牌收入合计】 + $fee_carno_price = $srv_json['fee_carno'] - $srv_json['cb_fee_carno']; + //【按揭收入合计】(按揭综合服务费+按揭解抵服务费+利息补贴收入+金融公司手续费收入+其他收入-其他支出) + $loan_price = $srv_json['loan_srv_price']+$srv_json['loan_offset_price']+$srv_json['loan_subsidy_price']+$srv_json['commission_price']+$srv_json['loan_in_price']-$srv_json['loan_out_price']; + //【水平业务总毛利】(保险收入合计+挂牌收入合计+按揭收入合计+其他收入-其他支出) + $srv_price = $insurance_price+$fee_carno_price+$loan_price+$srv_json['other_in_price']-$srv_json['other_out_price']; + } + elseif ($biz_type == 2){ + $insurance_price = $row['insurance_price']; + $fee_carno_price = $row['fee_carno_price']; + $loan_price = $row['loan_price']; + $srv_price = $insurance_price+$fee_carno_price+$loan_price; + } + //【单车总毛利】(整车采购毛利+水平业务总毛利) $car_price = $car_profit_price + $srv_price; //【直营店单车毛利/代理店单车毛利/合伙店采购毛利】(根据门店类型取, 商务政策分润 - 选装金额 - 选装工时费 - 促销成本 + 水平业务总毛利 + (实际售价入 - 商务政策底价))