'members', ); //核销状态 public $_writeoffStatus = array ( '0' => '未核销', '1' => '成功核销', '2' => '查询成功', '3' => '查询失败', '4' => '核销失败', ); var $addon_cols = "skuNum,itemNum,bnsContent,delivery_id,status,process_status,print_status,type,bind_key,order_createtime,deli_cfg,is_cod,outer_delivery_bn,logi_number,delivery_logi_number,bool_type,shop_type,cpup_service,writeoff_status"; function __construct(){ if($_GET['ctl'] == 'admin_receipts_print' && $_GET['act'] == 'index'){ $this->write = '2'; $this->write_memo = '2'; $this->url = 'admin_receipts_print'; }elseif($_GET['ctl'] == 'admin_refunded' && $_GET['act'] == 'index'){ $this->write = '2'; $this->write_memo = '2'; $this->url = 'admin_refunded'; }else{ unset($this->column_op); } } //单据状态 var $column_status = "单据状态"; var $column_status_width = "80"; function column_status($row){ $status = $row[$this->col_prefix.'status']; switch($status){ case 0: return '处理中'; break; case 1: return '取消'; break; case 2: return '暂停'; break; case 3: return '已完成'; break; } } //处理状态 var $column_process_status = "处理状态"; var $column_process_status_width = "80"; function column_process_status($row){ $process_status = $row[$this->col_prefix.'process_status']; $tmp_status = '未打印'; if(($process_status & 1) == 1){ $tmp_status = '已打印'; } if(($process_status & 2) == 2){ $tmp_status = '已校验'; } if(($process_status & 4) == 4){ $tmp_status = '已称重打包'; } if(($process_status & 8) == 8){ $tmp_status = '已物流交接'; } return $tmp_status; } //打印状态 var $column_print_status = "打印状态"; var $column_print_status_width = "80"; function column_print_status($row){ $print_status = $row[$this->col_prefix.'print_status']; $stock = false; $deliv = false; $expre = false; if(($print_status & 1) == 1){ $stock = true; } if(($print_status & 2) == 2){ $deliv = true; } if(($print_status & 4) == 4){ $expre = true; } $stockColor = ($stock == 'true') ? 'green' : '#eeeeee'; $delivColor = ($deliv == 'true') ? 'red' : '#eeeeee'; $expreColor = ($expre == 'true') ? '#9a6913' : '#eeeeee'; $ret = $this->getViewPanel('备货单', $stockColor); $ret .= $this->getViewPanel('发货单', $delivColor); $ret .= $this->getViewPanel('快递单', $expreColor); return $ret; } private function getViewPanel($caption, $color) { if ($color == '#eeeeee') $caption .= '未打印'; else $caption .= '已打印'; return sprintf("
 %s 
