'订单配置',
'purchase' => '仓储采购',
'preprocess' => '预处理配置',
'other' => '其他配置',
);
//列表分栏菜单
/**
* _views
* @return mixed 返回值
*/
public function _views()
{
$sub_menu = array();
if ($this->view_source == 'problem') {
$sub_menu = $this->_viewsProblem();
}
return $sub_menu;
}
/**
* _viewsProblem
* @return mixed 返回值
*/
public function _viewsProblem()
{
$problemObj = $this->app->model('return_product_problem');
$sub_menu = array(
0 => array('label'=>app::get('base')->_('全部'), 'filter'=>array(), 'optional' => false),
// 1 => array('label'=>app::get('base')->_('店铺售后原因'), 'filter'=>array('problem_type'=>'shop'), 'optional'=>false),
// 2 => array('label'=>app::get('base')->_('WMS售后原因'), 'filter'=>array('problem_type'=>'wms'), 'optional'=>false),
);
foreach ($sub_menu as $k => $v)
{
$sub_menu[$k]['filter'] = $v['filter'] ? $v['filter'] : null;
$sub_menu[$k]['addon'] = $problemObj->count($v['filter']);
$sub_menu[$k]['href'] = "index.php?app=ome&ctl=admin_setting&act=product_problem&view=". $k;
}
return $sub_menu;
}
private function _comp_setting($arr1,$arr2){
if($arr1["order"] == $arr2["order"])return 0;return $arr1["order"] > $arr2["order"] ? 1 : -1;
}
/**
* index
* @return mixed 返回值
*/
public function index()
{
$basicMaterialObj = app::get('material')->model('basic_material');
$basicMaterialBarcode = kernel::single('material_basic_material_barcode');
$opObj = app::get('ome')->model('operation_log');
//配置信息保存
if($_POST['set']){
$settins = $_POST['set'];
if($settins['ome.cn.order.Auto'] != 'true'){
$settins['ome.cn.order.Auto.bindshop'] = array();
}
$old_on_cnorder_shop = app::get('ome')->getConf('ome.cn.order.Auto.bindshop');
$current_on_cnorder_shop = $settins['ome.cn.order.Auto.bindshop'];
if($current_on_cnorder_shop){
if($current_on_cnorder_shop){
#上次开启强制流转,现在又关闭的,需要告知
$current_off_cnorder_shop = array_diff($old_on_cnorder_shop,$current_on_cnorder_shop);
}
}else{
#如果本次完全关闭了强制流转按钮,则上次已开启流转的所有店铺,都要通知已关闭规则
$current_off_cnorder_shop = $old_on_cnorder_shop;
}
$this->begin();
if($settins['ome.product.serial.merge']=='true' && !empty($settins['ome.product.serial.separate'])){
$settins['ome.product.serial.separate'] = trim($settins['ome.product.serial.separate']);
if(strlen($settins['ome.product.serial.separate'])>1){
$this->end(false,'分隔符只允许是一个字符');
}
if(preg_match("/([a-zA-Z]{1}|[0-9]{1})/i", $settins['ome.product.serial.separate'])){
$this->end(false,'分隔符不允许是字母或数字');
}
#查询关联的条形码bm_id
$filter['code|has'] = $settins['ome.product.serial.separate'];
$bm_ids = $basicMaterialBarcode->getBmidListByFilter($filter, $code_list);
#查询基础物料
$filter = array('bm_id'=>$bm_ids);
$checkInfo = $basicMaterialObj->getList('bm_id', $filter, 0, 1);
$checkInfo = $checkInfo[0];
if($checkInfo['product_id']>0){
$this->end(false,'现有商品条形码中存在此分隔符');
}
}else{
unset($settins['ome.product.serial.separate']);
}
if(!isset($settins['ome.combine.addressconf']['ship_address']) && !isset($settins['ome.combine.addressconf']['mobile'])) {
$this->end(false,'相同地址判定中,收货地址和手机至少选择一个!');
}
//自动审单配置
$old_is_auto_combine = $this->app->getConf('ome.order.is_auto_combine');
$now_is_auto_combine = $settins['ome.order.is_auto_combine'];
if($old_is_auto_combine != $now_is_auto_combine)
{
if($now_is_auto_combine == 'true')
{
$log_msg = '开启自动审单';
}
else
{
$log_msg = '关闭自动审单';
}
$opObj->write_log('order_split@ome', 0, $log_msg);
}
//选择指定时间判断处理
if($settins["ome.order.auto_timer"] == 2){ //指定时间
if(empty($settins["ome.order.auto_exec_timer"])){
$this->end(false,'缺失时间段的数据!');
}
$current_date = date('Y-m-d');
$arr_timer_range = array();
$new_auto_exec_timer = array();
$new_key = 1;
foreach ($settins["ome.order.auto_exec_timer"] as $var_aet){
$start_time_int = strtotime($current_date.' '.intval($var_aet["start_hour"]).':'.intval($var_aet["start_minute"]).':00');
$end_time_int = strtotime($current_date.' '.intval($var_aet["end_hour"]).':'.intval($var_aet["end_minute"]).':00');
if ($start_time_int >= $end_time_int){
$this->end(false,'结束时间必须大于起始时间!');
}
if (!empty($arr_timer_range)){
foreach ($arr_timer_range as $var_tr){
if ($start_time_int >= $var_tr["end_time_int"] || $end_time_int <= $var_tr["start_time_int"]){
}else{ //时间段存在交集
$this->end(false,'时间段存在交集,请修改!');
}
//压入新的时间范围
$arr_timer_range[] = array(
"start_time_int" => $start_time_int,
"end_time_int" => $end_time_int,
);
}
}else{ //首个时间区间
$arr_timer_range[] = array(
"start_time_int" => $start_time_int,
"end_time_int" => $end_time_int,
);
}
$new_auto_exec_timer[$new_key] = $var_aet;
$new_key++;
}
$settins["ome.order.auto_exec_timer"] = $new_auto_exec_timer;
}else{ //所有时间 不做指定时间范围更新
unset($settins["ome.order.auto_exec_timer"]);
}
//复审配置
if( !isset($settins['ome.order.retrial']['product'])){
$settins['ome.order.retrial']['product'] = 0;
}
if( !isset($settins['ome.order.retrial']['order'])){
$settins['ome.order.retrial']['order'] = 0;
}
if( !isset($settins['ome.order.retrial']['delivery'])){
$settins['ome.order.retrial']['delivery'] = 0;
}
if( !isset($settins['ome.order.cost_multiple']['flag'])){
$settins['ome.order.cost_multiple']['flag'] = 0;
}
if( !isset($settins['ome.order.sales_multiple']['flag'])){
$settins['ome.order.sales_multiple']['flag'] = 0;
}
// 开票配置
$settins['ome.invoice.amount.infreight'] = $settins['ome.invoice.amount.infreight']?:0;
#订单拆单配置
if($settins['ome.order.split'] == '1')
{
#配置日志
$log_msg = '开启拆单功能;';
$log_msg .= '-';
$log_msg .= ($settins['ome.order.split_type'] == '1' ? '回写第一张' : '回写最后一张');
$opObj->write_log('order_split@ome', 0, $log_msg);
}
else
{
#关闭拆单功能_配置日志
if($this->app->getConf('ome.order.split') == '1')
{
$log_msg = '关闭拆单功能';
$opObj->write_log('order_split@ome', 0, $log_msg);
}
#注销拆单配置
$settins['ome.order.split'] = '';
$settins['ome.order.split_type'] = '';
}
foreach($settins as $set=>$value){
$curSet = $this->app->getConf($set);
if($curSet!=$settins[$set]){
$curSet = $settins[$set];
$this->app->setConf($set,$settins[$set]);
}
}
if(!isset($settins['ome.combine.addressconf']['ship_address'])){
$settins['ome.combine.addressconf']['ship_address'] = 1;
}
if( !isset($settins['ome.combine.addressconf']['mobile'])){
$settins['ome.combine.addressconf']['mobile'] = 1;
}
if($settins['ome.delivery.weight'] == 'on'){
$this->app->setConf('ome.delivery.check_delivery','off');#称重开启后,关闭校验完即发货功能
}
//保持财务账期设置
$init_time = $_POST['init_time'];
if($init_time){
$init_time['flag'] = 'true';
}
//如果提交的内容值有变化才更新
// foreach($settins as $set=>$value){
// $curSet = app::get('ome')->getConf($set);
// if($curSet!=$settins[$set]){
// $curSet = $settins[$set];
// app::get('ome')->setConf($set,$settins[$set]);
// }
// }
//库存成本保存
// if($settins['ome.delivery.weight'] == 'off'){
// $this->app->setConf('ome.delivery.logi','0');
// }
if($_POST['extends_set']){
foreach(kernel::servicelist('system_setting') as $k=>$obj){
if(method_exists($obj,'save')){
if($obj->save($_POST['extends_set'],$msg) === false) $this->end(false,$msg);
}
}
}
//扩展配置信息保存
foreach(kernel::servicelist('system_setting') as $k=>$obj){
if(method_exists($obj,'saveConf')){
$obj->saveConf($settins);
}
}
if($current_on_cnorder_shop){
foreach($current_on_cnorder_shop as $shop_id){
kernel::single('ome_event_trigger_shop_logistics')->syncOrderRule($shop_id,'true');
}
}
#上次开启自动流转,本次又关闭自动流转的店铺,进行订单处理规则同步
if($current_off_cnorder_shop){
foreach($current_off_cnorder_shop as $shop_id){
kernel::single('ome_event_trigger_shop_logistics')->syncOrderRule($shop_id,'false');
}
}
$this->end(true,'保存成功');
}
// 系统配置显示
//$settingTabs = array(
// array('name' => '订单配置', 'file_name' => 'admin/system/setting/tab_order.html', 'app' => 'ome'),
// array('name' => '仓储采购', 'file_name' => 'admin/system/setting/tab_storage.html', 'app' => 'ome'),
// array('name' => '发货校验', 'file_name' => 'admin/system/setting/tab_delivery.html', 'app' => 'ome'),
// array('name' => '预处理配置', 'file_name' => 'admin/system/setting/tab_preprocess.html', 'app' => 'ome'),
// array('name' => '订单复审设置', 'file_name' => 'admin/system/setting/tab_retrial.html', 'app'=>'ome', 'order' => 30),
// array('name' => '其他配置', 'file_name' => 'admin/system/setting/tab_other.html', 'app'=>'ome'),
//);
$settingTabs = array();
$setData = array();
// $setView = array();
// 读取所有可配置项
$setting_info = array();
//其他的配置暂时不动,直接赋值,后面细分到具体app
// $show_tabs = $this->tabs;
$servicelist = kernel::servicelist('system_setting');
//配置信息的加载
foreach($servicelist as $k=>$obj){
//顶部tab页
// if(isset($obj->tab_key) && isset($obj->tab_name)){
// $show_tabs = array_merge($show_tabs,array($obj->tab_key=>$obj->tab_name));
// }
//具体配置参数
if(method_exists($obj,'all_settings')){
$setting_info = array_merge($setting_info,$obj->all_settings());
}
if (method_exists($obj, 'get_setting_tab')) {
$settingTabs = array_merge($settingTabs, $obj->get_setting_tab());
}
if (method_exists($obj,'get_pagedata')) {
$obj->get_pagedata($this);
}
if (method_exists($obj,'get_setting_data')) {
$setData = array_merge($setData,$obj->get_setting_data());
}
}
uasort($settingTabs,array($this,'_comp_setting'));
// 获取配置项值
// foreach($setting_info as $set){
// $key = str_replace('.','_',$set);
// $setData[$key] = app::get('ome')->getConf($set);
// }
//因为老数据的问题,扩展的信息赋值放在全局赋值后面
// foreach($servicelist as $k=>$obj){
// if(method_exists($obj, 'getView')){
// $setView[] = $obj->getView();
// }
// }
// if($_GET['pos']){
// $this->pagedata['display_pos'] = $_GET['pos'];
// }
#快递单与称重的顺序标示
// if(!isset($setData['ome_delivery_logi'])){
// $setData['ome_delivery_logi'] = '0';
// }
// if($_GET['pos']){
// $this->pagedata['display_pos'] = $_GET['pos'];
// }
#快递单与称重的顺序标示
// if(!isset($setData['ome_delivery_logi'])){
// $setData['ome_delivery_logi'] = '0';
// }
#逐单校验后即发货,默认是关闭的
if(!isset($setData['ome_delivery_check_delivery'])){
$setData['ome_delivery_check_delivery'] = 'off';
}
#称重开启,校验完即发货功能,默认是关闭的
if($settins['ome.delivery.weight'] == 'on'){
$setData['ome_delivery_check_delivery'] = 'off';
}
#华强宝默认是开启的
if(!isset($setData['ome_delivery_hqepay'])){
$setData['ome_delivery_hqepay'] = 'true';
}
$this->pagedata['settingTabs'] = $settingTabs;
$this->pagedata['setData'] = $setData;
$this->pagedata['branchCount'] = count(app::get('ome')->model('branch')->Get_branchlist());
// $this->pagedata['setView']=$setView;
$this->pagedata['show_tabs'] = $show_tabs;
//tab门店配置页
if(app::get('o2o')->is_installed()){
//是否开启销单校验码:需要判断是否开通短信 在开通的情况下才能选择 “是”
base_kvstore::instance('taoexlib')->fetch('account', $account);
if(unserialize($account)){
$this->pagedata["sms_active"] = true;
}
}
//预售显示
$presalehtml = 0;
if (app::get('presale')->is_installed()) {
$presalehtml = 1;
}
$this->pagedata['presalehtml'] = $presalehtml;
//[拆单]未处理的订单[部分拆分、部分发货]
if($setData['ome_order_split'] == '1')
{
$order_split_list = $this->get_order_split_info();
$this->pagedata['order_num'] = $order_split_list['order_num'];
$this->pagedata['order_list'] = $order_split_list['order_list'];
}
//财务
#账单起始年月日
$tyear = date('Y');
$tmonth = date('m',strtotime("-1 month"));
if ($tmonth==12){
$tyear -= 1;
}
for($d=1;$d<=28;$d++){
$day[$d] = $d.'日';
}
$init_time = app::get('finance')->getConf('finance_setting_init_time');
$finance_set = (!isset($init_time['day'])||$init_time['day']=='')?'off':'on';
//判断是否安装财务模块
if(app::get('finance')->is_installed()){
$this->pagedata['finance_installed'] = 'yes';
}
#获取淘宝绑定店铺
$this->pagedata['taobao_bind_shop'] = app::get('ome')->model('shop')->getList('shop_id,name,node_id',array('node_type'=>'taobao','node_id|noequal'=>''));
$this->pagedata['tyear'] = $tyear;
$this->pagedata['tmonth'] = ceil($tmonth);
$this->pagedata['day'] = $day;
$this->pagedata['init_time'] = $init_time;
$this->pagedata['finance_set'] = $finance_set;
//自动审单配置 显示需要
$this->pagedata['c_hours'] = array_merge(array('00','01','02','03','04','05','06','07','08','09'),range(10,23));
$this->pagedata['c_minutes'] = array_merge(array('00','01','02','03','04','05','06','07','08','09'),range(10,59));
$this->pagedata['json_c_hours'] = json_encode($this->pagedata['c_hours']);
$this->pagedata['json_c_minutes'] = json_encode($this->pagedata['c_minutes']);
if(!empty($this->pagedata['setData']['ome_order_auto_exec_timer'])){
$this->pagedata['count_auto_exec_timer'] = count($this->pagedata['setData']['ome_order_auto_exec_timer']);
}
$vopbill_set = app::get('ome')->getConf('ome.vopbill.set');
$this->pagedata['vopbill_set'] = $vopbill_set;
$this->page("admin/system/setting_index_all.html");
}
function app_list(){
$rows = kernel::database()->select('select app_id,app_name from sdb_base_apps where status = "active"');
$app_list = array();
foreach($rows as $v){
$app_list[] = $v['app_id'];
}
return $app_list;
}
/*
* 订单异常类型设置
*/
function abnormal(){
$this->finder('ome_mdl_abnormal_type',array(
'title'=>'订单异常类型设置',
'actions'=>array(
array(
'label'=>'添加',
'href'=>'index.php?app=ome&ctl=admin_setting&act=addabnormal',
'target' => 'dialog::{width:450,height:150,title:\'新建异常类型\'}'
),
),
'use_buildin_new_dialog' => false,
'use_buildin_set_tag'=>false,
'use_buildin_recycle'=>false,
'use_buildin_export'=>false,
'use_buildin_import'=>false,
));
}
/*
* 添加订单异常类型
*/
function addabnormal(){
$oAbnormal = $this->app->model("abnormal_type");
if($_POST){
$this->begin('index.php?app=ome&ctl=admin_setting&act=abnormal');
$oAbnormal->save($_POST['type']);
$this->end(true, app::get('base')->_('保存成功'));
}
$this->pagedata['title'] = '添加订单异常类型';
$this->page("admin/system/abnormal.html");
}
/*
* 编辑订单异常类型
*/
function editabnormal($type_id){
$oAbnormal = $this->app->model("abnormal_type");
$this->pagedata['abnormal']=$oAbnormal->dump($type_id);
$this->pagedata['title'] = '编辑订单异常类型';
$this->page("admin/system/abnormal.html");
}
/*
* 售后问题类型设置
*/
function product_problem()
{
$this->view_source = 'problem';
$actions = array();
$actions[] = array(
'label'=>'添加',
'href'=>'index.php?app=ome&ctl=admin_setting&act=addproblem',
'target' => 'dialog::{width:500,height:300,title:\'新建售后原因\'}',
);
$actions[] = array(
'label'=>'初始化',
'href'=>'index.php?app=ome&ctl=admin_setting&act=initProblem',
// 'target' => 'dialog::{width:500,height:300,title:\'新建售后原因\'}',
);
// if(empty($_GET['view']) || $_GET['view']=='1'){
// $actions[] = array(
// 'label' => '同步店铺售后原因',
// 'href' => 'index.php?app=ome&ctl=admin_setting&act=sync_shop_reason&finder_id='. $_GET['finder_id'],
// 'target' => "dialog::{width:350,height:200,title:'同步平台店铺售后原因'}",
// );
// }
// if(empty($_GET['view']) || $_GET['view']=='2'){
// $actions[] = array(
// 'label'=>'同步WMS售后原因',
// 'href' => 'index.php?app=ome&ctl=admin_setting&act=sync_reason&finder_id='. $_GET['finder_id'],
// 'target' => "dialog::{width:350,height:200,title:'同步第三方仓储WMS售后原因'}",
// );
// }
//list
$this->finder('ome_mdl_return_product_problem',array(
'title'=>'售后问题类型设置',
'actions' => $actions,
'use_buildin_filter'=>true,
'use_buildin_new_dialog' => false,
'use_buildin_set_tag'=>false,
'use_buildin_recycle'=>true,
'use_buildin_export'=>false,
'use_buildin_import'=>false,
));
}
/*
* 添加售后问题
*/
function addproblem()
{
$oProblem = $this->app->model("return_product_problem");
if($_POST){
$this->begin('index.php?app=ome&ctl=admin_setting&act=product_problem');
//单据类型
$problem_type = $_POST['problem_type'];
$reason_id = trim($_POST['reason_id']);
$reason_id = str_replace(array('"',"'"), '', $reason_id);
$problem_name = trim($_POST['problem_name']);
$problem_name = str_replace(array('"',"'"), '', $problem_name);
//wms关联店铺原因
$wms_reason_id = trim($_POST['wms_reason_id']);
$wms_reason_id = str_replace(array('"',"'"), '', $wms_reason_id);
$wms_reason_name = '';
if($wms_reason_id){
$wmsReasonInfo = $oProblem->dump(array('reason_id'=>$wms_reason_id), 'problem_id,reason_id,problem_name');
if($wmsReasonInfo){
$wms_reason_id = $wmsReasonInfo['reason_id'];
$wms_reason_name = $wmsReasonInfo['problem_name'];
}
}
//save
$saveData = array(
'problem_type' => $problem_type,
'reason_id' => $reason_id,
'problem_name' => $problem_name,
'platform_type' => trim($_POST['platform_type']),
'disabled' => $_POST['disabled'],
'wms_reason_id' => $wms_reason_id,
'wms_reason_name' => $wms_reason_name,
'last_sync_time' => time(),
);
if($_POST['problem_id']){
$saveData['problem_id'] = intval($_POST['problem_id']);
}else{
$saveData['createtime'] = time();
}
$oProblem->save($saveData);
$this->end(true, app::get('base')->_('添加成功'));
}
/***
//关联售后原因
$shopReasonList = array();
$tempList =$oProblem->getList('problem_id,reason_id,problem_name', array('problem_type'=>'shop'), 0, 100);
if($tempList){
foreach ($tempList as $key => $val)
{
$reason_id = $val['reason_id'];
$shopReasonList[$reason_id] = $val['problem_name'];
}
}
$this->pagedata['shopReasonList'] = $shopReasonList;
***/
$this->pagedata['disabled_type'] = array('true'=>'是','false'=>'否');
$this->pagedata['problem']['disabled'] = 'false';
$this->page("admin/system/product_problem.html");
}
/*
* 编辑售后问题
*/
function editproblem($problem_id)
{
$oProblem = $this->app->model('return_product_problem');
$problem = $oProblem->dump($problem_id);
if(empty($problem)){
die('售后原因信息不存在');
}
//关联售后原因
$shopReasonList = array();
$filter = array();
if($problem['problem_type'] == 'wms'){
$filter = array('problem_type'=>'shop');
}else{
$filter = array('problem_type'=>'wms');
}
$tempList =$oProblem->getList('problem_id,reason_id,problem_name', $filter, 0, 100);
if($tempList){
foreach ($tempList as $key => $val)
{
$reason_id = $val['reason_id'];
$shopReasonList[$reason_id] = $val['problem_name'];
}
}
$this->pagedata['shopReasonList'] = $shopReasonList;
$this->pagedata['problem'] = $problem;
$this->pagedata['disabled_type'] = array('true'=>'是','false'=>'否');
$this->page("admin/system/product_problem.html");
}
/**
* 收款账号管理
*/
function set_collection_account()
{
$this->finder('ome_mdl_bank_account', array(
'title' => '收款账号管理',
'actions'=>array(
array(
'label'=>'添加',
'href'=>'index.php?app=ome&ctl=admin_setting&act=add_bank_account',
'target' => 'dialog::{width:550,height:350,resizeable:false,title:\'新建银行账户\'}',
),
),
'use_buildin_set_tag' => false,
'use_buildin_filter' => true,
'use_buildin_new_dialog' => false,
'use_buildin_tagedit' => true,
'use_buildin_export' => false,
'use_buildin_import' => false,
'use_buildin_recycle'=> true,
));
}
/**
* 收款账号新增
*/
function add_bank_account()
{
$bank_account = '';
if(isset($_GET['ba_id'])){
$ba_id = $_GET['ba_id'];
$bank_account_obj = kernel::single('ome_mdl_bank_account');
$bank_account = $bank_account_obj->getList('*', array('ba_id'=>$ba_id), 0, 1);
}
$this->pagedata['item'] = $bank_account[0] ? : [];
$this->page('admin/system/bank_account.html');
}
/**
* do_add_bank_account
* @return mixed 返回值
*/
public function do_add_bank_account()
{
$bank_acount = $this->app->model('bank_account');
if($_POST){
if($_POST['item']['ba_id'] != ''){
// 修改
$has_exists = $bank_acount->dump(array('ba_id' => $_POST['item']['ba_id']), '*');
$this->begin('index.php?app=ome&ctl=admin_setting&act=set_collection_account');
if($has_exists['account'] == $_POST['item']['account']){
$bank_acount->update($_POST['item'], array('ba_id' => $_POST['item']['ba_id']));
$this->end(true, app::get('base')->_('编辑成功'));
} else {
$banks = $bank_acount->dump(array('account' => $_POST['item']['account']), '*');
if(!isset($banks['ba_id'])){
$bank_acount->update($_POST['item'], array('ba_id' => $_POST['item']['ba_id']));
$this->end(true, app::get('base')->_('编辑成功'));
} else {
$this->end(false, app::get('base')->_('账号重复'));
}
}
} else {
// 添加
$has_exists = $bank_acount->dump(array('account' => $_POST['item']['account']), '*');
$this->begin('index.php?app=ome&ctl=admin_setting&act=set_collection_account');
if($has_exists){
$this->end(false, app::get('base')->_('该账号已经存在,请勿重复添加'), 3);
} else {
$bank_acount->save($_POST['item']);
$this->end(true, app::get('base')->_('添加成功'));
}
}
}
}
/**
* 获取部分拆分的订单和部分发货的订单
*/
function get_order_split_info()
{
$fields = "order_id, order_bn, shop_id, shop_type, process_status, ship_status, total_amount, last_modified";
$where = " WHERE (process_status='splitting' || ship_status='2') AND `status`='active' ";
$order_num = kernel::database()->select("SELECT count(*) as num FROM ".DB_PREFIX."ome_orders ".$where);
$order_list = kernel::database()->select("SELECT ".$fields." FROM ".DB_PREFIX."ome_orders ".$where." ORDER BY order_id DESC LIMIT 5");
#关联发货单_数量
if($order_list)
{
//确认状态、发货状态
$ship_array = array (0 => '未发货', 1 => '已发货', 2 => '部分发货', 3 => '部分退货', 4 => '已退货');
$process_array = array('unconfirmed' => '未确认','confirmed' => '已确认','splitting' => '部分拆分',
'splited' => '已拆分完', 'cancel' => '取消', 'remain_cancel' =>'余单撤销');
//店铺
$shop_list = array();
$oShop = app::get('ome')->model('shop');
$data_shop = $oShop->getList('shop_id, name', null, 0, -1);
foreach ($data_shop as $key => $val)
{
$sel_shop_id = $val['shop_id'];
$shop_list[$sel_shop_id] = $val['name'];
}
$data_dly = array();
foreach ($order_list as $key => $val)
{
$sel_order_id = $val['order_id'];
$sql = "SELECT dord.delivery_id, d.status FROM ".DB_PREFIX."ome_delivery_order AS dord
LEFT JOIN ".DB_PREFIX."ome_delivery AS d ON (dord.delivery_id=d.delivery_id)
WHERE dord.order_id=".$sel_order_id." AND (d.parent_id=0 OR d.is_bind='true') AND d.disabled='false'
AND d.status NOT IN('failed','cancel','back','return_back')";
$data_dly = kernel::database()->select($sql);
$order_list[$key]['dly_count'] = count($data_dly);
$order_list[$key]['delivery'] = $data_dly;
$order_list[$key]['dly_succ'] = 0;
foreach ($data_dly as $key_j => $val_j)
{
if($val_j['status'] == 'succ')
{
$order_list[$key]['dly_succ']++;//已发货数量
}
}
$sel_shop_id = $val['shop_id'];
$ship_status = $val['ship_status'];
$process_status = $val['process_status'];
$order_list[$key]['shop_name'] = $shop_list[$sel_shop_id];
$order_list[$key]['ship_status'] = $ship_array[$ship_status];
$order_list[$key]['process_status'] = $process_array[$process_status];
}
}
$result = array('order_num'=>$order_num[0]['num'], 'order_list'=>$order_list);
return $result;
}
/**
* 同步WMS仓储的售后原因
*/
public function sync_reason()
{
$problemObj = app::get('ome')->model('return_product_problem');
//路由列表
$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 = $problemObj->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京东一件代发仓储同步售后原因!');
}
$this->pagedata['storage'] = $storage;
$this->pagedata['finder_id'] = $_GET['finder_id'];
$this->display('admin/system/sync_reason.html');
}
/**
* 同步WMS仓储的售后原因
*/
public function doSyncResaon()
{
$this->begin('index.php?app=ome&ctl=admin_setting&act=product_problem');
$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_resaon($channelInfo);
if($result['rsp'] != 'succ')
{
$error_msg = $result['msg'];
$this->end(false, $error_msg);
}
$this->end(true, app::get('base')->_('同步成功'), 3);
}
/**
* problemSetDefaulted
* @param mixed $problem_id ID
* @return mixed 返回值
*/
public function problemSetDefaulted($problem_id)
{
$finder_id = $_REQUEST['finder_id'];
if(empty($problem_id)){
echo "";
exit;
}
//info
$problemObj = $this->app->model('return_product_problem');
$problemInfo = $problemObj->dump(array('problem_id'=>$problem_id), '*');
if(empty($problemInfo)){
echo "";
exit;
}
//全部取消默认
kernel::database()->query("UPDATE sdb_ome_return_product_problem SET defaulted='false' WHERE problem_type='". $problemInfo['problem_type'] ."'");
//设置为默认
$problemObj->update(array('defaulted'=>'true'), array('problem_id'=>$problem_id));
echo "";
exit;
}
/**
* problemWipeDefaulted
* @param mixed $problem_id ID
* @return mixed 返回值
*/
public function problemWipeDefaulted($problem_id)
{
$finder_id = $_REQUEST['finder_id'];
if(empty($problem_id)){
echo "";
exit;
}
//info
$problemObj = $this->app->model('return_product_problem');
$problemInfo = $problemObj->dump(array('problem_id'=>$problem_id), '*');
if(empty($problemInfo)){
echo "";
exit;
}
//取消默认
$problemObj->update(array('defaulted'=>'false'), array('problem_id'=>$problem_id));
echo "";
exit;
}
/**
* 同步平台店铺售后原因
*/
public function sync_shop_reason()
{
$shopObj = app::get('ome')->model('shop');
//list
$tempList = $shopObj->getList('shop_id,shop_bn,name,shop_type,node_id', array());
if(empty($tempList)){
die('没有店铺');
}
$shopList = array();
foreach ($tempList as $key => $val)
{
if(empty($val['node_id'])){
continue;
}
//只支持抖音平台
if($val['shop_type'] != 'luban'){
continue;
}
$shopList[] = $val;
}
//check
if(empty($shopList)){
die('没有可选择的店铺');
}
$this->pagedata['shopList'] = $shopList;
$this->pagedata['finder_id'] = $_GET['finder_id'];
$this->display('admin/system/sync_shop_reason.html');
}
/**
* 同步平台店铺的售后原因
*/
public function doSyncShopResaon()
{
$this->begin('index.php?app=ome&ctl=admin_setting&act=product_problem');
$shopObj = app::get('ome')->model('shop');
$shop_id = $_POST['shop_id'];
if(empty($shop_id)){
$this->end(false, '没有获取到店铺信息');
}
//店铺信息
$shopInfo = $shopObj->dump(array('shop_id'=>$shop_id), 'shop_id,shop_bn,name,shop_type,node_id');
if(empty($shopInfo['node_id'])){
$this->end(false, '店铺信息不存在或未绑定');
}
//request
$result = kernel::single('erpapi_router_request')->set('shop', $shopInfo['shop_id'])->aftersale_getReturnResaon($shopInfo);
if($result['rsp'] != 'succ'){
$error_msg = $result['msg'];
$this->end(false, $error_msg);
}
$this->end(true, app::get('base')->_('同步成功'), 3);
}
/**
* 初始化售后类型
*
* @return void
* @author
**/
public function initProblem()
{
$this->begin($this->url.'&act=product_problem');
$problem_list = [
'收到商品少件 / 错件 / 空包裹' ,
'少件/漏发' ,
'功能故障' ,
'商家发错货',
'不喜欢 / 效果不好',
'做工粗糙 / 有瑕疵 / 有污渍' ,
'商品材质 / 品牌 / 外观等描述不符',
'生产日期 / 保质期 / 规格等描述不符',
'大小/尺寸/重量与商品描述不符',
'品种/规格/成分等描述不符',
'品种/产品/规格/成分等描述不符',
'规格等描述不符',
'其他',
];
$problemMdl = app::get('ome')->model('return_product_problem');
foreach ($problem_list as $name) {
$problem = $problemMdl->db_dump(['problem_name' => $name]);
if (!$problem) {
$problem = [
'problem_name' => $name,
'last_sync_time' => time(),
'createtime' => time(),
];
$problemMdl->save($problem);
}
}
$this->end(true);
}
}