model('reship'); $reshipInfo = $reshipObj->dump($reship_id,'reship_bn,order_id,branch_id'); $reshipLib = kernel::single('siso_receipt_iostock_reship'); $iostock_data = $this->get_iostock_data($reship_id); $reshipLib->_typeId=32; $result = $reshipLib->create(array('reship_id'=>$reship_id,'items'=>$iostock_data,'branch_id'=>$reshipInfo['branch_id']), $data, $msg); return $result; } /** * 组织入库数据 * @access public * @param String $iso_id 出入库ID * @return sdf 出库数据 */ public function get_iostock_data($reship_id){ $reshipObj = app::get('ome')->model('reship'); $reship_items = $reshipObj->getItemList($reship_id); $iostock_data = array(); if ($reship_items){ foreach ($reship_items as $k=>$v){ $iostock_data[$v['item_id']] = array( 'item_id' => $v['item_id'], 'bn' => $v['bn'], 'price' => $v['price'], 'normal_num' => $v['num'], ); } } return $iostock_data; } //拒收退货做负销售单 function do_sales(){ } //组成销售单数据 function get_sales_data(){ } /** * 发送仓库数据. * @param * @return * @access public * @author sunjing@shopex.cn */ function reship_create($reship_id) { $oReship = app::get('ome')->model('reship'); $oReship_item = app::get('ome')->model('reship_items'); $oReturn = app::get('ome')->model('return_product'); $oDelivery_order = app::get('ome')->model('delivery_order'); $oDelivery = app::get('ome')->model('delivery'); $oOrder = app::get('ome')->model('orders'); $reship = $oReship->dump($reship_id,'reship_bn,t_begin,memo,ship_name,ship_area,ship_addr,ship_zip,ship_tel,ship_mobile,ship_email,return_logi_no,return_logi_name,return_id,order_id,branch_id'); $reship_item = $oReship_item->getlist('bn,product_name as name,num,price,branch_id',array('reship_id'=>$reship_id),0,-1); $branch_id = $reship['branch_id']; $iostockdataObj = kernel::single('console_iostockdata'); $branch = $iostockdataObj->getBranchByid($branch_id); $return_id = $reship['return_id']; $order_id = $reship['order_id']; $delivery_order = $oDelivery_order->dump(array('order_id'=>$order_id),'delivery_id'); $delivery_id = $delivery_order['delivery_id']; $order = $oOrder->dump($order_id,'order_bn,shop_id'); $delivery = $oDelivery->dump($delivery_id,'delivery_bn'); $shopObj = app::get('ome')->model('shop'); $shopInfo = $shopObj->dump($order['shop_id'],'name'); $ship_area = $reship['ship_area']; $ship_area = explode(':',$ship_area); $ship_area = explode('/',$ship_area[1]); $reship_data = array( 'reship_bn'=>$reship['reship_bn'], 'branch_id'=>$branch_id, 'branch_bn'=>$branch['branch_bn'], 'create_time'=>$reship['t_begin'], 'memo'=>$reship['memo'], 'original_delivery_bn'=>$delivery['delivery_bn'], 'logi_no'=>$reship['return_logi_no'], 'logi_name'=>$reship['return_logi_name'], 'order_bn'=>$order['order_bn'], 'receiver_name'=>$reship['ship_name'], 'receiver_zip'=>$reship['ship_zip'], 'receiver_state'=>$ship_area[0], 'receiver_city'=>$ship_area[1], 'receiver_district'=>$ship_area[2], 'receiver_address'=>$reship['ship_addr'], 'receiver_phone'=>$reship['ship_tel'], 'receiver_mobile'=>$reship['ship_mobile'], 'receiver_email'=>$reship['ship_email'], 'storage_code'=>$branch['storage_code'], 'items'=>$reship_item, 'shop_code'=>$shopInfo['name'], ); return $reship_data; } // end func /** * 更新发货单状态 * @param * @return * @access public * @author sunjing@shopex.cn */ function update_orderStatus($order_id) { $orderObj = app::get('ome')->model('orders'); $order_sum = $orderObj->db->selectrow('SELECT sum(sendnum) as count FROM sdb_ome_order_items WHERE order_id='.$order_id.' AND sendnum != return_num'); $ship_status = ($order_sum['count'] == 0) ? '4' : '3'; $orderObj->db->exec("UPDATE sdb_ome_orders SET ship_status='".$ship_status."' WHERE order_id=".$order_id); } /** * 处理导入的追回单据 */ public function dispose_import_csv(){ $result = array('rsp'=>'fail', 'error_msg'=>''); //验证导入的文件 if(!$_FILES['import_file']['name']){ $result['error_msg'] = '未上传文件!'; return $result; } $tmpFileHandle = fopen($_FILES['import_file']['tmp_name'], "r"); $oIo = kernel::servicelist('desktop_io'); foreach( $oIo as $aIo ){ if($aIo->io_type_name == substr($_FILES['import_file']['name'], -3)){ $oImportType = $aIo; break; } } unset($oIo); if(!$oImportType){ $result['error_msg'] = '导入格式不正确!'; return $result; } $contents = array(); $oImportType->fgethandle($tmpFileHandle, $contents); //导入的标题 $title = $contents[0]; fclose($tmpFileHandle); unset($contents[0]); $tm_contents = array(); foreach($contents as $row){ if(!empty($row[0])){ $tm_contents[] = $row; } } $contents = $tm_contents; if(empty($contents)){ $result['error_msg'] = '导入数据项为空!'; return $result; } if(count($contents) > 1000){ $result['error_msg'] = '一次性限制最多可导入1000单!'; return $result; } $result = array('rsp'=>'succ', 'data'=>$contents, 'title'=>$title); return $result; } /** * 处理发货追回(根据导入的退回物流单号、发货单号) * * @param string $type 处理方式(logistics退回物流单号、delivery发货单号) * @param array $data * @param string $error_msg * @return array */ public function dispose_refuse($type, $data, &$error_msg){ $oQueue = app::get('base')->model('queue'); if(empty($data)){ $error_msg = '数据不能为空!'; return false; } if(!in_array($type, array('logistics', 'delivery'))){ $error_msg = '无效的处理方式!'; return false; } $page = 0; $limit = 100; $i = 0; $dataList = array(); foreach ($data as $key => $bill_no){ //根据单据号查找可追回的订单、发货单 $result = $this->get_refuse_data($type, $bill_no, $error_msg); if(!$result){ return false; } //组织队列数据 foreach ($result as $iKey => $iVal){ $i++; //分页,每页100条 if($i == $limit){ $page ++; $i = 0; } $dataList[$page][] = array('type'=>$type, 'bill_no'=>$bill_no, 'data'=>$iVal); } } if(empty($dataList)){ $error_msg = '没有可执行的单据!'; return false; } //加入队列 foreach ($dataList as $pageKey => $val){ $queueData = array( 'queue_title'=>'发货追回导入', 'start_time'=>time(), 'params'=>array( 'sdfdata' => $val, 'app' => 'ome', 'mdl' => 'reship' ), 'worker'=>'ome_delivery_refuse_import.run', ); $oQueue->save($queueData); } app::get('base')->model('queue')->flush(); return true; } /** * 根据(物流单号、发货单号)查找可追回的订单、发货单 * todo: 导入单据号追回时,如果一个订单拆分多个发货单,是按发货单追回,(对于订单纬度来说)也就是支持部分追回; * * @param string $type 查询类型 * @param string $bill_no 需查询的单据号 * @param string $error_msg * @return array */ public function get_refuse_data($type, $bill_no, &$error_msg){ $deliveryObj = app::get('ome')->model('delivery'); $items_detailObj = app::get('ome')->model('delivery_items_detail'); $result = array(); $delivery_ids = array(); //根据类型获取发货单 $operation = ''; if($type == 'logistics') { $operation = '物流单号:'. $bill_no; $deliveryInfo = $deliveryObj->dump(array('logi_no'=>$bill_no, 'status'=>'succ'), 'delivery_id, is_bind, branch_id, logi_no'); if(empty($deliveryInfo)){ $error_msg = $operation .', 没有找到已发货的发货单!'; return false; } } elseif($type == 'delivery') { $operation = '发货单号:'. $bill_no; $deliveryInfo = $deliveryObj->dump(array('delivery_bn'=>$bill_no, 'status'=>'succ'), 'delivery_id, is_bind, branch_id, logi_no'); if(empty($deliveryInfo)){ $error_msg = $operation .', 没有找到已发货的发货单!'; return false; } }else{ $error_msg = '无效的处理方式!'; return false; } //发货仓库 $branch_id = $deliveryInfo['branch_id']; //todo: 有合并发货单的情况 if($deliveryInfo['is_bind'] == 'true'){ //合并发货单 $dlyList = $deliveryObj->getList('delivery_id', array('parent_id'=>$deliveryInfo['delivery_id'], 'status'=>'succ')); foreach ($dlyList as $key => $val){ $delivery_ids[] = $val['delivery_id']; } }else{ //普通发货单 $delivery_ids[] = $deliveryInfo['delivery_id']; } //根据发货单获取关联订单 $sql = "SELECT a.delivery_id, b.order_id, b.order_bn, b.pay_status, b.ship_status FROM sdb_ome_delivery_order AS a LEFT JOIN sdb_ome_orders AS b ON a.order_id=b.order_id WHERE a.delivery_id IN(". implode(', ', $delivery_ids) .")"; $data = $deliveryObj->db->select($sql); if(empty($data)){ $error_msg = $operation .', 没有找到对应的订单!'; return false; } //验证有效性 foreach ($data as $key => $val){ $order_id = $val['order_id']; $delivery_id = $val['delivery_id']; //检查订单(导入时,支持按物流单号进行部分退货) if(!in_array($val['ship_status'], array('1', '3'))){ $error_msg = $operation .',关联订单号: '. $val['order_bn'] .' 不是已发货 或 部分退货状态!'; return false; } //部分退货处理逻辑 if($val['ship_status'] == '3'){ $sql = "SELECT reship_id FROM sdb_ome_reship WHERE order_id=". $order_id ." AND logi_no='". $deliveryInfo['logi_no'] ."' AND is_check NOT IN('5')"; $return = $deliveryObj->db->selectrow($sql); if($return) { $error_msg = $operation .',已有售后单据不能重复操作!'; return false; } //检查可退货明细 $dlyItems = $items_detailObj->getlist('order_item_id, bn, product_id, number', array('order_id'=>$order_id, 'delivery_id'=>$delivery_id)); foreach($dlyItems as $dlyKey => $dlyItemVal){ //取订单发货明细信息 $orderItemRow = $deliveryObj->db->selectrow("SELECT item_id, sendnum, return_num FROM sdb_ome_order_items WHERE item_id=".$dlyItemVal['order_item_id']); //可退货数量 $diff_num = intval($orderItemRow['sendnum']) - intval($orderItemRow['return_num']); if($diff_num < $dlyItemVal['number']){ $error_msg = $operation .',货品: '. $dlyItemVal['bn'] .' 可退货数量错误!'; return false; } } }else{ //检查售后 $sql = "SELECT return_id FROM sdb_ome_return_product WHERE order_id=". $order_id ." AND `status` NOT IN('5')"; $return = $deliveryObj->db->selectrow($sql); if($return) { $error_msg = $operation .',关联的订单已有售后单据!'; return false; } $sql = "SELECT reship_id FROM sdb_ome_reship WHERE order_id=". $order_id ." AND is_check NOT IN('5')"; $reship = $deliveryObj->db->selectrow($sql); if($reship) { $error_msg = $operation .',关联的订单已有退换货单据!'; return false; } } //返回关联订单ID、发货单ID $result[$delivery_id] = array('order_id'=>$order_id, 'delivery_id'=>$delivery_id, 'branch_id'=>$branch_id); } unset($deliveryInfo, $data, $delivery_ids); return $result; } /** * 根据订单号查找可追回的所有发货单 * todo: 手工输入订单号追回时,如果一个订单拆分多个发货单时,不支持多次追回,仅支持一次性追回所有; * * @param int $order_bn 订单号 * @param string $error_msg * @return boolean */ public function getRefuseByOrderBn($order_bn, &$error_msg){ $orderObj = app::get('ome')->model('orders'); $deliveryObj = app::get('ome')->model('delivery'); $items_detailObj = app::get('ome')->model('delivery_items_detail'); $result = array(); $delivery_ids = array(); //订单信息 $orderInfo = $orderObj->dump(array('order_bn'=>$order_bn), 'order_id, order_bn, pay_status, ship_status'); if(empty($orderInfo)){ $error_msg = '要追回的订单不存在!'; return false; } $order_id = $orderInfo['order_id']; $operation = '订单号:'. $orderInfo['order_bn']; //检查订单状态 if($orderInfo['ship_status'] != '1'){ $error_msg = $operation .',不是已发货状态无法做拒收处理!'; return false; } //检查售后 $sql = "SELECT return_id FROM sdb_ome_return_product WHERE order_id=". $order_id ." AND `status` NOT IN('5')"; $return = $deliveryObj->db->selectrow($sql); if($return) { $error_msg = $operation .',订单已有相关售后单据!'; return false; } $sql = "SELECT reship_id FROM sdb_ome_reship WHERE order_id=". $order_id ." AND is_check NOT IN('5')"; $reship = $deliveryObj->db->selectrow($sql); if($reship) { $error_msg = $operation .',订单已有相关退换货单据!'; return false; } //根据订单获取发货单 $sql = "SELECT a.order_id, b.delivery_id, b.delivery_bn, b.branch_id FROM sdb_ome_delivery_order AS a LEFT JOIN sdb_ome_delivery AS b ON a.delivery_id=b.delivery_id WHERE a.order_id=". $order_id ." AND b.status='succ' AND b.is_bind='false'"; $dlyList = $deliveryObj->db->select($sql); if(empty($dlyList)){ $error_msg = $operation .', 没有找到对应的发货单!'; return false; } //返回关联订单ID、发货单ID foreach ($dlyList as $key => $val){ $delivery_id = $val['delivery_id']; $result[$delivery_id] = array('order_id'=>$order_id, 'delivery_id'=>$delivery_id, 'branch_id'=>$val['branch_id']); } return $result; } /** * 发货追回最终处理 * * @param array $params * @param string $error_msg * @return array */ public function finish_refuse($params, &$error_msg){ $orderObj = app::get('ome')->model('orders'); $shopObj = app::get('ome')->model('shop'); $deliveryObj = app::get('ome')->model('delivery'); $items_detailObj = app::get('ome')->model('delivery_items_detail'); $reshipObj = app::get('ome')->model('reship'); $operationLogObj = app::get('ome')->model('operation_log'); $branchLib = kernel::single('ome_branch'); $channelLib = kernel::single('channel_func'); $type = $params['type']; //执行方式 $bill_no = $params['bill_no']; //单据号 $order_id = $params['order_id']; $delivery_id = $params['delivery_id']; $branch_id = $params['branch_id']; $operation = ''; if($type == 'logistics'){ $operation = '导入退回物流单号'; }elseif($type == 'delivery'){ $operation = '导入发货单号'; }elseif($type == 'order'){ $operation = '订单号'; } $operation = $operation .': '. $bill_no; //操作人 $op_id = kernel::single('desktop_user')->get_id(); //C2C前端店铺列表 $c2c_shop_type = ome_shop_type::shop_list(); //是否自有仓 $wms_id = $branchLib->getWmsIdById($branch_id); if($wms_id){ $is_selfWms = $channelLib->isSelfWms($wms_id); } //订单信息 $orderInfo = $orderObj->dump(array('order_id'=>$order_id), 'order_id, order_bn, shop_id, process_status, status, pay_status, ship_status, shop_type, org_id'); //检查订单(导入时,支持按物流单号进行部分退货) if(!in_array($orderInfo['ship_status'], array('1', '3'))){ $error_msg = $operation .',关联订单号: '. $orderInfo['order_bn'] .' 不是已发货、部分退货状态!'; return false; } //店铺信息 $shopInfo = $shopObj->dump(array('shop_id'=>$orderInfo['shop_id']), 'node_type, node_id,delivery_mode'); //发货单 $deliveryInfo = $deliveryObj->dump(array('delivery_id'=>$delivery_id), '*'); //[合并发货单时]如果是子发货单,需要查询父发货单上的物流单号logi_no if($deliveryInfo['parent_id']){ $parentDlyInfo = $deliveryObj->dump(array('delivery_id'=>$deliveryInfo['parent_id']), 'logi_id, logi_no, logi_name'); $deliveryInfo = array_merge($deliveryInfo, $parentDlyInfo); } //发货单明细 $dlyItems = $items_detailObj->getlist('order_item_id, order_obj_id, bn, product_id, number', array('order_id'=>$order_id, 'delivery_id'=>$delivery_id)); //判断售后单是否已存在(导入时,支持按物流单号进行部分退货) $sql = "SELECT reship_id FROM sdb_ome_reship WHERE order_id=". $order_id ." AND logi_no='". $deliveryInfo['logi_no'] ."' AND is_check NOT IN('5')"; $chkReship = $reshipObj->db->selectrow($sql); if($chkReship) { $error_msg = $operation .',已有售后单据不能重复操作!'; return false; } //售后reship_bn $reship_bn = $reshipObj->gen_id(); //组织数据 $status = ($is_selfWms ? 'succ' : ''); //第三仓处理成功后,erpapi中会更新status状态 $is_check = ($is_selfWms ? '7' : '1'); //第三仓处理成功后,erpapi中会更新is_check状态 $reshipData = array( 'status' => $status, 'order_id' => $order_id, 'member_id' => $deliveryInfo['member_id'], 'return_logi_name' => $deliveryInfo['logi_id'], 'return_type' => 'refuse', 'return_logi_no' => $deliveryInfo['logi_no'], 'logi_name' => $deliveryInfo['logi_name'], 'logi_no' => $deliveryInfo['logi_no'], 'logi_id' => $deliveryInfo['logi_id'], 'delivery' => $deliveryInfo['delivery'], 'delivery_id' => $deliveryInfo['delivery_id'], 'memo' => '', 'is_check' => $is_check, 'op_id' => $op_id, 't_begin' => time(), 't_end' => 0, 'shop_id' => $deliveryInfo['shop_id'], 'reship_bn' => $reship_bn, 'ship_name' => $deliveryInfo['consignee']['name'], 'ship_addr' => $deliveryInfo['consignee']['addr'], 'ship_zip' => $deliveryInfo['consignee']['zip'], 'ship_tel' => $deliveryInfo['consignee']['telephone'], 'ship_mobile' => $deliveryInfo['consignee']['mobile'], 'ship_email' => $deliveryInfo['consignee']['email'], 'ship_area' => $deliveryInfo['consignee']['area'], 'branch_id' => $branch_id, 'check_time' => time(), 'org_id' => $orderInfo['org_id'], ); // 经销店铺的单据,delivery_mode冗余到售后申请表 if ($shopInfo['delivery_mode'] == 'jingxiao') { $reshipData['delivery_mode'] = $shopInfo['delivery_mode']; } foreach($dlyItems as $k => $itemVal){ //取订单发货明细信息 $orderRow = $reshipObj->db->selectrow("SELECT name, sendnum, return_num FROM sdb_ome_order_items WHERE item_id=".$itemVal['order_item_id']); //可退货数量 $diff_num = intval($orderRow['sendnum']) - intval($orderRow['return_num']); if($diff_num < $itemVal['number']){ $error_msg = $operation .',货品: '. $itemVal['bn'] .' 可退货数量错误!'; return false; } $reshipData['reship_items'][$k] = array( 'bn' => $itemVal['bn'], 'product_name' => $orderRow['name'], 'product_id' => $itemVal['product_id'], 'num' => $itemVal['number'], 'branch_id' => $branch_id, 'op_id' => $op_id, 'return_type' => 'refuse', ); } //开启事务 //$orderObj->db->beginTransaction(); //生成退货单 $result = $reshipObj->save($reshipData); if(!$result){ //事务回滚 //$orderObj->db->rollBack(); $error_msg = $operation .',发货拒收确认失败!'; return false; } //退货单创建 API if($shopInfo['node_id'] && !in_array($shopInfo['node_type'], $c2c_shop_type)){ foreach(kernel::servicelist('service.reship') as $object=>$instance){ if(method_exists($instance,'reship')){ $instance->reship($reshipData['reship_id']); } } } if ($is_selfWms) { //自有仓储处理流程 $wmsDelivery = app::get('wms')->model('delivery'); $dlyItemsSerialObj = app::get('wms')->model('delivery_items_serial'); $storageLifeLib = kernel::single('material_storagelife'); $dlyItemsSerialLib = kernel::single('wms_receipt_dlyitemsserial'); $reSerialLib = kernel::single('ome_receipt_dlyitemsserial'); //WMS发货单 $wms_delivery = $wmsDelivery->dump(array('outer_delivery_bn'=>$deliveryInfo['delivery_bn']), 'delivery_id, delivery_bn, branch_id'); //发货单货品唯一码 $serialItems = $dlyItemsSerialObj->getList('bn, serial_number', array('delivery_id'=>$wms_delivery['delivery_id']), 0, -1); if($serialItems){ $history_serial = array(); foreach($serialItems as $sItem){ //params $serialParams = array( 'serial_number' => $sItem['serial_number'], 'reship_id' => $reshipData['reship_id'], 'reship_bn' => $reshipData['reship_bn'], 'branch_id' => $branch_id, 'bn' => $sItem['bn'], ); $seria_error_msg = ''; $return_serial = array(); $rs = $dlyItemsSerialLib->returnProduct($serialParams, $seria_error_msg, $return_serial); if(!$rs){ //事务回滚 //$orderObj->db->rollBack(); $error_msg = $operation .',唯一码退入失败!'; return false; } $history_serial[] = $return_serial; } //插入唯一码退货历史记录 $serial_error_msg = ''; $rs = $reSerialLib->returnProduct($history_serial, $serial_error_msg); if(!$rs){ //事务回滚 //$orderObj->db->rollBack(); $error_msg = $operation .',插入唯一码退货历史记录失败!'. $serial_error_msg; return false; } } //保质期部分 $dlyItemsStorageLifeObj = app::get('wms')->model('delivery_items_storage_life'); $dlyItemsStorageLifeLib = kernel::single('wms_receipt_dlyitemsstoragelife'); //storagelife info $items = $dlyItemsStorageLifeObj->getList('bm_id,expire_bn,number', array('delivery_id'=>$wms_delivery['delivery_id']), 0, -1); if($items){ $history_storagelife = array(); foreach($items as $item){ //params $storagelifeItem = array( 'expire_bn' => $item['expire_bn'], 'nums' => $item['number'], 'bill_id' => $reshipData['reship_id'], 'bill_bn' => $reshipData['reship_bn'], 'branch_id' => $branch_id, 'bm_id' => $item['bm_id'], 'old_branch_id' => $wms_delivery['branch_id'], 'bill_type' => '32', 'bill_io_type' => '1', ); $rs = $dlyItemsStorageLifeLib->returnProduct($storagelifeItem, $err_msg, $return_storagelife); if(!$rs){ $error_msg = $operation .',保质期批次退入失败!'. $err_msg; return false; }else{ $history_storagelife[] = $return_storagelife; } } //write history storagelife kernel::single('ome_receipt_dlyitemsstoragelife')->returnProduct($history_storagelife, $msg); } //订单明细更新 foreach($dlyItems as $itemVal) { //发货单关联订单sendnum扣减 $sql = "UPDATE sdb_ome_order_items SET return_num=return_num+ ". $itemVal['number'] ." WHERE order_id=". $order_id ." AND bn='". $itemVal['bn'] ."' AND obj_id=". $itemVal['order_obj_id']; $orderObj->db->exec($sql); } //更新售后单明细仓库退回良品数量 $orderObj->db->exec('UPDATE sdb_ome_reship_items SET normal_num=num WHERE reship_id='.$reshipData['reship_id']); //订单发货状态变更 $this->update_orderStatus($order_id); //增加拒收退货入库明细(生成出入库明细) $rs = $this->do_iostock($reshipData['reship_id'], 1, $iostock_error_msg); if(!$rs){ //事务回滚 //$orderObj->db->rollBack(); $iostock_error_msg = (is_array($iostock_error_msg) ? implode(',', $iostock_error_msg) : $iostock_error_msg); //防止错误信息是数组格式 $error_msg = $operation .',生成退货入库明细失败('. $iostock_error_msg .')!'; return false; } //负销售单(生成售后单) if ($orderInfo['status'] == 'finish') { $rs = kernel::single('sales_aftersale')->generate_aftersale($reshipData['reship_id'], 'refuse'); if(!$rs){ //事务回滚 //$orderObj->db->rollBack(); $error_msg = $operation .',生成负销售单失败!'; return false; } } //订单添加相应的操作日志 $log_msg = $operation .',发货后退回,订单做退货处理!'; $operationLogObj->write_log('order_refuse@ome', $order_id, $log_msg); } else { //第三方仓储处理流程 //发送至第三方仓 $refuseData = array('reship_id'=>$reshipData['reship_id']); $reship_data = kernel::single('ome_receipt_reship')->reship_create($refuseData); kernel::single('console_event_trigger_reship')->create($wms_id, $reship_data, false); } //事务确认 //$orderObj->db->commit(); //发货拒收确认成功 return true; } }