Esempio n. 1
0
 public static function send($order_id)
 {
     $order = Myorder::instance($order_id)->get();
     $order['order_product_detail'] = Myorder_product::instance()->order_product_details(array('order_id' => $order['id']));
     $order['skulist'] = '';
     $order['qlist'] = '';
     $order['amtlist'] = '';
     $order['source'] = '1';
     $skulist = array();
     $qlist = array();
     $amtlist = array();
     foreach ($order['order_product_detail'] as $key => $order_product_detail) {
         $skulist[] = $order_product_detail['SKU'];
         $qlist[] = $order_product_detail['quantity'];
         $amtlist[] = $order_product_detail['discount_price'];
     }
     $order['skulist'] = implode("|", $skulist);
     $order['qlist'] = implode("|", $qlist);
     $order['amtlist'] = implode("|", $amtlist);
     $post_url = "http://af.statcount.org/order/";
     $post_var = "order=" . $order['order_num'] . "&amount=" . $order['total_real'] . "&skulist=" . $order['skulist'] . "&qlist=" . $order['qlist'] . "&amtlist=" . $order['amtlist'] . "&cur=" . $order['currency'] . "&source=" . $order['source'];
     $result = tool::curl_pay($post_url, $post_var);
     if (stristr($result == 'SUCCESS')) {
         return true;
     } else {
         return false;
     }
 }
Esempio n. 2
0
 /**
  * 订单支付成功页获取的单独的代码,向联盟发送订单成功支付信息
  *
  * @param array $order
  * @param string $affiliate_name
  * @return string
  */
 function get_code($order, $affiliate_name = 'linkshare')
 {
     //获取站点联盟信息,并判断是否
     $affiliate = Site_affiliateService::get_instance()->query_row(array('where' => array('affiliate_name' => $affiliate_name, 'site_id' => $order['site_id'], 'mark' => 1)));
     if (empty($affiliate)) {
         return '<!-- affiliate ' . $affiliate_name . ' is not exist,or been uninstalled -->';
     }
     $prm_value = json_decode($affiliate['prm_value']);
     //货币转换相关
     $currency = $affiliate['currency'] == 'default' ? Kohana::config('affiliates.affiliatefuture.currency') : $affiliate['currency'];
     /* 订单详情 */
     $where = array();
     $where['site_id'] = $order['site_id'];
     $where['order_id'] = $order['id'];
     /* 订单产品 */
     $order_products = Myorder_product::instance()->order_products($where);
     $namelist = $amtlist = $qlist = $skulist = array();
     foreach ($order_products as $key => $order_product_detail) {
         $namelist[] = urlencode($order_product_detail['name']);
         $skulist[] = $order_product_detail['SKU'];
         $qlist[] = $order_product_detail['quantity'];
         $amount = $order_product_detail['discount_price'] * $order_product_detail['quantity'] * 100;
         $amount = str_replace(',', '', $amount);
         $amtlist[] = $currency != 'default' ? BLL_Currency::get_price($amount, $order['currency'], $currency) : $amount;
     }
     $order['namelist'] = implode("|", $namelist);
     $order['skulist'] = implode("|", $skulist);
     $order['qlist'] = implode("|", $qlist);
     $order['amtlist'] = implode("|", $amtlist);
     if ($currency != 'default') {
         $order['total_product'] = isset($order['total_products']) ? BLL_Currency::get_price($order['total_products'], $order['currency'], $currency) : BLL_Currency::get_price($order['total_product'], $order['currency'], $currency);
         $order['total_product'] = str_replace(',', '', $order['total_product']);
         //$order['total_product'] = BLL_Currency::get_price($order['total_product'], $order['currency'], $currency);
         $order['currency'] = $currency;
     }
     $save_return = Affiliate_orderService::save_affiliate_order($order, $affiliate);
     if ($save_return != 1) {
         return $save_return;
     }
     $string = "<img src=\"http://track.linksynergy.com/ep" . "?mid={$prm_value->mid}" . "&ord={$order['order_num']}" . "&skulist={$order['skulist']}" . "&qlist={$order['qlist']}" . "&amtlist={$order['amtlist']}" . "&cur={$order['currency']}" . "&namelist={$order['namelist']}\" height=\"1\" width=\"1\">";
     return $string;
 }
