You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/destination/models/import_model.php

460 lines
23 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Import_model extends CI_Model {
function __construct() {
parent::__construct();
//$this->DEST = $this->load->database('DEST', TRUE);
$this->HT = $this->load->database('HT', TRUE);
}
public function business() {
//1.检查最后的商务订单SN用来判断新的订单SN开始查询位置
$sql = "
SELECT TOP 1
o.o_source_sn
FROM orders o
WHERE o.o_source = N'CH网前'
ORDER BY
o.o_sn DESC
";
$query = $this->DEST->query($sql);
$last_coli_sn = 0;
if ($query->result()) {
$row = $query->row();
$last_coli_sn = $row->o_source_sn;
}
//2.查询新的商务订单,条件是分配给图兰朵的线路
$sql = "
SELECT bcli.COLI_SN,
bcli.COLI_ID,
bcli.COLI_GUT_SN,
bcli.COLI_Memo,
bcli.COLI_OrderDetailText,
bcli.COLI_ApplyDate,
bcli.COLI_Price,
bcli.COLI_sourcetype,
bcli.COLI_servicetype,
ISNULL(bcli.COLI_OrderSource,'') COLI_OrderSource
FROM BIZ_ConfirmLineInfo bcli
WHERE bcli.COLI_sourcetype = 32090
AND bcli.DeleteFlag = 0
AND bcli.COLI_WebCode IN ('CHT')
AND bcli.COLI_SN > ?
ORDER BY
bcli.COLI_SN ASC
";
$query_newtour = $this->HT->query($sql, array($last_coli_sn));
if ($query_newtour) {
$tour_list = $query_newtour->result();
//3.循环把新订单插入目的地系统的订单表
foreach ($tour_list as $item_tour) {
//添加主订单表
$o_orderno = $item_tour->COLI_ID; //生成订单号
$o_ordertype = '一地线路';
$o_status = '新订单';
$o_source = $this->get_source_type($item_tour->COLI_sourcetype); //今后可能有TA、北京目的地等来源类型,根据COLI_sourcetype来判断
$o_source_sn = $item_tour->COLI_SN;
$o_contractors = '1'; //操作者ID用来识别地接社或者个人
$o_memo = $item_tour->COLI_Memo;
$o_date = $item_tour->COLI_ApplyDate;
$o_device = $this->get_source_device($item_tour->COLI_OrderSource);
$insert_order_id = $this->add_orders($o_orderno, $o_ordertype, $o_status, $o_source, $o_source_sn, $o_contractors, $o_memo, $o_device, $o_date);
//添加主订单表 end
if ($insert_order_id) {
//添加付款信息到支付表
$sql = "
SELECT bgai.GAI_SN,
bgai.GAI_COLI_SN,
bgai.GAI_Type,
bgai.GAI_SQJE,
bgai.GAI_SQDate,
bgai.GAI_SSDate,
bgai.GAI_Money,
bgai.GAI_SQJECurrency,
ISNULL(bgai.GAI_CusName,'') GAI_CusName,
bgai.GAI_CusEmail,
bgai.DeleteFlag,
bgai.LastEditTime,
ISNULL(bgai.GAI_Memo,'') GAI_Memo
FROM BIZ_GroupAccountInfo bgai
WHERE bgai.GAI_COLI_SN = ?
ORDER BY
bgai.GAI_SN ASC
";
$query_bgai = $this->HT->query($sql, array($item_tour->COLI_SN));
if ($query_bgai) {
foreach ($query_bgai->result() as $item_bgai) {
$pm_money = $item_bgai->GAI_SQJE;
$pm_money_currency = $item_bgai->GAI_SQJECurrency;
$pm_money_type = $this->get_payment_type($item_bgai->GAI_Type);
$pm_money_date = $item_bgai->GAI_SQDate;
$pm_rmb = $item_bgai->GAI_Money;
$pm_rmb_date = $item_bgai->GAI_SSDate;
$pm_customer = $item_bgai->GAI_CusName;
$pm_customer_email = $item_bgai->GAI_CusEmail;
$pm_company = 'cht';
$pm_memo = $item_bgai->GAI_Memo;
$pm_delete = $item_bgai->DeleteFlag;
$pm_date = $item_bgai->LastEditTime;
$this->add_payments($insert_order_id, $pm_money, $pm_money_currency, $pm_money_type, $pm_money_date, $pm_rmb, $pm_rmb_date, $pm_customer, $pm_customer_email, $pm_company, $pm_memo, $pm_delete, $pm_date);
}
}
//添加付款信息到支付表 end
//增加订单子表
$sql = "
SELECT bcld.COLD_SN,
bcld.COLD_TotalPrice,
bcld.COLD_Count,
bcld.COLD_PersonNum,
bcld.COLD_ChildNum,
bcld.COLD_BabyNum,
bcld.COLD_StartDate,
bcld.COLD_EndDate,
bcld.COLD_MemoText,
ISNULL(bcld.COLD_Describe,'') COLD_Describe
FROM BIZ_ConfirmLineDetail bcld
WHERE bcld.COLD_COLI_SN = ?
AND bcld.DeleteFlag = 0
ORDER BY
bcld.COLD_SN ASC
";
$query_bcld = $this->HT->query($sql, array($item_tour->COLI_SN));
if ($query_bcld) {
foreach ($query_bcld->result() as $item_bcld) {
$occ_o_sn = $insert_order_id;
$occ_circuitcode = $item_bcld->COLD_MemoText; //商务订单线路code lzq
$occ_adultcount = $item_bcld->COLD_PersonNum;
$occ_childrencount = $item_bcld->COLD_ChildNum;
$occ_babycount = $item_bcld->COLD_BabyNum;
$package_info = $this->package_info($occ_circuitcode);
$occ_days = empty($package_info) ? '-1' : $package_info->PAG_NeedTime;
$occ_startdate = $item_bcld->COLD_StartDate;
$occ_detailtext = $item_tour->COLI_OrderDetailText . '------------------------' . $item_bcld->COLD_Describe; //添加主表的客人其他需求
$occ_price = $item_bcld->COLD_TotalPrice;
$order_circuit_id = $this->add_order_circuit($occ_o_sn, $occ_circuitcode, $occ_adultcount, $occ_childrencount, $occ_babycount, $occ_days, $occ_startdate, $occ_detailtext, $occ_price);
if ($order_circuit_id) {
// 插入客人表
$sql = "
SELECT bbp.BPE_SN,
ISNULL(bbp.BPE_FirstName, '') BPE_FirstName,
ISNULL(bbp.BPE_MiddleName, '') BPE_MiddleName,
ISNULL(bbp.BPE_LastName, '') BPE_LastName,
bbp.BPE_Passport,
bbp.BPE_Nationality,
bbp.BPE_SEX,
bbp.BPE_PassExpdate
FROM BIZ_BookPeople bbp
WHERE EXISTS (
SELECT TOP 1 1
FROM BIZ_BookPeopleList bbpl
WHERE bbpl.BPL_COLD_SN = ?
AND bbpl.BPL_BPE_SN = bbp.BPE_SN
)
";
$query_member = $this->HT->query($sql, array($item_bcld->COLD_SN));
if ($query_member) {
foreach ($query_member->result() as $item_member) {
$cus_firstname = $item_member->BPE_FirstName;
$cus_middlename = $item_member->BPE_MiddleName;
$cus_lastname = $item_member->BPE_LastName;
$cus_nationality = $item_member->BPE_Nationality;
$cus_passport = $item_member->BPE_Passport;
$cus_passport_validdate = $item_member->BPE_PassExpdate;
$cus_phone = '';
$cus_email = '';
$cus_backup_email='';
$cus_sex = ($item_member->BPE_SEX == 1) ? '男' : '女';
$this->add_customer($order_circuit_id, 'order_circuit', $cus_firstname, $cus_middlename, $cus_lastname, $cus_nationality, $cus_passport, $cus_passport_validdate, $cus_phone, $cus_email,$cus_backup_email, $cus_sex);
}
}
}
}
}
//4.1增加订单子表end
//4.4插入联系人详细信息表
$sql = "
SELECT bg.GUT_SN,
ISNULL(bg.GUT_FirstName, '') GUT_FirstName,
ISNULL(bg.GUT_LastName, '') GUT_LastName,
bg.GUT_NationalityID,
bg.GUT_Passport,
bg.GUT_TEL,
bg.GUT_Email,
bg.GUT_Email2,
bg.GUT_SEX
FROM BIZ_GUEST bg
WHERE bg.GUT_SN = ?
";
$query_guest = $this->HT->query($sql, array($item_tour->COLI_GUT_SN));
if ($query_guest) {
foreach ($query_guest->result() as $item_guest) {
$cus_firstname = $item_guest->GUT_FirstName;
$cus_middlename = '';
$cus_lastname = $item_guest->GUT_LastName;
$cus_nationality = $item_guest->GUT_NationalityID;
$cus_passport = $item_guest->GUT_Passport;
$cus_passport_validdate = '';
$cus_phone = $item_guest->GUT_TEL;
$cus_email = $item_guest->GUT_Email;
$cus_backup_email = $item_guest->GUT_Email2;
$cus_sex = ($item_guest->GUT_SEX == 1) ? '男' : '女';
$this->add_customer($insert_order_id, 'orders', $cus_firstname, $cus_middlename, $cus_lastname, $cus_nationality, $cus_passport, $cus_passport_validdate, $cus_phone, $cus_email, $cus_backup_email, $cus_sex);
}
}
}
}
}
}
public function tour() {
//1.检查最后的传统订单SN用来判断新的订单SN开始查询位置
$sql = "
SELECT TOP 1
o.o_source_sn
FROM orders o
WHERE o.o_source <> N'CH网前'
ORDER BY
o.o_sn DESC
";
$query = $this->DEST->query($sql);
$last_coli_sn = 0;
if ($query->result()) {
$row = $query->row();
$last_coli_sn = $row->o_source_sn;
}
//2.查询新的传统订单,条件是分配给图兰朵的线路
$sql = "
SELECT cli.COLI_SN,
cli.COLI_ID,
cli.COLI_Memo,
cli.COLI_OrderDetailText,
cli.COLI_PersonNum,
cli.COLI_ChildNum,
cli.COLI_BabyNum,
cli.COLI_Days,
cli.COLI_OrderStartDate,
cli.COLI_ApplyDate,
cli.COLI_Price,
cli.COLI_sourcetype,
cli.COLI_servicetype,
ISNULL(cli.COLI_OrderSource,'') COLI_OrderSource
FROM ConfirmLineInfo cli
WHERE cli.COLI_WebCode IN ('cht')
AND cli.COLI_OPI_ID = 318
AND cli.COLI_Sended = 1
AND cli.DeleteFlag = 0
AND cli.COLI_SN > ?
ORDER BY
cli.COLI_SN ASC
";
$query_newtour = $this->HT->query($sql, array($last_coli_sn));
if ($query_newtour) {
//3.循环把新订单插入目的地系统的订单表
foreach ($query_newtour->result() as $item_tour) {
$o_orderno = $item_tour->COLI_ID; //生成订单号
$o_ordertype = '一地线路';
$o_status = '新订单';
$o_source = $this->get_source_type($item_tour->COLI_sourcetype);
$o_source_sn = $item_tour->COLI_SN;
$o_contractors = '1'; //操作者ID用来识别地接社或者个人
$o_memo = $item_tour->COLI_Memo;
$o_date = $item_tour->COLI_ApplyDate;
$o_device = $this->get_source_device($item_tour->COLI_OrderSource);
$insert_order_id = $this->add_orders($o_orderno, $o_ordertype, $o_status, $o_source, $o_source_sn, $o_contractors, $o_memo, $o_device, $o_date);
//4.插入主表成功后,添加订单子表和客人信息表
if ($insert_order_id) {
//增加订单子表
$occ_o_sn = $insert_order_id;
$occ_circuitcode = $item_tour->COLI_Memo;
$occ_adultcount = $item_tour->COLI_PersonNum;
$occ_childrencount = $item_tour->COLI_ChildNum;
$occ_babycount = $item_tour->COLI_BabyNum;
$occ_days = $item_tour->COLI_Days;
$occ_startdate = $item_tour->COLI_OrderStartDate;
$occ_detailtext = $item_tour->COLI_OrderDetailText;
$occ_price = $item_tour->COLI_Price;
$query_circuit_id = $this->add_order_circuit($occ_o_sn, $occ_circuitcode, $occ_adultcount, $occ_childrencount, $occ_babycount, $occ_days, $occ_startdate, $occ_detailtext, $occ_price);
//插入客人信息表
$sql = "
SELECT ISNULL(mi.MEI_FirstName,'') MEI_FirstName,
ISNULL(mi.MEI_MiddleName,'') MEI_MiddleName,
ISNULL(mi.MEI_LastName,'') MEI_LastName,
mi.MEI_Country,
mi.MEI_PassportNo,
mi.MEI_PassportValidDate,
mi.MEI_Phone,
mi.MEI_MailList,
mi.MEI_Mail,
mi.MEI_Gender,
cu.CUL_IsLinkMan
FROM MEmberInfo mi
INNER JOIN CUstomerList cu
ON cu.CUL_CUI_SN = mi.MEI_SN
WHERE EXISTS (
SELECT TOP 1 *
FROM CUstomerList cl
WHERE cl.CUL_CUI_SN = mi.MEI_SN
AND cl.CUL_COLI_SN = cu.CUL_COLI_SN
AND cl.CUL_COLI_SN = ?
)
";
$query_member = $this->HT->query($sql, array($item_tour->COLI_SN));
if ($query_member) {
foreach ($query_member->result() as $item_member) {
$cus_firstname = $item_member->MEI_FirstName;
$cus_middlename = $item_member->MEI_MiddleName;
$cus_lastname = $item_member->MEI_LastName;
$cus_nationality = $item_member->MEI_Country;
$cus_passport = $item_member->MEI_PassportNo;
$cus_passport_validdate = $item_member->MEI_PassportValidDate;
$cus_phone = $item_member->MEI_Phone;
$cus_email = $item_member->MEI_MailList;
$cus_backup_email = $item_member->MEI_Mail;
$cus_sex = ($item_member->MEI_Gender == 100001) ? '男' : '女';
if ($item_member->CUL_IsLinkMan) {
$this->add_customer($query_circuit_id, 'orders', $cus_firstname, $cus_middlename, $cus_lastname, $cus_nationality, $cus_passport, $cus_passport_validdate, $cus_phone, $cus_email, $cus_backup_email, $cus_sex);
} else {
$this->add_customer($query_circuit_id, 'order_circuit', $cus_firstname, $cus_middlename, $cus_lastname, $cus_nationality, $cus_passport, $cus_passport_validdate, $cus_phone, $cus_email, $cus_backup_email, $cus_sex);
}
}
}
}
}
}
}
function add_customer($oc_subordersn, $oc_type, $cus_firstname, $cus_middlename, $cus_lastname, $cus_nationality, $cus_passport, $cus_passport_validdate, $cus_phone, $cus_email, $cus_backup_email, $cus_sex) {
$sql = "
INSERT INTO customer
(
cus_firstname,cus_middlename,cus_lastname,cus_nationality,cus_passport,cus_passport_validdate,
cus_phone,cus_email,cus_backup_email,cus_sex,cus_delete,cus_date
)
VALUES
(N?,N?,N?,?,?,?,?,?,?,N?,0,getdate())
";
$query_member_insert = $this->DEST->query($sql, array($cus_firstname, $cus_middlename, $cus_lastname, $cus_nationality, $cus_passport, $cus_passport_validdate, $cus_phone, $cus_email, $cus_backup_email, $cus_sex));
if ($query_member_insert) {
$query_member_id = $this->DEST->last_id('customer');
$sql = "
INSERT INTO ordercus
( oc_subordersn,oc_cus_sn,oc_type)
VALUES
(?,?,?)
";
$this->DEST->query($sql, array($oc_subordersn, $query_member_id, $oc_type));
return true;
}
return false;
}
function add_orders($o_orderno, $o_ordertype, $o_status, $o_source, $o_source_sn, $o_contractors, $o_memo, $o_device, $o_date) {
$sql = "
IF NOT EXISTS(SELECT TOP 1 1 FROM orders WHERE o_source=N'$o_source' AND o_source_sn=$o_source_sn)
INSERT INTO orders
(
o_orderno,o_ordertype,o_status,o_source, o_source_sn,o_contractors,o_delete,o_memo,o_device, o_date
)
VALUES
(?,N?,N?,N?,?,?,0,?,N?,? )
";
$query = $this->DEST->query($sql, array($o_orderno, $o_ordertype, $o_status, $o_source, $o_source_sn, $o_contractors, $o_memo, $o_device, $o_date));
if ($query) {
return $this->DEST->last_id('orders');
}
return false;
}
function add_payments($pm_o_sn, $pm_money, $pm_money_currency, $pm_money_type, $pm_money_date, $pm_rmb, $pm_rmb_date, $pm_customer, $pm_customer_email, $pm_company, $pm_memo, $pm_delete, $pm_date) {
$sql = "
INSERT INTO payments
(
pm_o_sn,pm_money,pm_money_currency,pm_money_type,pm_money_date,pm_rmb,pm_rmb_date,pm_customer,pm_customer_email,pm_company,pm_memo,pm_delete,pm_date
)
VALUES
(?,?,?,?,?,?,?,N?,?,N?,N?,?,GETDATE())
";
$query = $this->DEST->query($sql, array($pm_o_sn, $pm_money, $pm_money_currency, $pm_money_type, $pm_money_date, $pm_rmb, $pm_rmb_date, $pm_customer, $pm_customer_email, $pm_company, $pm_memo, $pm_delete, $pm_date));
if ($query) {
return $this->DEST->last_id('payments');
}
return false;
}
function add_order_circuit($occ_o_sn, $occ_circuitcode, $occ_adultcount, $occ_childrencount, $occ_babycount, $occ_days, $occ_startdate, $occ_detailtext, $occ_price) {
$sql = "
INSERT INTO order_circuit
(occ_o_sn,occ_circuitcode,occ_adultcount,occ_childrencount,occ_babycount,occ_days,occ_startdate,occ_detailtext,occ_price,occ_date
)
VALUES
( ?, ?, ?,?,?, ?,?, N?,?,GETDATE())
";
$query = $this->DEST->query($sql, array($occ_o_sn, $occ_circuitcode, $occ_adultcount, $occ_childrencount, $occ_babycount, $occ_days, $occ_startdate, $occ_detailtext, $occ_price));
if ($query) {
return $this->DEST->last_id('order_circuit');
}
return false;
}
//获取支付方式文字,用编号转换
function get_payment_type($type_code) {
$payment_types = $this->lang->line('payment_types');
if (isset($payment_types[$type_code])) {
return $payment_types[$type_code];
}
return '其他';
}
//获取订单来源方式,用编号转换
function get_source_type($type_code) {
$source_types = $this->lang->line('order_sourcetypes');
if (isset($source_types[$type_code])) {
return $source_types[$type_code];
}
return $type_code . '';
}
function package_info($pag_code) {
if(empty($pag_code)){
return false;
}
$sql = "
SELECT TOP 1 bpi.PAG_SN,
bpi.PAG_Code,
bpi.PAG_Type,
bpi.PAG_NeedTime,
bpi.PAG_URL
FROM BIZ_PackageInfo bpi
WHERE bpi.PAG_Code = ?
";
$query = $this->HT->query($sql, array($pag_code));
if ($query->num_rows() > 0) {
$row = $query->row();
return $row;
} else {
return FALSE;
}
}
//获取客人使用的设备
function get_source_device($type_code) {
$source_devices = $this->lang->line('order_devices');
if (isset($source_devices[$type_code])) {
return $source_devices[$type_code];
}
return $type_code . '';
}
}