column_confirm); } //剔除复审操作按扭 if($_GET['ctl'] == 'admin_order' && $_GET['act'] == 'retrial'){ //nothing }else{ unset($this->column_abnormal_status); unset($this->column_mark_text); } } function detail_basic($order_id){ $render = app::get('ome')->render(); $oOrders = app::get('ome')->model('orders'); $oOperation_log = app::get('ome')->model('operation_log'); if($_POST){ if($_POST['is_flag']){ //开票提交业务处理 $this->submit_invoice($_POST); }else{ $order_id = $_POST['order']['order_id']; $memo = ""; if(isset($_POST['order_action'])){ switch($_POST['order_action']){ case "cancel" : $memo = "订单被取消"; /*** * 代码已不使用 * * TODO: 订单取消作为单独的日志记录 $oOrders->unfreez($order_id); $oOrders->cancel_delivery($order_id); $oOperation_log->write_log('order_modify@ome',$order_id,$memo); * ***/ break; case "order_limit_time" : $plainData = $_POST['order']; $plainData['order_limit_time'] = strtotime($plainData['order_limit_time']); $oOrders->save($plainData); $memo = "订单的有效时间被设置为".date("Y-m-d",$plainData['order_limit_time']); $oOperation_log->write_log('order_modify@ome',$order_id,$memo); break; case "order_payed" : $memo = "确认订单付款"; $orderinfo = $oOrders->order_detail($order_id); if ($orderinfo['payed'] == $orderinfo['total_amount']) { $plainData['pay_status'] = 1; $oOrders->save($plainData); $oOperation_log->write_log('order_modify@ome',$order_id,$memo); } break; case "order_pause": $memo = "订单暂停"; $oOrders->pauseOrder($order_id); break; case "order_renew": $memo = "订单恢复"; $oOrders->renewOrder($order_id); break; case 'order_refuse_refund'; #检查原始的订单支付状态 $order_info = $oOrders->dump($order_id,'pay_status,payed,total_amount,is_cod'); $memo = "订单拒绝退款"; $plainData['order_id'] = $order_id; if( $order_info['pay_status'] == '4' ||($order_info['total_amount'] > $order_info['payed'])){ $plainData['pay_status'] = 3;#订单原状态是部分退款的,修改为部分付款 }else{ if($order_info['shipping']['is_cod'] == 'true'){ $plainData['pay_status'] = 0;#货到付款的,修改为未支付 }else{ $plainData['pay_status'] = 1;#款到发货,原状态是退款中的,修改为已支付 } } $plainData['pause'] = 'false'; $oOrders->save($plainData); $oOperation_log->write_log('order_modify@ome',$order_id,$memo); break; case 'recover_delivery'; $memo = "订单恢复发货状态为可发货"; $plainData = array(); $plainData['order_id'] = $order_id; $plainData['is_delivery'] = 'Y'; $oOrders->save($plainData); $oOperation_log->write_log('order_modify@ome',$order_id,$memo); break; default: $memo = "订单内容修改"; $oOperation_log->write_log('order_modify@ome',$order_id,$memo); break; } }else{ $memo = "订单内容修改"; $oOperation_log->write_log('order_modify@ome',$order_id,$memo); } } //写操作日志 } $order_detail = $oOrders->dump($order_id,"*",array("order_items"=>array("*"))); // 判断是否加密 $order_detail['is_encrypt'] = kernel::single('ome_security_router',$order_detail['shop_type'])->show_encrypt($order_detail, 'order'); $invoiceMdl = app::get('ome')->model('order_invoice'); $invoiceOrder = $invoiceMdl->db_dump(array('order_id'=>$order_id)); $invoiceOrder && $order_detail = array_merge($order_detail, $invoiceOrder); $oRefund = app::get('ome')->model('refund_apply'); $refunddata = $oRefund->getList('*',array('order_id'=>$order_id),0,-1); $amount = 0; foreach ($refunddata as $row){ if ($row['status'] != '3' && $row['status'] != '4'){ $render->pagedata['isrefund'] = 'false';//如果退款申请没有处理完成 } } if ($render->pagedata['isrefund'] == ''){ if ($order_detail['pay_status'] == '5'){ $render->pagedata['isrefund'] = 'false';//订单已全额退货 } } $render->pagedata['is_c2cshop'] = in_array($order_detail['shop_type'],ome_shop_type::shop_list()) ?true:false; $render->pagedata['shop_name'] = ome_shop_type::shop_name($order_detail['shop_type']); $order_detail['mark_text'] = kernel::single('ome_func')->format_memo($order_detail['mark_text']); $order_detail['custom_mark'] = kernel::single('ome_func')->format_memo($order_detail['custom_mark']); $render->pagedata['total_amount'] = floatval($order_detail['total_amount']); $render->pagedata['payed'] = floatval($order_detail['payed']); $oMembers = app::get('ome')->model('members'); $member = $oMembers->dump($order_detail['member_id']); // 会员解密 $member['is_encrypt'] = kernel::single('ome_security_router',$order_detail['shop_type'])->show_encrypt($member, 'member'); $render->pagedata['member'] = $member; $render->pagedata['url'] = kernel::base_url()."/app/".$render->app->app_id; if ($order_detail['order_bool_type']){ $bool_type_text = kernel::single('ome_order_bool_type')->getBoolTypeDescribe($order_detail['order_bool_type'],$order_detail['shop_type']); $order_detail['order_bool_type_text'] = $bool_type_text; } //订单代销人会员信息 $oSellagent = app::get('ome')->model('order_selling_agent'); $sellagent_detail = $oSellagent->dump(array('order_id'=>$order_id)); if (!empty($sellagent_detail['member_info']['uname'])){ $render->pagedata['sellagent'] = $sellagent_detail; } //发货人信息 $order_consigner = false; if ($order_detail['consigner']){ foreach ($order_detail['consigner'] as $shipper){ if (!empty($shipper)){ $order_consigner = true; break; } } } if ($order_consigner == false){ //读取店铺发货人信息 $oShop = app::get('ome')->model('shop'); $shop_detail = $oShop->dump(array('shop_id'=>$order_detail['shop_id'])); $order_detail['consigner'] = array( 'name' => $shop_detail['default_sender'], 'mobile' => $shop_detail['mobile'], 'tel' => $shop_detail['tel'], 'zip' => $shop_detail['zip'], 'email' => $shop_detail['email'], 'area' => $shop_detail['area'], 'addr' => $shop_detail['addr'], ); } $sh_base_url = kernel::base_url(1); $render->pagedata['base_url'] = $sh_base_url; $is_edit_view = 'true'; if ($order_add_service = kernel::service('service.order.'.$order_detail['shop_type'])){ if (method_exists($order_add_service, 'is_edit_view')){ $order_add_service->is_edit_view($order_detail, $is_edit_view); } } //订单扩展信息 $orderExtendObj = app::get('ome')->model('order_extend'); $extendInfo = $orderExtendObj->dump($order_id); $order_detail['cert_id'] = $extendInfo['cert_id']; //指定快递 if($extendInfo['assign_express_code']){ $corpObj = app::get('ome')->model('dly_corp'); $sql = "SELECT corp_id, name FROM sdb_ome_dly_corp WHERE type='". $extendInfo['assign_express_code'] ."' AND disabled='false' ORDER BY weight DESC, corp_id DESC"; $corpInfo = $corpObj->db->selectrow($sql); $render->pagedata['assign_express_name'] = $corpInfo['name']; } //货到付款 if($order_detail['shipping']['is_cod'] == 'true'){ $orderExtendObj = app::get('ome')->model('order_extend'); $extendInfo = $orderExtendObj->dump($order_id); $order_detail['receivable'] = $extendInfo['receivable']; } $render->pagedata['is_edit_view'] = $is_edit_view; //开票提交显示 $render->pagedata['invoice_app_install'] = false; if(app::get('invoice')->is_installed()){ $this->submit_invoice_show($order_detail); $render->pagedata['invoice_app_install'] = true; } //销售价权限验证 $showSalePrice = true; if (!kernel::single('desktop_user')->has_permission('sale_price')) { $showSalePrice = false; } $render->pagedata['show_sale_price'] = $showSalePrice; $render->pagedata['order'] = $order_detail; if(in_array($_GET['act'],array('confirm','abnormal'))){ $render->pagedata['operate'] = true; $render->pagedata['act_'.$_GET['act']] = true; } if(($_GET['act'] == 'dispatch' && $_GET['flt'] == 'buffer') || ($_GET['ctl'] == 'admin_order' && ($_GET['act'] == 'active' || $_GET['act'] == 'index'))){ $render->pagedata['operate'] = true; $render->pagedata['act_confirm'] = true; } //复审订单 OR 跨境申报订单 OR 部分拆分&&部分发货&&全额退款订单_禁止操作按钮 if($order_detail['process_status'] == 'is_retrial' || $order_detail['process_status'] == 'is_declare' || ($order_detail['process_status'] == 'splitting' && $order_detail['ship_status'] == '2' && $order_detail['pay_status'] == '5')) { $render->pagedata['operate'] = false; } $support_refund_shop = array('amazon','dangdang','paipai','qqbuy','taobao','tmall','yihaodian'); $shop_shop_type = ome_shop_type::shopex_shop_type(); #已支持退款的平台,屏蔽拒绝退款按钮 $oRefund = app::get('ome')->model('refund_apply'); if($order_detail['source'] == 'matrix' && (!in_array($order_detail['shop_type'],$shop_shop_type)) && (!in_array($order_detail['shop_type'], $support_refund_shop))){ #订单状态是退款申请中 $can_refuse_status = array(4,6,7);#部分退款、退款申请中、退款中 if(in_array($order_detail['pay_status'] , $can_refuse_status)){ #所有退款申请单状态,属于已拒绝,才可以做拒绝退款 $refund_info = $oRefund->getlist('order_id,status',array('order_id'=>$order_id,'status|noequal'=>'3')); if(empty($refund_info)){ $render->pagedata['can_refuse_refund'] = 'true'; } } } //订单标记 $sql = "SELECT a.*, b.label_code, b.label_color FROM sdb_ome_bill_label AS a LEFT JOIN sdb_omeauto_order_labels AS b ON a.label_id=b.label_id "; $sql .= " WHERE a.bill_type='order' and a.bill_id='" . $order_id . "'"; $labelList = $oOrders->db->select($sql); $render->pagedata['labelList'] = $labelList; $render->pagedata['extends'] = $extendInfo; // 检测京东订单是否有微信支付先用后付的单据 $use_before_payed = false; if ($order_detail['shop_type'] == '360buy') { $labelCode = kernel::single('ome_bill_label')->getLabelFromOrder($order_detail['order_id']); $labelCode = array_column($labelCode, 'label_code'); $use_before_payed = kernel::single('ome_order')->canDeliveryFromBillLabel($labelCode); } $render->pagedata['use_before_payed'] = $use_before_payed; // 服务订单 $serviceObj = app::get('ome')->model('order_service'); $service_list = $serviceObj->getList('*',array('order_id'=>$order_id)); $render->pagedata['service_list'] = $service_list; $ordLabelObj = app::get('ome')->model('bill_label'); if($order_detail['is_delivery']=='N'){ $orderbills = $ordLabelObj->dump(array('label_code'=>array('SOMS_CHANGE_CANCEL','SOMS_JDZD'),'bill_type'=>'order','bill_id'=>$order_id),'bill_id'); if($orderbills){ //变成可发货 $render->pagedata['can_recover_delivery'] = 'true'; } } return $render->fetch('admin/order/detail_basic.html'); } //开票提交显示 //开票提交显示 private function submit_invoice_show(&$order_detail){ //发票相关 获取是否有订单相关的发票信息 有的话取最新一条发票信息 $rs_invoice_info = kernel::single('invoice_common')->getInvoiceInfoByOrderId($order_detail['order_id']); if($rs_invoice_info){ //有过订单的发票信息 $order_detail['has_invoice'] = true; $order_detail['invoice_status_text'] = kernel::single('invoice_common')->getIsStatusText($rs_invoice_info[0]['is_status']); $order_detail['invoice_mode_text'] = kernel::single('invoice_common')->getModeText($rs_invoice_info[0]['mode']); }else{ //没有过订单的发票信息 $order_detail['has_invoice'] = false; } //没有过发票信息的 或者 有过发票信息的&&最新一条发票记录为已作废状态的 可以去选择纸质/电子生成新的此订单的发票信息 $order_detail['add_invoice'] = false; if( !$order_detail['has_invoice'] || ($order_detail['has_invoice'] && intval($rs_invoice_info[0]['is_status']) == 2) ){ $order_detail['add_invoice'] = true; } } //开票提交业务处理 private function submit_invoice($post_data){ $oOrders = app::get('ome')->model('orders'); $oOperation_log = app::get('ome')->model('operation_log'); //更新订单is_tax字段 并记下log $update_arr = array('order_id'=>$_POST['order_id'],"is_tax"=>$_POST['is_tax']); if($_POST['is_tax'] == 'true'){ $order_is_tax_part = "要开票"; $invoiceMdl = app::get('ome')->model('order_invoice'); $oldInvoice = $invoiceMdl->db_dump(array('order_id'=>$_POST['order_id'])); if(($_POST['tax_no']!=$oldInvoice['tax_no'])||($_POST['tax_title']!=$oldInvoice[0]['tax_company'])){ $order_is_tax_part .= ',录入及变更发票号或抬头'; } $upInvoice = array('order_id'=>$_POST['order_id']); if(isset($_POST['tax_title'])){ $upInvoice['tax_title'] = $_POST['tax_title']; } if(isset($_POST['tax_no'])){ $upInvoice['tax_no'] = $_POST['tax_no']; } if(isset($_POST['invoice_mode'])) { $upInvoice['invoice_kind'] = $_POST['invoice_mode']; } if($oldInvoice) { $invoiceMdl->update($upInvoice, array('id'=>$oldInvoice['id'])); } else { $upInvoice['create_time'] = time(); $invoiceMdl->insert($upInvoice); } }else{ $order_is_tax_part = "不要开票"; } $oOrders->save($update_arr); $rs_is_tax = $order_is_tax_log = "订单更新为".$order_is_tax_part; if($rs_is_tax){ $oOperation_log->write_log('order_modify@ome',$_POST['order_id'],$order_is_tax_log); $order = app::get('ome')->model('orders')->dump($_POST['order_id'], 'shop_id,order_id,pay_status,total_amount,source_status,member_id,createway'); $memeberMdl = app::get('ome')->model("members"); $arr_create_invoice = array( 'order_id'=>$_POST['order_id'], 'is_tax' => $_POST['is_tax'], 'source_status' => $order['source_status'] ); if(isset($_POST['invoice_mode'])) { $arr_create_invoice['invoice_kind'] = $_POST['invoice_mode'] == '1' ? '1' : ($_POST['invoice_mode'] == '0' ? '2' : '3'); } //本地创建的订单使用用户的title和税号 $memeberInfo = $memeberMdl->db_dump($order['member_id']); if ($memeberInfo && $order['createway'] == 'local') { $arr_create_invoice['title'] = $memeberInfo['title']; $arr_create_invoice['ship_tax'] = $memeberInfo['ship_tax']; } kernel::single('invoice_order_front_router', 'b2c')->operateTax($arr_create_invoice); } } function detail_goods($order_id){ $render = app::get('ome')->render(); $oOrder = app::get('ome')->model('orders'); $item_list = $oOrder->getItemList($order_id,true); $item_list = ome_order_func::add_getItemList_colum($item_list); ome_order_func::order_sdf_extend($item_list); $orders = $oOrder->getRow(array('order_id'=>$order_id),'order_id,shop_type,order_source,process_status'); $is_consign = false; //淘宝代销订单增加代销价 if($orders['shop_type'] == 'taobao' && $orders['order_source'] == 'tbdx' ){ kernel::single('ome_service_c2c_taobao_order')->order_sdf_extend($item_list); $is_consign = true; } $configlist = array(); if ($servicelist = kernel::servicelist('ome.service.order.products')) foreach ($servicelist as $object => $instance){ if (method_exists($instance, 'view_list')){ $list = $instance->view_list(); $configlist = array_merge($configlist, is_array($list) ? $list : array()); } } //是否超级管理员 $isSuper = kernel::single('desktop_user')->is_super(); //平台订单金额明细 $couponList = array(); if($orders['shop_type'] == 'luban' && $isSuper){ $couponMdl = app::get('ome')->model('order_coupon'); $couponList = $couponMdl->getList('*', array('order_id'=>$order_id)); if($couponList){ $oidList = array(); foreach ($item_list as $obj_type => $objects){ foreach ($objects as $obj_id => $items){ $oid = $items['oid']; $oidList[$oid]['bn'] = $items['bn']; } } foreach ($couponList as $key => $val){ $oid = $val['oid']; $couponList[$key]['material_bn'] = $oidList[$oid]['bn']; } } } $psRows = app::get('ome')->model('order_platformsplit')->getList('split_oid, bn', ['order_id'=>$order_id]); $split_oid = []; foreach ($psRows as $key => $value) { $split_oid[$value['split_oid']][] = $value['bn']; } //销售价权限判断 $showSalePrice = true; if (!kernel::single('desktop_user')->has_permission('sale_price')) { $showSalePrice = false; } if($orders['shop_type'] == 'vop'){ $obCheckItemsMdl = app::get('ome')->model('order_objects_check_items'); $check_items = $obCheckItemsMdl->getList('*', ['order_id'=>$order_id]); $check_items = array_column($check_items, null, 'bn'); $mdl = app::get('purchase')->model('pick_bill_check_items'); foreach ($check_items as $cik => $civ) { $check_items[$cik]['delete'] = 'false'; if ($mdl->order_label[$civ['order_label']]) { $check_items[$cik]['order_label'] = $mdl->order_label[$civ['order_label']]; } } foreach ($item_list as $k => $v) { foreach ($v as $kk => $vv) { if ($vv['delete'] == 'true' && $check_items[$vv['bn']]) { $check_items[$vv['bn']]['delete'] = 'true'; } } } $render->pagedata['check_items'] = array_values($check_items); } //check $is_host = false; $lucky_flag = false; $is_hold_time = false; $is_presale_status = false; foreach ($item_list as $obj_type => $objects){ foreach ($objects as $obj_id => $objInfo){ //author_id if ($objInfo['author_id']) { $is_host = true; } //presale_status if ($objInfo['presale_status'] == 1) { $is_presale_status = true; } //obj_type if ($objInfo['obj_type'] == 'lkb') { $lucky_flag = true; } //estimate_con_time if ($objInfo['estimate_con_time'] > 1) { $is_hold_time = true; } } } //获取福袋使用记录 if($lucky_flag){ $luckyBagLib = kernel::single('ome_order_luckybag'); //obj_id $luckyObjIds = array(); foreach ($item_list as $obj_type => $objects) { foreach ($objects as $objKey => $objVal) { $obj_id = $objVal['obj_id']; //check if($objVal['obj_type'] != 'lkb'){ continue; } $luckyObjIds[$obj_id] = $obj_id; } } //福袋使用日志记录 $luckyList = $luckyBagLib->getOrderLuckyBagList($order_id, $luckyObjIds); if(empty($luckyList)){ //换货生成的新订单--获取福袋使用日志 $luckyList = $luckyBagLib->getChangeOrderLuckyBagList($order_id, $luckyObjIds); } //format foreach ($item_list as $obj_type => $objects) { foreach ($objects as $obj_id => $objInfo) { //check if(empty($objInfo['order_items'])){ continue; } //check if($objInfo['obj_type'] != 'lkb'){ continue; } // 重新组装ITEM $order_items = []; foreach ($objInfo['order_items'] as $itemKey => $itemVal) { $item_id = $itemVal['item_id']; $luckybag_id = $itemVal['luckybag_id'] ?: 0; //福袋使用日志信息 $luckyBagInfo = $luckyList[$item_id]; //初始化福袋组合信息 if(!isset($order_items[$luckybag_id])){ $order_items[$luckybag_id] = $luckyBagInfo; //福袋实付金额 $order_items[$luckybag_id]['divide_order_fee'] = $itemVal['divide_order_fee']; //福袋优惠分摊 $order_items[$luckybag_id]['part_mjz_discount'] = $itemVal['part_mjz_discount']; }else{ //福袋实付金额 $order_items[$luckybag_id]['divide_order_fee'] += $itemVal['divide_order_fee']; //福袋优惠分摊 $order_items[$luckybag_id]['part_mjz_discount'] += $itemVal['part_mjz_discount']; } //基础物料价格贡献比 $itemVal['price_rate'] = $luckyBagInfo['price_rate']; //基础物料选中比例 $itemVal['real_ratio'] = $luckyBagInfo['real_ratio']; //items $order_items[$luckybag_id]['items'][] = $itemVal; } $item_list[$obj_type][$obj_id]['order_items'] = $order_items; } } } $render->pagedata['is_host'] = $is_host; $render->pagedata['lucky_flag'] = $lucky_flag; $render->pagedata['is_hold_time'] = $is_hold_time; $render->pagedata['is_presale_status'] = $is_presale_status; $render->pagedata['show_sale_price'] = $showSalePrice; $render->pagedata['order'] = $orders; $render->pagedata['couponList'] = $couponList; $render->pagedata['maxHoldTime'] = kernel::single('omeauto_auto_hold')->getMaxHoldTime(); $render->pagedata['is_consign'] = ($is_consign > 0)?true:false; $render->pagedata['configlist'] = $configlist; $render->pagedata['item_list'] = $item_list; $render->pagedata['shop_type'] = $orders['shop_type']; $render->pagedata['split_oid'] = $split_oid; $render->pagedata['object_alias'] = $oOrder->getOrderObjectAlias($order_id); return $render->fetch('admin/order/detail_goods.html'); } function detail_pmt($order_id){ $render = app::get('ome')->render(); $oOrder_pmt = app::get('ome')->model('order_pmt'); $ordersObj = app::get('ome')->model('orders'); //订单信息 $orderInfo = $ordersObj->dump(array('order_id'=>$order_id), 'order_bn,shop_type,api_version'); $render->pagedata['orderInfo'] = $orderInfo; //优惠券信息 $pmts = $oOrder_pmt->getList('*',array('order_id'=>$order_id)); $render->pagedata['pmts'] = $pmts; if(in_array($orderInfo['shop_type'], ['luban','taobao','360buy','wxshipin'])) { $couponOrder = app::get('ome')->model('order_coupon')->getList('type,type_name as pmt_describe,total_amount as pmt_amount, oid,material_bn,amount', array('order_id'=>$order_id)); $title = ['oid'=>'子单号','material_bn'=>'物料编号']; $pmts = []; foreach($couponOrder as $v) { $index = $v['oid'].$v['material_bn']; $pmtIndex = $v['pmt_describe'] . ($v['type'] ? '('.$v['type'].')' : ''); $pmt_amount = in_array($orderInfo['shop_type'], ['luban']) ? $v['amount'] : $v['pmt_amount']; $pmts[$index]['oid'] = $v['oid']; $pmts[$index]['material_bn'] = $v['material_bn']; $pmts[$index][$pmtIndex] = ($pmts[$index][$pmtIndex] ? $pmts[$index][$pmtIndex] . ' | ' : '') . $pmt_amount; $title[$pmtIndex] = $pmtIndex; } $render->pagedata['coupon']['title'] = $title; $render->pagedata['coupon']['pmts'] = $pmts; } if(in_array($orderInfo['shop_type'], ['360buy']) && $orderInfo['api_version'] < 3) { $title = ['oid'=>'子单号','material_bn'=>'物料编号']; foreach(app::get('ome')->model('order_coupon')->getList('type,type_name as pmt_describe', array('order_id'=>$order_id)) as $v) { $pmtIndex = $v['pmt_describe'] . ($v['type'] ? '('.$v['type'].')' : ''); $title[$v['type']] = $pmtIndex; } $couponOrder = app::get('ome')->model('order_objects_coupon')->getList('addon, num as quantity,oid,material_bn', array('order_id'=>$order_id)); $pmts = []; foreach($couponOrder as $v) { $addon = unserialize($v['addon']); $tmp = [ 'oid' => $v['oid'], 'material_bn' => $v['material_bn'], ]; if($addon) { $pmts[] = array_merge($tmp, $addon); } } $render->pagedata['coupon']['title'] = $title; $render->pagedata['coupon']['pmts'] = $pmts; } return $render->fetch('admin/order/detail_pmt.html'); } function detail_bill($order_id){ $render = app::get('ome')->render(); $oPayments = app::get('ome')->model('payments'); $oRefunds = app::get('ome')->model('refunds'); $payments = $oPayments->getList('payment_id,payment_bn,t_begin,download_time,money,paymethod',array('order_id'=>$order_id)); $refunds = $oRefunds->getList('refund_bn,t_ready,download_time,money,paymethod,payment',array('order_id'=>$order_id)); $paymentCfgModel = app::get('ome')->model('payment_cfg'); foreach ($refunds as $key=>$refund) { if ($refund['paymethod']) { $paymentCfg = $paymentCfgModel->getList('custom_name',array('id'=>$refund['payment']),0,1); $refunds[$key]['paymethod'] = $paymentCfg[0]['custom_name'] ? $paymentCfg[0]['custom_name'] : ''; } } foreach($payments as $k=>$v){ $payments[$k]['t_begin'] = date('Y-m-d H:i:s',$v['t_begin']); if($v['download_time']) $payments[$k]['download_time'] = date('Y-m-d H:i:s',$v['download_time']); } $render->pagedata['payments'] = $payments; $render->pagedata['refunds'] = $refunds; $oRefund_apply = app::get('ome')->model('refund_apply'); $refundBoolTypeLib = kernel::single('ome_refund_bool_type'); $refund_apply = $oRefund_apply->getList('create_time,status,money,refund_apply_bn,refunded,bool_type',array('order_id'=>$order_id)); if($refund_apply){ foreach($refund_apply as $k=>$v) { $bool_type_str = ''; //单据种类 if($v['bool_type']){ $isPriceProtectRefund = $refundBoolTypeLib->isPriceProtectRefund($v['bool_type']); if($isPriceProtectRefund){ $bool_type_str = '【价保】'; } } $refund_apply[$k]['status_text'] = $bool_type_str . ome_refund_func::refund_apply_status_name($v['status']); } } $render->pagedata['refund_apply'] = $refund_apply; return $render->fetch('admin/order/detail_bill.html'); } // function detail_refund_apply($order_id){ // $render = app::get('ome')->render(); // $oRefund_apply = app::get('ome')->model('refund_apply'); // $refundBoolTypeLib = kernel::single('ome_refund_bool_type'); // $refund_apply = $oRefund_apply->getList('create_time,status,money,refund_apply_bn,refunded,bool_type',array('order_id'=>$order_id)); // if($refund_apply){ // foreach($refund_apply as $k=>$v) // { // $bool_type_str = ''; // //单据种类 // if($v['bool_type']){ // $isPriceProtectRefund = $refundBoolTypeLib->isPriceProtectRefund($v['bool_type']); // if($isPriceProtectRefund){ // $bool_type_str = '【价保】'; // } // } // $refund_apply[$k]['status_text'] = $bool_type_str . ome_refund_func::refund_apply_status_name($v['status']); // } // } // $render->pagedata['refund_apply'] = $refund_apply; // return $render->fetch('admin/order/detail_refund_apply.html'); // } function detail_delivery($order_id){ $render = app::get('ome')->render(); $oDelivery = app::get('ome')->model('delivery'); $oReship = app::get('ome')->model('reship'); $oWms_delivery = app::get('wms')->model('delivery'); $obj_order = app::get('ome')->model('orders'); $wms_delivery = $oWms_delivery->getDeliveryByOrder($order_id); $oBranch = app::get('ome')->model('branch'); $delivery = $oDelivery->getDeliveryByOrder('branch_id,create_time,delivery_id,delivery_bn,logi_id,logi_no,logi_name,ship_name,delivery,branch_id,stock_status,deliv_status,expre_status,status,weight',$order_id); $reship = $oReship->getList('t_begin,reship_id,reship_bn,logi_no,ship_name,delivery',array('order_id'=>$order_id)); $wms_id = kernel::single('wms_branch')->getBranchByselfwms(); $order_info = $obj_order->dump($order_id,'order_bn'); #检测是否开启华强宝物流 $is_hqepay_on = app::get('ome')->getConf('ome.delivery.hqepay'); if($is_hqepay_on == 'false'){ $is_hqepay_on = false; }else{ $is_hqepay_on = true; } foreach($delivery as $k=>$v){ //判断是否第三方 $branch_list = $oBranch->getList('branch_id', array('wms_id'=>$wms_id,'branch_id'=>$v['branch_id']), 0, -1); if ($branch_list) { $delivery[$k]['selfwms'] = 1; } $delivery[$k]['create_time'] = date('Y-m-d H:i:s',$v['create_time']); $delivery[$k]['delivery_bn'] = ''.$v['delivery_bn'].''; } //同城配 $isSeller = false; foreach ((array)$wms_delivery as $wmsKey => $wmsVal) { if($wmsVal['delivery_model'] == 'seller'){ $isSeller = true; } } $render->pagedata['isSeller'] = $isSeller; //获取京东物流包裹明细 $deliveryPackage = $this->getOrderDeliveryPackage($order_id); $render->pagedata['order_bn'] = $order_info['order_bn']; $render->pagedata['is_hqepay_on'] = $is_hqepay_on; $render->pagedata['delivery'] = $delivery; $render->pagedata['wms_delivery'] = $wms_delivery; $render->pagedata['reship'] = $reship; $render->pagedata['deliveryPackage'] = $deliveryPackage; return $render->fetch('admin/order/detail_delivery.html'); } /** * 获取京东物流包裹明细 * @param $order_id * @return array */ public function getOrderDeliveryPackage($order_id) { $consoleDeliveryLib = kernel::single('console_delivery'); $oDelivery = app::get('ome')->model('delivery'); $oDeliveryOrder = app::get('ome')->model('delivery_order'); $deliveryOrderIds = $oDeliveryOrder->getList('delivery_id',array('order_id' => $order_id)); $delivery_ids = array_column($deliveryOrderIds,'delivery_id'); if(!$delivery_ids){ return []; } $oDeliveryPackage = app::get('ome')->model('delivery_package'); $deliveryPackageList = $oDeliveryPackage->getList('*',array('delivery_id' => $delivery_ids,'status|noequal'=>'cancel')); //发货单列表关联明细表,渠道ID,基础物料名称,商品采购价格 $_deliveryList = array(); if($delivery_ids){ $sql = "SELECT d.delivery_id,d.wms_channel_id,di.bn,di.product_name,di.purchase_price,d.logi_id,d.logi_name,d.logi_no,d.delivery_time,d.logi_status,di.number,d.branch_id,d.delivery_bn FROM sdb_ome_delivery_items di LEFT JOIN sdb_ome_delivery AS d ON d.delivery_id = di.delivery_id WHERE di.delivery_id IN(". implode(',', $delivery_ids) .")"; $tempList = $oDelivery->db->select($sql); if($tempList){ foreach ($tempList as $key => $val) { $delivery_id = $val['delivery_id']; $bn = $val['bn']; $_deliveryList[$delivery_id.'_'.$bn] = $val; } } } //获取发货单明细为子单号的数据 $_deliveryPackageList = array(); if($delivery_ids){ $sql = "SELECT d.delivery_id,d.delivery_bn,cde.original_delivery_bn FROM sdb_ome_delivery d LEFT JOIN sdb_console_delivery_extension AS cde ON d.delivery_bn = cde.delivery_bn WHERE d.delivery_id IN(". implode(',', $delivery_ids) .")"; $tempList = $oDelivery->db->select($sql); if($tempList){ foreach($tempList as $key => $val){ $_deliveryPackageList[$val['delivery_id']] = $val; } } } //发货单明细关联订单对象表,达人ID,达人名称 $_orderObjectsInfo = array(); if($order_id){ $oOrderObjects = app::get('ome')->model('order_objects'); $_orderObjectsInfo = $oOrderObjects->dump(array('order_id'=>$order_id),'author_id,author_name,order_id'); } $data = array(); foreach($deliveryPackageList as $key => $val){ $delivery_id = $val['delivery_id']; $bn = $val['bn']; $dly_bn = $delivery_id.'_'.$bn; //create_time if($val['create_time']){ $data[$key]['create_time'] = date('Y-m-d H:i:s',$val['create_time']); }else{ $data[$key]['create_time'] = ''; } $data[$key]['delivery_bn'] = $_deliveryList[$delivery_id.'_'.$bn]['delivery_bn']; $data[$key]['bn'] = $val['bn']; $data[$key]['product_name'] = $_deliveryList[$delivery_id.'_'.$bn]['product_name']; $data[$key]['is_wms_gift'] = ($val['is_wms_gift'] == 'true') ? '是' : '否'; $data[$key]['number'] = $val['number']; $data[$key]['logi_bn'] = $val['logi_bn']; $data[$key]['logi_no'] = $val['logi_no'] ? $val['logi_no'] : $_deliveryList[$dly_bn]['logi_no']; $data[$key]['logi_name'] = isset($_deliveryList[$dly_bn]['logi_name']) ? $_deliveryList[$dly_bn]['logi_name'] : ''; $data[$key]['status'] = $consoleDeliveryLib->getPackageStatus($val['status']);//包裹状态 $data[$key]['shipping_status'] = $val['shipping_status'] ? $consoleDeliveryLib->getShippingStatus($val['shipping_status']) : '';//配送状态 $data[$key]['wms_channel_id'] = isset($_deliveryList[$dly_bn]['wms_channel_id']) ? $_deliveryList[$dly_bn]['wms_channel_id'] : ''; $data[$key]['author_id'] = isset($_orderObjectsInfo['author_id']) ? $_orderObjectsInfo['author_id'] : ''; $data[$key]['author_name'] = isset($_orderObjectsInfo['author_name']) ? $_orderObjectsInfo['author_name'] : ''; $data[$key]['jd_package_bn'] = $val['package_bn']; if ($_deliveryPackageList[$delivery_id]['original_delivery_bn'] != $val['package_bn']) { $data[$key]['father_package_bn'] = $_deliveryPackageList[$delivery_id]['original_delivery_bn']; }else{ $data[$key]['father_package_bn'] = ' - '; } } return $data; } function detail_mark($order_id){ $render = app::get('ome')->render(); $oOrders = app::get('ome')->model('orders'); if($_POST){ $order_id = $_POST['order']['order_id']; //取出原备注信息 $oldmemo = $oOrders->dump(array('order_id'=>$order_id), 'mark_text'); $oldmemo= unserialize($oldmemo['mark_text']); $op_name = kernel::single('desktop_user')->get_name(); if ($oldmemo) foreach($oldmemo as $k=>$v){ $memo[] = $v; } $newmemo = htmlspecialchars($_POST['order']['mark_text']); $newmemo = array('op_name'=>$op_name, 'op_time'=>date('Y-m-d H:i:s',time()), 'op_content'=>$newmemo); $memo[] = $newmemo; $_POST['order']['mark_text'] = serialize($memo); $plainData = $_POST['order']; $oOrders->save($plainData); //写操作日志 $memo = "订单备注修改"; //订单留言 API foreach(kernel::servicelist('service.order') as $object=>$instance){ if(method_exists($instance, 'update_memo')){ $instance->update_memo($order_id, $newmemo); } } $oOperation_log = app::get('ome')->model('operation_log'); $oOperation_log->write_log('order_modify@ome',$order_id,$memo); } $order_detail = $oOrders->dump($order_id); $render->pagedata['base_dir'] = kernel::base_url(); $order_detail['mark_text'] = unserialize($order_detail['mark_text']); if ($order_detail['mark_text']) foreach ($order_detail['mark_text'] as $k=>$v){ if (!strstr($v['op_time'], "-")){ $v['op_time'] = date('Y-m-d H:i:s',$v['op_time']); $order_detail['mark_text'][$k]['op_time'] = $v['op_time']; } } $order_detail['custom_mark'] = unserialize($order_detail['custom_mark']); if ($order_detail['custom_mark']) foreach ($order_detail['custom_mark'] as $k=>$v){ if (!strstr($v['op_time'], "-")){ $v['op_time'] = date('Y-m-d H:i:s',$v['op_time']); $order_detail['custom_mark'][$k]['op_time'] = $v['op_time']; } } $order_detail['mark_type_arr'] = ome_order_func::order_mark_type(); $render->pagedata['order'] = $order_detail; //常用备注 $commonRemarks = ['需发货质检', '需优先回传物流单', '指定物流', '指定不能用默认物流']; $render->pagedata['commonRemarks'] = $commonRemarks; return $render->fetch('admin/order/detail_mark.html'); } /*买家留言*/ function detail_custom_mark($order_id){ $render = app::get('ome')->render(); $oOrders = app::get('ome')->model('orders'); if($_POST){ $order_id = $_POST['order']['order_id']; //取出原留言信息 $oldmemo = $oOrders->dump(array('order_id'=>$order_id), 'custom_mark'); $oldmemo= unserialize($oldmemo['custom_mark']); $op_name = kernel::single('desktop_user')->get_name(); if ($oldmemo) foreach($oldmemo as $k=>$v){ $memo[] = $v; } $newmemo = htmlspecialchars($_POST['order']['custom_mark']); $newmemo = array('op_name'=>$op_name, 'op_time'=>date('Y-m-d H:i:s',time()), 'op_content'=>$newmemo); $memo[] = $newmemo; $_POST['order']['custom_mark'] = serialize($memo); $plainData = $_POST['order']; $oOrders->save($plainData); //写操作日志 $memo = "买家留言修改"; //买家留言 API foreach(kernel::servicelist('service.order') as $object=>$instance){ if(method_exists($instance, 'add_custom_mark')){ $instance->add_custom_mark($order_id, $newmemo); } } $oOperation_log = app::get('ome')->model('operation_log'); $oOperation_log->write_log('order_modify@ome',$order_id,$memo); } $order_detail = $oOrders->dump($order_id); $render->pagedata['base_dir'] = kernel::base_url(); $order_detail['custom_mark'] = unserialize($order_detail['custom_mark']); if ($order_detail['custom_mark']) foreach ($order_detail['custom_mark'] as $k=>$v){ if (!strstr($v['op_time'], "-")){ $v['op_time'] = date('Y-m-d H:i:s',$v['op_time']); $order_detail['custom_mark'][$k]['op_time'] = $v['op_time']; } } $render->pagedata['order'] = $order_detail; return $render->fetch('admin/order/detail_custom_mark.html'); } function detail_abnormal($order_id){ $render = app::get('ome')->render(); $oAbnormal = app::get('ome')->model('abnormal'); $oOrder = app::get('ome')->model('orders'); $ordersdetail = $oOrder->dump(array('order_id'=>$order_id)); //组织分派所需的参数 $render->pagedata['op_id'] = $ordersdetail['op_id']; $render->pagedata['group_id'] = $ordersdetail['group_id']; $render->pagedata['dt_begin'] = strtotime(date('Y-m-d',time())); $render->pagedata['dispatch_time'] = strtotime(date('Y-m-d',time())); $render->pagedata['ordersdetail'] = $ordersdetail; //增加一个标识 $render->pagedata['is_flag'] = 'true'; if($ordersdetail['shop_type'] == 'vjia'){ $outstorageObj = app::get('ome')->model('order_outstorage'); $outstorage = $outstorageObj->dump(array('order_id'=>$order_id),'order_id'); if(is_array($outstorage) && !empty($outstorage)) { $render->pagedata['outstorage'] = 'fail'; } } if($_POST){ $abnormal_data = $_POST['abnormal']; if($abnormal_data['is_done']=='vjia') { $outstorageObj->delete(array('order_id'=>$order_id)); $abnormal_data['is_done'] = 'true'; } $oOrder->set_abnormal($abnormal_data); } $abnormal = $oAbnormal->getList("*",array("order_id"=>$order_id),0,-1,'abnormal_id desc'); if($abnormal){ $oAbnormal_type = app::get('ome')->model('abnormal_type'); $abnormal_type = $oAbnormal_type->getList("*"); $abnormal[0]['abnormal_memo'] = unserialize($abnormal[0]['abnormal_memo']); $render->pagedata['abnormal'] = $abnormal[0]; $render->pagedata['abnormal_type'] = $abnormal_type; $render->pagedata['order_id'] = $order_id; $render->pagedata['set_abnormal'] = true; }else{ $render->pagedata['set_abnormal'] = false; } return $render->fetch('admin/order/detail_abnormal.html'); } /** * 订单操作记录 * @param int $order_id * @return string */ function detail_history($order_id) { //订单信息 $orderType = app::get('ome')->model('orders')->dump(array('order_id'=>$order_id), 'order_type'); //加载模板 if($orderType['order_type'] == 'brush') { //brush特殊订单 return $this->__brush_log_history($order_id); } else { //普通订单 return $this->__normal_log_history($order_id); } } function detail_shipment($order_id) { $render = app::get('ome')->render(); $orderObj = app::get('ome')->model('orders'); $shipmentObj = & app::get('ome')->model('shipment_log'); $userObj = app::get('desktop')->model('users'); $order = $orderObj->dump($order_id); if ($order) { $orderBn = $order['order_bn']; $shipmentLogs = $shipmentObj->getList('*', array('orderBn' => $orderBn)); foreach ($shipmentLogs as $k=>$log) { if ($shipmentLogs[$k]['receiveTime']) { $shipmentLogs[$k]['receiveTime'] = date('Y-m-d H:i:s', $shipmentLogs[$k]['receiveTime']); } else { $shipmentLogs[$k]['receiveTime'] = ' '; } if ($shipmentLogs[$k]['updateTime']) { $shipmentLogs[$k]['updateTime'] = date('Y-m-d H:i:s', $shipmentLogs[$k]['updateTime']); } else { $shipmentLogs[$k]['updateTime'] = ' '; } switch ($shipmentLogs[$k]['status']) { case 'succ': $shipmentLogs[$k]['status'] = '成功'; break; case 'fail': $shipmentLogs[$k]['status'] = '失败'; break; default: $shipmentLogs[$k]['status'] = '运行中……'; break; } if($log['ownerId'] == 16777215){ $shipmentLogs[$k]['ownerId'] = 'system'; }else{ $user = $userObj->dump($log['ownerId'],'name'); $shipmentLogs[$k]['ownerId'] = $user['name']; } } $render->pagedata['order'] = $order; $render->pagedata['shipmentLogs'] = $shipmentLogs; } return $render->fetch('admin/order/detail_shipment.html'); } /*function detail_aftersale($order_id){ $render = app::get('ome')->render(); $oReturn = app::get('ome')->model('return_product'); $return = $oReturn->Get_aftersale_list($order_id); $render->pagedata['return'] = $return; return $render->fetch('admin/order/detail_aftersale.html'); }*/ var $addon_cols = "print_status,confirm,dt_begin,status,process_status,tax_no,ship_status,op_id,group_id,mark_text,auto_status,custom_mark,mark_type,tax_company,createtime,paytime,sync,pay_status,is_cod,source,order_type,order_bool_type,timing_confirm,shop_type,tostr,itemnum,delivery_time,abnormal_status,shipping,order_source,is_delivery,step_trade_status"; var $column_confirm='操作'; var $column_confirm_width = "120"; function column_confirm($row){ if ($_GET['ctl']=='admin_order') { if($_GET['act'] == 'index') { return $this->_get_index_btn($row); } return $this->_get_confirm_btn($row); } elseif ($_GET['ctl']=='admin_order_lack') { return $this->_get_lack_btn($row); } else { return $this->_get_sync_btn($row); } } private function _get_index_btn($row) { $order_id = $row['order_id']; $find_id = $_GET['_finder']['finder_id']; if($row[$this->col_prefix.'shop_type'] == 'taobao' && $row[$this->col_prefix.'order_source'] == 'maochao' && $row[$this->col_prefix.'ship_status'] == '1' ) { if(app::get('ome')->model('return_product')->db_dump(['order_id'=>$order_id, 'status|noequal'=>'5'], 'return_id')) { return ''; } return '客户拒收'; } return ''; } private function _get_lack_btn($row) { $order_id = $row['order_id']; $find_id = $_GET['_finder']['finder_id']; if($row[$this->col_prefix.'shop_type'] == 'taobao' && $row[$this->col_prefix.'order_source'] == 'maochao' && $row[$this->col_prefix.'is_delivery'] != 'N' ) { return '缺货申请'; } return ''; } private function _get_sync_btn($row) { if ($_GET['view']==3 || $_GET['view']==5 || $_GET['view']==4) { unset($this->column_confirm); return; } $find_id = $_GET['_finder']['finder_id']; $result = ''; $order_id = $row['order_id']; switch ($row['_0_sync']) { case 'none': $result = "发货"; break; case 'fail': case 'run': $result = "重试"; break; } return $result; } private function _get_confirm_btn($row) { //条件过滤 $filter_data = array(); if ($_POST) foreach ($_POST as $key=>$v){ if (preg_match("/^_+/i",$key)) continue; $filter_data[$key] = $v; } $filter = urlencode(serialize($filter_data)); $find_id = $_GET['_finder']['finder_id']; $order_id = $row['order_id']; $button = <<订单确认 EOF; $button2 = <<订单拆分 EOF; $button_platform_split = <<京东拆 EOF; $remain_order_cancel_but = <<余单撤销 EOF; $button_batch = <<审核 EOF; $button_dispatch = <<分派 EOF; $reback_delivery_but = <<撤销发货单 EOF; #订单编辑同步状态 $shop_id = $row['shop_id']; $order_bn = $row['order_bn']; $oOrder_sync = app::get('ome')->model('order_sync_status'); $sync_status = $oOrder_sync->getList('order_id,type,sync_status',array('order_id'=>$order_id),0,1); if ($sync_status[0]['sync_status'] == '1' && $row[$this->col_prefix.'source'] == 'matrix'){ $button2 = $button = <<重新同步 EOF; $re_sync = true; } // 订单确认 - 本组的订单 if ($_GET['flt'] == 'ourgroup') { if (empty($row[$this->col_prefix.'op_id']) && in_array($row[$this->col_prefix.'process_status'],array('unconfirmed','confirmed','splitting'))) { $button_3 = sprintf('领取', $order_id, $filter, $find_id); return $button_3; } } // 订单确认 - 我的待确认订单 elseif ($_GET['flt'] == 'unmyown') { // 检测京东订单是否有微信支付先用后付的单据 $labelCode = []; if ($row[$this->col_prefix.'shop_type'] == '360buy') { $labelCode = kernel::single('ome_bill_label')->getLabelFromOrder($row['order_id']); $labelCode = array_column($labelCode, 'label_code'); } if (($row[$this->col_prefix.'pay_status'] == 1 || $row[$this->col_prefix.'pay_status'] == 4 || ($row[$this->col_prefix.'is_cod'] == 'true' && ($row[$this->col_prefix.'pay_status'] == 0 || $row[$this->col_prefix.'pay_status'] == 3)) || ($row[$this->col_prefix.'pay_status'] == 3 && $row[$this->col_prefix.'step_trade_status'] == 'FRONT_PAID_FINAL_NOPAID' && kernel::single('ome_order_func')->checkPresaleOrder())|| kernel::single('ome_order')->canDeliveryFromBillLabel($labelCode) ) && in_array($row[$this->col_prefix.'process_status'], array('unconfirmed', 'confirmed','splitting')) && $row[$this->col_prefix.'ship_status'] == '0') { if ($row[$this->col_prefix.'confirm'] == 'N' && !in_array($row[$this->col_prefix.'process_status'],array('splited','cancel','remain_cancel')) && $row[$this->col_prefix.'status'] == 'active') { if($row[$this->col_prefix.'shop_type'] == '360buy' && $row[$this->col_prefix.'source'] == 'matrix') { return $button_batch . ' | ' . $button_platform_split; } return $button_batch; } if (!in_array($row[$this->col_prefix.'process_status'],array('splited','unconfirmed','cancel','remain_cancel')) && $row[$this->col_prefix.'status'] == 'active'){ if($row[$this->col_prefix.'shop_type'] == '360buy' && $row[$this->col_prefix.'source'] == 'matrix') { return $button_batch . ' | ' . $button_platform_split; } return $button_batch; } } elseif (($row[$this->col_prefix.'pay_status'] == 1 || $row[$this->col_prefix.'is_cod'] == 'true') && $row[$this->col_prefix.'process_status'] == 'splitting' && ($row[$this->col_prefix.'ship_status'] == '2' || $row[$this->col_prefix.'ship_status'] == '3')) { return sprintf("%s | %s | %s", $button2, $remain_order_cancel_but,$reback_delivery_but);//已支付-部分拆分-部分发货-部分退货 } elseif ($row[$this->col_prefix.'pay_status'] == 1 && $row[$this->col_prefix.'process_status'] == 'splitting' && $row[$this->col_prefix.'ship_status'] == '4') { return sprintf("%s ", $remain_order_cancel_but);//已支付-部分拆分-已退货-可余单撤销 } elseif ($row[$this->col_prefix.'pay_status'] == 4 && $row[$this->col_prefix.'process_status'] == 'splitting' && ($row[$this->col_prefix.'ship_status'] == '2' || $row[$this->col_prefix.'ship_status'] == '3')) { return sprintf("%s | %s", $button2, $remain_order_cancel_but);//部分退款-部分退款-部分拆分-部分发货的订单可继续操作 } elseif($row[$this->col_prefix.'pay_status'] == 5 && ($row[$this->col_prefix.'process_status'] == 'splitting' || $row[$this->col_prefix.'ship_status'] == '2')) { return sprintf("%s", $remain_order_cancel_but);//全额退款-部分拆分-部分发货-可余单撤销 } } elseif($_GET['flt'] == 'buffer') { //缓冲区 return $button_dispatch; } elseif($_GET['flt'] == 'assigned') { //缓冲区 $deliveryObj = app::get('ome')->model('delivery'); $deliveryIds = $deliveryObj->getDeliverIdByOrderId($row['order_id']); if(count($deliveryIds)==0){ return $button_dispatch; } } else { // 检测京东订单是否有微信支付先用后付的单据 $labelCode = []; if ($row[$this->col_prefix.'shop_type'] == '360buy') { $labelCode = kernel::single('ome_bill_label')->getLabelFromOrder($row['order_id']); $labelCode = array_column($labelCode, 'label_code'); } // 余单撤销(只有已支付,或是货到付款并且部分发货的才会出现余单撤销按钮) if (($row['pay_status'] == 1 || $row['is_cod'] == 'true' || kernel::single('ome_order')->canDeliveryFromBillLabel($labelCode) ) && $row[$this->col_prefix.'ship_status'] == '2'){ return $button = $remain_order_cancel_but.$reback_delivery_but; } } if ($_GET['flt'] == 'myown' && $row[$this->col_prefix.'ship_status'] != '1'){ return $reback_delivery_but; } if($re_sync == true){ return $button; } } function row_style($row, $list){ $time = time(); $limit = (app::get("ome")->getConf('ome.order.unconfirmtime'))*60; $style=''; if($row[$this->col_prefix.'confirm'] == 'N' && ($time - $row[$this->col_prefix.'dt_begin'] > $limit) && ($row[$this->col_prefix.'op_id'] || $row[$this->col_prefix.'group_id']) && $row[$this->col_prefix.'process_status'] == 'unconfirmed'){ $style .= ' highlight-row '; } if($row[$this->col_prefix.'is_cod'] == 'true'){ $style .= " list-even "; } elseif($row['process_status'] == 'splitting' && $row['pay_status'] == '4') { $style = 'list-warning'; //部分退款--颜色显示 } elseif($row['process_status'] == 'is_retrial' || $row['process_status'] == 'is_declare') { $style = ' selected '; //复审订单 OR 跨境申报订单 } elseif($row[$this->col_prefix .'order_type'] == 'presale'){ $style = ' list-presale'; } if(in_array($row['process_status'],array('splitting','confirmed','unconfirmed'))) { $extend = $this->__getOrderExtend($list); $time = $extend[$row['order_id']]['push_time']; $now = time(); if($time > $now - 432000) { //5天内 if ($now > $time) { // $style .= 'list-warn'; } elseif ($now > $time - 1800) { $style .= 'list-warning'; } } } if(in_array($row['process_status'],array('splited','splitting','confirmed','unconfirmed')) && $row[$this->col_prefix.'status'] == 'active') { $extend = $this->__getOrderExtend($list); $time = $extend[$row['order_id']]['latest_delivery_time']; $now = time(); if($time > 0) { //有最晚发货时间 if ($now > $time) { $style .= 'list-warn'; } elseif ($now > $time - 1800) { $style .= 'list-warning'; } } } return $style; } var $column_tax_no='是否录入发票号'; var $column_tax_no_width = "100"; function column_tax_no($row){ if($row[$this->col_prefix.'tax_no']){ return '是'; }else{ return '否'; } } // var $column_custom_add='买家备注'; var $column_custom_add='客户备注'; var $column_custom_add_width = "100"; function column_custom_add($row){ $order_id = $row['order_id']; //$oObj = app::get('ome')->model('orders'); //$custom_mark = $oObj->dump($order_id,'custom_mark'); $custom_mark = $row[$this->col_prefix.'custom_mark']; $custom_mark = kernel::single('ome_func')->format_memo($custom_mark); foreach ((array)$custom_mark as $k=>$v){ $html .= $v['op_content'].' '.$v['op_time'].' by '.$v['op_name']."
"; } $html = strip_tags(htmlspecialchars($html)); return "
".strip_tags(htmlspecialchars($custom_mark[$k]['op_content']))."
"; } // var $column_customer_add='客服备注'; var $column_customer_add='商家备注'; var $column_customer_add_width = "100"; function column_customer_add($row){ $order_id = $row['order_id']; //$oObj = app::get('ome')->model('orders'); //$mark_text = $oObj->dump($order_id,'mark_text'); $mark_text = $row[$this->col_prefix.'mark_text']; $mark_text = kernel::single('ome_func')->format_memo($mark_text); foreach ((array)$mark_text as $k=>$v){ $html .= $v['op_content'].' '.$v['op_time'].' by '.$v['op_name']."
"; } $html = strip_tags(htmlspecialchars($html)); return "
".strip_tags(htmlspecialchars($mark_text[$k]['op_content']))."
"; } //新增 var $column_fail_status = '注意事项'; var $column_fail_status_width = "130"; function column_fail_status($row) { //$order_id = $row['order_id']; //$oObj = app::get('ome')->model('orders'); //$row = $oObj->dump($order_id,'*'); foreach ($row as $key => $val) { $key = str_replace('_0_', '', $key); $row[$key] = $val; } $auto_status = $row['auto_status']; $msgs = kernel::single('omeauto_auto_combine')->fetchAlertMsg($auto_status, $row); if (empty($msgs)) { return ''; } else { $ret = ''; foreach ($msgs as $msg) { $ret .= $this->getViewPanel($msg['color'], $msg['msg'], $msg['flag']); } return $ret; } } var $column_deff_time = '下单距今'; var $column_deff_time_width = "100"; var $column_deff_time_order_field = "createtime"; function column_deff_time($row) { if ($row['_0_is_cod'] == 'true') { $difftime = kernel::single('ome_func')->toTimeDiff(time(), $row['_0_createtime']); } else { if ($row['_0_paytime'] > 0) { $difftime = kernel::single('ome_func')->toTimeDiff(time(), $row['_0_paytime']); } else { //return '未支付'; return ''; } } return $difftime['d'] . '天' . $difftime['h'] . '小时' . $difftime['m'] . '分'; } /** * 获取ViewPanel * @param mixed $color color * @param mixed $msg msg * @param mixed $title title * @return mixed 返回结果 */ public function getViewPanel($color, $msg, $title) { return sprintf("
 %s 