", $color, $caption, $caption, substr($caption, 0, 3)); } var $column_create = "下单距今"; var $column_create_width = "100"; var $column_create_order_field= 'order_createtime'; function column_create($row) { $time = $row[$this->col_prefix . 'order_createtime']; $difftime = kernel::single('ome_func')->toTimeDiff(time(), $time); $status = $row[$this->col_prefix . 'status']; $days = $difftime['d']; $html .= $difftime['d']?$difftime['d']. '天':''; $html .= $difftime['h']?$difftime['h'] . '小时':''; $html .= $difftime['m']?$difftime['m'] . '分':''; if ($status != 3) { if ($days >= 7) { $ret = "
超过一周
"; } elseif ($days >= 1) { $ret = "
" . $html . "
"; } else { $ret = "
" . $html . "
"; } } else { $ret = "
完成
"; } return $ret; } var $column_beartime = "成单时间"; var $column_beartime_width = '140'; var $column_beartime_order_field= 'order_createtime'; public function column_beartime($row) { return $row[$this->col_prefix . 'order_createtime'] ? date('Y-m-d H:i:s',$row[$this->col_prefix . 'order_createtime']) : '-'; } var $column_content = "订单内容"; var $column_content_width = "160"; function column_content($row) { $skuNum = $row[$this->col_prefix . 'skuNum']; $itemNum = $row[$this->col_prefix . 'itemNum']; $content = $row[$this->col_prefix . 'bnsContent']; $cnts = unserialize($content); $cnt = sprintf("共有 %d 种商品,总共数量为 %d 件, 具体 SKU 为: %s", $skuNum, $itemNum, @implode(', ', $cnts)); @reset($cnts); $content = $cnts[@key($cnts)]; if ($skuNum >1) { $content .= ' 等'; } return sprintf("(%d / %d) %s",$cnt, $cnt, $skuNum, $itemNum, $content); } var $column_product_name = "货品名称"; var $column_product_name_width = "160"; function column_product_name($row,$list) { $skuNum = $row[$this->col_prefix . 'skuNum']; $itemNum = $row[$this->col_prefix . 'itemNum']; $content = $row[$this->col_prefix . 'bnsContent']; $productName = $this->_getMaterialNames($list); $cnts = unserialize($content); $product_id = array_keys($cnts); foreach ($product_id as $pid) { $names[] = $productName[$pid]; } $cnt = sprintf("共有 %d 种商品,总共数量为 %d 件, 具体 名称 为: %s", $skuNum, $itemNum, @implode(', ', $names)); @reset($names); $content = $names[@key($names)]; if ($skuNum >1) { $content .= ' 等'; } return sprintf(" %s",$cnt, $cnt, $content); } /* * 获取商品名称 */ public function _getMaterialNames($list) { static $newData; if (isset($newData)) { return $newData; } $bm_id = array(); foreach ($list as $key => $value) { $cnts = unserialize($value[$this->col_prefix .'bnsContent']); $bm_id = array_unique(array_merge($bm_id,array_keys($cnts))); } $filter['bm_id'] = $bm_id; $productList = app::get('material')->model('basic_material')->getList('bm_id,material_name',$filter); foreach ($productList as $v) { $newData[$v['bm_id']] = $v['material_name']; } return $newData; } var $column_deliveryNumInfo = "物流单号-多包"; var $column_deliveryNumInfo_width = "160"; function column_deliveryNumInfo($row){ #获取主物流单号 $dlyBillLib = kernel::single('wms_delivery_bill'); $logi_no = $dlyBillLib->getPrimaryLogiNoById($row['delivery_id']); if($row[$this->col_prefix.'logi_number']>1) { $str = "共有 ".$row[$this->col_prefix.'logi_number']." 单物流单,已完成发货 ".$row[$this->col_prefix.'delivery_logi_number']." 单 主物流单号为 ".$logi_no; return '('.$row[$this->col_prefix.'delivery_logi_number'].' / '.$row[$this->col_prefix.'logi_number'].') '.$logi_no.''; }else{ return $logi_no; } } function row_style($row){ $style=''; if($row[$this->col_prefix.'is_cod'] == 'true'){ $style .= " list-even "; } return $style; } function detail_basic($dly_id){ $render = app::get('wms')->render(); $dlyObj = app::get('wms')->model('delivery'); $dlyBillLib = kernel::single('wms_delivery_bill'); $orderObj = app::get('ome')->model('orders'); $braObj = app::get('ome')->model('branch'); $opObj = app::get('ome')->model('operation_log'); $omeExtOrdLib = kernel::single('ome_extint_order'); $memberObj = app::get('ome')->model('members'); $finder_id = $_GET['_finder']['finder_id']; $render->pagedata['finder_id'] = $finder_id; $dly = $dlyObj->dump($dly_id); // 加密 $dly['is_encrypt'] = kernel::single('ome_security_router',$dly['shop_type'])->show_encrypt($dly, 'delivery'); $tmp = $memberObj->dump($dly['member_id']); $dly['member_name'] = $tmp['account']['uname']; $dly['members'] = "手机:".$tmp['contact']['phone']['mobile']."
"; $dly['members'] .= "电话:".$tmp['contact']['phone']['telephone']."
"; empty($dly['branch_id'])?$branch_id=0:$branch_id=$dly['branch_id']; //$shop = $dlyObj->getShopInfo($dly['shop_id']); //$dly['area'] = $shop['area']; //获取主物流单号 $logi_no = $dlyBillLib->getPrimaryLogiNoById($dly_id); $dly['logi_no'] = $logi_no; //发货单日志 $logdata = $opObj->read_log(array('obj_id'=>$dly_id,'obj_type'=>'delivery@wms'), 0, -1); foreach($logdata as $k=>$v){ $logdata[$k]['operate_time'] = date('Y-m-d H:i:s',$v['operate_time']); } $render->pagedata['log'] = $logdata; //发货单关联订单号 $order_bns = $omeExtOrdLib->getOrderBns($dly['outer_delivery_bn']); $render->pagedata['order_bn'] = $order_bns; //买家备注、商家备注要走接口查询?还是wms冗余 $res = $omeExtOrdLib->getMemoByDlyId($dly['outer_delivery_bn']); $render->pagedata['custom_mark'] = $res['custom_mark'];#会员备注与订单备注信息 $render->pagedata['mark_text'] = $res['mark_text'];#会员备注与订单备注信息 $render->pagedata['write'] = $this->write; $render->pagedata['write_memo'] = $this->write_memo; $dlyCorpObj = app::get('ome')->model('dly_corp'); $dlyCorp = $dlyCorpObj->dump($dly['logi_id'], 'prt_tmpl_id,type,tmpl_type'); //物流公司使用电子面单时物流单号不能被编辑 if ($dlyCorp['tmpl_type'] == 'electron') { $render->pagedata['write'] = 1; } if ($dlyCorp['tmpl_type'] == 'electron' && $dly['status']!='succ') { $render->pagedata['write_memo'] = 1; } $render->pagedata['url'] = $this->url; $render->pagedata['dly_corp'] = $braObj->get_corp($branch_id,$dly['consignee']['area']); $dly['create_time'] = date('Y-m-d H:i:s',$dly['create_time']); //根据原始发货单获取配送方式 $shipping_type = kernel::single('ome_interface_delivery')->getOmeDlyShipType($dly['outer_delivery_bn']); $dly['delivery'] = $shipping_type; //销售状态 $writeoff_status = $dly['writeoff_status']; $dly['writeoff_status_name'] = $this->_writeoffStatus[$writeoff_status]; //delivery $render->pagedata['dly'] = $dly; $render->pagedata['status'] = $_GET['status']; return $render->fetch('admin/delivery/delivery_detail.html'); } function detail_item($dly_id){ $render = app::get('wms')->render(); $dlyObj = app::get('wms')->model('delivery'); //$brandObj = app::get('ome')->model('brand'); $items = $dlyObj->getItemsByDeliveryId($dly_id); $delivery = $dlyObj->dump($dly_id); //$product_info = $brandObj->getBrandName($items[0]['product_name']); #商品品牌 $brandList = array(); $oBrand = app::get('ome')->model('brand'); $tempData = $oBrand->getList('brand_id, brand_name', '', 0, -1); foreach ($tempData as $key => $val) { $brandList[$val['brand_id']] = $val['brand_name']; } unset($tempData, $oBrand); #基础物料扩展数据 $basicMaterialExtObj = app::get('material')->model('basic_material_ext'); if($items) { foreach ($items as $key => $val) { $material_ext = $basicMaterialExtObj->dump(array('bm_id'=>$val['product_id']), 'bm_id, specifications, brand_id, cat_id'); $items[$key]['specifications'] = $material_ext['specifications']; if($material_ext['brand_id']) { $items[$key]['brand_name'] = $brandList[$material_ext['brand_id']]; } } } //销售价权限判断 $showSalePrice = true; if (!kernel::single('desktop_user')->has_permission('sale_price')) { $showSalePrice = false; } $render->pagedata['show_sale_price'] = $showSalePrice; $render->pagedata['write'] = $this->write; $render->pagedata['items'] = $items; $render->pagedata['dly'] = $delivery; if ($delivery['shop_type'] == 'vop') { $checkMdl = app::get('ome')->model('order_objects_check_items'); $outer_delivery_bn = $delivery['outer_delivery_bn']; $orderInfo = app::get('ome')->model('delivery')->getOrderByDeliveryBn($outer_delivery_bn); $checkItems = $checkMdl->getList('*', ['order_id'=>$orderInfo['order_id']]); $items_bn_arr = array_column($items, 'bn'); $mdl = app::get('purchase')->model('pick_bill_check_items'); foreach ($checkItems as $c_k => $c_v) { if (!in_array($c_v['bn'], $items_bn_arr)) { unset($checkItems[$c_k]); } if ($mdl->order_label[$c_v['order_label']]) { $checkItems[$c_k]['order_label'] = $mdl->order_label[$c_v['order_label']]; } } $checkItems = array_values($checkItems); $render->pagedata['checkItems'] = $checkItems; } //$render->pagedata['specifications'] = $product_info['specifications']; //$render->pagedata['brand_name'] = $product_info['brand_name']; return $render->fetch('admin/delivery/delivery_item.html'); } function detail_delivery($dly_id){ $dlyObj = app::get('wms')->model('delivery'); $dlyChildObj = app::get('wms')->model('delivery_bill'); $deliveryBillItemMdl = app::get('wms')->model('delivery_bill_items'); $opObj = app::get('ome')->model('operation_log'); $dlyCheckLib = kernel::single('wms_delivery_check'); if(!empty($_POST)){ $billarr = $_POST["dlylist"]; foreach($billarr as $k=>$v){ $v = trim($v); if ($dlyCheckLib->existExpressNoBill($v, $_POST['delivery_id'],$k)){ echo ''; break; }else{ $dlybillinfoget = $dlyChildObj->dump(array('b_id'=>$k)); if(empty($dlybillinfoget['logi_no'])){ $logstr = '录入快递单号:'.$v; $opObj->write_log('delivery_bill_add@wms', $dly_id, $logstr); }else{ $logstr = '修改快递单号:'.$dlybillinfoget['logi_no'].'->'.$v; $opObj->write_log('delivery_bill_modify@wms', $dly_id, $logstr); } $dlyChildObj->update(array('logi_no'=>$v),array('b_id' => $k)); } } } $render = app::get('wms')->render(); $braObj = app::get('ome')->model('branch'); $dly = $dlyObj->dump($dly_id); empty($dly['branch_id'])?$branch_id=0:$branch_id=$dly['branch_id']; $dlyChildList = $dlyChildObj->getList('*',array('delivery_id'=>$dly_id),0,-1); foreach ($dlyChildList as $key => $value) { $dlyChildList[$key]['items'] = $deliveryBillItemMdl->getList('*', ['bill_id' => $value['b_id']]); } $render->pagedata['dlyChildListCount'] = count($dlyChildList); $render->pagedata['dlyChildList'] = $dlyChildList; $render->pagedata['dly_corp'] = $braObj->get_corp($branch_id,$dly['consignee']['area']); $render->pagedata['dly'] = $dly; $render->pagedata['write'] = $this->write; $dlyCorpObj = app::get('ome')->model('dly_corp'); $dlyCorp = $dlyCorpObj->dump($dly['logi_id'], 'prt_tmpl_id,type,tmpl_type'); //物流公司使用电子面单时物流单号不能被编辑 if ($dlyCorp['tmpl_type'] == 'electron') { $render->pagedata['write'] = 1; } $render->pagedata['dlyCorp'] = $dlyCorp; return $render->fetch('admin/delivery/delivery_list.html'); } function detail_serial($dly_id){ $render = app::get('wms')->render(); $dlyItemsSerialObj = app::get('wms')->model('delivery_items_serial'); $items = $dlyItemsSerialObj->getList('*',array('delivery_id'=>$dly_id), 0, -1); $render->pagedata['items'] = $items; return $render->fetch('admin/delivery/delivery_serial.html'); } function detail_storagelife($dly_id){ $render = app::get('wms')->render(); $dlyItemsStorageLifeObj = app::get('wms')->model('delivery_items_storage_life'); $items = $dlyItemsStorageLifeObj->getList('*',array('delivery_id'=>$dly_id), 0, -1); $render->pagedata['items'] = $items; //echo '
';print_r($items);exit;
        return $render->fetch('admin/delivery/delivery_storagelife.html');
    }
    
    
    public $column_cpup= '物流升级标';
    public $column_cpup_width= 180;
    public function column_cpup($row)
    {
        $img = '';
        if (kernel::single('ome_delivery_bool_type')->isCPUP($row[$this->col_prefix . 'bool_type'])) {
            $cn_service = explode(',', $row[$this->col_prefix . 'cpup_service']);
            
            if (in_array('201', $cn_service)) {
                $img .= "按需配送
"; } if (in_array('202', $cn_service)) { $img .= "顺丰配送
"; } if (in_array('203', $cn_service)) { $img .= "承诺发货
"; } if (in_array('204', $cn_service)) { $img .= "承诺送达
"; } if (in_array('210', $cn_service)) { $img .= "极速上门
"; } if (in_array('sug_home_deliver', $cn_service)) { if (!empty($img)) { $img.= '
'; } $img .= "建议使用音尊达
"; } } return $row[$this->col_prefix . 'delivery'] . $img; } var $column_bool_type='标识'; function column_bool_type($row) { return kernel::single('ome_delivery_bool_type')->getBoolTypeIdentifier($row[$this->col_prefix.'bool_type'],$row[$this->col_prefix.'shop_type']); } /*** var $column_delivery_model = '配送方式'; var $column_delivery_model_width = 90; public function column_delivery_model($row) { $delivery_model = $row[$this->col_prefix . 'delivery_model']; if($delivery_model == 'instatnt'){ return '同城配送'; }elseif($delivery_model == 'seller'){ return '商家配送'; }else{ return $delivery_model; } } ***/ var $column_writeoff_status = '核销状态'; var $column_writeoff_status_width = 92; public function column_writeoff_status($row) { $status = $row[$this->col_prefix . 'writeoff_status']; $value = $this->_writeoffStatus[$status]; return $value; } var $column_edit = '操作'; var $column_edit_width = "75"; var $column_edit_order = "1"; function column_edit($row,$list) { $delivery_bn = $row[$this->col_prefix . 'outer_delivery_bn']; $status = $row[$this->col_prefix.'status']; $delivery = $this->_getDelivery($delivery_bn, $list); $str = '%s'; if ($row[$this->col_prefix . 'shop_type'] == 'zkh' && ($status == '3' || $delivery['delivery_order_number'])) { return sprintf($str,$delivery_bn,'打印送货单'); } elseif (kernel::single('ome_bill_label')->getBillLabelInfo($row['delivery_id'], 'wms_delivery', kernel::single('ome_bill_label')->isSomsGxd())) { return sprintf($str,$delivery_bn,'打印配送清单'); } else { return '-'; } } var $column_delivery_order_number = '送货单号'; var $column_delivery_order_number_width = 100; public function column_delivery_order_number($row, $list) { $outer_delivery_bn = $row[$this->col_prefix . 'outer_delivery_bn']; $delivery = $this->_getDelivery($outer_delivery_bn, $list); return $delivery['delivery_order_number']; } private function _getDelivery($delivery_bn, $list) { static $deliveryList; if (isset($deliveryList[$delivery_bn])) { return $deliveryList[$delivery_bn]; } $filter['delivery_bn'] = array_column($list, 'outer_delivery_bn'); $rows = app::get('ome')->model('delivery')->getList('delivery_bn,delivery_order_number', $filter); foreach ($rows as $row) { $deliveryList[$row['delivery_bn']]['delivery_order_number'] = $row['delivery_order_number'] ? $row['delivery_order_number'] : ''; } return $deliveryList[$delivery_bn]; } /** * 订单标记 */ public $column_order_label = '标记'; public $column_order_label_width = 160; public $column_order_label_order = 30; public function column_order_label($row, $list) { $delivery_id = $row['delivery_id']; //获取订单标记列表 $labelList = $this->__getOrderLabel($list); $dataList = $labelList[$delivery_id]; if(empty($dataList)){ return ''; } //默认只显示三条记录 $str = []; $color_i = 0; foreach ($dataList as $key => $val) { $color_i++; // if($color_i > 3){ // continue; // } $str[] = sprintf("%s", $val['label_name'], $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; } $deliveryIds = array(); foreach($list as $val) { $deliveryIds[] = $val['delivery_id']; } //获取订单标记列表 $orderLabelObj = app::get('ome')->model('bill_label'); $labelData = $orderLabelObj->getBIllLabelList($deliveryIds, 'wms_delivery'); foreach($labelData as $val) { $delivery_id = $val['bill_id']; $arrOrderLabel[$delivery_id][] = array( 'label_id' => $val['label_id'], 'label_name' => $val['label_name'], 'label_color' => $val['label_color'], ); } unset($deliveryIds, $labelData); return $arrOrderLabel; } }