<?php
/**
 * @author pony
 * @todo 批量订单转换
 */
require_once ('config.php');
date_default_timezone_set('Asia/Shanghai');
$date	= date("Y-m-d H:i:s");
set_time_limit(0);
$orderInfo	= Service_ExchangeOrder::getByCondition(array('exchange_status'=>1));
foreach($orderInfo as $key=>$val){
	try {
		$url	= 'http://113.91.161.111:8300/CSCM/CSCMReciveOrder.aspx';
		$customercode = '1234';
		$sign = '370757D2DF51AE456BF63C165FC71817';
		$content = '';
		$xml	= '
			<createExchangeOrderInfo>
				<order_type>'.$val['order_type'].'</order_type>
				<reference_no>'.$val['reference_no'].'</reference_no>
				<warehouse_code>'.$val['warehouse_code'].'</warehouse_code>
				<service_type>'.$val['service_type'].'</service_type>
				<pickup_type>'.$val['pickup_type'].'</pickup_type>
				<shipper_contact>'.$val['shipper_contact'].'</shipper_contact>
				<shipper_company>'.$val['shipper_company'].'</shipper_company>
				<shipper_address1>'.$val['shipper_address1'].'</shipper_address1>
				<shipper_address2>'.$val['shipper_address2'].'</shipper_address2>
				<shipper_city>'.$val['shipper_city'].'</shipper_city>
				<shipper_state>'.$val['shipper_state'].'</shipper_state>
				<shipper_postal_code>'.$val['shipper_postal_code'].'</shipper_postal_code>
				<shipper_email>'.$val['shipper_email'].'</shipper_email>
				<shipper_country>'.$val['shipper_country'].'</shipper_country>
				<shipper_phone>'.$val['shipper_phone'].'</shipper_phone>
				<recipient_contact>'.$val['recipient_contact'].'</recipient_contact>
				<recipient_company>'.$val['recipient_company'].'</recipient_company>
				<recipient_address1>'.$val['recipient_address1'].'</recipient_address1>
				<recipient_address2>'.$val['recipient_address2'].'</recipient_address2>
				<recipient_city>'.$val['recipient_city'].'</recipient_city>
				<recipient_state>'.$val['recipient_state'].'</recipient_state>
				<recipient_postal>'.$val['recipient_postal'].'</recipient_postal>
				<recipient_phone>'.$val['recipient_phone'].'</recipient_phone>
				<recipient_country>'.$val['recipient_country'].'</recipient_country>
				<recipient_email>'.$val['recipient_email'].'</recipient_email>
				<order_weight>'.$val['order_weight'].'</order_weight>
				<customs_value>'.$val['customs_value'].'</customs_value>
				<commercial_invoice>'.$val['commercial_invoice'].'</commercial_invoice>
				<ship_date>'.$val['ship_date'].'</ship_date>
				<currency_type>'.$val['currency_type'].'</currency_type>
				<reference_notes>'.$val['reference_notes'].'</reference_notes>
				<package_description>'.$val['package_description'].'</package_description>
				<tracking_number>'.$val['tracking_number'].'</tracking_number>
				<company_close_time>'.$val['company_close_time'].'</company_close_time>
				<package_ready_time>'.$val['package_ready_time'].'</package_ready_time>
				<dispatch_date>'.$val['dispatch_date'].'</dispatch_date>
				<insurance>'.$val['insurance'].'</insurance>
				<carriage_value>'.$val['carriage_value'].'</carriage_value>
				<total>'.$val['total'].'</total>
				<freight>'.$val['freight'].'</freight>
				<number_Of_Pieces>'.$val['number_Of_Pieces'].'</number_Of_Pieces>';
			$parcelDetail	= Service_ParcelDetail::getByCondition(array('order_code'=>$orderCode));
			foreach($parcelDetail as $k1=>$v1){
				$xml .= '<ParcelDetail>
					<tracking_number>'.$v1['tracking_number'].'</ tracking_number>
					<parcel_description>'.$v1['parcel_description'].'</parcel_description>
					<cif_price>'.$v1['cif_price'].'</cif_price>
					<customs_value>'.$v1['customs_value'].'</customs_value>
					<carriage_value >'.$v1['carriage_value'].'</carriage_value>
					<total>'.$v1['total'].'</total >
					<commodity_quantity>'.$v1['commodity_quantity'].'</commodity_quantity>
					<subtotal>'.$v1['subtotal'].'</subtotal>
					<parcel_height>'.$v1['parcel_height'].'</parcel_height>
					<parcel_width>'.$v1['parcel_width'].'</parcel_width>
					<parcel_length>'.$v1['parcel_length'].'</parcel_length>
					<parcel_weight>'.$v1['parcel_weight'].'</parcel_weight>';
				
				$parcelProduct	= Service_ParcelProduct::getByCondition(array('parcel_code'=>$v1['parcel_code']));
				foreach($parcelProduct as $k2=>$v2){
					$xml .= '<ParcelProduct>
						<harmonized_code>'.$v2['harmonized_code'].'</harmonized_code>
						<commodity_description>'.$v2['commodity_description'].'</commodity_description>
						<commodity_sku>'.$v2['commodity_sku'].'</commodity_sku>
						<commodity_value>'.$v2['commodity_value'].'</commodity_value>
						<commodity_weight>'.$v2['commodity_weight'].'</commodity_weight>
					</ParcelProduct>';
				}
				$xml .= '</ParcelDetail>';
			}
			$xml .= '</createExchangeOrderInfo>';
		
		$header	= 'application/x-www-form-urlencoded; charset=UTF-8';
		$curlPost = 'customercode='.urlencode($customercode).'&
		sign='.urlencode($sign).'&
		content='.urlencode($xml).'';
		
		$ch = curl_init();//初始化curl
		curl_setopt($ch,CURLOPT_URL,$url);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
		$data = curl_exec($ch);
		curl_close($ch);
		print_r($data);exit;
		
		$db = Common_Common::getAdapter();
		$db->beginTransaction();
		Service_ExchangeOrder::update(array('exchange_status'=>1),$val['eo_id']);
		$warehouseInfo	= Service_Warehouse::getByField($val['warehouse_code'],'warehouse_code','*');
		$logisticsOrderParam	= array(
			'logistics_code'		=> $val['order_code'],
			'customer_id'			=> '',
			'customer_code'			=> '',
			'warehouse_id'			=> $warehouseInfo['warehouse_id'],
			'reference_no'			=> $val['reference_no'],
			'sm_code'				=> '',
			'lo_weight'				=> $val['order_weight'],
			'lo_status'				=> 2,
			'lo_create_time'		=> $date,
			'ref_tracking_number'	=> $val['tracking_number'],
		);
		Service_LogisticsOrder::add($logisticsOrderParam);
		
		$logisticsOrderAddressParam1	= array(
			'logistics_code'	=> $val['order_code'],
			'loa_name'			=> $val['shipper_contact'],
			'loa_company'		=> $val['shipper_company'],
			'loa_country'		=> $val['shipper_country_id'],
			'loa_zipcode'		=> $val['shipper_postal_code'],
			'loa_phone'			=> $val['shipper_phone'],
			'loa_province'		=> $val['shipper_state'],
			'loa_city'			=> $val['shipper_city'],
			'loa_address'		=> $val['shipper_address1'].' '.$val['shipper_address2'],
			'loa_type'			=> 0,
		);
		Service_LogisticsOrderAddress::add($logisticsOrderAddressParam1);

		$logisticsOrderAddressParam2	= array(
			'logistics_code'	=> $val['order_code'],
			'loa_name'			=> $val['recipient_contact'],
			'loa_company'		=> $val['recipient_company'],
			'loa_country'		=> $val['recipient_country_id'],
			'loa_zipcode'		=> $val['recipient_postal'],
			'loa_phone'			=> $val['recipient_phone'],
			'loa_province'		=> $val['recipient_state'],
			'loa_city'			=> $val['recipient_city'],
			'loa_address'		=> $val['recipient_address1'].' '.$val['recipient_address2'],
			'loa_type'			=> 1,
		);
		Service_LogisticsOrderAddress::add($logisticsOrderAddressParam2);
		
		$logisticsOrderLogParam	= array(
			'logistics_code'		=> $val['order_code'],
			'lol_comment'			=> '订单新增',
			'lol_create_time'		=> $date,
			'lol_operator'			=> 0,
			'lol_ip'				=> '127.0.0.1',
			'order_status_from'		=> 2,
			'order_status_to'		=> 2,
		);
		
		Service_LogisticsOrderLog::add($logisticsOrderLogParam);
		$productUom		= Service_ProductUom::getByField('件','pu_name','*');
		$parcelDetail	= Service_ParcelDetail::getByCondition(array('order_code'=>$val['order_code']));
		foreach($parcelDetail as $k1=>$v1){
			$parcelProduct	= Service_ParcelProduct::getByCondition(array('parcel_code'=>$v1['parcel_code']));
			foreach($parcelProduct as $k2=>$v2){
				$logisticsOrderHsParam	= array(
					'logistics_code'	=> $val['order_code'],
					'loh_hs_code'		=> $v2['harmonized_code'],
					'loh_hs_name'		=> $v2['commodity_description'],
					'loh_quantity'		=> $v2['commodity_qty'],
					'loh_price'			=> $v2['commodity_value'],
					'loh_total_price'	=> $v2['commodity_qty']*$v2['commodity_value'],
					'loh_unit'			=> $productUom['pu_code'],
				);
				Service_LogisticsOrderHs::add($logisticsOrderHsParam);
			}
		}
		
		$db->commit();
	} catch (Exception $e) {
		$db->rollBack();
		echo $e->getMessage();
	}
	
}