Esempio n. 3
0
 public function post()
 {
     $request_data = $this->input->post();
     $total_products = 0;
     $total = 0;
     if ($_POST) {
         if (!$request_data['id']) {
             remind::set(Kohana::lang('o_global.access_denied'), request::referrer());
         }
         if (!is_numeric($request_data['discount_price']) || $request_data['discount_price'] < 0 || !is_numeric($request_data['amount']) || $request_data['amount'] < 0) {
             remind::set(Kohana::lang('o_global.illegal_data'), request::referrer());
         }
         $data = Myorder_product::instance($request_data['id'])->get();
         if (!$data['id']) {
             remind::set(Kohana::lang('o_global.access_denied'), request::referrer());
         }
         $good = ProductService::get_instance()->get($data['good_id']);
         $order = Myorder::instance($data['order_id'])->get();
         if ($good['store'] == '0') {
             remind::set(Kohana::lang('o_global.bad_request'), request::referrer());
         }
         //得到合理的价格数值
         if ($good['store'] == -1 && $request_data['amount'] > 999) {
             $request_data['amount'] = 999;
         }
         if ($good['store'] != -1 && $request_data['amount'] > $good['store']) {
             $request_data['amount'] = $good['store'];
         }
         $final_price = $request_data['discount_price'] * $order['conversion_rate'];
         $set_data = array('discount_price' => $final_price, 'quantity' => $request_data['amount']);
         if (Myorder_product::instance($data['id'])->edit($set_data)) {
             //重新查询数据库,计算价格
             if (Myorder::instance($order['id'])->update_total()) {
                 remind::set(Kohana::lang('o_global.update_success'), 'order/order/edit/id/' . $data['order_id'], 'success');
             } else {
                 remind::set(Kohana::lang('o_global.update_error'), 'order/order/edit/id/' . $data['order_id'], 'error');
             }
         } else {
             remind::set(Kohana::lang('o_global.update_error'), 'order/order/edit/id/' . $data['order_id']);
         }
     } else {
         remind::set(Kohana::lang('o_global.update_error'), request::referrer());
     }
 }
