예제 #1
0
 function showEdit($nDTid)
 {
     if (!$nDTid) {
         $this->newTypeStep();
         return;
     }
     $oObj =& $this->system->loadModel('trading/delivery');
     $aData = $oObj->getDlTypeById($nDTid);
     $this->pagedata['config'] = unserialize($aData['dt_config']);
     $this->pagedata['dt_id'] = $nDTid;
     $this->pagedata['dt_name'] = $aData['dt_name'];
     $this->pagedata['dt_status'] = $aData['dt_status'];
     $this->pagedata['ordernum'] = $aData['ordernum'];
     $this->pagedata['protect'] = $aData['protect'];
     $this->pagedata['hasCod'] = $aData['has_cod'];
     $corp =& $this->system->loadModel('trading/deliverycorp');
     $this->pagedata['clist'] = $corp->getCorpList();
     if (defined('SAAS_MODE') && SAAS_MODE) {
         $this->pagedata['clist'] = getdeliverycorplist();
     }
     $this->pagedata['corp_id'] = $aData['corp_id'];
     $this->pagedata['detail'] = $aData['detail'];
     $this->pagedata['weightunit'] = $this->_weightunit();
     $area = $oObj->getAreaByDtId($nDTid);
     foreach ($area as $key => $val) {
         $area[$key]['config'] = unserialize($val['config']);
     }
     $this->pagedata['area'] = $area;
     $this->path[] = array('text' => __('编辑配送方式'));
     $this->page('delivery/dtype_edit.html');
 }
예제 #2
0
파일: ctl.order.php 프로젝트: noikiy/MyShop
 /**
  * showConsignFlow
  *
  * @param mixed $orderid
  * @access public
  * @return void
  */
 function consignLocal($orderid)
 {
     if (!$orderid) {
         echo __('发货错误:订单ID传递出错');
         return false;
     }
     $objOrder = $this->system->loadModel('trading/order');
     $aShipping = $objOrder->getFieldById($orderid, array('order_id', 'ship_status', 'createtime', 'shipping_area', 'shipping_id', 'shipping', 'ship_name', 'is_delivery', 'ship_email', 'ship_tel', 'ship_mobile', 'ship_zip', 'ship_area', 'ship_addr', 'cost_freight', 'is_protect', 'cost_protect'));
     if (!$aShipping) {
         echo __('发货错误:没有当前订单');
         return false;
     }
     $this->pagedata['order'] = $aShipping;
     $this->pagedata['order']['protectArr'] = array('false' => __('否'), 'true' => __('是'));
     $objPo = $this->system->loadModel('purchase/order_po');
     $aItems = $objPo->getPoListByOrderId($orderid);
     foreach ($aItems['local'] as $k => $rows) {
         $aItems['local'][$k]['addon'] = unserialize($rows['addon']);
         if ($rows['minfo'] && unserialize($rows['minfo'])) {
             $aItems['local'][$k]['minfo'] = unserialize($rows['minfo']);
         } else {
             $aItems['local'][$k]['minfo'] = array();
         }
         if ($aItems['local'][$k]['is_type'] == 'goods') {
             $p = $this->system->loadModel('goods/products');
             $aGoods = $p->getFieldById($aItems['local'][$k]['product_id'], array('store'));
         } else {
             $g = $this->system->loadModel('trading/goods');
             $aGoods = $g->getFieldById($aItems['local'][$k]['product_id'], array('store'));
         }
         $aItems['local'][$k]['store'] = $aGoods['store'];
     }
     $this->pagedata['items'] = $aItems['local'];
     $this->pagedata['giftItems'] = $objOrder->getGiftItemList($orderid);
     if ($this->pagedata['giftItems']) {
         foreach ($this->pagedata['giftItems'] as $k => $v) {
             $this->pagedata['giftItems'][$k]['needsend'] = $v['nums'] - $v['sendnum'];
         }
     }
     $shipping = $this->system->loadModel('trading/delivery');
     $this->pagedata['shippings'] = $shipping->getDlTypeList();
     $this->pagedata['corplist'] = $shipping->getCropList();
     if (defined('SAAS_MODE') && SAAS_MODE) {
         $this->pagedata['corplist'] = getdeliverycorplist();
         $this->pagedata['corplist'][] = array('corp_id' => 'other', 'name' => '其他');
     }
     $corp = $shipping->getCorpByShipId($aShipping['shipping_id']);
     $this->pagedata['corp_id'] = $corp['corp_id'];
     $this->__tmpl = 'order/orderconsign.html';
     $this->output();
 }