", $msg, $color, $title); } //显示状态 var $column_print_status = "打印状态"; var $column_print_status_width = "80"; function column_print_status($row) { $stockColor = (($row['_0_print_status'] & 0x02) == 0x02) ? 'green' : '#eeeeee'; $delivColor = (($row['_0_print_status'] & 0X04) == 0X04) ? 'red' : '#eeeeee'; $expreColor = (($row['_0_print_status'] & 0x01) == 0x01) ? 'gold' : '#eeeeee'; $ret = $this->_getViewPanel('备货单', $stockColor); $ret .= $this->_getViewPanel('发货单', $delivColor); $ret .= $this->_getViewPanel('快递单', $expreColor); return $ret; } /** * _getViewPanel * @param mixed $caption caption * @param mixed $color color * @return mixed 返回值 */ public function _getViewPanel($caption, $color) { if ($color == '#eeeeee') $caption .= '未打印'; else $caption .= '已打印'; return sprintf("
 %s 
", $color, $caption, $caption, substr($caption, 0, 3)); } #订单异常类型 /* var $column_abnormal_type_name ='异常类型'; var $column_abnormal_type_name_width = "80"; function column_abnormal_type_name($row){ $obj_abnormal = app::get('ome')->model('abnormal'); $arr = $obj_abnormal->getList('abnormal_type_name',array('order_id'=>$row['order_id'])); return $arr[0]['abnormal_type_name']; } */ var $column_tax_company='发票抬头'; var $column_tax_company_width = "150"; function column_tax_company($row){ //$oObj = app::get('ome')->model('orders'); //$tax_info = $oObj->dump($row['order_id'],'tax_company'); if(empty($row[$this->col_prefix.'tax_company'])){ return '-'; } return $row[$this->col_prefix.'tax_company']; } var $column_timing_confirm='定时审单'; var $column_timing_confirm_width = "150"; function column_timing_confirm($row){ $timeConfirm = $row[$this->col_prefix.'timing_confirm']; if(!$timeConfirm){ return '-'; } if($timeConfirm == kernel::single('omeauto_auto_hold')->getMaxHoldTime()) { return '手工审核'; } return date('Y-m-d H:i:s', $timeConfirm); } var $column_abnormal_status = '复审操作'; var $column_abnormal_status_width = '110'; var $column_abnormal_status_order = '10'; function column_abnormal_status($row) { $find_id = $_GET['_finder']['finder_id']; $order_id = $row['order_id']; //不是复审订单,直接返回 if($row[$this->col_prefix.'process_status'] != 'is_retrial'){ return ''; } $sql = "SELECT id, retrial_type, status FROM ".DB_PREFIX."ome_order_retrial WHERE order_id='".$order_id."' AND status in('0', '2') ORDER BY dateline DESC"; $result = kernel::database()->select($sql); $str = '编辑'; if($result[0]['status'] == '2' && $result[0]['retrial_type'] == 'normal') { return $str.' | 恢复原订单'; } elseif($result[0]['status'] == '2') { return $str.'(价格复审)'; } else { return '未审核'; } } var $column_mark_text = '复审备注'; var $column_mark_text_width = '130'; var $column_mark_text_order = '15'; function column_mark_text($row) { $order_id = $row['order_id']; //不是复审订单,直接返回 if($row[$this->col_prefix.'process_status'] != 'is_retrial'){ return ''; } $sql = "SELECT id, remarks, lastdate FROM ".DB_PREFIX."ome_order_retrial WHERE order_id='".$order_id."' AND status in('0', '2') ORDER BY dateline DESC"; $result = kernel::database()->select($sql); $html = strip_tags(htmlspecialchars($result[0]['remarks'])); return "
".$html."
"; } // function detail_service($order_id){ // $render = app::get('ome')->render(); // $serviceObj = app::get('ome')->model('order_service'); // $service_list = $serviceObj->getList('*',array('order_id'=>$order_id)); // $render->pagedata['service_list'] = $service_list; // return $render->fetch('admin/order/detail_service.html'); // } var $column_order_combined_confirm = '已合并审单'; var $column_order_combined_confirm_width = "60"; function column_order_combined_confirm($row) { $ret = "否"; $mdl_ome_dl_or = app::get('ome')->model('delivery_order'); $rs_dl_or = $mdl_ome_dl_or->getList("delivery_id",array("order_id"=>$row['order_id']),0,-1,"delivery_id desc"); if(!empty($rs_dl_or)){ $mdl_ome_dl = app::get('ome')->model('delivery'); foreach($rs_dl_or as $var_d_o){ $rs_dl = $mdl_ome_dl->dump(array("delivery_id"=>$var_d_o["delivery_id"]),"is_bind"); if($rs_dl["is_bind"] == "true"){ $ret = "是"; break; } } } return $ret; } private function __getOrderExtend($list) { static $arrExtend; if(isset($arrExtend)) { return $arrExtend; } $orderId = array(); foreach($list as $val) { $orderId[] = $val['order_id']; } $extendData = app::get('ome')->model('order_extend')->getList('*', array('order_id'=>$orderId)); foreach($extendData as $val) { $arrExtend[$val['order_id']] = $val; } return $arrExtend; } var $column_bool_type='订单标识'; function column_bool_type($row) { return kernel::single('ome_order_bool_type')->getBoolTypeIdentifier($row[$this->col_prefix.'order_bool_type'],$row[$this->col_prefix.'shop_type']); } public $column_push_time = '推单时间'; public $column_push_time_width = '120'; /** * column_push_time * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_push_time($row, $list) { $extend = $this->__getOrderExtend($list); $time = $extend[$row['order_id']]['push_time']; $img = ''; if (kernel::single('ome_order_bool_type')->isCnService($row[$this->col_prefix . 'order_bool_type'])) { if($extend[$row['order_id']]['cn_service'] == 'dang') { $img = ''; } elseif ($extend[$row['order_id']]['cn_service'] == 'ci') { $img = ''; } elseif ($extend[$row['order_id']]['cn_service'] == 'shi') { $img = '
预约时效服务
'; } elseif ($extend[$row['order_id']]['cn_service'] == 'yue') { $img = ''; } elseif ($extend[$row['order_id']]['cn_service'] == 'duo') { $img = '
菜鸟多日达
'; } } return $time ? '' . date('Y-m-d H:i', $time) . ' ' . $img : ''; } public $column_collect_time = '揽收时间'; public $column_collect_time_width = '120'; /** * column_collect_time * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_collect_time($row, $list) { $extend = $this->__getOrderExtend($list); $time = $extend[$row['order_id']]['collect_time']; $txt = '
'.$extend[$row['order_id']]['es_time'].'日达
'; return $time ? '' . date('Y-m-d H:i', $time) . ' ' . $txt : ''; } public $column_added_serivces = '增值服务'; /** * column_added_serivces * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_added_serivces($row, $list){ $extend = $this->__getOrderExtend($list); $img = ''; $cn_service = explode(',', $extend[$row['order_id']]['cpup_service']); $str = ''; if (kernel::single('ome_order_bool_type')->isCPUP($row[$this->col_prefix . 'order_bool_type'])) { if (in_array('201', $cn_service)) { $str .= "按需配送
"; } if (in_array('202', $cn_service)) { $str .= "顺丰配送
"; } if (in_array('203', $cn_service)) { $str .= "承诺发货
"; } if (in_array('204', $cn_service)) { $str .= "承诺送达
"; } if (in_array('210', $cn_service)) { $str .= "极速上门
"; } if (in_array('sug_home_deliver', $cn_service)) { $str .= "建议使用音尊达
"; } } if (!empty($str)) { $img .= "
$str
"; } return $img ? $img : ''; } public $column_latest_delivery_time = '最晚发货时间'; public $column_latest_delivery_time_width = '120'; /** * column_latest_delivery_time * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_latest_delivery_time($row, $list) { $extend = $this->__getOrderExtend($list); $time = $extend[$row['order_id']]['latest_delivery_time']; if($row[$this->col_prefix . 'order_bool_type'] & ome_order_bool_type::__SHI_CODE) { return $time ? '' . date('Y-m-d H:i', $time) . ' ' : ''; } $img = ''; if(kernel::single('ome_order_bool_type')->isCnService($row[$this->col_prefix . 'order_bool_type'])) { if($extend[$row['order_id']]['cn_service'] == 'dang') { $img = ''; } elseif ($extend[$row['order_id']]['cn_service'] == 'ci') { $img = ''; } elseif ($extend[$row['order_id']]['cn_service'] == 'shi') { $img = ''; } elseif ($extend[$row['order_id']]['cn_service'] == 'yue') { $img = ''; } elseif ($extend[$row['order_id']]['cn_service'] == 'duo') { $img = ''; } } return $time ? '' . date('Y-m-d H:i', $time) . ' ' : ''; } public $column_promised_collect_time = '承诺最晚揽收时间'; public $column_promised_collect_time_width = '120'; /** * column_promised_collect_time * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_promised_collect_time($row, $list) { $extend = $this->__getOrderExtend($list); $time = $extend[$row['order_id']]['promised_collect_time']; return $time ? '' . date('Y-m-d H:i', $time) . '' : ''; } public $column_promised_sign_time = '承诺最晚送达时间'; public $column_promised_sign_time_width = '120'; /** * column_promised_sign_time * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_promised_sign_time($row, $list) { $extend = $this->__getOrderExtend($list); $time = $extend[$row['order_id']]['promised_sign_time']; return $time ? '' . date('Y-m-d H:i', $time) . '' : ''; } /** * 订单标记 */ public $column_order_label = '订单标记'; public $column_order_label_width = 260; public $column_order_label_order = 30; /** * column_order_label * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_order_label($row, $list) { $order_id = $row['order_id']; //获取订单标记列表 $labelList = $this->__getOrderLabel($list); $dataList = $labelList[$order_id]; if(empty($dataList)){ return ''; } //只显标记列表 $str = []; foreach ($dataList as $key => $val) { $label_desc = $val['label_desc']; if($label_desc){ $str[] = sprintf("%s", $val['label_desc'],$val['label_color'], $val['label_color'], $val['label_name']); }else{ $str[] = sprintf("%s", $val['label_color'], $val['label_color'], $val['label_name']); } } $str = '
'.implode("", $str).'
'; return $str; } /** * 订单标记列表 * * @param array $list * @return null */ private function __getOrderLabel($list) { static $arrOrderLabel; if(isset($arrOrderLabel)){ return $arrOrderLabel; } $arrOrderLabel = []; $orderIds = array(); foreach($list as $val) { $orderIds[] = $val['order_id']; } //获取订单标记列表 $orderLabelObj = app::get('ome')->model('bill_label'); $labelData = $orderLabelObj->getBIllLabelList($orderIds); foreach($labelData as $val) { $order_id = $val['bill_id']; $arrOrderLabel[$order_id][] = array( 'label_id' => $val['label_id'], 'label_name' => $val['label_name'], 'label_color' => $val['label_color'], 'label_desc'=>$val['label_desc'], ); } unset($orderIds, $labelData); return $arrOrderLabel; } /** * 回传给前端店铺发货状态失败 */ public $column_delivery_errormsg = '发货失败信息'; public $column_delivery_errormsg_width = 300; public $column_delivery_errormsg_order = 99; /** * column_delivery_errormsg * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_delivery_errormsg($row, $list) { //不是已发货状态,直接返回 if($row[$this->col_prefix.'ship_status'] != '1'){ return ''; } //不是回传失败,直接返回 if($row[$this->col_prefix.'sync'] != 'fail'){ return ''; } $order_bn = $row['order_bn']; if(empty(self::$_syncErrorMsgs)){ $shipmentObj = app::get('ome')->model('shipment_log'); $order_bns = array(); foreach ($list as $key => $val) { $order_bns[] = $val['order_bn']; } //list $shipmentLogs = $shipmentObj->getList('log_id,orderBn,message', array('orderBn'=>$order_bns)); if($shipmentLogs){ foreach ($shipmentLogs as $key => $val) { $orderBn = $val['orderBn']; $val['message'] = strip_tags(htmlspecialchars($val['message'])); self::$_syncErrorMsgs[$orderBn] = substr($val['message'], 0, 96); } } unset($order_bns, $shipmentLogs); } return self::$_syncErrorMsgs[$order_bn]; } var $column_tostr = "商品名称"; var $column_tostr_width = "160"; function column_tostr($row) { $tostr = $row[$this->col_prefix . 'tostr']; if($tostr){ $tostr = json_decode($tostr,true); if(!is_array($tostr)) { return ''; } $num=0; foreach ($tostr as $value){ $num+= $value['num']; } return sprintf("
%s
",implode(',',array_column($tostr,'name'))); } return ''; } var $column_itemnum = "商品数量"; var $column_itemnum_width = "160"; function column_itemnum($row) { $tostr = $row[$this->col_prefix . 'tostr']; if($tostr){ $tostr = json_decode($tostr,true); $num=0; foreach ($tostr as $value){ $num+= $value['num']; } return sprintf("
%s
",$num); } return ''; } var $column_abnormal_mark = '异常标识'; function column_abnormal_mark($row) { return kernel::single('ome_preprocess_const')->getBoolTypeIdentifier($row[$this->col_prefix.'abnormal_status'], $row[$this->col_prefix.'shop_type']); } /** * detail_prodcut_store * @param mixed $order_id ID * @return mixed 返回值 */ public function detail_prodcut_store($order_id) { $render = app::get('ome')->render(); $branchIds = kernel::single('ome_order_branch')->getBranchIdByOrder($order_id); if(empty($branchIds)) { return '
缺少推荐仓库
'; } $items = app::get('ome')->model('order_items')->getList('product_id,bn,name,nums,split_num', ['order_id'=>$order_id, 'delete'=>'false']); $bp = app::get('ome')->model('branch_product')->getList('branch_id,product_id,store,store_freeze', ['branch_id'=>$branchIds, 'product_id'=>array_column($items, 'product_id')]); if(empty($bp)) { $bp = app::get('o2o')->model('product_store')->getList('branch_id,bm_id as product_id,store,store_freeze', ['branch_id'=>$branchIds, 'bm_id'=>array_column($items, 'product_id')]); } // $orderFreeze = app::get('material')->model('basic_material_stock_freeze')->getList('*', array('obj_type'=>1, 'obj_id'=>$order_id)); // $branchIds = array_merge($branchIds, array_column($orderFreeze, 'branch_id')); $branch = app::get('ome')->model('branch')->getList('branch_id, name', ['branch_id'=>$branchIds, 'check_permission'=>'false']); $branch = array_column($branch, null, 'branch_id'); $pidItems = []; foreach($items as $v) { if($pidItems[$v['product_id']]) { $pidItems[$v['product_id']]['undly_num'] += $v['nums'] - $v['split_num']; } else { $pidItems[$v['product_id']] = $v; $pidItems[$v['product_id']]['undly_num'] = $v['nums'] - $v['split_num']; } } $pidBp = []; foreach($bp as $v) { $pidBp[$v['product_id']][$v['branch_id']] = $v; } $store_list = []; foreach($pidItems as $v) { if($pidBp[$v['product_id']]) { foreach($pidBp[$v['product_id']] as $vv) { $tmp = $v; if($vv['store']-$vv['store_freeze'] < $v['undly_num']) { $tmp['is_less'] = true; } $tmp['store'] = $vv['store']; $tmp['store_freeze'] = $vv['store_freeze']; $tmp['branch_name'] = $branch[$vv['branch_id']]['name']; $store_list[] = $tmp; } } else { $v['is_less'] = true; $store_list[] = $v; } } $render->pagedata['store_list'] = $store_list; // foreach ($orderFreeze as $key => $value) { // $orderFreeze[$key]['bn'] = $pidItems[$value['bm_id']]['bn']; // $orderFreeze[$key]['name'] = $pidItems[$value['bm_id']]['name']; // $orderFreeze[$key]['bill_type'] = $value['bill_type'] == 2 ? '预占' : ($value['bill_type'] == 1 ? '缺货' : '未处理/已释放'); // $orderFreeze[$key]['branch_name'] = $branch[$value['branch_id']]['name']; // } // $render->pagedata['order_freeze'] = $orderFreeze; return $render->fetch('admin/order/detail_product_store.html'); } /** * detail_freeze * @param mixed $order_id ID * @return mixed 返回值 */ public function detail_freeze($order_id) { $render = app::get('ome')->render(); $orderFreeze = app::get('material')->model('basic_material_stock_freeze')->getList('*', array('obj_type'=>1, 'obj_id'=>$order_id, 'num|than' => 0)); $deliveryOrder = app::get('ome')->model('delivery_order')->getList('*', array('order_id'=>$order_id)); if ($deliveryOrder) { $delivery_id = array_column($deliveryOrder, 'delivery_id'); $orderFreeze2 = app::get('material')->model('basic_material_stock_freeze')->getList('*', array('obj_type'=>2, 'obj_id'=>$delivery_id, 'bill_type'=> '1', 'num|than' => 0)); if ($orderFreeze2) { $orderFreeze = array_merge((array)$orderFreeze, (array)$orderFreeze2); } } if ($orderFreeze) { $branchIds = array_filter(array_column($orderFreeze, 'branch_id')); $branchList = []; if ($branchIds) { $branchList = app::get('ome')->model('branch')->getList('branch_id,name', [ 'branch_id' =>$branchIds, 'check_permission' => 'false', ]); $branchList = array_column($branchList, 'name', 'branch_id'); } $bmIds = array_filter(array_column($orderFreeze, 'bm_id')); $bmList = app::get('material')->model('basic_material')->getList('bm_id,material_bn,material_name', [ 'bm_id' => $bmIds, ]); $bmList = array_column($bmList, null, 'bm_id'); $billType = app::get('console')->model('basic_material_stock_freeze')->get_type(1); foreach ($orderFreeze as $key => $value) { $orderFreeze[$key]['bn'] = $bmList[$value['bm_id']]['material_bn']; $orderFreeze[$key]['name'] = $bmList[$value['bm_id']]['material_name']; $orderFreeze[$key]['branch_name'] = $branchList[$value['branch_id']]; if ($value['obj_type'] == '2') { $orderFreeze[$key]['bill_type'] = '仓库冻结'; $orderFreeze[$key]['obj_type'] = '发货单'; } else { $orderFreeze[$key]['obj_type'] = '订单'; $orderFreeze[$key]['bill_type'] = $billType[$value['bill_type']]; } } } $render->pagedata['order_freeze'] = $orderFreeze; return $render->fetch('admin/order/detail_freeze.html'); } /** * [普通]订单操作记录 * * @param int $order_id * @return string */ private function __normal_log_history($order_id) { $render = app::get('ome')->render(); $orderObj = app::get('ome')->model('orders'); $logObj = app::get('ome')->model('operation_log'); $deliveryObj = app::get('ome')->model('delivery'); $ooObj = app::get('ome')->model('operations_order'); /* 本订单日志 */ $history = $logObj->read_log(array('obj_id'=>$order_id,'obj_type'=>'orders@ome'),0,-1); foreach($history as $k=>$v){ $data = $ooObj->getList('operation_id',array('log_id'=>$v['log_id'])); if(!empty($data)){ $history[$k]['flag'] ='true'; }else{ $history[$k]['flag'] ='false'; } $history[$k]['operate_time'] = date('Y-m-d H:i:s',$v['operate_time']); // 为长文本准备数据,HTML由模板处理 $memo = $history[$k]['memo']; $memoLength = mb_strlen($memo); if ($memoLength > 400) { $history[$k]['short_memo'] = mb_substr($memo, 0, 400); $history[$k]['is_long'] = true; } else { $history[$k]['is_long'] = false; } } /* 发货单日志 */ $delivery_ids = $deliveryObj->getDeliverIdByOrderId($order_id); if ($delivery_ids) { $deliverylog = $logObj->read_log(array('obj_id'=>$delivery_ids,'obj_type'=>'delivery@ome'), 0, -1); } //[拆单]多个发货单 格式化分开显示 $dly_log_list = array(); foreach((array) $deliverylog as $k=>$v) { $deliverylog[$k]['operate_time'] = date('Y-m-d H:i:s',$v['operate_time']); // 为长文本准备数据,HTML由模板处理 $memo = $deliverylog[$k]['memo']; $memoLength = mb_strlen($memo); if ($memoLength > 400) { $deliverylog[$k]['short_memo'] = mb_substr($memo, 0, 400); $deliverylog[$k]['is_long'] = true; } else { $deliverylog[$k]['is_long'] = false; } $obj_id = $v['obj_id']; $dly_log_list[$obj_id]['obj_name'] = $v['obj_name']; $dly_log_list[$obj_id]['list'][] = $deliverylog[$k]; } $render->pagedata['dly_log_list'] = $dly_log_list; /* “失败”、“取消”、“打回”发货单日志 */ $history_ids = $deliveryObj->getHistoryIdByOrderId($order_id); $deliveryHistorylog = array(); foreach($history_ids as $v){ $delivery = $deliveryObj->dump($v,'delivery_id,delivery_bn,status'); $deliveryHistorylog[$delivery['delivery_bn']] = $logObj->read_log(array('obj_id'=>$v,'obj_type'=>'delivery@ome'), 0, -1); foreach($deliveryHistorylog[$delivery['delivery_bn']] as $k=>$v){ $deliveryHistorylog[$delivery['delivery_bn']][$k]['operate_time'] = date('Y-m-d H:i:s',$v['operate_time']); $deliveryHistorylog[$delivery['delivery_bn']][$k]['status'] =$delivery['status']; // 为长文本准备数据,HTML由模板处理 $memo = $deliveryHistorylog[$delivery['delivery_bn']][$k]['memo']; $memoLength = mb_strlen($memo); if ($memoLength > 400) { $deliveryHistorylog[$delivery['delivery_bn']][$k]['short_memo'] = mb_substr($memo, 0, 400); $deliveryHistorylog[$delivery['delivery_bn']][$k]['is_long'] = true; } else { $deliveryHistorylog[$delivery['delivery_bn']][$k]['is_long'] = false; } } } /* 同批处理的订单日志 */ $order_ids = $deliveryObj->getOrderIdByDeliveryId($delivery_ids); $orderLogs = array(); foreach($order_ids as $v){ if($v != $order_id){ $order = $orderObj->dump($v,'order_id,order_bn'); $orderLogs[$order['order_bn']] = $logObj->read_log(array('obj_id'=>$v,'obj_type'=>'orders@ome'), 0, -1); foreach($orderLogs[$order['order_bn']] as $k=>$v){ if($v) { $orderLogs[$order['order_bn']][$k]['operate_time'] = date('Y-m-d H:i:s',$v['operate_time']); // 为长文本准备数据,HTML由模板处理 $memo = $orderLogs[$order['order_bn']][$k]['memo']; $memoLength = mb_strlen($memo); if ($memoLength > 400) { $orderLogs[$order['order_bn']][$k]['short_memo'] = mb_substr($memo, 0, 400); $orderLogs[$order['order_bn']][$k]['is_long'] = true; } else { $orderLogs[$order['order_bn']][$k]['is_long'] = false; } } } } } $render->pagedata['history'] = $history; $render->pagedata['deliverylog'] = $deliverylog; $render->pagedata['deliveryHistorylog'] = $deliveryHistorylog; $render->pagedata['orderLogs'] = $orderLogs; $render->pagedata['order_id'] = $order_id; return $render->fetch('admin/order/detail_history.html'); } /** * [brush特殊订单]订单操作记录 * * @param int $order_id * @return string */ private function __brush_log_history($order_id) { $render = app::get('ome')->render(); $logObj = app::get('ome')->model('operation_log'); $ooObj = app::get('ome')->model('operations_order'); /* 本订单日志 */ $history = $logObj->read_log(array('obj_id'=>$order_id,'obj_type'=>'orders@ome'),0,-1); foreach($history as $k => $v){ $data = $ooObj->getList('operation_id',array('log_id'=>$v['log_id'])); if(!empty($data)){ $history[$k]['flag'] ='true'; }else{ $history[$k]['flag'] ='false'; } $history[$k]['operate_time'] = date('Y-m-d H:i:s',$v['operate_time']); // 为长文本准备数据,HTML由模板处理 $memo = $history[$k]['memo']; $memoLength = mb_strlen($memo); if ($memoLength > 400) { $history[$k]['short_memo'] = mb_substr($memo, 0, 400); $history[$k]['is_long'] = true; } else { $history[$k]['is_long'] = false; } } /* 发货单日志 */ $deliveryId = kernel::database()->select('select delivery_id from sdb_brush_delivery_order where order_id = "' . $order_id . '"'); $deliveryIds = array(); foreach($deliveryId as $val) { $deliveryIds[] = $val['delivery_id']; } if($deliveryIds) { $deliverylog = $logObj->read_log(array('obj_id'=>$deliveryIds,'obj_type'=>'delivery@brush'), 0, -1); $dly_log_list = $deliveryHistorylog = array(); foreach((array)$deliverylog as $k=>$v) { static $deliveryData = array(); if(empty($deliveryData[$v['obj_id']])) { $tmpDeliveryData = kernel::database()->select('select delivery_bn, status from sdb_brush_delivery where delivery_id="' . $v['obj_id'] . '"'); $deliveryData[$v['obj_id']] = $tmpDeliveryData[0]; } if($deliveryData[$v['obj_id']]['status'] == 'cancel') { $v['operate_time'] = date('Y-m-d H:i:s', $v['operate_time']); // 为长文本准备数据,HTML由模板处理 $memo = $v['memo']; $memoLength = mb_strlen($memo); if ($memoLength > 500) { $v['short_memo'] = mb_substr($memo, 0, 500); $v['is_long'] = true; } else { $v['is_long'] = false; } $deliveryHistorylog[$deliveryData[$v['obj_id']]['delivery_bn']][] = $v; } else { $deliverylog[$k]['operate_time'] = date('Y-m-d H:i:s', $v['operate_time']); // 为长文本准备数据,HTML由模板处理 $memo = $deliverylog[$k]['memo']; $memoLength = mb_strlen($memo); if ($memoLength > 500) { $deliverylog[$k]['short_memo'] = mb_substr($memo, 0, 500); $deliverylog[$k]['is_long'] = true; } else { $deliverylog[$k]['is_long'] = false; } $obj_id = $v['obj_id']; $dly_log_list[$obj_id]['obj_name'] = $v['obj_name']; $dly_log_list[$obj_id]['list'][] = $deliverylog[$k]; } } $render->pagedata['dly_log_list'] = $dly_log_list; } $render->pagedata['order_id'] = $order_id; $render->pagedata['history'] = $history; $render->pagedata['deliverylog'] = $deliverylog; $render->pagedata['deliveryHistorylog'] = $deliveryHistorylog; return $render->fetch('admin/order/detail_history.html'); } var $column_promise_service = '物流服务标签'; var $column_promise_service_width = 320; /** * column_promise_service * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_promise_service($row, $list) { $extend = $this->__getOrderExtend($list); //check if(empty($extend[$row['order_id']]['promise_service'])){ return ''; } $str = ''; $colorList = array('#6666ff', '#336600', '#FF0000', '#FF8800', '#c64ae2', '#4ae25e', '#e2bc4a', '#668800'); $promise_services = explode(',', $extend[$row['order_id']]['promise_service']); foreach ($promise_services as $key => $val) { $color = ($colorList[$key] ? $colorList[$key] : $colorList[0]); $str .= ' '. $val .''; } return $str; } /** * 配送方式映射展示 */ var $column_shipping_name = '配送方式'; var $column_shipping_name_width = 120; var $column_shipping_name_order = 35; /** * column_shipping_name * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_shipping_name($row, $list) { $shipping_code = $row[$this->col_prefix.'shipping']; if(empty($shipping_code)){ return '-'; } // 从 corp.php 获取配送方式映射 $corpObj = app::get('ome')->model('dly_corp'); // 尝试从不同配送模式中查找配送方式名称 $shippingName = $corpObj->corp_default('instatnt'); // 先查找同城配送 if(isset($shippingName[$shipping_code])){ return $shippingName[$shipping_code]['name']; } $shippingName = $corpObj->corp_default('seller'); // 再查找商家配送 if(isset($shippingName[$shipping_code])){ return $shippingName[$shipping_code]['name']; } // 如果都找不到,直接返回原始配送代码 return $shipping_code; } /** * 平台建议信息 * * @param $order_id * @return string */ public function detail_platform_info($order_id) { $render = app::get('ome')->render(); $orderMdl = app::get('ome')->model('orders'); $orderObjMdl = app::get('ome')->model('order_objects'); $orderExtendMdl = app::get('ome')->model('order_extend'); $logiLib = kernel::single('logisticsmanager_waybill_pdd'); //订单信息 $orderInfo = $orderMdl->dump($order_id); //订单明细信息 $orderObjList = $orderObjMdl->getList('*', array('order_id'=>$order_id)); //订单扩展信息 $extendInfo = $orderExtendMdl->dump($order_id); //extend_field $extend_fields = array(); if($extendInfo['extend_field']){ $extend_fields = json_decode($extendInfo['extend_field'], true); } //预估发货快递白名单 if($extendInfo['white_delivery_cps']){ $logiCodes = json_decode($extendInfo['white_delivery_cps'], true); foreach ($logiCodes as $key => $logi_code){ $logiInfo = $logiLib->logistics($logi_code); //[兼容]物流公司编码不正确 if(empty($logiInfo)){ $logiInfo = array('code'=>$logi_code, 'name'=>'未定义'); } $extend_fields['white_logis'][] = $logiInfo; } } //预估发货快递黑名单 if($extendInfo['black_delivery_cps']){ $logiCodes = json_decode($extendInfo['black_delivery_cps'], true); foreach ($logiCodes as $key => $logi_code){ $logiInfo = $logiLib->logistics($logi_code); //[兼容]物流公司编码不正确 if(empty($logiInfo)){ $logiInfo = array('code'=>$logi_code, 'name'=>'未定义'); } $extend_fields['black_logis'][] = $logiInfo; } } $render->pagedata['orderInfo'] = $orderInfo; $render->pagedata['orderObjList'] = $orderObjList; $render->pagedata['extendInfo'] = $extendInfo; $render->pagedata['extend_fields'] = $extend_fields; return $render->fetch('admin/order/detail_platform_info.html'); } private function _getShop($shop_id, $list) { static $shopList; if (isset($shopList)) { return $shopList[$shop_id]; } $shopList = app::get('ome')->model('shop')->getList('shop_id,shop_bn',[ 'shop_id' => array_column($list, $this->col_prefix.'shop_id'), ]); $shopList = array_column($shopList, null, 'shop_id'); return $shopList[$shop_id]; } private function _getMemberMobile($order_bn, $list) { static $epList; if (isset($epList)) { return $epList[$order_bn]; } $epList = []; $memberList = app::get('ome')->model('members')->getList('member_id,uname,mobile', [ 'member_id' => array_column($list, $this->col_prefix.'member_id'), ]); $memberList = array_column($memberList, null, 'member_id'); $syOrderList = app::get('epassport')->model('syorders')->getList('order_sn,plat_account', [ 'order_sn' => array_column($list, $this->col_prefix.'order_bn'), ]); $syOrderList = array_column($syOrderList, null, 'order_sn'); foreach ($list as $key => $value) { switch ($value[$this->col_prefix.'shop_type']) { case 'taobao': $epList[$value[$this->col_prefix.'order_bn']] = $syOrderList[$value[$this->col_prefix.'order_bn']]['plat_account']; break; case '360buy': $epList[$value[$this->col_prefix.'order_bn']] = $memberList[$value[$this->col_prefix.'member_id']]['uname']; break; default: $epList[$value[$this->col_prefix.'order_bn']] = $memberList[$value[$this->col_prefix.'member_id']]['mobile']; break; } } return $epList[$order_bn]; } } ?>