Esempio n. 4
0
 /**
  * 添加订单
  */
 function do_add()
 {
     /*权限检查*/
     role::check('order_add');
     if ($_POST) {
         $post = new Validation($_POST);
         $post->pre_filter('trim');
         $post->add_rules('shipping_firstname', 'required', 'length[1,200]');
         $post->add_rules('shipping_lastname', 'required', 'length[1,200]');
         $post->add_rules('shipping_country', 'required', 'length[1,200]');
         $post->add_rules('shipping_state', 'length[1,200]');
         $post->add_rules('shipping_city', 'required', 'length[1,200]');
         $post->add_rules('shipping_address', 'required', 'length[1,200]');
         $post->add_rules('shipping_zip', 'required', 'length[1,200]');
         $post->add_rules('shipping_phone', 'required', 'length[1,200]');
         $post->add_rules('shipping_mobile', 'length[1,200]');
         $post->add_rules('billing_firstname', 'length[1,200]');
         $post->add_rules('billing_lastname', 'length[1,200]');
         $post->add_rules('billing_country', 'length[1,200]');
         $post->add_rules('billing_state', 'length[1,200]');
         $post->add_rules('billing_city', 'length[1,200]');
         $post->add_rules('billing_address', 'length[1,200]');
         $post->add_rules('billing_zip', 'length[1,200]');
         $post->add_rules('billing_phone', 'length[1,200]');
         $post->add_rules('billing_mobile', 'length[1,200]');
         $post->add_rules('good_price', 'required', 'length[1,200]');
         $post->add_rules('shipping_price', 'required', 'length[1,200]');
         if (!$post->validate()) {
             $errors = $post->errors();
             log::write('form_error', $errors, __FILE__, __LINE__);
             remind::set(Kohana::lang('o_order.user_address_wrong'), 'order/order_add/add_again', 'error');
         }
         /* 添加主订单详情*/
         $order_data = array();
         $user_id = $this->input->post('user_id');
         $email = $this->input->post('email');
         $carrier = $this->input->post('carrier');
         $currency_code = $this->input->post('code');
         if ($user_id && $email && $currency_code) {
             /* 订单用户信息*/
             $order_data['user_id'] = $user_id;
             $order_data['email'] = $email;
             /* 订单币种信息*/
             $currency = Mycurrency::instance()->get_by_code($currency_code);
             $order_data['currency'] = $currency_code;
             $order_data['conversion_rate'] = $currency['conversion_rate'];
             /* 订单国家*/
             $order_data['shipping_country'] = Mycountry::instance($post->shipping_country)->get('iso_code');
             $order_data['billing_country'] = Mycountry::instance($post->billing_country)->get('iso_code');
             /* 订单时间和IP信息*/
             $order_data['data_add'] = date('Y-m-d H:i:s', time());
             $order_data['IP'] = tool::get_long_ip();
             /* 订单号生成*/
             $order_num = '';
             do {
                 $temp = sprintf("%14.0f", date('ymd') . "00000" + rand(0, 99999) . "0000");
                 $exist_data = array();
                 $exist_data['order_num'] = $temp;
                 if (!Myorder::instance()->exist($exist_data)) {
                     $order_num = $temp;
                     break;
                 }
             } while (1);
             $order_data['order_num'] = $order_num;
             $order_data['order_status'] = '1';
             $order_data['pay_status'] = '1';
             $order_data['ship_status'] = '1';
             $order_data['user_status'] = 'NULL';
             $order_data['order_source'] = 'manual';
             $order_data['total'] = $post->good_price + $post->shipping_price;
             $order_data['total_products'] = $post->good_price;
             $order_data['total_shipping'] = $post->shipping_price;
             $order_data['total_real'] = $order_data['total'] / $order_data['conversion_rate'];
             $order_data['total_discount'] = '0.00';
             $order_data['total_paid'] = '0.00';
             $order_data['shipping_firstname'] = $post->shipping_firstname;
             $order_data['shipping_lastname'] = $post->shipping_lastname;
             $order_data['shipping_state'] = $post->shipping_state;
             $order_data['shipping_city'] = $post->shipping_city;
             $order_data['shipping_address'] = $post->shipping_address;
             $order_data['shipping_zip'] = $post->shipping_zip;
             $order_data['shipping_phone'] = $post->shipping_phone;
             $order_data['shipping_mobile'] = $post->shipping_mobile;
             $order_data['billing_firstname'] = $post->billing_firstname;
             $order_data['billing_lastname'] = $post->billing_lastname;
             $order_data['billing_state'] = $post->billing_state;
             $order_data['billing_city'] = $post->billing_city;
             $order_data['billing_address'] = $post->billing_address;
             $order_data['billing_zip'] = $post->billing_zip;
             $order_data['billing_phone'] = $post->billing_phone;
             $order_data['billing_mobile'] = $post->billing_mobile;
             $order_data['carrier'] = $carrier;
             $order_data['active'] = 1;
         } else {
             remind::set(Kohana::lang('o_order.data_trans_wrong'), 'order/order_add', 'error');
         }
         /* 添加订单,返回订单数据*/
         $order_id = Myorder::instance()->add($order_data);
         $order = Myorder::instance($order_id)->get();
         /* 添加订单产品信息*/
         $session = Session::instance();
         $cart_data = $session->get('cart_data');
         if (isset($cart_data) && is_array($cart_data) && count($cart_data) && !empty($order['order_num'])) {
             foreach ($cart_data as $key => $rs) {
                 $good_full_data = ProductService::get_instance()->get($key);
                 $order_product_detail_data = array();
                 $order_product_detail_data['order_id'] = $order['id'];
                 $order_product_detail_data['product_type'] = ProductService::PRODUCT_TYPE_GOODS;
                 $order_product_detail_data['dly_status'] = 'storage';
                 //$order_product_detail_data['product_id']            = $good_full_data['product_id'];
                 $order_product_detail_data['good_id'] = $key;
                 $order_product_detail_data['quantity'] = $rs;
                 $order_product_detail_data['sendnum'] = '0';
                 $order_product_detail_data['price'] = $good_full_data['price'];
                 $order_product_detail_data['discount_price'] = $good_full_data['price'];
                 $order_product_detail_data['weight'] = $good_full_data['weight'];
                 //$order_product_detail_data['name']                = $good_full_data['name_manage'];
                 $order_product_detail_data['name'] = $good_full_data['title'];
                 $order_product_detail_data['SKU'] = $good_full_data['sku'];
                 $order_product_detail_data['brief'] = $good_full_data['brief'];
                 $order_product_detail_data['date_add'] = date('Y-m-d H:i:s', time());
                 $order_product_detail_data['link'] = product::permalink($good_full_data);
                 order::do_order_product_detail_data_by_good(&$order_product_detail_data, $good_full_data, $good_full_data['default_image_id']);
                 $order_product_detail = Myorder_product::instance()->add($order_product_detail_data);
             }
         }
         /*验证是否添加成功,添加成功返回订单号*/
         if (!empty($order['order_num']) && $order_product_detail) {
             remind::set(Kohana::lang('o_order.add_order_success') . $order['order_num'], 'order/order', 'success');
         } else {
             remind::set(Kohana::lang('o_order.add_order_wrong'), 'order/order_add', 'error');
         }
     }
 }
