Files
2026-01-04 19:08:31 +08:00

291 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.
*/
/**
* WMS仓储异常错误码
*
* @author wangbiao@shopex.cn
* @version $Id: Z
*/
class wmsmgr_ctl_admin_abnormal_code extends desktop_controller
{
var $workground = 'wms_manager';
function index()
{
$base_filter = array();
//action
$actions = array();
$actions[] = array(
'label' => '添加异常错误码',
'href' => 'index.php?app=wmsmgr&ctl=admin_abnormal_code&act=add',
'target' => "dialog::{width:500,height:300,title:'添加异常错误码'}",
);
$actions[] = array(
'label' => app::get('channel')->_('删除'),
'confirm' => '确定删除选中项?',
'submit' => 'index.php?app=wmsmgr&ctl=admin_abnormal_code&act=delete',
);
$actions[] = array(
'label' => '导出模板',
'href' => 'index.php?app=wmsmgr&ctl=admin_abnormal_code&act=exportTemplate',
'target' => '_blank',
);
$actions[] = array(
'label'=>'同步WMS异常错误码',
'href' => 'index.php?app=wmsmgr&ctl=admin_abnormal_code&act=sync_errorcode&finder_id='. $_GET['finder_id'],
'target' => "dialog::{width:350,height:200,title:'同步第三方仓储WMS异常错误码'}",
);
//params
$params = array(
'title' => 'WMS异常错误码列表',
'actions' => $actions,
'base_filter' => $base_filter,
'use_buildin_new_dialog' => false,
'use_buildin_set_tag' => false,
'use_buildin_recycle' => false,
'use_buildin_export' => false,
'use_buildin_import' => true,
);
$this->finder('wmsmgr_mdl_abnormal_code', $params);
}
function add(){
$this->_edit();
}
function edit($abnormal_id){
$this->_edit($abnormal_id);
}
private function _edit($abnormal_id=null)
{
if($abnormal_id){
$abnormalObj = app::get('wmsmgr')->model('abnormal_code');
$codeInfo = $abnormalObj->dump(array('abnormal_id'=>$abnormal_id), '*');
$this->pagedata['data'] = $codeInfo;
}
//单据类型
$schema = app::get('wmsmgr')->model('abnormal_code')->get_schema();
$abnormal_types = $schema['columns']['abnormal_type']['type'];
$this->pagedata['abnormal_types'] = $abnormal_types;
$this->display('abnormal/add_code.html');
}
/**
* 保存
* @return mixed 返回操作结果
*/
public function save()
{
$this->begin('index.php?app=wmsmgr&ctl=admin_abnormal_code&act=index');
$abnormalObj = app::get('wmsmgr')->model('abnormal_code');
$abnormal_id = intval($_POST['abnormal_id']);
$abnormal_type = trim($_POST['abnormal_type']); //单据类型
$abnormal_code = trim($_POST['abnormal_code']); //错误码
$abnormal_name = trim($_POST['abnormal_name']); //错误描述
if(empty($abnormal_type) || empty($abnormal_code) || empty($abnormal_name)){
$error_msg = '无效的操作';
$this->end(false, $error_msg);
}
//data
$data = array(
'abnormal_id' => $abnormal_id,
'abnormal_type' => $abnormal_type,
'abnormal_code' => $abnormal_code,
'abnormal_name' => $abnormal_name,
'create_time' => time(),
'last_modified' => time(),
);
//check
$abnormal_id = $data['abnormal_id'];
if($abnormal_id){
$codeInfo = $abnormalObj->dump(array('abnormal_id'=>$abnormal_id), '*');
if($codeInfo){
$data['abnormal_id'] = $codeInfo['abnormal_id'];
unset($data['create_time']);
}else{
unset($data['abnormal_id']);
}
}
//check
if(strlen($data['abnormal_code']) < 3 || strlen($data['abnormal_code']) > 20){
$error_msg = '错误码输入字符在3~20个字符';
$this->end(false, $error_msg);
}
//code
$filter = array('abnormal_code'=>$data['abnormal_code']);
if($data['abnormal_id']){
$filter['abnormal_id|noequal'] = $data['abnormal_id'];
}
$checkInfo = $abnormalObj->getList('abnormal_id', $filter);
if($checkInfo){
$error_msg = '错误码已经存在';
return false;
}
$abnormalObj->save($data);
$this->end(true, '添加成功');
}
/**
* 删除
* @return mixed 返回值
*/
public function delete()
{
$this->begin('index.php?app=wmsmgr&ctl=admin_abnormal_code&act=index');
$abnormalObj = app::get('wmsmgr')->model('abnormal_code');
if($_POST['isSelectedAll'] == '_ALL_'){
$this->end(false,'不支持全选');
}
if(empty($_POST['abnormal_id'])){
$this->end(false, '没有可删除的记录');
}
foreach($_POST['abnormal_id'] as $abnormal_id)
{
//del
$abnormalObj->delete(array('abnormal_id'=>$abnormal_id));
}
$this->end(true, '已经删除完成!');
}
/**
* 异常错误码批量导入的模板
*
* @param Null
* @return String
*/
public function exportTemplate()
{
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=异常错误码导入模板-" . date('Ymd') . ".csv");
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
//导出标题
$abnormalObj = app::get('wmsmgr')->model('abnormal_code');
$title = $abnormalObj->exportTemplate();
echo '"' . implode('","', $title) . '"';
//模板案例
$data[0] = array('发货单', '4100', '渠道未启用异常');
$data[1] = array('发货单', '4300', '商品相关异常');
$data[2] = array('售后单', '4200', '用户相关异常');
foreach ($data as $items)
{
foreach ($items as $key => $val){
$items[$key] = kernel::single('base_charset')->utf2local($val);
}
echo "\n";
echo '"' . implode('","', $items) . '"';
}
}
/**
* 同步第三方仓储WMS异常错误码
*/
public function sync_errorcode()
{
$abnormalObj = app::get('wmsmgr')->model('abnormal_code');
//路由列表
$storage = array();
$sql = "SELECT channel_id,node_id,channel_bn,channel_name AS node_name,node_type FROM sdb_channel_channel WHERE channel_type='wms' AND node_id !=''";
$tempList = $abnormalObj->db->select($sql);
foreach ($tempList as $key => $val)
{
if($val['node_id'] == 'selfwms'){
continue;
}
//现只支持yjdf京东一件代发仓储
if($val['node_type'] != 'yjdf'){
continue;
}
$storage[] = $val;
}
//check
if(empty($storage)){
die('现只支持yjdf京东一件代发仓储WMS异常错误码!');
}
$this->pagedata['storage'] = $storage;
$this->pagedata['finder_id'] = $_GET['finder_id'];
$this->display('abnormal/sync_errorcode.html');
}
/**
* 同步第三方仓储WMS异常错误码
*/
public function doSyncErrorcode()
{
$this->begin('index.php?app=wmsmgr&ctl=admin_abnormal_code&act=index');
$node_id = $_POST['node_id'];
if(empty($node_id)){
$this->end(false, '没有获取到WMS仓储路由');
}
//[京东一件代发]查询订单是否可申请售后
$channelObj = app::get('channel')->model('channel');
$channelInfo = $channelObj->dump(array('node_id'=>$node_id),'channel_id,node_id,node_type,channel_bn');
if($channelInfo['node_type'] != 'yjdf'){
$this->end(false, '现只支持yjdf京东一件代发仓储同步售后原因');
}
$channel_id = $channelInfo['channel_id'];
//request
$result = kernel::single('erpapi_router_request')->set('wms', $channel_id)->reship_errorcode($channelInfo);
if($result['rsp'] != 'succ')
{
$error_msg = $result['msg'];
$this->end(false, $error_msg);
}
$this->end(true, app::get('base')->_('同步WMS异常错误码成功'), 3);
}
}