diff --git a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php index dafb11ad..22124efc 100644 --- a/webht/third_party/vendorPlanSync/controllers/Tulanduo.php +++ b/webht/third_party/vendorPlanSync/controllers/Tulanduo.php @@ -59,6 +59,7 @@ class Tulanduo extends CI_Controller $this->load->helper('array'); $this->load->library('trippest'); $this->load->model('Group_model'); + $this->load->model('orders_model'); $this->load->model('BIZ_orders_model', 'BIZ_order'); $this->load->model('TuLanDuo_queryContentBuilder', 'tld_order'); $this->load->model('TuLanDuo_addOrUpdateRouteOrderContentBuilder', 'tldOrderBuilder'); @@ -103,13 +104,15 @@ class Tulanduo extends CI_Controller } $change_info = str_replace("\n", "
", $change_info); $agcOrderNo = $vas->GRI_Name; - // $grd_info = $this->Group_model->get_vendor_plan_info($gri_sn, $vei_sn); - // $all_day_no = array_map(function($ele){return $ele->GRD_DayNo;}, $grd_info); + $grd_info = $this->Group_model->get_vendor_plan_info($gri_sn, $vei_sn); + $all_day_no = array_map(function($ele){return $ele->GRD_DayNo;}, $grd_info); $routeType = "桂林海纳国旅"; // todo $arrange_info = $this->Group_model->get_arrange_info($gri_sn, $vei_sn); - $routeName = "中华游" . $arrange_info[0]->tocity . "常规线路"; // todo - $last_date = count($arrange_info)-1; - $end_date = strstr($arrange_info[$last_date]->ACI_OrderDate, " ", true); + $routeName = "中华游" . $arrange_info[0]->tocity . "线路"; // todo + $first_date = $grd_info[0]->day_no_raw; + $last_date = count($grd_info)-1; + $end_date = $grd_info[$last_date]->day_no_raw; + $request_info = $this->Group_model->get_plan_request($gri_sn); $this->tldOrderBuilder->setUserId($userId) ->setKey($userKey) ->setOrderType(1) @@ -119,11 +122,13 @@ class Tulanduo extends CI_Controller ->setAdultNum(intval($arrange_info[0]->ACI_PersonNum)) ->setChildNum(intval(bcadd($arrange_info[0]->ACI_ChildNum, $arrange_info[0]->ACI_BabyNum))) ->setDestination($arrange_info[0]->tocity) - ->setTravelDate(strstr($arrange_info[0]->ACI_OrderDate, " ", true)) + ->setTravelDate($first_date) ->setLeavedDate($end_date) - // ->setOrderRemark($order_remark) + // ->setOrderRemark($order_remark) // 订单备注 + ->setRoomStandard($request_info->GCI_HotelRequest) // 住房标准 + ->setRouteStandard($request_info->GCI_Request) // 行程服务标准 ; - $guestlist = $this->Group_model->get_customer_list($gri_sn); // todo orders_model + $guestlist = $this->orders_model->get_customer_list($gri_sn); foreach ($guestlist as $key => $vg) { $this->tldOrderBuilder->setCustomersName($key, $vg->MemberName ) ->setCustomersPeopleType($key, (calc_age_type($vg->BirthDay)==1 ? "成人" : "儿童")) @@ -131,7 +136,55 @@ class Tulanduo extends CI_Controller ->setCustomersDocumentNo($key, $vg->PassportNo) ->setCustomersOtherInfo($key, $vg->Country); } + $travel_fee = 0; + foreach ($arrange_info as $kaci => $vaci) { + $travel_fee = bcadd($travel_fee, $vaci->ACI_Amount); + } + $this->tldOrderBuilder->setTravelFeesType(0, "Per Group") + ->setTravelFeesMoney(0, $travel_fee) + ->setTravelFeesNum(0, 1) + ->setTravelFeesUnit(0, 1) + ->setTravelFeesSumMoney(0, $travel_fee) + ->setTravelFeesRemark(0, ""); + // 补全空的日期,行车为空 + $date1 = new DateTime($first_date); + $date_end = new DateTime($end_date); + $date_diff = $date_end->diff($date1); + $d = ($date_diff->format("%d")); + $all_date = array(); + for ($j=0; $j < ($d+1); $j++) { + $all_date[] = date('Y-m-d', strtotime("+$j day", strtotime($first_date))); + } + $real_date = array_map(function ($ele){return $ele->day_no_raw;}, $grd_info); + foreach ($all_date as $kd => $vd) { + if ( ! in_array($vd, $real_date)) { + $this->tldOrderBuilder->setScheduleDetailsTitle($kd, "无") + ->setScheduleDetailsContent($kd, "无") + ->setScheduleDetailsAccommodation($kd, "") + // ->setScheduleDetailsTraffic($kd, ($vso->PAG_Vehicle>60001 ? 1 : 0)) + ->setScheduleDetailsBreakFirst($kd, 0 ) + ->setScheduleDetailsDinner($kd, 0) + ->setScheduleDetailsLunch($kd, 0) + ; + continue; + } + foreach ($grd_info as $kgrd => $vgrd) { + if ($vd==$vgrd->day_no_raw) { + $this->tldOrderBuilder->setScheduleDetailsTitle($kd, $vgrd->GRD_OrderDate) + ->setScheduleDetailsContent($kd, $vgrd->GRD_Landscape) + ->setScheduleDetailsAccommodation($kd, $vgrd->GRD_Hotel) + ->setScheduleDetailsTraffic($kd, ($vgrd->GRD_Traffic)) + ->setScheduleDetailsBreakFirst($kd, 0 ) + ->setScheduleDetailsDinner($kd, (trim($vgrd->GRD_Meal_S)==="" ? 0 : 1 )) + ->setScheduleDetailsLunch($kd, (trim($vgrd->GRD_Meal_L)==="" ? 0 : 1 )) + ; + } + } + } return $this->tldOrderBuilder->getBizContent(); + // $resp = $this->excute_curl($this->neworder_url, $this->tldOrderBuilder); + // $response = json_decode($resp); + // return $resp; } /*! diff --git a/webht/third_party/vendorPlanSync/helpers/array_helper.php b/webht/third_party/vendorPlanSync/helpers/array_helper.php index 1fb1f504..2f6ec50f 100644 --- a/webht/third_party/vendorPlanSync/helpers/array_helper.php +++ b/webht/third_party/vendorPlanSync/helpers/array_helper.php @@ -177,9 +177,12 @@ function calc_age($birthday) function calc_age_type($birthday) { - $age = calc_age($birthday); - if ($age > 17) { + if (trim(strval($birthday))==="") { return 1; } - return 2; + $age = calc_age($birthday); + if ($age < 18) { + return 2; + } + return 1; } diff --git a/webht/third_party/vendorPlanSync/models/Group_model.php b/webht/third_party/vendorPlanSync/models/Group_model.php index 5b480627..2ddce070 100644 --- a/webht/third_party/vendorPlanSync/models/Group_model.php +++ b/webht/third_party/vendorPlanSync/models/Group_model.php @@ -50,13 +50,64 @@ class Group_model extends CI_Model { public function get_vendor_plan_info($gri_sn, $vendor_id) { - $sql = " SP_VendorPlan_GetPlanInfo $gri_sn, $vendor_id, 0 "; - return $this->HT->query($sql)->result(); + // SET NOCOUNT ON 才能这样调用, 否则需要遍历结果集 + // $sql = " Tourmanager.dbo.SP_VendorPlan_GetPlanInfo ?, ?, 0 "; + // $grd_info = $this->HT->query($sql, array($gri_sn, $vendor_id))->result(); + include('c:/database_conn.php'); + $connection = array( + 'UID' => $db['HT']['username'], + 'PWD' => $db['HT']['password'], + 'Database' => 'tourmanager', + 'ConnectionPooling' => 1, + 'CharacterSet' => 'utf-8', + 'ReturnDatesAsStrings' => 1 + ); + $conn = sqlsrv_connect($db['HT']['hostname'], $connection); + $stmt = sqlsrv_query($conn, "EXEC Tourmanager.dbo.SP_VendorPlan_GetPlanInfo $gri_sn, $vendor_id, 0 "); + //存储过程中每一个select都会产生一个结果集,取某个结果集就需要从第一个移动到需要的那个结果集 + //如果结果集为空就移到下一个 + while (sqlsrv_has_rows($stmt) !== TRUE) { + sqlsrv_next_result($stmt); + } + $result_object = array(); + while ($row = sqlsrv_fetch_object($stmt)) { + $result_object[] = $row; + } + sqlsrv_free_stmt($stmt); + sqlsrv_close($conn); + $grd_info = $result_object; + $all_day_no = array_map(function($ele){return $ele->GRD_DayNo;}, $grd_info); + $day_no_str = implode(",", $all_day_no); + $all_aci = $this->get_arrange_info($gri_sn, 0, $day_no_str); + foreach ($grd_info as $kgrd => &$vgrd) { + foreach ($all_aci as $kaci => $vaci) { + if ($vgrd->GRD_DayNo == $vaci->ACI_DayNo) { + $vgrd->day_no_raw = strstr($vaci->ACI_OrderDate, " ", true); + break; + } + } + } + return $grd_info; + } + + public function get_plan_request($gri_sn) + { + $sql = "SELECT * from GroupChangeInfo + where GCI_GRI_SN=? + order by LastEditTime desc + ,case when GCI_Order IS null then 999 else GCI_Order end desc"; + return $this->HT->query($sql, array($gri_sn))->row(); } - public function get_arrange_info($gri_sn, $vendor_id) + public function get_arrange_info($gri_sn, $vendor_id=0, $day_no="") { - $param_arr = array($gri_sn, $vendor_id); + $param_arr = array($gri_sn); + $vendor_sql = ""; + if ($vendor_id !== 0) { + $vendor_sql = " AND aci.ACI_VEI_SN=? "; + $param_arr[] = $vendor_id; + } + $day_no_sql = ($day_no !== "") ? " AND aci.ACI_DayNo IN ($day_no) " : ""; $sql = "SELECT (select CII2_Name from CItyInfo2 where CII2_CII_SN=ACI_FromCity and CII2_LGC=2) as fromcity, @@ -66,42 +117,12 @@ class Group_model extends CI_Model { from ArrangeConfirmInfo aci where 1=1 and aci.ACI_GRI_SN=? - and aci.ACI_VEI_SN=? + $vendor_sql + $day_no_sql order by ACI_DayNo,ACI_SNInOneDay "; return $this->HT->query($sql, $param_arr)->result(); } - public function get_customer_list($gri_sn) - { - $sql = "SELECT ( - SELECT (isnull(MEI_LastName,'') +' / '+ isnull(MEI_FirstName,'')) CustomerName - from MemberInfo - where MEI_SN=CUL_CUI_SN - ) as MemberName, - (select MEI_BirthDay from MemberInfo where MEI_SN=CUL_CUI_SN) as BirthDay, - ISNULL((select SYC2_CodeDiscribe - from V_System_Code - where LGC_LGC=2 - and SYC_SN=( - select top 1 MEI_Gender from MemberInfo - where MEI_SN=CUL_CUI_SN)),'' - ) Gender, - (select COI2_Country from V_Country_Info - where LGC_LGC = 2 - and COI_SN in (select MEI_Country from MemberInfo where MEI_SN=CUL_CUI_SN) - ) as Country, - (select MEI_PassportNo from MemberInfo where MEI_SN=CUL_CUI_SN) PassportNo, - (select MEI_PassportValidDate from MemberInfo where MEI_SN=CUL_CUI_SN) PassportValidDate - -- ,(select dbo.GetSysCodeName(MEI_Occupation,2) from MemberInfo where MEI_SN=CUL_CUI_SN) as Occupation - from CustomerList - where isnull(CUL_IsAgent,0)=0 - and isnull(CUL_IsEmergency,0)=0 - and isnull(CUL_IsTJR,0)=0 - and CUL_COLI_SN in (select COLI_SN from ConfirmLineInfo where COLI_GRI_SN=?) - order by CUL_Order"; - return $this->HT->query($sql, array($gri_sn))->result(); - } - public function get_sync_info($vas, $tour_code="") { $sql = "SELECT * diff --git a/webht/third_party/vendorPlanSync/models/orders_model.php b/webht/third_party/vendorPlanSync/models/orders_model.php new file mode 100644 index 00000000..ebbcac11 --- /dev/null +++ b/webht/third_party/vendorPlanSync/models/orders_model.php @@ -0,0 +1,45 @@ +HT = $this->load->database('HT', TRUE); + } + + public function get_customer_list($gri_sn) + { + $sql = "SELECT ( + SELECT (isnull(MEI_LastName,'') +' / '+ isnull(MEI_FirstName,'')) CustomerName + from MemberInfo + where MEI_SN=CUL_CUI_SN + ) as MemberName, + (select MEI_BirthDay from MemberInfo where MEI_SN=CUL_CUI_SN) as BirthDay, + ISNULL((select SYC2_CodeDiscribe + from V_System_Code + where LGC_LGC=2 + and SYC_SN=( + select top 1 MEI_Gender from MemberInfo + where MEI_SN=CUL_CUI_SN)),'' + ) Gender, + (select COI2_Country from V_Country_Info + where LGC_LGC = 2 + and COI_SN in (select MEI_Country from MemberInfo where MEI_SN=CUL_CUI_SN) + ) as Country, + (select MEI_PassportNo from MemberInfo where MEI_SN=CUL_CUI_SN) PassportNo, + (select MEI_PassportValidDate from MemberInfo where MEI_SN=CUL_CUI_SN) PassportValidDate + -- ,(select dbo.GetSysCodeName(MEI_Occupation,2) from MemberInfo where MEI_SN=CUL_CUI_SN) as Occupation + from CustomerList + where isnull(CUL_IsAgent,0)=0 + and isnull(CUL_IsEmergency,0)=0 + and isnull(CUL_IsTJR,0)=0 + and CUL_COLI_SN in (select COLI_SN from ConfirmLineInfo where COLI_GRI_SN=?) + order by CUL_Order"; + return $this->HT->query($sql, array($gri_sn))->result(); + } + +} + +/* End of file orders_model.php */ +/* Location: ./third_party/vendorPlanSync/models/orders_model.php */