Esempio n. 5
0
 /**
  *  订单导出
  */
 public function do_export($id = 0)
 {
     // 初始化返回数据
     $return_data = array();
     //请求结构体
     $request_data = array();
     try {
         //权限验证
         role::check('order_export');
         if ($id < 1) {
             throw new MyRuntimeException(Kohana::lang('o_global.data_load_error'), 403);
         }
         if (!$id) {
             throw new MyRuntimeException(Kohana::lang('o_global.data_load_error'), 403);
         }
         if ($_POST) {
             /* 验证是否选择了订单 */
             if (!isset($_POST['order_ids'])) {
                 throw new MyRuntimeException(Kohana::lang('o_order.select_order_export'), 403);
             }
             $order_ids = $this->input->post('order_ids');
             //array(1,2);
             /* 得到当前的导出配置 */
             $data = Myorder_export::instance($id)->get();
             $output_field_ids = unserialize($data['export_ids']);
             /* 导出格式错误 */
             if (!is_array($output_field_ids) || count($output_field_ids) < 1) {
                 throw new MyRuntimeException(Kohana::lang('o_order.order_export_config_error'), 403);
             }
             $xls = export::instance();
             //$xls->debug(true);//开测试模式
             $xls->set_output_field_ids($output_field_ids);
             /* 订单状态,支付状态,物流状态 */
             $order_status = Kohana::config('order.order_status');
             $pay_status = Kohana::config('order.pay_status');
             $ship_status = Kohana::config('order.ship_status');
             $result = array();
             foreach ($order_ids as $order_id) {
                 $order = Myorder::instance($order_id)->get();
                 $shipping_country_name = Mycountry::instance()->get_name_by_iso_code($order['shipping_country']);
                 $billing_country_name = Mycountry::instance()->get_name_by_iso_code($order['billing_country']);
                 $order_products = Myorder_product::instance()->order_product_details(array('order_id' => $order['id']));
                 $order['shipping_country_name'] = $shipping_country_name;
                 $order['billing_country_name'] = $billing_country_name;
                 $order['pay_status_name'] = $pay_status[$order['pay_status']]['name'];
                 $order['ship_status_name'] = $ship_status[$order['ship_status']]['name'];
                 $order['order_status_name'] = $order_status[$order['order_status']]['name'];
                 $order['ip'] = long2ip($order['ip']);
                 if (is_array($order_products) && count($order_products) > 0) {
                     foreach ($order_products as $key => $value) {
                         $order_products[$key]['total'] = round($value['discount_price'] * $value['quantity'] * $order['conversion_rate'], 2);
                     }
                 }
                 $order['product'] = $order_products;
                 $xls->set_order_line($order);
             }
             $xls->output();
             exit;
         }
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         var_dump($return_struct);
         exit;
         //TODO 异常处理
         //throw $ex;
         if ($this->is_ajax_request()) {
             $this->template = new View('layout/empty_html');
             $this->template->content = $return_struct['msg'];
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             /* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             /* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }
Esempio n. 6
0
 /**
  *  显示退货单细节
  */
 public function return_detail($id)
 {
     /* 权限检查*/
     role::check('order_doc_return');
     $return = Myorder_return_log::instance($id)->get();
     $ship_status = Kohana::config('order.ship_status');
     $return_list = array();
     $return_list['id'] = $return['id'];
     //退货单id
     $return_list['return_num'] = $return['return_num'];
     //退货单号
     $return_list['order_num'] = Myorder::instance($return['order_id'])->get('order_num');
     //订单号
     $return_list['carrier'] = DeliveryService::get_instance()->get_delivery_name($return['carrier_id']);
     $return_list['email'] = $return['email'];
     //用户邮箱
     $return_list['manager'] = Mymanager::instance($return['manager_id'])->get('username');
     //操作员
     $return_list['currency'] = $return['currency'];
     //币种
     $return_list['total_shipping'] = $return['total_shipping'];
     //运费金额
     $return_list['return_status'] = $ship_status[$return['return_status_id']]['name'];
     //退货状态
     $return_list['content_admin'] = $return['content_admin'];
     //管理员备注
     $return_list['content_user'] = $return['content_user'];
     //用户备注
     $return_list['date_add'] = $return['date_add'];
     //添加时间
     /* 得到订单货品信息 */
     $return_list['return_data'] = array();
     $return_data = unserialize($return['return_data']);
     $order_products = Myorder_product::instance()->get_order_products_by_order_id($return['order_id']);
     foreach ($order_products as $val) {
         foreach ($return_data as $k => $v) {
             if ($v['id'] == $val['id']) {
                 $return_list['return_data'][$k]['SKU'] = $val['SKU'];
                 $return_list['return_data'][$k]['name'] = $val['name'];
                 $return_list['return_data'][$k]['attribute_style'] = empty($val['attribute_style']) ? '默认' : $val['attribute_style'];
                 $return_list['return_data'][$k]['quantity'] = $val['quantity'];
                 $return_list['return_data'][$k]['sendnum'] = isset($v['send_num']) ? $v['send_num'] : '未知';
                 $return_list['return_data'][$k]['returnnum'] = $v['return_num'];
             }
         }
     }
     $this->template = new View('layout/commonfix_html');
     $this->template->content = new view("order/order_doc/doc_detail/return_detail");
     $this->template->content->return_list = $return_list;
 }