load->model('receiver/order/receiver_orders_v2_model','orders_model'); $this->load->model('receiver/order/receiver_order_agents_model', 'order_agents_model'); $this->load->model('receiver/receiver_fine_model'); $this->load->model('auto/auto_business_model'); $this->load->model('biz/biz_model'); $this->load->model('biz/biz_info_model'); $this->load->model('biz/biz_settle_model'); $this->load->model('biz/biz_settle_static_model'); $this->load->model('biz/biz_settle_srv_model'); $this->load->model('biz/biz_trucking_model'); $this->load->model('biz/biz_settle_price_model'); $this->load->model('sys/sys_finance_model'); $this->load->library('receiver/orders_v2_entity'); } public function settle(){ $size = $this->input->get('size'); !$size && $size = 5; $t1 = 'lc_receiver_order_status'; $t2 = 'lc_receiver_orders_v2'; $t3 = 'lc_biz_settle'; $t4 = 'lc_biz'; $fields = "$t2.*,$t4.city_id"; $where = [ "$t1.pid_status" => 3, "$t1.status" => 1, "$t2.status in (0,1)" => null, "$t2.id>=" => Orders_v2_entity::V2_START_ID, "$t2.bill_time !='0000-00-00 00:00:00'" => null, "$t3.id is null" => null, "$t4.type" => 2, ]; $this->db->from("$t1"); $this->db->join("$t2", "$t2.id=$t1.o_id",'left'); $this->db->join("$t3", "$t3.o_id=$t1.o_id",'left'); $this->db->join("$t4", "$t4.id=$t2.biz_id",'left'); $this->db->select($fields); $this->db->where($where); $this->db->order_by("$t2.id ASC"); $this->db->limit($size); $rows = $this->db->get()->result_array(); if($rows){ foreach($rows as $key=>$val){ $info_json = json_decode($val['info_json'],true); $money_json = json_decode($val['money_json'],true); //获取创建订单时商务政策 $where = [ 'id' => $info_json['business_id'], ]; $b_row_one = $this->auto_business_model->get($where); //获取开票日期商务政策 $b_where = [ 'city_id' => $val['city_id'], 'brand_id' => $val['brand_id'], 's_id' => $val['s_id'], 'v_id' => $val['v_id'], 'if_effect' => 1, ]; $b_row_two = $this->auto_business_model->select($b_where,'id desc',1,1); $b_row_two = $b_row_two[0]; $truck_row = $this->biz_trucking_model->get(['auto_b_id'=>$val['brand_id'],'biz_id'=>$val['biz_id'],'status'=>1]); $price_trucking = $truck_row['money'] ? $truck_row['money'] : 0; $add_data = [ 'biz_id' => $val['biz_id'], 'o_id' => $val['id'], 'profix_car' => $b_row_one['profix_car'] ? $b_row_one['profix_car'] : 0, 'profix_insure' => $b_row_two['profix_insure'] ? $b_row_two['profix_insure'] : 0, 'profix_loan' => $b_row_two['profix_loan'] ? $b_row_two['profix_loan'] : 0, 'profix_carno' => $b_row_two['profix_carno'] ? $b_row_two['profix_carno'] : 0, 'price_trucking' => $price_trucking, 'year' => date('Y',strtotime($val['bill_time'])), 'month' => intval(date('m',strtotime($val['bill_time']))), 'c_time' => time() ]; if($money_json['price_car']>$b_row_one['price_floor']){ $add_data['oflow_profix_car'] = $money_json['price_car'] - $b_row_one['price_floor']; } $this->biz_settle_model->add($add_data); } }else{ echo 'finish'; } } //统计前一个月利润 public function merge(){ $size = $this->input->get('size'); $page = 1; !$size && $size = 5; $where = [ "year" => date('Y',strtotime("last month")), "month" => intval(date('m',strtotime('last day of - 1 months'))), "stic_id" => 0 ]; $rows = $this->biz_settle_model->select($where,'id asc',$page,$size); if($rows){ foreach($rows as $key=>$val){ $where = [ 'biz_id' => $val['biz_id'], 'year' => $val['year'], 'month' => $val['month'] ]; $static_row = $this->biz_settle_static_model->get($where); $price_all = $val['profix_insure']+$val['profix_loan']+$val['profix_carno']; if(!$static_row){ $data = [ 'biz_id' => $val['biz_id'], 'profix_car' => $val['profix_car'], 'price_all' => $price_all, 'price_trucking' => $val['price_trucking'], 'year' => $val['year'], 'month' => $val['month'], 'c_time' => time() ]; $stic_id = $this->biz_settle_static_model->add($data); if($stic_id){ $this->biz_settle_model->update(['stic_id'=>$stic_id],['id'=>$val['id']]); } }else{ $data = [ 'profix_car' => $static_row['profix_car'] + $val['profix_car'], 'price_all' => $static_row['price_all'] + $price_all, 'price_trucking' => $static_row['price_trucking'] + $val['price_trucking'], ]; $res = $this->biz_settle_static_model->update($data,['id'=>$static_row['id']]); if($res){ $this->biz_settle_model->update(['stic_id'=>$static_row['id']],['id'=>$val['id']]); } } } }else{ //计算分润 $where = [ 'profix_car_after' => 0.00 ]; $rows = $this->biz_settle_static_model->select($where,'id asc',$page,$size); if($rows){ foreach($rows as $val){ $biz_info = $this->biz_info_model->get(['biz_id'=>$val['biz_id']]); $car_total = $this->biz_settle_model->count(['stic_id'=>$val['id']]); $data = [ 'profix_car_after' => sprintf("%.2f",$val['profix_car']/1.13), 'rent' => $biz_info['rent'], 'wat_ele' => $biz_info['wat_ele'], 'manager_wage' => $biz_info['manager_wage'], 'commission' => $biz_info['commission']*$car_total, ]; $employee_wage = $biz_info['num'] ? ceil($car_total/$biz_info['num']) : 0; $data['employee_wage'] = $employee_wage * $biz_info['employee_wage']; $data['price_total'] = $val['price_all']+$data['profix_car_after']; $price_need = $data['price_total'] - $data['rent'] - $data['wat_ele'] - $data['employee_wage'] - $data['manager_wage'] - $data['commission'] - $val['price_trucking']; $partner_rate = $biz_info['rate']/100; $liche_rate = (100-$biz_info['rate'])/100; $data['profix_liche'] = $price_need*$liche_rate; $data['profix_partner'] = $price_need*$partner_rate; //超出裸车价部分 $overflow = $this->biz_settle_model->sum('oflow_profix_car',['stic_id'=>$val['id']]); if($overflow['oflow_profix_car']){ $data['profix_partner_oflow'] = sprintf("%.2f",$overflow['oflow_profix_car']/1.13); } $this->biz_settle_static_model->update($data,['id'=>$val['id']]); } }else{ echo 'finish'; } } } //品牌店统计 public function settle_brand(){ $id = $this->input->get('id'); $size = $this->input->get('size'); !$size && $size = 5; $t1 = 'lc_receiver_orders_v2'; $t2 = 'lc_biz_settle'; $t3 = 'lc_biz'; $fields = "$t1.*"; $where = [ "$t1.status" => 1, "$t1.id>=" => Orders_v2_entity::V2_START_ID, "$t2.id is null" => null, "$t3.type" => 1, ]; $id && $where["{$t1}.id"] = $id; $this->db->from("$t1"); $this->db->join("$t2", "$t2.o_id=$t1.id",'left'); $this->db->join("$t3", "$t3.id=$t1.biz_id",'left'); $this->db->select($fields); $this->db->where($where); $this->db->order_by("$t2.id ASC"); $this->db->limit($size); $rows = $this->db->get()->result_array(); if($rows){ foreach($rows as $key=>$val){ $info_json = json_decode($val['info_json'],true); $money_json = json_decode($val['money_json'],true); $settle_money_json = []; $settle_money_json['in'] = [ //收入 'profix_car' => 0, //整车 'srv_price' => $this->orders_v2_entity->order_srv_money($val['id']), //服务费 'commission' => 0, //佣金 ]; $settle_money_json['out'] = [ //成本 // 'biz_price' => 0', //门店成本 'apply_price' => 0, //申请成本 'fine_price' => 0, //赠送精品成本 ]; //获取创建订单时商务政策 $where = [ 'id' => $info_json['business_id'], ]; $b_row_one = $this->auto_business_model->get($where); $settle_money_json['in']['profix_car'] = $b_row_one['profix_car'] ? $b_row_one['profix_car'] : 0; //挂牌利润 = 实收 - 成本 // $profix_carno = 0; // if($money_json['fee_carno']>0){ // $where = [ // 'biz_id' => $val['biz_id'], // 'type' => 1, // 'status' => 1, // 's_effect_time>=' => date('Y-m-01',$val['c_time']), // 's_effect_time<=' => date('Y-m-t',$val['c_time']), // ]; // $free_row = $this->biz_settle_srv_model->get($where); // if(!$free_row){ // $free_row = $this->biz_settle_srv_model->get(['biz_id'=>$val['biz_id'],'is_def'=>1,'status'=>1,'type'=>1]); // } // $free_jsondata = json_decode($free_row['jsondata'],true); // $cb_fee_carno = $free_jsondata['price'] ? $free_jsondata['price'] : 0; // $profix_carno = $money_json['fee_carno'] - $cb_fee_carno; // } //保险利润 = 金额(是否含税) * 返点百分比(保险类型):保险生效日 $agent_row = $this->order_agents_model->get(['o_id'=>$val['id']]); $agent_json = json_decode($agent_row['jsondata'],true); //强险 $where = [ 'biz_id' => $val['biz_id'], 'type' => 2, "json_extract(jsondata, '$.type') = '1'" => null ]; $fd_row = $this->biz_settle_srv_model->get($where); $fd_jsondata = json_decode($fd_row['jsondata'],true); $qx_fd = $fd_jsondata['rebate']/100; $profix_insuer_ins = floatval($agent_json['ins_risk']) * $qx_fd; //商业险 $where = [ 'biz_id' => $val['biz_id'], 'type' => 2, "json_extract(jsondata, '$.type') = '2'" => null ]; $bis_fd_row = $this->biz_settle_srv_model->get($where); $bis_fd_jsondata = json_decode($bis_fd_row['jsondata'],true); $bis_fd = $bis_fd_jsondata['rebate']/100; $profix_insuer_bis = floatval($money_json['business_risk'])*$bis_fd; $profix_insuer = $profix_insuer_ins + $profix_insuer_bis; //贷款利润 = 手续费 + 贷款金额 * 返点(对应产品) // $profix_loan = floatval($money_json['price_finance']); //贷款佣金 = 贷款金额 * 返点(对应产品) $profix_loan = 0; if($money_json['price_loan']>=0){ $loan_row = $this->order_loans_model->get(['o_id'=>$val['id']]); $finance_id = $val['finance_id']; $finance_num = $loan_row['num'] ? $loan_row['num'] : 0; $where = [ 'biz_id' => $val['biz_id'], 'type' => 3, "json_extract(jsondata, '$.finance_id') = '{$finance_id}'" => null, "json_extract(jsondata, '$.finance_num') = '{$finance_num}'" => null, ]; $fd_row = $this->biz_settle_srv_model->get($where); if(!$fd_row){ $fd_row = $this->biz_settle_srv_model->get(['biz_id'=>$val['biz_id'],'is_def'=>1,'status'=>1,'type'=>3]); } $fd_jsondata = json_decode($fd_row['jsondata'],true); $loan_fd = $fd_jsondata['rebate'] ? $fd_jsondata['rebate']/100:0; $profix_loan = $money_json['price_loan']*$loan_fd; } $settle_money_json['in']['commission'] = $profix_loan+$profix_insuer; //实收 - 成本(赠送的也要算) $profix_fine = 0; $fines = json_decode($val['fines'],true); $fines_ids = array_column($fines,'id'); if($fines){ $fines_ids = implode(',',$fines_ids); $where = [ "id in ({$fines_ids})" => null ]; $fines_ids && $cb_sum = $this->receiver_fine_model->sum('price',$where); $cb = $cb_sum['price'] ? $cb_sum['price'] : 0; //成本 // $sh = 0; //实收 // foreach ($fines as $f_val) { // $sh += floatval($f_val['price']); // } $profix_fine = $cb; } $settle_money_json['out']['biz_price'] = $profix_fine; // $biz_price = 0;//门店成本 // $p_where = [ // 'biz_id' => $val['biz_id'], // 'status' => 1, // 'year' => date('Y',$val['c_time']), // 'month' => date('m',$val['c_time']), // ]; // $price_row = $this->biz_settle_price_model->get($p_where); // $price_row && $biz_price = $this->biz_settle_price_model->sum_jsondata($price_row['jsondata']); // $settle_money_json['out']['biz_price'] = $biz_price; $add_data = [ 'biz_id' => $val['biz_id'], 'o_id' => $val['id'], 'profix_car' => $settle_money_json['in']['profix_car'], 'profix_insure' => $profix_insuer, 'profix_loan' => $profix_loan, // 'profix_carno' => $profix_carno, // 'profix_fine' => $profix_fine, 'money_json' => json_encode($settle_money_json,JSON_UNESCAPED_UNICODE), 'year' => date('Y'), 'month' => intval(date('m')), 'c_time' => time() ]; if($money_json['price_car']>$b_row_one['price_floor']){ $add_data['oflow_profix_car'] = $money_json['price_car'] - $b_row_one['price_floor']; } $this->biz_settle_model->add($add_data); } }else{ echo 'finish'; } } //统计前一个月利润 public function merge_brand(){ $size = $this->input->get('size'); $page = 1; !$size && $size = 5; $where = [ "year" => date('Y',strtotime("last month")), "month" => intval(date('m',strtotime('last day of - 1 months'))), "stic_id" => 0 ]; $rows = $this->biz_settle_model->select($where,'id asc',$page,$size); if($rows){ foreach($rows as $key=>$val){ $settle_money_json = json_decode($val['money_json'],true); $where = [ 'biz_id' => $val['biz_id'], 'year' => $val['year'], 'month' => $val['month'] ]; $static_row = $this->biz_settle_static_model->get($where); if(!$static_row){ $data = [ 'biz_id' => $val['biz_id'], 'profix_car' => $val['profix_car'], 'year' => $val['year'], 'month' => $val['month'], 'c_time' => time() ]; $add_money_json['in'] = [ //收入 'profix_car' => $val['profix_car'], //整车 'srv_price' => $settle_money_json['srv_price'], //服务费 'commission' => $settle_money_json['commission'], //佣金 ]; $biz_price = 0;//门店成本 $p_where = [ 'biz_id' => $val['biz_id'], 'status' => 1, 'year' => date('Y',$val['year']), 'month' => date('m',$val['month']), ]; $price_row = $this->biz_settle_price_model->get($p_where); $price_row && $biz_price = $this->biz_settle_price_model->sum_jsondata($price_row['jsondata']); $add_money_json['out'] = [ //成本 'biz_price' => $biz_price, //门店成本 'apply_price' => $settle_money_json['apply_price'], //申请成本 'fine_price' => $settle_money_json['fine_price'], //赠送精品成本 ]; $data['money_json'] = json_encode($add_money_json,JSON_UNESCAPED_UNICODE); $stic_id = $this->biz_settle_static_model->add($data); if($stic_id){ $this->biz_settle_model->update(['stic_id'=>$stic_id],['id'=>$val['id']]); } }else{ $static_money_json = json_decode($static_row['money_json'],true); $data = [ 'profix_car' => $static_row['profix_car'] + $val['profix_car'], ]; $out = $static_money_json['out']; $in = $static_money_json['in']; $add_money_json['in'] = [ //收入 'profix_car' => $val['profix_car'] + $in['profix_car'], //整车 'srv_price' => $settle_money_json['srv_price'] + $in['profix_car'], //服务费 'commission' => $settle_money_json['commission'] + $in['commission'], //佣金 ]; $add_money_json['out'] = [ //成本 'biz_price' => $out['biz_price'], //门店成本 'apply_price' => $settle_money_json['apply_price']+$out['apply_price'], //申请成本 'fine_price' => $settle_money_json['fine_price'] + $out['fine_price'], //赠送精品成本 ]; $data['money_json'] = json_encode($add_money_json,JSON_UNESCAPED_UNICODE); $res = $this->biz_settle_static_model->update($data,['id'=>$static_row['id']]); if($res){ $this->biz_settle_model->update(['stic_id'=>$static_row['id']],['id'=>$val['id']]); } } } }else{ //计算分润 $where = [ 'price_total' => 0.00 ]; $rows = $this->biz_settle_static_model->select($where,'id asc',$page,$size); if($rows){ foreach($rows as $val){ $money_json = json_decode($val['money_json'],true); $biz_info = $this->biz_info_model->get(['biz_id'=>$val['biz_id']]); $in = $money_json['in']; $out = $money_json['out']; $in_price = $in['profix_car']+$in['srv_price']+$in['commission']; $out_price = $out['biz_price']+$out['apply_price']+$out['fine_price']; $price_need = $in_price-$out_price; $partner_rate = $biz_info['rate']/100; $liche_rate = (100-$biz_info['rate'])/100; $data['profix_liche'] = $price_need*$liche_rate; $data['profix_partner'] = $price_need*$partner_rate; $data['price_total'] = $in_price-$out_price; $this->biz_settle_static_model->update($data,['id'=>$val['id']]); } }else{ echo 'finish'; } } } }