예제 #3
0
function getCompany_code($id)
{
    $list = getdeliverycorplist();
    return $list[$id]['company_code'];
}
예제 #4
0
파일: mdl.order.php 프로젝트: noikiy/MyShop
 function toReship($aData, &$message)
 {
     /**
      *    @function:加载订单信息
      *    @params:
      *        @$aData['order_id']:订单编号
      */
     $aOrder = $this->load($aData['order_id']);
     if (!$aOrder) {
         $this->system->error(501);
         return false;
         exit;
     }
     if (!$this->checkOrderStatus('reship', $aOrder)) {
         $this->setError(10001);
         trigger_error(__('订单状态锁定'), E_USER_ERROR);
         return false;
         exit;
     }
     $rows = $this->db->select('SELECT i.item_id,i.addon,i.minfo,i.nums,i.sendnum,i.product_id,i.bn,i.name,i.is_type,
                 t.type_id,t.setting,t.schema_id,t.is_physical,t.ret_func FROM sdb_order_items i
                 LEFT JOIN sdb_goods_type t ON t.type_id = i.type_id
                 WHERE i.order_id=' . $aData['order_id']);
     $schema =& $this->system->loadModel('goods/schema');
     /**
      *    @params
      *    @$aData['send']:退货物品
      */
     if (isset($aData['send'])) {
         if ($aData['logi_id']) {
             $oCorp =& $this->system->loadModel('trading/delivery');
             $aCorp = $oCorp->getCorpById($aData['logi_id']);
         }
         if (constant('SAAS_MODE')) {
             $date = getdeliverycorplist();
             $aCorp = $date[$aData['logi_id'] - 1];
             if ($aData['other_name'] != "" && isset($aData['other_name'])) {
                 $aCorp['name'] = $aData['other_name'];
             }
         }
         $delivery = array('money' => $aData['money'], 'is_protect' => $aData['is_protect'], 'delivery' => $aData['delivery'], 'logi_id' => $aData['logi_id'], 'logi_no' => $aData['logi_no'], 'logi_name' => $aCorp['name'], 'ship_name' => $aData['ship_name'], 'ship_area' => $aData['ship_area'], 'ship_addr' => $aData['ship_addr'], 'ship_zip' => $aData['ship_zip'], 'ship_tel' => $aData['ship_tel'], 'ship_mobile' => $aData['ship_mobile'], 'ship_email' => $aData['ship_email'], 'memo' => $aData['reason'] . $aData['memo']);
     } else {
         $delivery = array('money' => 0, 'is_protect' => 'false', 'delivery' => $aOrder['shipping']['method'], 'logi_id' => '', 'logi_no' => '', 'ship_name' => $aOrder['receiver']['name'], 'ship_area' => $aOrder['receiver']['area'], 'ship_addr' => $aOrder['receiver']['addr'], 'ship_zip' => $aOrder['receiver']['zip'], 'ship_tel' => $aOrder['receiver']['tel'], 'ship_mobile' => $aOrder['receiver']['mobile'], 'ship_email' => $aOrder['receiver']['email']);
     }
     /**
     *    @params:
     *        @$delivery['type']            :    发送类型
     *        @$delivery['status']        :    发送状态
     *        @$aUpdate['ship_status']    :
     *            @values:
     ×                4:全部退货
     *
     */
     $delivery['order_id'] = $aData['order_id'];
     $delivery['member_id'] = $aOrder['member_id'];
     $delivery['t_begin'] = time();
     $delivery['op_name'] = $aData['opname'];
     $delivery['type'] = 'return';
     $delivery['status'] = 'progress';
     //遍历订单明细
     $aBill = array();
     $nonGoods = 0;
     //是否完全退货商品标识
     foreach ($rows as $dinfo) {
         //订单退货明细
         $dinfo['addon'] = unserialize($dinfo['addon']);
         if (!isset($aData['send']) || isset($aData['send'][$dinfo['item_id']]) && floor($aData['send'][$dinfo['item_id']]) > 0) {
             //退货数量超出发货数量,则记录出错信息
             if ($aData['send'][$dinfo['item_id']] > $dinfo['sendnum']) {
                 $message .= __('商品:') . $dinfo['name'] . __('退货量超出已发货量');
                 $this->setError(10001);
                 trigger_error($message, E_USER_ERROR);
                 return false;
             }
             if (!isset($aData['send']) || $aData['send'][$dinfo['item_id']] == $dinfo['sendnum']) {
                 $dinfo['send'] = $dinfo['sendnum'];
                 //本次退货数量
                 //                    $aUpdate['items'][$dinfo['product_id']] = 0;
             } else {
                 $nonGoods = 1;
                 $dinfo['send'] = floor($aData['send'][$dinfo['item_id']]);
                 //                    $aUpdate['items'][$dinfo['product_id']] = $dinfo['sendnum'] - $aData['send'][$dinfo['product_id']];
             }
             if ($dinfo['ret_func'] == 1) {
                 $aBill['func'][$dinfo['schema_id']][] = $dinfo;
             } else {
                 if ($dinfo['is_physical'] == 1 || empty($dinfo['type_id'])) {
                     $dinfo['is_physical'] = true;
                     $aBill['nofunc'][] = $dinfo;
                 } else {
                     $aBill['error'][] = $dinfo;
                     //如果虚拟商品没有退货函数,则需要建立失败退货单
                 }
             }
         } else {
             if ($dinfo['sendnum'] > $aData['send'][$dinfo['item_id']]) {
                 $nonGoods = 1;
             }
         }
     }
     if (count($rows) && count($aBill) == 0) {
         //商品没有发货
         $this->setError(10001);
         trigger_error(__('没有任何商品退货'), E_USER_ERROR);
         $this->addLog(__('退货失败,没有发送任何商品'), $this->op_id ? $this->op_id : null, $this->op_name ? $this->op_name : null, __('退货'));
         return false;
     }
     $objShipping =& $this->system->loadModel('trading/delivery');
     $schema =& $this->system->loadModel('goods/schema');
     if ($aBill['func']) {
         //有发货函数的实体虚拟商品
         foreach ($aBill['func'] as $schema_id => $rows) {
             $delivery['delivery_id'] = $objShipping->getNewNumber($delivery['type']);
             $delivery['memo'] = $aData['memo'];
             $iLoop = 0;
             foreach ($rows as $dinfo) {
                 ob_start();
                 $result = $schema->toreturn($dinfo['schema_id'], unserialize($dinfo['minfo']), $dinfo['addon'], $dinfo['nums'], $logs);
                 $output = ob_get_clean();
                 $delivery['memo'] = $logs . "\n" . $output;
                 if (!$result) {
                     $aBill['error'][] = $dinfo;
                     //todo 是否程序终止有待讨论(现在是继续执行)
                 } else {
                     $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $aData['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['is_type'] == 'pkg' ? $dinfo['is_type'] : 'goods', 'product_id' => $dinfo['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'] . $dinfo['addon']['adjname'], 'adjunct' => $dinfo['addon']['adjinfo'], 'number' => $dinfo['send']);
                     if (!$objShipping->toInsertItem($item, $dinfo['is_physical'], $delivery['type'], $delivery['status'])) {
                         $aBill['error'][] = $dinfo;
                         //todo 是否程序终止有待讨论(现在是继续执行)
                     } else {
                         $iLoop++;
                     }
                 }
             }
             if ($iLoop > 0) {
                 if (!$objShipping->toCreate($delivery)) {
                     $this->setError(10001);
                     trigger_error(__('配送单据生成失败'), E_USER_ERROR);
                     return false;
                 }
             }
         }
     }
     if ($aBill['nofunc']) {
         //实体商品
         $iLoop = 0;
         $delivery['delivery_id'] = $objShipping->getNewNumber($delivery['type']);
         foreach ($aBill['nofunc'] as $dinfo) {
             $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $aData['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['is_type'] == 'pkg' ? $dinfo['is_type'] : 'goods', 'product_id' => $dinfo['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'] . $dinfo['addon']['adjname'], 'adjunct' => $dinfo['addon']['adjinfo'], 'number' => $dinfo['send']);
             if (!$objShipping->toInsertItem($item, $dinfo['is_physical'], $delivery['type'], $delivery['status'])) {
                 $aBill['error'][] = $dinfo;
                 //todo 是否程序终止有待讨论(现在是继续执行)
             } else {
                 $iLoop++;
             }
         }
         if ($iLoop > 0) {
             if (!$objShipping->toCreate($delivery)) {
                 $this->setError(10001);
                 trigger_error(__('配送单据生成失败'), E_USER_ERROR);
                 return false;
             }
         }
     }
     if ($aBill['error']) {
         $nonGoods = 1;
         $iLoop = 0;
         $delivery['delivery_id'] = $objShipping->getNewNumber($delivery['type']);
         $delivery['status'] = 'failed';
         $delivery['money'] = 0;
         foreach ($aBill['error'] as $dinfo) {
             $item = array('order_item_id' => $dinfo['item_id'], 'order_id' => $aData['order_id'], 'delivery_id' => $delivery['delivery_id'], 'item_type' => $dinfo['is_type'] == 'pkg' ? $dinfo['is_type'] : 'goods', 'product_id' => $dinfo['product_id'], 'product_bn' => $dinfo['bn'], 'product_name' => $dinfo['name'] . $dinfo['addon']['adjname'], 'adjunct' => $dinfo['addon']['adjinfo'], 'number' => $dinfo['send']);
             $objShipping->toInsertItem($item, $dinfo['is_physical'], $delivery['type'], $delivery['status']);
             $iLoop++;
         }
         if ($iLoop > 0) {
             $objShipping->toCreate($delivery);
         }
     }
     $aPara['order_id'] = $aData['order_id'];
     $aPara['message'] = array();
     $aPara['ship_status'] = '4';
     if ($nonGoods) {
         $aUpdate['ship_status'] = '3';
     } else {
         $aUpdate['ship_status'] = '4';
     }
     $aUpdate['order_id'] = $aData['order_id'];
     $this->setShipStatus($aUpdate);
     $eventData['order_id'] = $aData['order_id'];
     $eventData['total_amount'] = $aOrder['amount']['total'];
     $eventData['is_tax'] = $aOrder['is_tax'];
     $eventData['member_id'] = $aOrder['member_id'];
     $this->fireEvent('returned', $eventData, $aOrder['member_id']);
     //取得退货的具体信息,add by hujianxin
     $message_part1 = "";
     $message = "";
     $ship_status = $aUpdate['ship_status'];
     if ($ship_status == '4') {
         //全部退货
         $message_part1 = "退货完成";
     } else {
         if ($ship_status == '3') {
             //部分退货
             $message_part1 = "已退货";
         }
     }
     $message = "订单<!--order_id=" . $aData['order_id'] . "&delivery_id=" . $delivery['delivery_id'] . "&ship_status=" . $ship_status . "-->" . $message_part1;
     $this->addLog($message, $this->op_id ? $this->op_id : null, $this->op_name ? $this->op_name : null, __('退货'));
     return true;
 }
예제 #5
0
 function toDelivery($order_id)
 {
     include_once "delivercorp.php";
     $params['method'] = 'taobao.delivery.send';
     $company_code = getCompany_code($_POST['logi_id'] - 1);
     if ($_POST['logi_id'] == 'other') {
         $company_code = 'other';
     }
     if ($company_code == 'virtual_goods') {
         $params['orderType'] = 'virtual_goods';
         $params['out_sid'] = 888888;
     } else {
         $params['orderType'] = 'delivery_needed';
         $params['out_sid'] = $_POST['logi_no'];
     }
     $params['company_code'] = $company_code;
     $params['seller_name'] = $_POST['seller_name'];
     $params['seller_area_id'] = $_POST['region_id'];
     $params['seller_address'] = $_POST['seller_address'];
     $params['seller_zip'] = $_POST['seller_zip'];
     $params['seller_phone'] = $_POST['seller_phone'];
     $params['seller_mobile'] = $_POST['seller_tel'];
     $params['memo'] = $_POST['memo'];
     $params['tid'] = $_POST['order_id'];
     $return_tb_msg = $this->tb->getContents($params);
     if (isset($return_tb_msg['error_response']['sub_msg'])) {
         $this->template_dir = CORE_DIR . '/admin/view/';
         $this->splash('failed', 'index.php?ctl=plugins/order_ctl&act=showConsignFlow&p[0]=' . $order_id, $return_tb_msg['error_response']['sub_msg']);
         exit;
     }
     $date = getdeliverycorplist();
     $aCorp = $date[$_POST['logi_id'] - 1];
     $_POST['logi_name'] = $aCorp['name'];
     $db = $this->system->database();
     $db->exec("UPDATE sdb_orders SET ship_status = 1 WHERE order_id =" . $order_id, true);
     $db->exec("UPDATE sdb_tb_order_ctl_orders SET delivery_time = " . time() . " WHERE order_id =" . $order_id, true);
     echo '发货成功';
     parent::toDelivery($order_id);
 }
예제 #6
0
 function showReturn($orderid)
 {
     if (!$orderid) {
         echo __('退货错误:订单ID传递出错');
         return false;
     }
     $objOrder = $this->system->loadModel('trading/order');
     $aShipping = $objOrder->getFieldById($orderid, array('order_id', 'ship_status', 'createtime', 'is_delivery', 'shipping_area', 'shipping', 'ship_name', 'ship_email', 'ship_tel', 'ship_mobile', 'ship_zip', 'ship_area', 'ship_addr', 'cost_freight', 'is_protect', 'cost_protect'));
     if (!$aShipping) {
         echo __('退货错误:没有当前订单');
         return false;
     }
     $this->pagedata['order'] = $aShipping;
     $this->pagedata['order']['protectArr'] = array('false' => __('否'), 'true' => __('是'));
     $aItems = $objOrder->getItemList($orderid);
     foreach ($aItems as $k => $rows) {
         $aItems[$k]['addon'] = unserialize($rows['addon']);
         if ($rows['minfo'] && unserialize($rows['minfo'])) {
             $aItems[$k]['minfo'] = unserialize($rows['minfo']);
         } else {
             $aItems[$k]['minfo'] = array();
         }
     }
     $this->pagedata['items'] = $aItems;
     $shipping = $this->system->loadModel('trading/delivery');
     $this->pagedata['shippings'] = $shipping->getDlTypeList();
     $this->pagedata['corplist'] = $shipping->getCropList();
     if (defined('SAAS_MODE') && SAAS_MODE) {
         $this->pagedata['corplist'] = getdeliverycorplist();
         $this->pagedata['corplist'][] = array('corp_id' => 'other', 'name' => '其他');
     }
     $this->setView('order/orderreturn.html');
     $this->output();
 }