|
|
<?php
|
|
|
|
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
|
|
class Order_model extends CI_Model {
|
|
|
|
|
|
public function __construct()
|
|
|
{
|
|
|
parent::__construct();
|
|
|
$this->ht = $this->load->database('HT', TRUE);
|
|
|
}
|
|
|
|
|
|
public function get_order_contact($coli_sn, $order_type='227002')
|
|
|
{
|
|
|
$sql = "SELECT GUT_FirstName+' '+GUT_LastName fullname
|
|
|
,GUT_Email email
|
|
|
,case ISNULL(GUT_MoveTel,'') when '' then GUT_TEL else GUT_MoveTel end phone
|
|
|
,g.GUT_POST nation
|
|
|
from BIZ_GUEST g
|
|
|
INNER JOIN BIZ_ConfirmLineInfo coli on coli.COLI_GUT_SN=g.GUT_SN
|
|
|
WHERE COLI_SN=?";
|
|
|
if ($order_type !== '227002' && $order_type !== null) {
|
|
|
$sql = "SELECT top 1
|
|
|
case isnull(CUL_IsLinkMan,0) when 1 then MEI_Phone else '' end as phone
|
|
|
,(select COI_CountryCode from COuntryInfo
|
|
|
where COI_SN=MEI_Country
|
|
|
) as nation
|
|
|
,MEI_MailList email
|
|
|
,(isnull(MEI_LastName,'') +' '+ isnull(MEI_FirstName,'')) as fullname
|
|
|
from CustomerList cul
|
|
|
inner join MemberInfo mei on MEI_SN=CUL_CUI_SN
|
|
|
where 1=1
|
|
|
and cul.DeleteFlag=0 and mei.DeleteFlag=0
|
|
|
and CUL_COLI_SN = ?
|
|
|
order by cul.CUL_IsLinkMan desc ";
|
|
|
}
|
|
|
$contact_row = $this->ht->query($sql, array($coli_sn))->row_array();
|
|
|
if ( ! empty($contact_row)) {
|
|
|
$contact_row['phone_no'] = $contact_row['phone'];
|
|
|
if (false !== strripos($contact_row['phone'], ":")) {
|
|
|
$contact_row['phone_no'] = substr($contact_row['phone_no'], strripos($contact_row['phone_no'], ":")+1);
|
|
|
}
|
|
|
$contact_row['phone_no'] = $this->real_phone_number($contact_row['phone_no'],$contact_row['nation']);
|
|
|
}
|
|
|
return $contact_row;
|
|
|
}
|
|
|
|
|
|
public function real_phone_number($phone, $nation_code)
|
|
|
{
|
|
|
$nation_str = "+" . $nation_code;
|
|
|
$cut_nation = str_replace($nation_str, "", $phone);
|
|
|
return mb_ereg_replace('[\D]', '', $cut_nation);
|
|
|
}
|
|
|
|
|
|
public function orders($wu_id)
|
|
|
{
|
|
|
$sql = "SELECT orders.*
|
|
|
,PAG.PAG2_Name tourName,pag.PAG2_Attraction tourAttraction
|
|
|
,CONVERT(date, COLD_StartDate) startDate
|
|
|
--test:先设置一个字段.todo:是否完成电子反馈表
|
|
|
,case when COLD_StartDate>'2019-06-01' then 0 else 1 end evaluationDone
|
|
|
,isnull((select top 1 'Paid ' from Tourmanager.dbo.BIZ_GroupAccountInfo a where a.DeleteFlag=0 and GAI_COLI_SN=orders.coli),'Unpaid')
|
|
|
as ispaid
|
|
|
from (
|
|
|
select
|
|
|
COLI_GroupCode groupCode,COLI_GRI_SN groupId,COLI_ID orderId, COLI_SN coli
|
|
|
,(select top 1 COLD_SN from BIZ_ConfirmLineDetail where deleteflag=0 and cold_coli_sn=coli_sn order by cold_startdate
|
|
|
) as COLD_SN0
|
|
|
,COLI_IsSuccess isSuccess
|
|
|
,COLI_ApplyDate orderDate
|
|
|
from BIZ_ConfirmLineInfo coli
|
|
|
where 1=1
|
|
|
and exists(
|
|
|
select 1 from InfoManager.dbo.wx_customer where WC_WU_id=? and WC_COLI_SN=coli.COLI_SN
|
|
|
)
|
|
|
) as orders
|
|
|
inner join BIZ_ConfirmLineDetail cold on cold.COLD_SN=orders.COLD_SN0
|
|
|
inner join BIZ_PackageInfo2 pag on pag.PAG2_PAG_SN=cold.COLD_ServiceSN and pag.PAG2_LGC=1
|
|
|
order by
|
|
|
--evaluationDone asc,
|
|
|
-- startDate asc
|
|
|
orders.orderDate desc
|
|
|
";
|
|
|
return $this->ht->query($sql, array($wu_id))->result_array();
|
|
|
}
|
|
|
|
|
|
public function get_pag_tour_info($external_id)
|
|
|
{
|
|
|
$sql = "SELECT top 1 p.*
|
|
|
,(select top 1 SYC_SN from V_System_Code where SYC2_CodeDiscribe=sc.SYC2_CodeDiscribe and SYC_Type=32 and DeleteFlag=0 and LGC_LGC=2 ) as sourcetype32
|
|
|
from BIZ_PackageInfo p
|
|
|
left join V_System_Code sc on SYC_SN = PAG_sourceType and SYC_Type=132 AND LGC_LGC=2
|
|
|
where isnull(p.DeleteFlag,0)=0
|
|
|
and charindex(?,p.PAG_WebBR)>0";
|
|
|
return $this->ht->query($sql, array(",$external_id,"))->row_array();
|
|
|
}
|
|
|
|
|
|
public function biz_make_order_number() {
|
|
|
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, "DECLARE @COLI_ID varchar(40); EXEC dbo.SP_GetBIZOrderNo @COLI_ID OUT; select @COLI_ID coli_id;");
|
|
|
if ($stmt === false) {
|
|
|
echo "Error in executing statement 3.\n";
|
|
|
die(print_r(sqlsrv_errors(), true));
|
|
|
} else {
|
|
|
//存储过程中每一个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);
|
|
|
|
|
|
return $result_object[0];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public function order_save($coli_arr=array())
|
|
|
{
|
|
|
$this->ht->insert('BIZ_ConfirmLineInfo', $coli_arr);
|
|
|
return $this->ht->insert_id();
|
|
|
}
|
|
|
|
|
|
public function book_detail_save($cold_arr=array())
|
|
|
{
|
|
|
$this->ht->insert('BIZ_ConfirmLineDetail', $cold_arr);
|
|
|
return $this->ht->insert_id();
|
|
|
}
|
|
|
|
|
|
public function guest_save($guest=array())
|
|
|
{
|
|
|
$this->ht->insert('BIZ_guest', $guest);
|
|
|
return $this->ht->insert_id();
|
|
|
// return $this->ht->query('SELECT top 1 GUT_SN from BIZ_GUEST where GUT_Email=? order by GUT_SN desc', array($guest['GUT_Email']))->row()->GUT_SN;
|
|
|
}
|
|
|
|
|
|
public function book_people_save($book_people=array())
|
|
|
{
|
|
|
$this->ht->insert('BIZ_BookPeople', $book_people);
|
|
|
return $this->ht->insert_id();
|
|
|
// return $this->ht->query('SELECT top 1 BPE_SN from BIZ_BookPeople where BPE_Passport=? order by BPE_SN desc', array($book_people['BPE_Passport']))->row()->BPE_SN;
|
|
|
}
|
|
|
|
|
|
public function biz_bookpeople_List_save($arr=array())
|
|
|
{
|
|
|
$this->ht->insert('BIZ_BookPeopleList', $arr);
|
|
|
return $this->ht->insert_id();
|
|
|
}
|
|
|
|
|
|
public function pag_order_save($poi_arr=array())
|
|
|
{
|
|
|
$this->ht->insert('BIZ_PackageOrderInfo', $poi_arr);
|
|
|
return $this->ht->insert_id();
|
|
|
}
|
|
|
|
|
|
public function order_info_to_pay($coli_sn, $pending=null)
|
|
|
{
|
|
|
$column = ""; $calc = "";
|
|
|
if ($pending===null) {
|
|
|
$column = " COLI_Price price, ";
|
|
|
$calc = " (select Tourmanager.dbo.ConvertToRMB(coli.COLI_Currency, coli.COLI_Price)) as cny_price ";
|
|
|
} else {
|
|
|
$column = " $pending as 'price', ";
|
|
|
$calc = " (select Tourmanager.dbo.ConvertToRMB(coli.COLI_Currency, $pending)) as cny_price ";
|
|
|
}
|
|
|
$sql = "SELECT
|
|
|
u.WU_userOpenId openid,COLI_ID,
|
|
|
$column
|
|
|
$calc
|
|
|
from InfoManager.dbo.wx_customer
|
|
|
inner join InfoManager.dbo.wx_user u on WU_id=WC_WU_id
|
|
|
inner join Tourmanager.dbo.BIZ_ConfirmLineInfo coli on COLI_SN=WC_COLI_SN
|
|
|
where WC_COLI_SN=? ";
|
|
|
return $this->ht->query($sql, array($coli_sn))->row_array();
|
|
|
}
|
|
|
|
|
|
public function order_detail($coli_sn, $coli_id = null)
|
|
|
{
|
|
|
$ret = array();
|
|
|
bcscale(2);
|
|
|
/**
|
|
|
* booking tour detail
|
|
|
*/
|
|
|
// 支付结果使用ID, 不再获取SN
|
|
|
$id_sql = ($coli_sn===0&&$coli_id!==null) ? "COLI_ID='$coli_id'" : "COLI_SN=$coli_sn";
|
|
|
$sql = "SELECT
|
|
|
c.COLI_SN coli,c.COLI_ID orderId,c.COLI_State orderStep,c.COLI_OPI_ID opi,
|
|
|
convert(date,COLD_StartDate) startDate,
|
|
|
isnull((select top 1 1 from Tourmanager.dbo.BIZ_GroupAccountInfo a where a.DeleteFlag=0 and GAI_COLI_SN=c.COLI_SN),0)
|
|
|
as ispaid,
|
|
|
convert(decimal(11,2),c.COLI_Price) totalPrice,c.COLI_Currency currency,
|
|
|
c.COLI_GroupCode groupCode,p.PAG2_PAG_SN as tourId
|
|
|
,convert(varchar(10),d.COLD_personNum) + ' Adults; ' +
|
|
|
case when d.COLD_childNum>0 then convert(varchar(10), d.COLD_childNum)+' Children; '
|
|
|
else '' end
|
|
|
as personNum
|
|
|
,(select top 1 g.GUT_FirstName from BIZ_Guest g where GUT_SN=COLI_GUT_SN) as leader
|
|
|
,po.POI_hotel as hotelName
|
|
|
,po.POI_hotelAddress as hotelAddress
|
|
|
,po.POI_hotelPhone as hotelTel
|
|
|
,p.PAG2_Attraction as attraction,PAG2_Title as schedule,p.PAG2_Name as tourName
|
|
|
,isnull(ps.PAGS_describ, '') as subTourInfo
|
|
|
from Tourmanager.dbo.BIZ_ConfirmLineInfo c
|
|
|
inner join Tourmanager.dbo.BIZ_ConfirmLineDetail d on c.COLI_SN=d.COLD_COLI_SN
|
|
|
and d.DeleteFlag=0
|
|
|
left join biz_packageOrderinfo po on po.POI_COLD_SN=d.COLD_SN
|
|
|
left join Tourmanager.dbo.BIZ_PackageInfo2 p on p.PAG2_PAG_SN=d.COLD_ServiceSN and p.PAG2_LGC=1
|
|
|
left join Tourmanager.dbo.BIZ_PackageInfoSub ps on ps.PAGS_SN=d.COLD_ServiceSN2 and ps.PAGS_LGC=1
|
|
|
where $id_sql
|
|
|
order by d.COLD_StartDate asc";
|
|
|
$ret['orderTour'] = $this->ht->query($sql)->result_array();
|
|
|
$sqlb = "SELECT
|
|
|
a.GAI_SQJE paidValue,a.GAI_SQJECurrency paidCurrency
|
|
|
,case when a.gai_sqje>0 then 'pay' else 'refund' end as fundAction
|
|
|
from Tourmanager.dbo.BIZ_GroupAccountInfo a
|
|
|
where a.GAI_COLI_SN=?
|
|
|
and a.DeleteFlag=0
|
|
|
order by a.GAI_SQDate asc";
|
|
|
$ret['paymentList'] = $this->ht->query($sqlb, array($coli_sn))->result_array();
|
|
|
$sqlp = "SELECT
|
|
|
CONVERT(decimal(10,2),isnull(sum(paid.paidQuote),0)) as paidQuote
|
|
|
from (
|
|
|
select
|
|
|
isnull(a.GAI_SQJE,0) paidValue,isnull(a.GAI_SQJECurrency,'USD') paidCurrency
|
|
|
,Tourmanager.dbo.ConvertCurrencyToCurrency(1, isnull(a.GAI_SQJECurrency,'USD'), 'USD', isnull(a.GAI_SQJE,0)) as paidQuote
|
|
|
,case when a.gai_sqje>0 then 'pay' else 'refund' end as fundAction
|
|
|
from Tourmanager.dbo.BIZ_GroupAccountInfo a
|
|
|
where a.GAI_COLI_SN=?
|
|
|
and a.DeleteFlag=0
|
|
|
) paid";
|
|
|
$ret['paidQuote'] = $this->ht->query($sqlp, array($coli_sn))->row()->paidQuote;
|
|
|
$ret['paidQuote'] = number_format($ret['paidQuote'], 2, '.', '');
|
|
|
$ret['pendingBalance'] = bcsub($ret['orderTour'][0]['totalPrice'], $ret['paidQuote']);
|
|
|
// $ret['pendingBalance'] = bcsub(1, 0); // test: $ret['paidQuote']
|
|
|
$ret['pendingBalance'] = $ret['pendingBalance']>0 ? $ret['pendingBalance'] : 0;
|
|
|
if (null !== $ret['orderTour'][0]['opi']) {
|
|
|
$operator_sql = "SELECT opi.OPI_SN id,opi.OPI_Name chineseName,opi.OPI_FirstName englishName2,OPI_MoveTelephone tel,OPI_Email email,opi2.OPI2_Name englishName
|
|
|
from OperatorInfo opi
|
|
|
left join OperatorInfo2 opi2 on opi2.OPI2_OPI_SN=OPI_SN and opi2.OPI2_LGC=1
|
|
|
where OPI_SN=" . $ret['orderTour'][0]['opi'] . " AND OPI_SN<>435";
|
|
|
$ret['operator'] = $this->ht->query($operator_sql)->row();
|
|
|
}
|
|
|
return $ret;
|
|
|
}
|
|
|
/*
|
|
|
* 发送邮件
|
|
|
*/
|
|
|
function SendMail($fromName, $fromEmail, $toName, $toEmail, $subject, $body) {
|
|
|
$sql = "INSERT INTO tourmanager.dbo.Email_AutomaticSend \n"
|
|
|
. " ( \n"
|
|
|
. " M_ReplyToName, M_ReplyToEmail, M_ToName, M_ToEmail, M_Title, M_Body, M_Web, \n"
|
|
|
. " M_FromName, M_State,M_AddTime \n"
|
|
|
. " ) \n"
|
|
|
. "VALUES \n"
|
|
|
. " ( \n"
|
|
|
. " ?, ?, ?, ?, ?, N?, ?, ?, 0, GETDATE() \n"
|
|
|
. " ) ";
|
|
|
$query = $this->ht->query($sql,
|
|
|
array(substr($fromName, 0, 127), $fromEmail, substr($toName, 0, 127), $toEmail, $subject, $body, 'wechat-notify', 'Auto mail')
|
|
|
);
|
|
|
return $query;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/* End of file Order_model.php */
|