mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-23 19:05:34 +08:00
254 lines
9.4 KiB
PHP
254 lines
9.4 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
/**
|
|
* @author sunjing
|
|
* @describe 唯品会仓中仓
|
|
*/
|
|
class wms_ctl_admin_vopczc extends desktop_controller {
|
|
var $workground = "wms_delivery";
|
|
protected function _getBaseFilter() {
|
|
$filter = array (
|
|
'status' => array ( 'ready', 'progress' ),
|
|
'process' => 'FALSE',
|
|
'pause' => 'FALSE',
|
|
'parent_id' => 0,
|
|
'disabled' => 'false',
|
|
);
|
|
//获取操作员管辖仓库
|
|
$is_super = kernel::single('desktop_user')->is_super();
|
|
if (!$is_super) {
|
|
$oBranch = app::get('ome')->model('branch');
|
|
$branch_ids = $oBranch->getBranchByUser(true);
|
|
if ($branch_ids) {
|
|
$filter['ext_branch_id'] = $_POST['branch_id'] ? array_intersect(array($_POST['branch_id']), $branch_ids) : $branch_ids;
|
|
} else {
|
|
$filter['ext_branch_id'] = 'false';
|
|
}
|
|
} else {
|
|
$filter['ext_branch_id'] = $_POST['branch_id'] ? $_POST['branch_id'] : null;;
|
|
}
|
|
return $filter;
|
|
}
|
|
|
|
/**
|
|
* _views
|
|
* @return mixed 返回值
|
|
*/
|
|
|
|
public function _views(){
|
|
static $sub_menu;
|
|
if($sub_menu) {
|
|
return $sub_menu;
|
|
}
|
|
$sub_menu = array(
|
|
0 => array('label'=>app::get('base')->_('未打印'),'filter'=>array('process_status'=>array('0'),'status'=>array('0') ),'optional'=>false),
|
|
1 => array('label'=>app::get('base')->_('已打印'),'filter'=>array('process_status'=>array('1'),'status'=>array('0')),'optional'=>false),
|
|
);
|
|
foreach ($sub_menu as $k => $v) {
|
|
$sub_menu[$k]['filter'] = array_merge($this->_getBaseFilter(), $v['filter']);
|
|
$sub_menu[$k]['addon'] = 'showtab';
|
|
$sub_menu[$k]['href'] = 'index.php?app=' . $_GET['app'] . '&ctl=' . $_GET['ctl'] . '&act=' . $_GET['act'] . '&view=' . $k;
|
|
}
|
|
return $sub_menu;
|
|
}
|
|
|
|
/**
|
|
* index
|
|
* @return mixed 返回值
|
|
*/
|
|
public function index(){
|
|
$_GET['view'] = (int) $_GET['view'];
|
|
$params = array(
|
|
'title'=>'唯品会仓中仓列表',
|
|
'use_buildin_new_dialog' => false,
|
|
'use_buildin_set_tag'=>false,
|
|
'use_buildin_recycle'=>false,
|
|
'use_buildin_export'=>false,
|
|
'use_buildin_import'=>false,
|
|
'use_buildin_filter'=>true,
|
|
'use_view_tab' => true,
|
|
'base_filter' => $this->_getBaseFilter()
|
|
);
|
|
if(!isset($_GET['action'])) {
|
|
$panel = new desktop_panel($this);
|
|
$panel->setId('delivery_finder_top');
|
|
$panel->setTmpl('admin/finder/finder_panel_filter.html');
|
|
$panel->show('ome_mdl_delivery', $params);
|
|
}
|
|
$params['actions'] = array(
|
|
'expre' => array(
|
|
'label' => '打印三单',
|
|
'submit' => 'index.php?app=wms&ctl=admin_vopczc&act=printExpress',
|
|
'onclick'=>"_hmt.push(['_trackEvent', '订单发货操作', '打印快递单', 'b-打印快递单']);",
|
|
),
|
|
'waybill' => array(
|
|
'label' => '获取运单号',
|
|
'submit' => 'index.php?app=wms&ctl=admin_vopczc&act=getWaybill',
|
|
'target' => 'dialog::{title:\'获取运单号\',width:600,height:300}',
|
|
),
|
|
);
|
|
if($_GET['view'] == '1') {
|
|
unset($params['actions']['expre']);
|
|
} else {
|
|
unset($params['actions']['waybill']);
|
|
}
|
|
$this->finder('wms_mdl_delivery_vopczc',$params);
|
|
}
|
|
|
|
/**
|
|
* printExpress
|
|
* @return mixed 返回值
|
|
*/
|
|
public function printExpress() {
|
|
$msg = array();
|
|
$model = app::get('wms')->model('delivery_vopczc');
|
|
if($_POST['isSelectedAll'] == '_ALL_') {
|
|
|
|
$baseFilter = $this->_getBaseFilter();
|
|
$param = array_merge($baseFilter, $_POST);
|
|
$model->defaultOrder = '';
|
|
$model->filter_use_like = true;
|
|
$selData = $model->getList('delivery_id', $param, 0, -1);
|
|
$arrRequestId = array();
|
|
foreach ($selData as $val) {
|
|
$arrRequestId[] = $val['delivery_id'];
|
|
}
|
|
unset($_POST['isSelectedAll']);
|
|
} else {
|
|
$arrRequestId = $_POST['delivery_id'];
|
|
}
|
|
//防止并发打印重复获取运单号
|
|
$_inner_key = sprintf("print_ids_%s", md5(implode(',',$arrRequestId)));
|
|
$aData = cachecore::fetch($_inner_key);
|
|
if ($aData === false) {
|
|
cachecore::store($_inner_key, 'printed', 5);
|
|
}else{
|
|
$this->splash('error', '',"选中的发货单已在打印三单中,请不要重复打印!!!如没有打印完成,请稍后重试!!!");
|
|
}
|
|
$PrintLib = kernel::single('wms_delivery_print');
|
|
$print_data = $PrintLib->getPrintDatas(array('filter' => array('delivery_id'=>$arrRequestId)),'vopczc','',true,$msg);
|
|
if(isset($msg['error_msg']) && $msg['error_msg']){
|
|
$this->splash('error', '',$msg['error_msg']);
|
|
}
|
|
if(isset($msg['warn_msg']) && $msg['warn_msg']){
|
|
$this->splash('error', '',$msg['warn_msg']);
|
|
}
|
|
$printDly = array();
|
|
$needExport = array();
|
|
$needGetWaybill = array();
|
|
foreach ($print_data['deliverys'] as $delivery) {
|
|
if($delivery['expre_status'] == 'false') {
|
|
$delivery['ident'] = $print_data['identInfo']['items'][$delivery['delivery_id']];//1-81030-0209_1
|
|
$printDly[$delivery['shop_id']][$delivery['delivery_id']] = $delivery;
|
|
}
|
|
if(empty($delivery['logi_no'])) {
|
|
$needGetWaybill[] = $delivery['delivery_id'];
|
|
}
|
|
foreach ($delivery['orders'] as $order) {
|
|
if(!($order['bool_extendstatus'] & ome_order_bool_extendstatus::__EXPORT_ORDER)) {
|
|
$needExport[] = $order;
|
|
}
|
|
}
|
|
}
|
|
if($needExport) {
|
|
|
|
kernel::single('ome_service_order')->exportOrder($needExport);
|
|
}
|
|
if($printDly) {
|
|
|
|
kernel::single('ome_event_trigger_shop_delivery')->printThirdBill($printDly);
|
|
}
|
|
if($print_data['errInfo']) {
|
|
$msg = '';
|
|
foreach ($print_data['errInfo'] as $dlyId => $errMsg) {
|
|
$msg .= $print_data['errBns'][$dlyId] . $errMsg . '<br/>';
|
|
}
|
|
$this->splash('error', '',$msg);
|
|
}
|
|
$this->splash('success', 'index.php?app=wms&ctl=admin_vopczc&act=index','操作完成');
|
|
}
|
|
|
|
/**
|
|
* message
|
|
* @param mixed $msg msg
|
|
* @return mixed 返回值
|
|
*/
|
|
public function message($msg) {
|
|
$this->pagedata['err'] = 'true';
|
|
$this->pagedata['base_dir'] = kernel::base_url();
|
|
$this->pagedata['time'] = date("Y-m-d H:i:s");
|
|
$this->pagedata['msg'] = $msg;
|
|
$this->display('admin/delivery/message.html');
|
|
}
|
|
|
|
/**
|
|
* 获取Waybill
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function getWaybill() {
|
|
$model = app::get('wms')->model('delivery_vopczc');
|
|
$pageData = array(
|
|
'billName' => '唯品会仓中仓发货单获取运单号',
|
|
'request_url' => 'index.php?app=wms&ctl=admin_vopczc&act=dealGetWaybill',
|
|
'maxProcessNum' => 10,
|
|
'close' => true
|
|
);
|
|
$this->selectToPageRequest($model, $pageData, $this->_getBaseFilter());
|
|
}
|
|
|
|
/**
|
|
* dealGetWaybill
|
|
* @return mixed 返回值
|
|
*/
|
|
public function dealGetWaybill() {
|
|
$deliveryId = explode(';', $_POST['ajaxParams']);
|
|
$retArr = array(
|
|
'total' => count($deliveryId),
|
|
'succ' => 0,
|
|
'fail' => 0,
|
|
'fail_msg' => array()
|
|
);
|
|
$dlyRows = app::get('wms')->model('delivery')->getList('*', array('delivery_id'=>$deliveryId));
|
|
$branchDly = array();
|
|
foreach($dlyRows as $val) {
|
|
if($val['logi_no']) {
|
|
$retArr['succ'] ++;
|
|
continue;
|
|
}
|
|
$branchDly[$val['branch_id']][$val['delivery_id']] = $val;
|
|
}
|
|
$retArr['fail'] = count($deliveryId) - count($dlyRows);
|
|
foreach($branchDly as $branchId => $arrDly) {
|
|
|
|
$rs = kernel::single('ome_event_trigger_shop_delivery')->getDeliveryInfo($branchId, $arrDly);
|
|
foreach($arrDly as $dlyId => $val) {
|
|
if($rs[$dlyId]) {
|
|
$retArr['succ'] ++;
|
|
} else {
|
|
$retArr['fail'] ++;
|
|
$retArr['fail_msg'][] = array(
|
|
'obj_bn' => $arrDly[$dlyId]['delivery_bn'],
|
|
'msg' => '获取运单号失败'
|
|
);
|
|
}
|
|
}
|
|
}
|
|
echo json_encode($retArr);
|
|
}
|
|
|
|
|
|
} |