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'); }
/** * 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(); }
function getCompany_code($id) { $list = getdeliverycorplist(); return $list[$id]['company_code']; }
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; }
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); }
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(); }