load->helper('array'); $this->load->model('OrderFinance_model'); mb_regex_encoding("UTF-8"); } public function index() { } /*! * 单团财务表计算 * @date 2018-07-18 * @param integer $coli_sn 订单主表key * @return [type] [description] */ public function single_order_report($coli_sn=0) { $ret = new stdClass(); $ret->combine_cost = array(); $combineNo_arr = $this->OrderFinance_model->get_order_combineNo($coli_sn); $group_type_arr = array_unique(array_map(function($ele){return $ele->GCI_groupType;}, $combineNo_arr)); // $this->output->set_content_type('application/json')->set_output(json_encode($combineNo_arr)); // $this->output->set_content_type('application/json')->set_output(json_encode($group_type_arr)); foreach ($combineNo_arr as $kc => $vc) { if ($vc->GCI_groupType == 1) { $ret->pvt = $pvt_cost = $this->pvt_basic($vc->GCI_combineNo); } else if ($vc->GCI_groupType == 2) { $ret->combine_cost[] = $this->combine_basic($vc->GCI_combineNo, $coli_sn); } } $this->output->set_content_type('application/json')->set_output(json_encode($ret)); return; } /*! * 拼团计算 * @example 180426360,180516007U * @date 2018-07-18 * @param string $combineNo * @return [type] [description] */ public function combine_basic($combineNo="", $coli_sn=0) { $ret = new stdClass(); $all_orders = $this->OrderFinance_model->get_all_combine_order($combineNo); if (empty($all_orders)) { return null; } // $ret->s = $all_orders; $all_pags = array_map(function($ele){ return $ele->PAG_Code;}, $all_orders); $all_pag = array_unique($all_pags); // $ret->c = $all_pag; $combine_pag_arr = array(); if (count($all_pag) > 1) { // 多个产品, 找出拼团产品号 $rid_code = array(); $value_count = array_count_values($all_pags); foreach ($all_pag as $kp => $vp) { $tmp = null; $tmp = $this->get_allowed_combine($vp); // $ret->b = array_diff($tmp, $all_pag); if (empty(array_diff($tmp, $all_pag))) { $combine_pag_arr[] = $tmp; } // $ret->e = $value_count; if($value_count[$vp] > 1) { $rid_code[] = $vp; } } // $ret->d = $rid_code; if ( ! empty($rid_code)) { $combine_pag_arr[] = $rid_code; } } else { // 单个产品 $combine_pag_arr[] = ($all_pag); } bcscale(2); $ret->combine_pags = my_array_unique($combine_pag_arr); $ret->combine_pags = $ret->combine_pags[0]; // 这里用0是因为一个拼团应该只有一组或一个产品 // $ret->q = my_array_unique($combine_pag_arr); $ret->tour_count = $ret->person_num = 0; $ret->PAG_Code = ""; $ret->order_cost = array(); foreach ($all_orders as $ko => $vo) { if (in_array($vo->PAG_Code, $ret->combine_pags)) { // $ret->tour_count++; $ret->person_num += $vo->COLD_PersonNum + $vo->COLD_ChildNum; $ret->startdate = $vo->COLD_StartDate; $tour_s = new stdClass(); if ($vo->COLI_SN == $coli_sn) { $tour_s->person_num = $vo->COLD_PersonNum + $vo->COLD_ChildNum; $ret->order_cost[] = $tour_s; } } } $ret->PAG_Code = implode(",", $ret->combine_pags); $ret->comment = "拼团" . $combineNo . ", 按" . $ret->person_num . "人等"; $combine_cost = $this->OrderFinance_model->get_combine_sumMoney($combineNo); $ret->cost_category = $combine_cost->cost_category; $ret->cost_sum = $combine_cost->cost_sum; $ret->person_cost = bcdiv($ret->cost_sum, $ret->person_num); foreach ($ret->order_cost as $kc => $voc) { $ret->order_cost[$kc]->order_cost_sum = bcmul($voc->person_num, $ret->person_cost); } return $ret; // return $this->output->set_content_type('application/json')->set_output(json_encode($ret, JSON_UNESCAPED_UNICODE)); } /*! * pvt计算 * @example 180515061M * @date 2018-07-18 */ public function pvt_basic($combineNo="", $coli_sn=0) { $ret = new stdClass(); $ret->tour = array(); $all_orders = $this->OrderFinance_model->get_all_combine_order($combineNo); if (empty($all_orders)) { return null; } // 预定的产品数 $ret->tour_count = count(array_unique(array_map(function($ele) {return $ele->PAG_Code;}, $all_orders))); $ret->person_num = $this->OrderFinance_model->get_order_person_num($coli_sn); bcscale(2); $tour_s = new stdClass(); $combine_cost = $this->OrderFinance_model->get_combine_sumMoney($combineNo); $tour_s->startdate = $all_orders[0]->COLD_StartDate; // $tour_s->person_grade = ($all_orders[0]->COLD_PersonNum + $all_orders[0]->COLD_ChildNum ); $tour_s->cost_category = $combine_cost->cost_category; $tour_s->cost_sum = $combine_cost->cost_sum; $tour_s->person_cost = bcdiv($tour_s->cost_sum, $ret->person_num); $tour_s->comment = "PVT,共" . $ret->person_num . "人";// 150 $pag_sns = array_values(array_unique(array_map(function($ele) {return $ele->COLD_ServiceSN;}, $all_orders))); $pags_info = $this->OrderFinance_model->get_pag_info(implode(',', $pag_sns)); $tour_s->PAG_Code = implode(",", array_values(array_unique(array_map(function($ele) {return $ele->PAG_Code;}, $pags_info)))); // TODO 限制50 $tour_s->vendor_name = implode(",", array_values(array_unique(array_map(function($ele) {return $ele->VEI2_CompanyBN;}, $pags_info)))) ; // 50 $tour_s->pag_name = implode(";\r\n", array_map(function($ele) {return $ele->PAG_Title;}, $pags_info)) ; // TODO 限制200 用mb_substr('UTF-8') $ret->tour[0] = $tour_s; // if ( $ret->tour_count > 1 ) { // } else { // } $ret->order_cost = array_sum(array_map(function($ele) {return $ele->cost_sum;}, $ret->tour)); return $ret; // return $this->output->set_content_type('application/json')->set_output(json_encode($ret, JSON_UNESCAPED_UNICODE)); } /*! * 获取允许拼团的数组 * @date 2018-07-18 * @param string $tour_code 产品编号 * @return array 含允许拼团产品编号的数组 */ public function get_allowed_combine($tour_code="") { $allowed = null; $all_allowed = $this->allowed_combine(); foreach ($all_allowed as $key => $va) { if (in_array($tour_code, $va)) { $allowed = $va; break; } } return $allowed; } /** 允许拼团的不同编号产品 */ public function allowed_combine() { return array( // * 不同产品但部分行程相同所以允许拼团 * array("XASIC-15", "XASIC-41"), array("BJSIC-47", "BJSIC-41"), // * 产品编号不同实际是同一产品 * array("SHSIC-31", "SHSIC-41"), array("SHSIC-32", "SHSIC-42"), array("SHSIC-33", "SHSIC-43"), array("SHSIC-34", "SHSIC-44") ); } } /* End of file order_finance.php */ /* Location: ./webht/third_party/trippestOrderSync/controllers/order_finance.php */