ÿØÿà JFIF ` ` ÿþ
Server : Apache System : Linux ruga7-004.fmcity.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : tkt_travelbus ( 1137) PHP Version : 7.0.0p1 Disable Function : mysql_pconnect Directory : /tkt_travelbus/www/LibClass/ |
Upload File : |
<?php /****************************************************************************** * //[son] * B2B 대리점 예약 관련 * ******************************************************************************/ class B2b{ public $weekArr = array('일','월','화','수','목','금','토'); public $personArr = array( 'adult' => '성인', 'child' => '소인', 'baby' => '유아', //'infant' => '영아', ); //sns public $snsArr = array('Whatsapp','Line','Wechat','Kakaotalk'); //언어선택 public $langSelect = array( 'hk' => '번체', 'cn' => '간체', 'en' => '영어', ); // 생성자 public function __construct() { // global $cf , $TO_CF; // global $TO_MB; // global $lang; // $this->TO_MB = $TO_MB; // $this->cf = $cf; } /* * 언어에 따른 1차 카테고리 반환 * 지역분류 : E1(영문, Korea), C1(간체, 韩国), T1(번체, 韓國) */ private function returnBidx($lang) { if(empty($lang)) return; //if(empty($lang)) $lang = 'hk'; //default 번체 switch($lang) { case 'hk': //번체 $bidx = 'T1'; break; case 'cn': //간체 $bidx = 'C1'; break; case 'en': //영문 $bidx = 'E1'; break; case 'ko': //한글 $bidx = 'KO'; break; default: return; break; } return $bidx; } /* * 모든 한국도시 * */ public function to_area_city($lang) { // $langInfo = $this->langInfo(); $bidx = $this->returnBidx($lang); if(empty($bidx)) return; $data = array(); $sql = "SELECT C.* FROM TB_AreaC C INNER JOIN TB_AreaA A "; $sql .= " ON C.Aidx=A.Aidx"; $sql .= " WHERE 1"; $sql .= " AND C.DelFlag='N'"; // //$sql .= " AND C.Bidx IN ('KO','E1','C1','T1')"; //한국에 한함 // $sql .= " AND C.Bidx IN ('E1','C1','T1')"; //한국에 한함 & 한국 카테고리는 제외 // if(!empty($langInfo['lang'])) { // //언어별(지역별)로 구분 // $sql .= " AND A.ConLang='{$langInfo['lang']}'"; // } $sql .= " AND C.Bidx='{$bidx}'"; //언어별 1차 카테고리 확인 $sql .= " ORDER BY C.CityName"; //echo $sql; $rs = db_query($sql); for($i=0 ; $row = db_fetch_array($rs) ; $i++){ $data[$i] = $row; } return $data; } /* * 전체 행사 리스트 * */ public function dateEvent($opt='') { // $langInfo = $this->langInfo(); $bidx = $this->returnBidx($opt['lang']); if(empty($bidx)) return; $data = array(); $sql = "SELECT * FROM TB_GOOD_DATE_TYPE A INNER JOIN good B"; $sql .= " ON A.g_uid=B.g_uid"; $sql .= " WHERE 1"; $sql .= " AND A.del_flag='N'"; $sql .= " AND B.g_ok='Y'"; $sql .= " AND B.tab in ('D','P')"; //호텔, 티켓 제외 $sql .= " AND B.b_uid not in ('143','124','135','138','127','130')"; //차량상품 제외 // //$sql .= " AND B.Bidx IN ('KO','E1','C1','T1')"; //한국에 한함 // $sql .= " AND B.Bidx IN ('E1','C1','T1')"; //한국에 한함 & 한국 카테고리는 제외 // if(!empty($langInfo['lang'])) { // //언어별(지역별)로 구분 // $sql .= " AND B.Bidx IN (SELECT Bidx FROM TB_AreaB WHERE Aidx IN (SELECT Aidx FROM TB_AreaA WHERE ConLang='{$langInfo['lang']}'))"; // } $sql .= " AND B.Bidx='{$bidx}'"; //언어별 1차 카테고리 확인 if(!empty($opt['tour_state']) && !empty($opt['ym'])) { if($opt['tour_state']=='open') { $sql .= " AND A.dtid in (select dtid from `date` where d_people2-d_people1>0 and d_start like '".$opt['ym']."%')"; //플랜이 없거나 정원 찬거 제외 } else if($opt['tour_state']=='close') { $sql .= " AND A.dtid not in (select dtid from `date` where d_people2-d_people1>0 and d_start like '".$opt['ym']."%')"; } } if(!empty($opt['Cidx'])) $sql .= " AND B.Cidx='{$opt['Cidx']}'"; //투어지역 if(!empty($opt['kind_code'])) $sql .= " AND B.kind_code='{$opt['kind_code']}'"; //투어종류 //if(!empty($search_word_s)) $sql .= " AND B.g_title LIKE '%{$search_word_s}%'"; if(!empty($opt['search_word_s'])) $sql .= " AND A.date_type_nm LIKE '%{$opt['search_word_s']}%'"; $sql .= " ORDER BY A.g_uid ASC"; //echo $sql; $result = db_query($sql); while($row = db_fetch_array($result)) { $data[] = $row; } return $data; } /* * 예약인원 확인 * d_ok:행사상태(A예약가능,B대기,C마감,D출발확정) * d_people1:예약인원 * d_people2:정원(대,팀) * d_people3:최소출발인원 (tab=P 패키지 경우) * d_gr_people_min:최소행사인원(tab=D & gdt=gr 단체투어) * d_pe_people_inwon:기준인원(tab=D & gdt=pe 단독투어) * d_pe_people_unit:모객정원 대/팀(tab=D & gdt=pe 단독투어) * 단체투어(gr), 단독투어(pe) * * return * colorType: 1(예약대기),2(예약가능),3(출발대기),4(출발확정),5(예약마감/투어없음) */ public function dateDetail($g_uid,$dtid,$d_start) { $sql = "SELECT * "; //$sql .= ", IF(d_people2 - d_people1 <= 0, 0, d_people2 - d_people1) AS d_seat"; //$sql .= ", IF(d_people1 > 0 AND d_people3 > 0,d_people1 - d_people3 , IF(tab='D' AND gdt='gr',d_people1 - d_gr_people_min,999999) ) as d_min_inwon"; $sql .= " FROM `date` WHERE g_uid='{$g_uid}' AND dtid='{$dtid}' AND d_start='{$d_start}'"; $row = db_fetch($sql); if($row) { if($d_start<date('Y-m-d')) { $colorType = 5; } else { if($row['d_ok']=='B') { //대기 $colorType = 1; } else if($row['d_ok']=='C') { //마감 $colorType = 5; } else { if($row['tab']=='D') { //데이투어 if($row['gdt']=='gr') { //단체투어 if($row['d_people1']==0) { $colorType = 2; } else if($row['d_people1']<$row['d_gr_people_min']) { $colorType = 3; } else if($row['d_people1']>=$row['d_gr_people_min']) { $colorType = 4; } } else { //단독투어 if($row['d_people1']==0) { $colorType = 2; } else if($row['d_people1']<$row['d_pe_people_inwon']) { $colorType = 3; } else if($row['d_people1']>=$row['d_pe_people_inwon']) { $colorType = 4; } } } else { //패키지 if($row['d_people1']==0) { $colorType = 2; } else if($row['d_people1']<$row['d_people3']) { $colorType = 3; } else if($row['d_people1']>=$row['d_people3']) { $colorType = 4; } } } } } else { $colorType = 5; } $row['colorType'] = $colorType; return $row; } /* * 로그인 사용자 기준 * 통화, 언어 구분 (config.php 참조) * lang : en / cn / hk / ko * pay_currency : USD / ₩ * currency, curunit : USD / CNY / HKD / KRW * 국적 정보가 없을땐 빈값 */ public function langInfo($lang) { global $TO_MB; // if(devCookie()){ // p($TO_MB); // exit; // } $data['lang'] = ''; //언어 $data['curunit'] = ''; //화폐단위 $data['pay_currency'] = ''; //결제시 화폐기호 $data['currency'] = ''; //표시 화폐기호 $data['ext_to_krw'] = ''; /*** * 2023.01.05 * 오토로그인시 아래의 코드때문에 언어가 잘못 변환됨. */ /*if(!empty($lang)) { $TO_MB['bz_nat'] = strtoupper($lang); }*/ //국적확인 //언어별 번체,영문,간체,여행대장 구분 if(!empty($TO_MB['bz_nat'])) { switch($TO_MB['bz_nat']) { case 'KO': $data['lang'] = 'ko'; $data['curunit'] = 'KRW'; break; case 'HK': $data['lang'] = 'hk'; $data['curunit'] = 'HKD'; break; case 'SG': $data['lang'] = 'en'; $data['curunit'] = 'SGD'; break; case 'TW': $data['lang'] = 'hk'; $data['curunit'] = 'TWD'; break; case 'MY': $data['lang'] = 'en'; $data['curunit'] = 'MYR'; break; case 'US': $data['lang'] = 'en'; $data['curunit'] = 'USD'; break; case 'PH': $data['lang'] = 'en'; $data['curunit'] = 'PHP'; break; case 'CN': $data['lang'] = 'cn'; $data['curunit'] = 'CNY'; break; case 'TA': $data['lang'] = 'en'; $data['curunit'] = 'THB'; break; } $exchange = $this->exchangeInfo($data['curunit']); if(!empty($exchange)) { $data['pay_currency'] = $exchange['ext_nm']; $data['currency'] = $exchange['ext_mark']; $data['ext_to_krw'] = $exchange['ext_to_krw']; } } return $data; } /* * 통화, 언어 구분 (config.php 참조) , 저장된 데이터 기준 * TB_RES_GOOD.lang , TB_RES_GOOD.curunit 확인 */ public function langInfoData($lang, $curunit, $ext_to_krw) { $data['lang'] = $lang; $data['curunit'] = $curunit; $exchange = $this->exchangeInfo($curunit); $data['ext_to_krw'] = (!empty($ext_to_krw))?$ext_to_krw:$exchange['ext_to_krw']; //값이 없을땐 현재의 환율 적용 $data['pay_currency'] = $exchange['ext_nm']; $data['currency'] = $exchange['ext_mark']; return $data; } //환율정보 public function exchangeInfo($ext_eng) { $data = array(); $sql = "select * from TB_EXCHANGE where ext_eng='{$ext_eng}'"; $data = db_fetch($sql); return $data; } /* * 페이징 */ public function paging($total_page, $page_per_block, $page, $func_name) { $total_block = ceil($total_page/$page_per_block); $block = ceil($page/$page_per_block); $first_page = ($block-1)*$page_per_block; $last_page = $block*$page_per_block; if($total_block <= $block) { $last_page = $total_page; } $html = '<div class="c_paging"> '; $html .= '<ul class="c_paging_wrap"> '; $html .= '<ul class="list_no01"> '; if($page!=1) { $html .= '<li><a href="javascript:;" onclick="'.$func_name.'(\'1\')"><img src="/admin/images/btn/btn_first.gif" alt="처음목록보기"></a></li> '; } else { $html .= '<li><img src="/admin/images/btn/btn_first.gif" alt="처음목록보기"></li> '; } if($block > 1) { $my_page = $first_page; $html .= '<li><a href="javascript:;" onclick="'.$func_name.'(\''.$my_page.'\')"><img src="/admin/images/btn/btn_prev.gif" alt="앞목록보기"></a></li> '; } else { $html .= '<li><img src="/admin/images/btn/btn_prev.gif" alt="앞목록보기"></li> '; } $html .= '<li class="list_no02"><ul>'; for($direct_page = $first_page+1; $direct_page <= $last_page; $direct_page++) { if($page == $direct_page) { $html .= '<li class="on"><span>'.$direct_page.'</span></li> '; } else { $html .= '<li><a href="javascript:;" onclick="'.$func_name.'(\''.$direct_page.'\')"><span>'.$direct_page.'</span></a></li> '; } } $html .= '</ul></li>'; if($block < $total_block) { $my_page = $last_page+1; $html .= '<li><a href="javascript:;" onclick="'.$func_name.'(\''.$my_page.'\')"><img src="/admin/images/btn/btn_next.gif" alt="뒤목록보기"></a></li> '; } else { $html .= '<li><img src="/admin/images/btn/btn_next.gif" alt="뒤목록보기"></li> '; } if($total_page!=$page) { $html .= '<li><a href="javascript:;" onclick="'.$func_name.'(\''.$total_page.'\')"><img src="/admin/images/btn/btn_last.gif" alt="마지막목록보기"></a></li> '; } else { $html .= '<li><img src="/admin/images/btn/btn_last.gif" alt="마지막목록보기"></li> '; } $html .= '</ul></ul></div>'; return $html; } /* * 투어리스트 * 대리점의 국적에 따라 언어 구분 * open : 일정중 하나라도 예약가능한 일정이 있을때 포함 * close : 일정중 하나라도 예약가능한 일정이 있을때 제외 */ public function tourList($opt='') { // $langInfo = $this->langInfo(); $res = array(); $data = array(); $bidx = $this->returnBidx($opt['lang']); if(empty($bidx)) return; // $page = $opt['page']; $table = 'good'; $sql_where = ""; $sql_where .= " AND g_ok='Y'"; //사용 $sql_where .= " AND tab in ('D','P')"; //호텔, 티켓 제외 $sql_where .= " AND b_uid not in ('143','124','135','138','127','130')"; //차량상품 제외 //$sql_where .= " AND gdt!='pe'"; //단독투어 제외 // //$sql_where .= " AND Bidx IN ('KO','E1','C1','T1')"; //한국에 한함 // $sql_where .= " AND Bidx IN ('E1','C1','T1')"; //한국에 한함 & 한국 카테고리는 제외 // if(!empty($langInfo['lang'])) { // //언어별(지역별)로 구분 // $sql_where .= " AND Bidx IN (SELECT Bidx FROM TB_AreaB WHERE Aidx IN (SELECT Aidx FROM TB_AreaA WHERE ConLang='{$langInfo['lang']}'))"; // } $sql_where .= " AND Bidx='{$bidx}'"; //언어별 1차 카테고리 확인 if(!empty($opt['tour_state'])) { if($opt['tour_state']=='open') { $sql_where .= " AND g_uid in "; } else if($opt['tour_state']=='close') { $sql_where .= " AND g_uid not in "; } $sql_where .= " (select g_uid from `date` where d_people2-d_people1>0 and d_start BETWEEN '{$opt['date_s1']}' AND '{$opt['date_s2']}' and d_start>'".date('Y-m-d')."')"; } if(!empty($opt['Cidx'])) $sql_where .= " AND Cidx='{$opt['Cidx']}'"; //투어지역 if(!empty($opt['kind_code'])) $sql_where .= " AND kind_code='{$opt['kind_code']}'"; //투어종류 if(!empty($opt['search_word_s'])) $sql_where .= " AND g_title LIKE '%{$opt['search_word_s']}%'"; //$sql_where .= " and g_uid='971'"; ///////////////////test // if(!empty($opt['mode_period_s']) && !empty($opt['date_s1']) && !empty($opt['date_s2'])) { // if($opt['mode_period_s']=='g_regdate') { //작성일 기준 검색 // $sql_where .= " AND FROM_UNIXTIME(UNIX_TIMESTAMP(g_regdate),'%Y-%m-%d') BETWEEN '{$opt['date_s1']}' AND '{$opt['date_s2']}'"; // } else if($opt['mode_period_s']=='d_start') { //출발일 기준 검색 // $sql_where .= " AND g_uid in (SELECT g_uid FROM date WHERE d_start BETWEEN '{$opt['date_s1']}' AND '{$opt['date_s2']}')"; // } // } //$sql_where .= " and g_uid in (select g_uid from TB_GOOD_DATE_TYPE where pdf_url!='' or pdf_url2!='')"; /////test $sql = "select count(*) as total from {$table} where 1=1 {$sql_where} "; $row = db_fetch($sql); $total = $row['total']; // if(!$page) $page = 1; $line = !empty($opt['list_count_s'])?$opt['list_count_s']:20; // 보여줄 갯수 $list = 10; // 블럭 갯수 $total_page = ceil($total / $line); // 총페이지 if ($total == 0) $total_page = 1; if ($page > $total_page) $page = $total_page; $total_list = intval($total_page / $list); if ($total_page % $list == 0) $total_list--; $curr_list = intval($page / $list); if ($page % $list == 0) $curr_list--; $start_page = $curr_list * $list + 1; $prev_list = $start_page - $list; $next_list = $start_page + $list; $olds = $line * ($page - 1); $sql = "select *,(select b_lang from bc where b_uid={$table}.b_uid) b_lang from {$table} where 1 {$sql_where} "; $sql .= " order by g_uid desc "; if(empty($opt['excel'])) $sql .= " limit $olds , $line"; //echo ''.$sql.'<br>'; //logCheck($sql); $rs = db_query($sql); $num = $total - $line*($page-1); while($row = db_fetch_array($rs)){ $row['no'] = $num; //상품의 행사중 가장 낮은 판매가 기준 정보 $datePriceMin = $this->datePriceMin($row['g_uid']); if(!empty($datePriceMin)) $row = array_merge($row,$datePriceMin); $row['kind_code_name'] = (empty($row['kind_code']))?'':base_codec("TGO","TKND",$row['kind_code'],"")[0]['cd_nm']; $row['siteUrl'] = $this->siteUrl($row['b_lang']); $row['dateNum'] = $this->tourDateNum($row['g_uid'],$opt['date_s1'],$opt['date_s2']); //플랜수 $data[] = $row; $num--; } $res['total'] = $total; $res['total_page'] = $total_page; $res['page'] = $page; $res['line'] = $line; $res['list'] = $list; $res['data'] = $data; return $res; } /* * open/close 구분 * d_ok:행사상태(A예약가능,B대기,C마감,D출발확정) * d_people1:예약인원 * d_people2:정원(대,팀) */ private function tourDateNum($g_uid,$date1,$date2) { $sql = "SELECT count(*) as total FROM `date` WHERE g_uid='{$g_uid}' "; $sql .= " and (d_people2-d_people1)>0"; $sql .= " and d_start>'".date('Y-m-d')."'"; $sql .= " and d_start BETWEEN '{$date1}' AND '{$date2}'"; $row = db_fetch($sql); return $row['total']; } /* * 언어에 따른 사이트 url 구분 */ private function siteUrl($b_lang) { $url = ''; switch($b_lang) { case 'ko'; $url = 'http://www.tourboss.co.kr'; break; case 'en'; $url = 'http://en.tktravelkorea.com'; break; case 'cn'; $url = 'http://cn.tktravelkorea.com'; break; case 'hk'; $url = 'http://www.tktravelkorea.com'; break; } return $url; } /* * 최소출발인원/최대출발인원(정원)/판매가격(성인총판매가)/입금가격(대리점가) * 상품중 정상가가 제일 낮은 행사 선택 * 대리점가는 현재 로그인 사용자 정보 확인 * 최소출발인원은 데이투어(단체,단독),패키지에 따라 다른 필드 사용 */ private function datePriceMin($g_uid) { global $TO_MB; $data = array(); $sql = "SELECT * FROM `date` WHERE 1"; $sql .= " AND g_uid='{$g_uid}'"; //$sql .= " AND d_agent_ga!=''"; //대리점가 포함 $sql .= " and dtid in (select dtid from TB_GOOD_DATE_TYPE where del_flag='N')"; //사용하는 플랜만 $sql .= " ORDER BY d_money1 ASC LIMIT 1"; //prePrint($sql); $row = db_fetch($sql); if(empty($row)) return; // if($row['tab']=='D') { //데이투어 if($row['gdt']=='gr') { //단체투어 $minPerson = $row['d_gr_people_min']; } else { //단독투어 $minPerson = $row['d_pe_people_inwon']; } } else { //패키지 $minPerson = $row['d_people3']; } $data['startDate'] = $row['d_start']; //출발일 $data['minPerson'] = $minPerson; //최소출발인원 $data['maxPerson'] = $row['d_people2']; //최대출발인원 $data['adultPrice'] = $row['d_money1']; //판매가격 $data['agencyPrice'] = ''; //입금가격 if(!empty($row['d_agent_ga'])) { $d_agent_ga_arr = explode("||",$row['d_agent_ga']); foreach($d_agent_ga_arr as $k=>$v) { if(!empty($v)) { $agent_arr = explode("^",$v); if($agent_arr[0]==$TO_MB['mb_id']) { $data['agencyPrice'] = $agent_arr[1]; //대리점가 } } } } return $data; } /* * 여행상품 행사중에서 예약가능한 일정 날짜 가져오기 * 메인 달력과 동일하게 대기상태도 예약가능 * */ public function selectableDateList($g_uid,$dtid,$ym='') { $data = array(); $sql = "SELECT d_start FROM `date` WHERE 1"; $sql .= " AND g_uid='{$g_uid}' AND dtid='{$dtid}' "; //$sql .= " AND d_ok IN ('A','B')"; //(A예약가능,B대기,C마감,D출발확정) 대기상태도 예약가능으로 보여줌 $sql .= " AND d_start>CURDATE()"; //오늘 포함하지 않음 if(!empty($ym)) $sql .= " AND d_start LIKE '{$ym}%'"; $sql .= " AND (d_people2 - d_people1)>0"; $sql .= " ORDER BY d_start ASC"; //logCheck($sql); $rs = db_query($sql); while($row = db_fetch_array($rs)){ $data[] = $row['d_start']; } return $data; } /* * 예약가능인원, 정상가, 대리점 할인가 확인 * 옵션상품 포함 * 원화만 사용, 환율변환은 스크립트에서 적용 * 데이투어 > 단독투어일때 대당 최대인원 확인 */ public function dateEventInfo($g_uid,$dtid,$d_start) { global $TO_MB; $langInfo = $this->langInfo(); // 환율체크 class $CommonTour_v = new CommonTour(); $data = array(); $sql = "SELECT * FROM `date` WHERE g_uid='{$g_uid}' AND dtid='{$dtid}' AND d_start='{$d_start}'"; $row = db_fetch($sql); if(empty($row)) return; $data = $row; //통화정보 //$data['langInfo'] = $langInfo; //예약가능인원 $data['resAbleNum'] = ($row['d_people2']-$row['d_people1']>0)?$row['d_people2']-$row['d_people1']:0; $data['daesu_inwon'] = $row['d_pe_people_inwon']; //대당 최대인원(기준인원) //정상가 $data['adultPrice'] = $row['d_money1']; $data['childPrice'] = $row['d_money2']; $data['babyPrice'] = $row['d_money3']; $data['infantPrice'] = $row['d_money7']; //대리점가 $data['adultPriceAgency'] = ''; $data['childPriceAgency'] = ''; $data['babyPriceAgency'] = ''; $data['infantPriceAgency'] = ''; if(!empty($row['d_agent_ga'])) { $d_agent_ga_arr = explode("||",$row['d_agent_ga']); foreach($d_agent_ga_arr as $k=>$v) { if(!empty($v)) { $agent_arr = explode("^",$v); if($agent_arr[0]==$TO_MB['mb_id']) { //로그인 사용자 기준 대리점가 $data['adultPriceAgency'] = $agent_arr[1]; $data['childPriceAgency'] = $agent_arr[2]; $data['babyPriceAgency'] = $agent_arr[3]; $data['infantPriceAgency'] = $agent_arr[4]; } } } } //인당 할인가 $data['adultPriceSale'] = (int)$data['adultPrice'] - (int)$data['adultPriceAgency']; $data['childPriceSale'] = (int)$data['childPrice'] - (int)$data['childPriceAgency']; $data['babyPriceSale'] = (int)$data['babyPrice'] - (int)$data['babyPriceAgency']; $data['infantPriceSale'] = (int)$data['infantPrice'] - (int)$data['infantPriceAgency']; //옵션상품 if(!empty($row['d_good_option'])) { $d_good_option_arr = explode("||",$row['d_good_option']); foreach($d_good_option_arr as $k=>$v) { if(!empty($v)) { $option_arr = explode("^",$v); $data['good_option_all'][$k] = array( 'opid' => $option_arr[0], 'op_nm' => $option_arr[1], 'op_price' => $option_arr[2], 'op_price_fr' => $CommonTour_v->exchangeMoney_Reverse(array("ext_eng"=>$langInfo['curunit'],'money'=>$option_arr[2])) ); } } } return $data; } /* * 대리점 공지 * 로그인 사용자 기준 */ public function noticeList() { global $TO_MB; $sql = "select * from TB_NOTICE_AGENCY where agency_id='{$TO_MB['mb_id']}'"; $sql .= " order by uid desc"; $result = db_query($sql); while($row = db_fetch_array($result)) { $data[] = $row; } return $data; } /* * 여행 인원수 * res_good_master 포함되어 있어서 제거 */ // public function tourPersonNum($res_no) { // $sql = "SELECT "; // $sql .= "(SELECT COUNT(*) FROM TB_RES_GOOD_PERSON WHERE res_no='{$res_no}' AND generation='A') adultNum,"; // $sql .= "(SELECT COUNT(*) FROM TB_RES_GOOD_PERSON WHERE res_no='{$res_no}' AND generation='C') childNum,"; // $sql .= "(SELECT COUNT(*) FROM TB_RES_GOOD_PERSON WHERE res_no='{$res_no}' AND generation='B') babyNum,"; // $sql .= "(SELECT COUNT(*) FROM TB_RES_GOOD_PERSON WHERE res_no='{$res_no}' AND generation='I') infantNum"; // $row = db_fetch($sql); // return $row; // } /* * 바우처 미리보기 메일 내용 */ public function voucherHtml($res_no) { global $cf , $TO_CF; $data = array(); // 예약정보 $res_data = res_good_master(" and res_no='{$res_no}' "); $row = res_good_master_replace($res_data[0]); $data['row'] = $row; //prePrint($row); //선택옵션 $optionStr = ''; if(!empty($row['d_good_option_all'])) { foreach($row['d_good_option_all'] as $k=>$v) { if($v['op_num']==0) continue; $optionStr .= $v['op_nm'].' ('.$v['op_num']._e2('개').')<br>'; } } // 여행자 정보 //첫번째 데이터만 $data_person = res_good_date_person($res_no); //prePrint($data_person[0]); $depot_nm = (!empty($data_person[0]))?$data_person[0]['depot_nm']:''; //탑승장소 / 시간 (출발지정보에 시간이 포함되어 있음) //여행상품 정보 //예약정보에 포함되어 있어 필요없음 google_map, g_rule 등 // $arr_t = good_list(" and g_uid='{$row['g_uid']}' "); // $row_good = $arr_t[0]; $url = $cf['url']; //http://www.tkplace.co.kr /* * {{}} 번역할 문장 변수 * {} 치환할 내용변수 */ $mail_template = $_SERVER['DOCUMENT_ROOT'].'/mail/b2b_tour_voucher_mail.html'; $mail_body = @get_readfile($mail_template); // $mail_body = str_replace("결제가 완료되었습니다.", _e("결제가 완료되었습니다.",$cf[lang]), $mail_body); $mail_body = str_replace("{{안녕하세요!}}", _e2('안녕하세요!'), $mail_body); $mail_body = str_replace("{{고객님!}}", _e2('고객님!'), $mail_body); $mail_body = str_replace("{{TK트래블 여행상품을 선택해 주셔서 진심으로 감사드립니다.}}", _e2('TK트래블 여행상품을 선택해 주셔서 진심으로 감사드립니다.'), $mail_body); $mail_body = str_replace("{{바우처를 첨부해 드리오니, 내용을 확인해 주시기 바랍니다.}}", _e2('바우처를 첨부해 드리오니, 내용을 확인해 주시기 바랍니다.'), $mail_body); $mail_body = str_replace("{{즐거운 여행이 되시길 바랍니다.}}", _e2('즐거운 여행이 되시길 바랍니다.'), $mail_body); $mail_body = str_replace("{{예약정보}}", _e2('예약정보'), $mail_body); $mail_body = str_replace("{{바우처번호}}", _e2('바우처번호'), $mail_body); $mail_body = str_replace("{{예약접수일}}", _e2('예약접수일'), $mail_body); $mail_body = str_replace("{{출발날짜}}", _e2('출발날짜'), $mail_body); $mail_body = str_replace("{{상품이름}}", _e2('상품이름'), $mail_body); $mail_body = str_replace("{{고객이름}}", _e2('고객이름'), $mail_body); $mail_body = str_replace("{{국적}}", _e2('국적'), $mail_body); $mail_body = str_replace("{{인원수}}", _e2('인원수'), $mail_body); $mail_body = str_replace("{{선택옵션}}", _e2('선택옵션'), $mail_body); $mail_body = str_replace("{{탑승장소 / 시간}}", _e2('탑승장소 / 시간'), $mail_body); $mail_body = str_replace("{{이메일}}", _e2('이메일'), $mail_body); $mail_body = str_replace("{{연락처}}", _e2('연락처'), $mail_body); $mail_body = str_replace("{{SNS ID}}", _e2('SNS ID'), $mail_body); $mail_body = str_replace("{{고객 요청 사항}}", _e2('고객 요청 사항'), $mail_body); $mail_body = str_replace("{{주의 사항 및 서비스 정보}}", _e2('주의 사항 및 서비스 정보'), $mail_body); $mail_body = str_replace("{{주의사항}}", _e2('주의사항'), $mail_body); $mail_body = str_replace("{{투어 비용은 현지 기사/가이드 팁, 관광지 입장료, 일정표에 나와있는 식비, 왕복 교통비용이 모두 포함됩니다.}}", _e2('투어 비용은 현지 기사/가이드 팁, 관광지 입장료, 일정표에 나와있는 식비, 왕복 교통비용이 모두 포함됩니다.'), $mail_body); $mail_body = str_replace("{{투어는 폭풍우가 아닌 한, 우천시에도 진행됩니다.}}", _e2('투어는 폭풍우가 아닌 한, 우천시에도 진행됩니다.'), $mail_body); $mail_body = str_replace("{{악천우, 기타 자연적인 재해가 발생 할 경우는 출발일 변경 또는 여행 요금 환불을 진행합니다.}}", _e2('악천우, 기타 자연적인 재해가 발생 할 경우는 출발일 변경 또는 여행 요금 환불을 진행합니다.'), $mail_body); $mail_body = str_replace("{{최소 예약 인원은 4인, 최대 예약 인원은 43인 입니다.}}", _e2('최소 예약 인원은 4인, 최대 예약 인원은 43인 입니다.'), $mail_body); $mail_body = str_replace("{{손님 예약이 투어 최소 인원에 충족되지 않았음에도 투어를 이용하려는 경우, 추가 비용이 발생합니다.}}", _e2('손님 예약이 투어 최소 인원에 충족되지 않았음에도 투어를 이용하려는 경우, 추가 비용이 발생합니다.'), $mail_body); $mail_body = str_replace("{{일일투어는 3세 이상 어린이는 성인 요금이 적용되며 36개월 미만의 유아는 무료 입니다. (단, 무료 적용된 유아는 식사, 좌석, 입장권 등이 제공되지 않습니다.)}}", _e2('일일투어는 3세 이상 어린이는 성인 요금이 적용되며 36개월 미만의 유아는 무료 입니다. (단, 무료 적용된 유아는 식사, 좌석, 입장권 등이 제공되지 않습니다.)'), $mail_body); $mail_body = str_replace("{{1박2일 이상 투어는 36개월 미만(무료) / 3~11세(어린이 요금) / 12세 이상(성인 요금)으로 비용이 구분됩니다.}}", _e2('1박2일 이상 투어는 36개월 미만(무료) / 3~11세(어린이 요금) / 12세 이상(성인 요금)으로 비용이 구분됩니다.'), $mail_body); $mail_body = str_replace("{{모든 여행 일정은 개인 여행자 보험을 포함하지 않습니다. 자국에서 개별 여행자 보험 가입을 권장합니다.}}", _e2('모든 여행 일정은 개인 여행자 보험을 포함하지 않습니다. 자국에서 개별 여행자 보험 가입을 권장합니다.'), $mail_body); $mail_body = str_replace("{{지정된 미팅 장소로 시간에 맞춰서 늦지 않게 도착하셔야만 합니다.}}", _e2('지정된 미팅 장소로 시간에 맞춰서 늦지 않게 도착하셔야만 합니다.'), $mail_body); $mail_body = str_replace("{{지각 시 다른 고객에게 불이익이 발생하여 정시에 기다리지 않고 출발하며, 투어 금액은 전액 환불 불가 합니다.}}", _e2('지각 시 다른 고객에게 불이익이 발생하여 정시에 기다리지 않고 출발하며, 투어 금액은 전액 환불 불가 합니다.'), $mail_body); $mail_body = str_replace("{{현지 비상 연락처}}", _e2('현지 비상 연락처'), $mail_body); $mail_body = str_replace("{{비상전화 : +82 262988000 (09:00~18:00 / Mon~Fri)}}", _e2('비상전화 : +82 262988000 (09:00~18:00 / Mon~Fri)'), $mail_body); $mail_body = str_replace("{{Whatsapp : +82 108249-1901}}", _e2('Whatsapp : +82 108249-1901'), $mail_body); $mail_body = str_replace("{{Line : @tktravelkorea}}", _e2('Line : @tktravelkorea'), $mail_body); $mail_body = str_replace("{{Wechat : tktravelcs}}", _e2('Wechat : tktravelcs'), $mail_body); $mail_body = str_replace("{{미팅 및 탑승 장소 안내}}", _e2('미팅 및 탑승 장소 안내'), $mail_body); $mail_body = str_replace("{{환불 및 취소규정}}", _e2('환불 및 취소규정'), $mail_body); $mail_body = str_replace("{{감사합니다!}}", _e2('감사합니다!'), $mail_body); $mail_body = str_replace("{{즐거운 여행 되세요.}}", _e2('즐거운 여행 되세요.'), $mail_body); $mail_body = str_replace("{{TK TRAVEL Co.,Ltd}}", _e2('TK TRAVEL Co.,Ltd'), $mail_body); $mail_body = str_replace("{{서울특별시 동대문구 신이문로 39, 명경빌딩 5층 (02409)}}", _e2('서울특별시 동대문구 신이문로 39, 명경빌딩 5층 (02409)'), $mail_body); //b2b미팅장소 이미지 url 추가 $google_map = str_replace("/FileData/",$url."/FileData/",$row['google_map']); // $mail_body = str_replace("{URL}", $url, $mail_body); $mail_body = str_replace("{바우처번호}", $row['rsv_no'], $mail_body); $mail_body = str_replace("{예약접수일}", $row['ins_dt'], $mail_body); $mail_body = str_replace("{출발날짜}", $row['ev_start'], $mail_body); $mail_body = str_replace("{상품이름}", $row['g_title'].'<br>'.$row['ev_title'], $mail_body); $mail_body = str_replace("{고객이름}", $row['res_cust_nm'], $mail_body); $mail_body = str_replace("{국적}", $row['res_cust_nat_cd'], $mail_body); //승객 국적 //$inwon = _e2('대인')." {$row['adult_inwon']} + "._e2('소인')." {$row['child_inwon']} + "._e2('유아')." {$row['baby_inwon']} + "._e2('영아')." {$row['infant_inwon']}"; $inwon = _e2('대인')." {$row['adult_inwon']} + "._e2('소인')." {$row['child_inwon']} + "._e2('유아')." {$row['baby_inwon']}"; //영아 제외 요청 $mail_body = str_replace("{인원수}", $inwon, $mail_body); $mail_body = str_replace("{선택옵션}", $optionStr, $mail_body); $mail_body = str_replace("{탑승장소 / 시간}", $depot_nm, $mail_body); $mail_body = str_replace("{이메일}", $row['res_cust_email'], $mail_body); $mail_body = str_replace("{연락처}", $row['res_cust_hp'], $mail_body); $mail_body = str_replace("{SNS ID}", $row['b2b_sns_type'].' '.$row['b2b_sns_type'], $mail_body); $mail_body = str_replace("{SNS ID}", $row['b2b_sns_id'].' '.$row['b2b_sns_id'], $mail_body); $mail_body = str_replace("{고객 요청 사항}", $row['res_cust_memo'], $mail_body); $mail_body = str_replace("{미팅 및 탑승 장소 안내}", $google_map, $mail_body); $mail_body = str_replace("{환불 및 취소규정}", $row['g_rule'], $mail_body); $data['mail_body'] = $mail_body; return $data; } /* * 외환 총결제액 * 기존의 총결제액은 srh_pre_money 항목에 스토어 프로시저로 자동 계산됨 * 프로시저에 추가하지 않고 함수 활용 */ public function getPreMoney_fr($sql_where) { $price = 0; $sql = "select * from TB_RES_GOOD where 1 {$sql_where} "; $res = db_query($sql); while($row = db_fetch_array($res)) { // 입금상태 (미납/완납/과납) $class_AccountCustomer = new AccountCustomer(); $arr = $class_AccountCustomer->res_account_info($row['res_no']); $arr_account = $arr['tot']; //확정예약이고 미납금이 있을때만 if($row['res_stat_cd']=="C" && $arr_account['pre_money']>0) { $price += $row['sales_total_fr']; } } return $price; //외환 반환 } /* open, close 개념 변경 start **********************************************************/ /* * 투어리스트 * 대리점의 국적에 따라 언어 구분 * open : 일정중 하나라도 대리점가 등록된 일정이 있을때 포함 * close : 일정중 하나라도 대리점가 등록된 일정이 있을때 제외 * agent_id값이 없을때는 총관리자 페이지 적용 */ public function tourListNew($opt='') { $res = array(); $data = array(); $bidx = $this->returnBidx($opt['lang']); if(empty($bidx)) return; $page = $opt['page']; $table = 'good'; $sql_where = ""; $sql_where .= " AND g_ok='Y'"; //사용 $sql_where .= " AND b_uid not in ('143','124','135','138','127','130')"; //차량상품 제외 /*** * @author taeyoung * b2b 데이터가 안나와서 주석처리함. * https://tkplace.co.kr/admin/res_good/b2b_tour_list.html * JOY PARADISE 홀리데이 */ $sql_where .= " AND Bidx='{$bidx}'"; //언어별 1차 카테고리 확인 if(!empty($opt['tab'])) { $sql_where .= " AND tab='{$opt['tab']}'"; } else { $sql_where .= " AND tab in ('D','P', 'T')"; //호텔, 티켓 제외 } if(!empty($opt['tour_state'])) { if($opt['tour_state']=='open') { $sql_where .= " AND g_uid in "; } else if($opt['tour_state']=='close') { $sql_where .= " AND g_uid not in "; } //대리점가 등록 여부 확인 $add_sql = (!empty($opt['agent_id']))? " d_agent_ga LIKE '%||{$opt['agent_id']}^%' ":" 1 "; $sql_where .= " (select g_uid from `date` where {$add_sql} and d_start BETWEEN '{$opt['date_s1']}' AND '{$opt['date_s2']}')"; } if(!empty($opt['tour_code'])) $sql_where .= " AND tour_code='{$opt['tour_code']}'"; //투어코드 if(!empty($opt['Cidx'])) $sql_where .= " AND Cidx='{$opt['Cidx']}'"; //투어지역 if(!empty($opt['kind_code'])) $sql_where .= " AND kind_code='{$opt['kind_code']}'"; //투어종류 if(!empty($opt['search_word_s'])) $sql_where .= " AND g_title LIKE '%{$opt['search_word_s']}%'"; $sql = "select count(*) as total from {$table} where 1=1 {$sql_where} "; /*if(devCookie()){ p($sql); }*/ $row = db_fetch($sql); $total = $row['total']; // if(!$page) $page = 1; $line = !empty($opt['list_count_s'])?$opt['list_count_s']:20; // 보여줄 갯수 $list = 10; // 블럭 갯수 $total_page = ceil($total / $line); // 총페이지 if ($total == 0) $total_page = 1; if ($page > $total_page) $page = $total_page; $total_list = intval($total_page / $list); if ($total_page % $list == 0) $total_list--; $curr_list = intval($page / $list); if ($page % $list == 0) $curr_list--; $start_page = $curr_list * $list + 1; $prev_list = $start_page - $list; $next_list = $start_page + $list; $olds = $line * ($page - 1); $sql = "select *,(select b_lang from bc where b_uid={$table}.b_uid) b_lang from {$table} where 1 {$sql_where} "; $sql .= " order by g_uid desc "; if(empty($opt['excel'])) $sql .= " limit $olds , $line"; //echo ''.$sql.'<br>'; //logCheck($sql); $rs = db_query($sql); $num = $total - $line*($page-1); while($row = db_fetch_array($rs)){ $row['no'] = $num; //상품의 행사중 가장 낮은 판매가 기준 정보 //대리점가 포함여부 확인 $datePriceMin = $this->datePriceMinNew($row['g_uid']); if(!empty($datePriceMin)) $row = array_merge($row,$datePriceMin); $row['kind_code_name'] = (empty($row['kind_code']))?'':base_codec("TGO","TKND",$row['kind_code'],"")[0]['cd_nm']; $row['siteUrl'] = $this->siteUrl($row['b_lang']); $row['dateNum'] = (!empty($opt['agent_id']))?$this->tourDateNumNew($row['g_uid'],$opt['date_s1'],$opt['date_s2'],$opt['agent_id']):0; //플랜수 //총관리자는 모두 close $data[] = $row; $num--; } $res['total'] = $total; $res['total_page'] = $total_page; $res['page'] = $page; $res['line'] = $line; $res['list'] = $list; $res['data'] = $data; return $res; } /* * open/close 구분 * d_ok:행사상태(A예약가능,B대기,C마감,D출발확정) * 대리점 가격이 등록된 경우만 확인 * */ private function tourDateNumNew($g_uid,$date1,$date2,$agent_id) { $sql = "SELECT count(*) as total FROM `date` WHERE g_uid='{$g_uid}' "; //$sql .= " and (d_people2-d_people1)>0"; //$sql .= " and d_start>'".date('Y-m-d')."'"; $sql .= " and d_agent_ga LIKE '%||{$agent_id}^%'"; $sql .= " and d_start BETWEEN '{$date1}' AND '{$date2}'"; $row = db_fetch($sql); return $row['total']; } /* * 전체 행사 리스트 * 투어달력에서 open, close 개념 변경 * open : 일정중 하나라도 대리점가 등록된 일정이 있을때 포함 * close : 일정중 하나라도 대리점가 등록된 일정이 있을때 제외 * agent_id값이 없을때는 총관리자 페이지 적용 */ public function dateEventNew($opt='') { $bidx = $this->returnBidx($opt['lang']); if(empty($bidx)) return; $data = array(); $sql = "SELECT * FROM TB_GOOD_DATE_TYPE A INNER JOIN good B"; $sql .= " ON A.g_uid=B.g_uid"; $sql .= " WHERE 1"; $sql .= " AND A.del_flag='N'"; $sql .= " AND B.g_ok='Y'"; $sql .= " AND B.tab in ('D','P')"; //호텔, 티켓 제외 $sql .= " AND B.b_uid not in ('143','124','135','138','127','130')"; //차량상품 제외 $sql .= " AND B.Bidx='{$bidx}'"; //언어별 1차 카테고리 확인 if(!empty($opt['tour_state']) && !empty($opt['ym'])) { if($opt['tour_state']=='open') { $sql .= " AND A.dtid in "; } else if($opt['tour_state']=='close') { $sql .= " AND A.dtid not in "; } //대리점가 등록 여부 확인 $add_sql = (!empty($opt['agent_id']))? " d_agent_ga LIKE '%||{$opt['agent_id']}^%' ":" 1 "; $sql .= " (select dtid from `date` where {$add_sql} and d_start like '".$opt['ym']."%')"; } if(!empty($opt['Cidx'])) $sql .= " AND B.Cidx='{$opt['Cidx']}'"; //투어지역 if(!empty($opt['kind_code'])) $sql .= " AND B.kind_code='{$opt['kind_code']}'"; //투어종류 if(!empty($opt['search_word_s'])) $sql .= " AND A.date_type_nm LIKE '%{$opt['search_word_s']}%'"; $sql .= " ORDER BY A.g_uid ASC"; //echo $sql; $result = db_query($sql); while($row = db_fetch_array($result)) { $data[] = $row; } return $data; } /* * 대리점 가격이 등록된 마지막 행사일 * 대리점 회원일때만 대리점 회원의 마지막 행사일 * 총관리자 또는 공급처 회원일땐 대리점 구분없이 등록된 마지막 행사일 */ public function dateLastStart() { global $TO_MB, $cf; $sql = "SELECT d_start FROM `date` WHERE 1"; if($TO_MB['mb_level']==$cf['agent_level']) { //대리점 회원일때 $sql .= " AND d_agent_ga LIKE '%||{$TO_MB['mb_id']}^%'"; //대리점가 포함 } else { $sql .= " AND d_agent_ga!='' AND d_agent_ga IS NOT NULL"; } $sql .= " ORDER BY d_start DESC LIMIT 1"; $row = db_fetch($sql); if(empty($row)) return date('Y-m-d',strtotime('+1 years')); return $row['d_start']; } /* * 최소출발인원/최대출발인원(정원)/판매가격(성인총판매가)/입금가격(대리점가) * 상품중 정상가가 제일 낮은 행사 선택 * 대리점가는 현재 로그인 사용자 정보 확인 * 최소출발인원은 데이투어(단체,단독),패키지에 따라 다른 필드 사용 */ private function datePriceMinNew($g_uid) { global $TO_MB, $cf; $data = array(); $sql = "SELECT * FROM `date` WHERE 1"; $sql .= " AND g_uid='{$g_uid}'"; if($TO_MB['mb_level']==$cf['agent_level']) { //대리점 회원일때 $sql .= " AND d_agent_ga LIKE '%||{$TO_MB['mb_id']}^%'"; //대리점가 포함 } //$sql .= " AND d_agent_ga!=''"; //대리점가 포함 $sql .= " and dtid in (select dtid from TB_GOOD_DATE_TYPE where del_flag='N')"; //사용하는 플랜만 $sql .= " ORDER BY d_money1 ASC LIMIT 1"; //prePrint($sql); $row = db_fetch($sql); if(empty($row)) return; // if($row['tab']=='D') { //데이투어 if($row['gdt']=='gr') { //단체투어 $minPerson = $row['d_gr_people_min']; } else { //단독투어 $minPerson = $row['d_pe_people_inwon']; } } else { //패키지 $minPerson = $row['d_people3']; } $data['startDate'] = $row['d_start']; //출발일 $data['minPerson'] = $minPerson; //최소출발인원 $data['maxPerson'] = $row['d_people2']; //최대출발인원 $data['adultPrice'] = $row['d_money1']; //판매가격 $data['agencyPrice'] = ''; //입금가격 if(!empty($row['d_agent_ga'])) { $d_agent_ga_arr = explode("||",$row['d_agent_ga']); foreach($d_agent_ga_arr as $k=>$v) { if(!empty($v)) { $agent_arr = explode("^",$v); if($agent_arr[0]==$TO_MB['mb_id']) { $data['agencyPrice'] = $agent_arr[1]; //대리점가 } } } } return $data; } /* open, close 개념 변경 end **********************************************************/ }