Files
OMS/app/dealer/controller/admin/series.php
2025-12-28 23:13:25 +08:00

930 lines
41 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
/**
* 产品线列表
* @author wangjianjun@shopex.cn
* @version 2024.04.12
*/
class dealer_ctl_admin_series extends desktop_controller{
/**
* 产品线列表项方法
* @param Post
* @return String
*/
public function index(){
$actions = array(
array(
'label' => '创建产品线',
'href' => 'index.php?app=dealer&ctl=admin_series&act=series_add',
),
[
'label' => '产品线导入模板',
'href' => 'index.php?app=dealer&ctl=admin_series&act=exportSeriesTemplate',
'target' => '_blank',
],
[
'label' => '物料导入模板',
'href' => 'index.php?app=dealer&ctl=admin_series_products&act=exportSeriesProductsTemplate',
'target' => '_blank',
],
[
'label' => '导入产品线',
'href' => 'index.php?app=omecsv&ctl=admin_import&act=main&ctler=dealer_mdl_series&add='.$this->app->app_id,
'target' => 'dialog::{width:500,height:250,title:\'' . app::get('desktop')->_('导入产品线') . '\'}',
],
);
$params = array(
'title'=>'产品线设置',
'use_buildin_set_tag' => false,
'use_buildin_filter' => false,
'use_buildin_export' => false,
'use_buildin_filter' => true,
'use_buildin_recycle' => false,
'actions' => $actions,
);
$this->finder('dealer_mdl_series',$params);
$html = <<<EOF
<script>
$$(".show_list").addEvent('click',function(e){
var series_id = this.get('series_id');
var t_url ='index.php?app=dealer&ctl=admin_series_products&act=findseriesProducts&series_id='+series_id;
var url='index.php?app=desktop&act=alertpages&goto='+encodeURIComponent(t_url);
Ex_Loader('modedialog',function() {
new finderDialog(url,{width:1000,height:660,
});
});
});
</script>
EOF;
echo $html;exit;
}
/**
* 新增展示页
* @param void
* @return void
*/
public function series_add(){
$mdl_dealer_betc = app::get('dealer')->model('betc');
$dealer_betc_list = $mdl_dealer_betc->getList('betc_id,betc_name');
$this->pagedata['betcs'] = $dealer_betc_list;
$this->pagedata['finder_vid'] = $_GET['finder_vid'];
$this->page('admin/series/series_add.html');
}
/**
* 产品线新增提交方法
* @param Post
* @return Boolean
*/
public function toAdd(){
$this->begin('index.php?app=dealer&ctl=admin_series&act=index');
// 定义kernel model等
$lib_ome_func = kernel::single('ome_func');
$mdl_ool = app::get('ome')->model('operation_log');
$mdl_dealer_series = app::get('dealer')->model('series');
$lib_dealer_series = kernel::single("dealer_series");
$error_msg = "";
$check_result = $lib_dealer_series->check_series_data($_POST,$error_msg);
if(!$check_result){
$this->end(false,$error_msg);
}
//再验证是否存在(产品线编码维度)
$rs_series = $mdl_dealer_series->dump(array("series_code"=>$_POST["series_code"]),"series_id");
if(!empty($rs_series)){
$this->end(false,"产品线编码已存在。");
}
//获取贸易公司的组织架构ID
$mdl_dealer_betc = app::get('dealer')->model('betc');
$rs_dealer_betc = $mdl_dealer_betc->dump(array("betc_id"=>$_POST["betc_id"]),"cos_id");
if(!$rs_dealer_betc["cos_id"]){
$this->end(false,"缺少组织架构ID。");
}
// 获取操作人信息
$opinfo = $lib_ome_func->getDesktopUser();
// 产品线保存
$insert_arr = array(
"series_code" => $_POST["series_code"], //产品线编码
"series_name" => $_POST["series_name"], //产品线名称
"description" => $_POST["description"], //产品线描述
"cat_name" => $_POST["cat_name"], //产品线分类
"sku_nums" => 0, //绑定基础物料数量
"betc_id" => $_POST["betc_id"], //贸易公司ID
"cos_id" => $rs_dealer_betc["cos_id"], //组织架构ID
"remark" => $_POST["remark"], //备注
"op_name" => $opinfo["op_name"], //创建人
);
$res = $mdl_dealer_series->insert($insert_arr);
if (!$res) {
$this->end(false, '保存失败');
}
$mdl_ool->write_log('dealer_series_add@dealer',$insert_arr['series_id'],"新增产品线。");
$this->end(true, '操作成功');
}
/**
* AJax加载选择基础物料模板
* @param $series_id 产品线主键ID
* @return void
*/
public function ajax_basic_material_html($series_id = ''){
if($series_id){
$mdl_dealer_series_products = app::get('dealer')->model('series_products');
$rs_dealer_series_products = $mdl_dealer_series_products->getList("bm_id",array("series_id"=>$series_id));
$bm_ids = array();
foreach($rs_dealer_series_products as $var_rdsp){
$bm_ids[] = $var_rdsp["bm_id"];
}
$count = is_array($bm_ids) ? count($bm_ids) : 0;
$data['bind_bm_ids'] = $bm_ids;
$sign = '基础物料';
$func = 'product_selected_show';
$domid = 'hand-selected-product';
$this->pagedata['replacehtml'] = <<<EOF
<div id='{$domid}'>已选择了{$count}{$sign},<a href='javascript:void(0);' onclick='{$func}();'>查看选中{$sign}.</a></div>
EOF;
}
if (isset($_POST['betc_id']) && $_POST['betc_id']) {
$shopBnArr = [0];
$betcMdl = app::get('dealer')->model('betc');
$cosMdl = app::get('organization')->model('cos');
$betcInfo = $betcMdl->db_dump(['betc_id' => $_POST['betc_id']]);
$cosInfo = $cosMdl->db_dump(['cos_id'=>$betcInfo['cos_id']]);
$bbuCosId = $cosInfo['parent_id'];
$data['filter'] = implode('&', [
'cos_id='.$bbuCosId,
]);
}
$this->pagedata['data'] = $data;
$this->display('admin/series/select_basic_material.html');
}
/**
* AJax加载选择经销店铺模板
* @param $series_id 产品线主键ID
* @return void
*/
public function ajax_shopyjdf_html($series_id = ''){
$data = [];
if ($series_id) {
//经销店铺
$mdl_dealer_series_endorse = app::get('dealer')->model('series_endorse');
$rs_dealer_series_endorse = $mdl_dealer_series_endorse->getList("shop_id",array("series_id"=>$series_id));
$shop_ids = array();
foreach($rs_dealer_series_endorse as $var_rdse){
$shop_ids[] = $var_rdse["shop_id"];
}
$count_shop = is_array($shop_ids) ? count($shop_ids) : 0;
$data['bind_shop_ids'] = $shop_ids;
$data['filter'] = 'delivery_mode = shopyjdf';
$sign = '经销店铺';
$func = 'shop_selected_show';
$domid = 'hand-selected-shop';
$count = $count_shop;
$this->pagedata['replacehtml'] = <<<EOF
<div id='{$domid}' style='float:left;margin:10px 10px 10px 5px'>已选择了{$count}{$sign},<a href='javascript:void(0);' onclick='{$func}();'>查看选中的{$sign}.</a></div>
EOF;
}
if (isset($_POST['betc_id']) && $_POST['betc_id']) {
$shopBnArr = [0];
$betcMdl = app::get('dealer')->model('betc');
$betcInfo = $betcMdl->db_dump(['betc_id' => $_POST['betc_id']]);
$cosList = kernel::single('organization_cos')->getCosList($betcInfo['cos_id']);
foreach ($cosList[1] as $k => $v) {
if ($v['cos_type'] == 'shop') {
$shopBnArr[] = $v['cos_code'];
}
}
$data['filter'] = implode('&', [
'delivery_mode=shopyjdf',
'shop_bn_in=("'.implode('","', $shopBnArr).'")',
]);
}
$this->pagedata['data'] = $data;
$this->display('admin/series/select_shopyjdf.html');
}
/**
* 显示基础物料明细
* @param void
* @return void
*/
public function showProducts(){
$basicMaterialObj = app::get('material')->model('basic_material');
$bm_id = kernel::single('base_component_request')->get_post('bm_id');
if ($bm_id) {
if (!is_array($bm_id)) {
$bm_id= explode(',', $bm_id);
}
$this->pagedata['_input'] = array(
'name' => 'bm_id',
'idcol' => 'bm_id',
'_textcol' => 'material_name',
'_bncol' => 'material_bn',
);
$list = $basicMaterialObj->getList('bm_id,material_name,material_bn', array('bm_id' => $bm_id), 0, -1, 'bm_id asc');
$this->pagedata['_input']['items'] = $list;
}
$this->display('admin/series/show_products.html');
}
/**
* 显示经销店铺明细
* @param void
* @return void
*/
public function showShops(){
$mdl_ome_shop = app::get('ome')->model('shop');
$shop_id = kernel::single('base_component_request')->get_post('shop_id');
if ($shop_id) {
if (!is_array($shop_id)) {
$shop_id = explode(',', $shop_id);
}
$this->pagedata['_input'] = array(
'name' => 'shop_id',
'idcol' => 'shop_id',
'_textcol' => 'name',
'_bncol' => 'shop_bn',
);
$list = $mdl_ome_shop->getList('shop_id,name,shop_bn', array('shop_id' => $shop_id), 0, -1, 'shop_id asc');
$this->pagedata['_input']['items'] = $list;
}
$this->display('admin/series/show_shops.html');
}
/**
* 产品线编辑的展示页面方法
* @param Int $series_id 产品线
* @param String $part 编辑哪个部分
* @return Boolean
*/
public function edit($series_id, $part = 'all'){
if(!$series_id){
die("产品线主键ID缺失。");
}
$mdl_dealer_series = app::get("dealer")->model("series");
$rs_dealer_series = $mdl_dealer_series->dump(array("series_id"=>$series_id),"*");
if(empty($rs_dealer_series)){
die("产品线数据为空。");
}
//产品线数据
$this->pagedata["series_info"] = $rs_dealer_series;
//贸易公司数据
$mdl_dealer_betc = app::get('dealer')->model('betc');
$dealer_betc_list = $mdl_dealer_betc->getList('betc_id,betc_name');
$this->pagedata['betcs'] = $dealer_betc_list;
if ($part == 'material') {
// 获取当前账户下公司业务组织的cos_id
$bbuCosList = kernel::single('organization_cos')->getBbuFromCosId();
if (!$bbuCosList[0]) {
$this->pagedata['bm_filter'] = 'cos_id=0';
} elseif ($bbuCosList[1] != '_ALL_') {
$bbu_cos_ids = array_column($bbuCosList[1], 'cos_id');
$this->pagedata['bm_filter'] = 'cos_id=' . ($bbu_cos_ids ? implode(',', $bbu_cos_ids) : '0');
} else {
$this->pagedata['bm_filter'] = '1=1';
}
//基础物料
$bm_ids = [];
$mdl_dealer_series_products = app::get('dealer')->model('series_products');
$rs_dealer_series_products = $mdl_dealer_series_products->getList("bm_id",array("series_id"=>$series_id));
if($rs_dealer_series_products){
// die("产品线绑物料数据为空");
$bm_ids = array_column($rs_dealer_series_products, 'bm_id');
}
$count = is_array($bm_ids) ? count($bm_ids) : 0;
$this->pagedata['bind_bm_ids'] = $bm_ids;
$this->pagedata['replacehtml'] = <<<EOF
<div id='hand-selected-product' style='float:left;margin:10px 10px 10px 5px'>已选择了{$count}个基础物料,<a href='javascript:void(0);' onclick='product_selected_show();'>查看选中的基础物料.</a></div>
EOF;
}
// if ($part == 'shop') {
// //经销店铺
// $shop_ids = [];
// $mdl_dealer_series_endorse = app::get('dealer')->model('series_endorse');
// $rs_dealer_series_endorse = $mdl_dealer_series_endorse->getList("shop_id",array("series_id"=>$series_id));
// if(empty($rs_dealer_series_endorse)){
// $shop_ids = array_column($rs_dealer_series_endorse, 'shop_id');
// }
// $count_shop = is_array($shop_ids) ? count($shop_ids) : 0;
// $this->pagedata['bind_shop_ids'] = $shop_ids;
// $this->pagedata['replacehtml_shop'] = <<<EOF
// <div id='hand-selected-shop' style='float:left;margin:10px 10px 10px 5px'>已选择了{$count_shop}个经销店铺,<a href='javascript:void(0);' onclick='shop_selected_show();'>查看选中的经销店铺.</a></div>
// EOF;
// }
if ($part == 'shop') { // 授权店铺
$this->singlepage('admin/series/edit_shop.html');
} elseif ($part == 'material') { // 添加物料
$this->singlepage('admin/series/edit_material.html');
} else { // 编辑产品线信息
$this->singlepage('admin/series/edit.html');
}
}
/**
* 销售物料编辑提交方法
* @param Int $series_id
* @return Boolean
*/
public function toEdit(){
$this->begin('index.php?app=dealer&ctl=admin_series&act=index');
if(!$_POST["series_id"]){
$this->end(false,'产品线主键ID缺失。');
}
$lib_ome_func = kernel::single('ome_func');
$mdl_ool = app::get('ome')->model('operation_log');
$lib_dealer_series = kernel::single("dealer_series");
$shopMdl = app::get('ome')->model('shop');
$mdl_dealer_series = app::get('dealer')->model('series');
$mdl_dealer_series_products = app::get('dealer')->model('series_products');
$mdl_dealer_series_endorse = app::get('dealer')->model('series_endorse');
$mdl_dealer_series_endorse_products = app::get('dealer')->model('series_endorse_products');
//先验证一遍值
$error_msg = "";
$check_result = $lib_dealer_series->check_series_data($_POST,$error_msg);
if(!$check_result){
$this->end(false,$error_msg);
}
// 重新获取贸易公司,防止多人同事操作,比如:一人先编辑授权店铺单还未保存,一人后编辑贸易公司并保存,这样前一个人的贸易公司还是老的,对应的经销店铺也是老的所属贸易公司的
$filter_arr = array("series_id"=>$_POST["series_id"]);
$seriesInfo = $mdl_dealer_series->db_dump($filter_arr);
$_POST['betc_id'] = $seriesInfo['betc_id'];
//获取贸易公司的组织架构ID
$mdl_dealer_betc = app::get('dealer')->model('betc');
$rs_dealer_betc = $mdl_dealer_betc->dump(array("betc_id"=>$_POST["betc_id"]),"cos_id");
if(!$rs_dealer_betc["cos_id"]){
$this->end(false,"缺少组织架构ID。");
}
// 验证经销店铺是否是该贸易公司下的
$cosShops = [];
$cosList = kernel::single('organization_cos')->getCosList($rs_dealer_betc['cos_id']);
foreach ($cosList[1] as $k => $v) {
if ($v['cos_type'] == 'shop') $cosShops[] = $v['cos_code'];
}
$shopList = $shopMdl->getList('shop_bn', ['shop_id' => $_POST["shop_id"]]);
$shopList = array_column($shopList, 'shop_bn');
$intersection = array_intersect($shopList, $cosShops); // 获取交集
if (count($intersection) != count($shopList)) {
$this->end(false,"店铺不属于所属贸易公司");
}
$snapshoot = []; //日志快照
$snapshoot['sdb_dealer_series'] = $seriesInfo;
//获取操作人信息
$opinfo = $lib_ome_func->getDesktopUser();
//产品线维度sku数量
$sku_nums = count($_POST["bm_id"]); //单店铺的sku数量
// 产品线更新
$update_arr = array(
"series_name" => $_POST["series_name"], //产品线名称
"description" => $_POST["description"], //产品线描述
"cat_name" => $_POST["cat_name"], //产品线分类
"sku_nums" => $sku_nums, //绑定基础物料数量
"betc_id" => $_POST["betc_id"], //贸易公司ID
"cos_id" => $rs_dealer_betc["cos_id"], //组织架构ID
"remark" => $_POST["remark"], //备注
);
$mdl_dealer_series->update($update_arr,$filter_arr);
//基础物料维度 获取现有表中的数据比对提交的bm_id 先删除不存在的数据
$post_bm_ids = array(); //post提交的数据
foreach($_POST["bm_id"] as $var_bm_id){
$post_bm_ids[] = $var_bm_id;
}
//key为bm_id value为sp_id的数组
$rl_bmid_spid = array();
$rs_current_dsp = $mdl_dealer_series_products->getList("*",array("series_id" => $_POST["series_id"]));
$snapshoot['sdb_dealer_series_products'] = $rs_current_dsp;
foreach($rs_current_dsp as $var_dsp){
$rl_bmid_spid[$var_dsp["bm_id"]] = $var_dsp["sp_id"];
if(!in_array($var_dsp["bm_id"],$post_bm_ids) && $var_dsp["sp_id"]){ //数据表中的bm_id不在提交范围内 做删除
$mdl_dealer_series_products->delete(array("sp_id"=>$var_dsp["sp_id"]));
}
}
//产品线绑物料更新和新增
foreach($_POST["bm_id"] as $var_bm_id){
if(isset($rl_bmid_spid[$var_bm_id])){ //存在的做“修改时间”的更新
$filter_dsp = array("sp_id"=>$rl_bmid_spid[$var_bm_id]);
$update_dsp = array("up_time" => date('Y-m-d H:i:s'));
$mdl_dealer_series_products->update($update_dsp,$filter_dsp);
}else{ //不存在的做新增
$insert_dsp = array(
"series_id" => $_POST["series_id"],
"bm_id" => $var_bm_id,
"op_name" => $opinfo["op_name"],
);
$mdl_dealer_series_products->insert($insert_dsp);
}
}
//店铺维度 获取现有表中的数据比对提交的shop_id 先删除不存在的数据
$post_shop_ids = array(); //post提交的数据
foreach($_POST["shop_id"] as $var_shop_id){
$post_shop_ids[] = $var_shop_id;
}
//key为shop_id value为sp_id的数组
$rl_shopid_enid = array();
$rs_current_dse = $mdl_dealer_series_endorse->getList("*",array("series_id"=>$_POST["series_id"]));
$snapshoot['sdb_dealer_series_endorse'] = $rs_current_dse;
foreach($rs_current_dse as $var_dse){
$rl_shopid_enid[$var_dse["shop_id"]] = $var_dse["en_id"];
if(!in_array($var_dse["shop_id"],$post_shop_ids)){ //数据表中的shop_id不在提交范围内 做删除 按店铺维度
if($var_dse["en_id"]){ //必须有效en_id 才能做删除
$mdl_dealer_series_endorse->delete(array("en_id"=>$var_dse["en_id"]));
$mdl_dealer_series_endorse_products->delete(array("en_id"=>$var_dse["en_id"]));
}
}else{ //按shop_id + bm_id的维度 判断做删除
$rs_dsep_del = $mdl_dealer_series_endorse_products->getList("sep_id,bm_id",array("en_id"=>$var_dse["en_id"],"series_id"=>$_POST["series_id"]));
if(!empty($rs_dsep_del)){
foreach($rs_dsep_del as $var_dsep_del){
if(!in_array($var_dsep_del["bm_id"],$post_shop_ids) && $var_dsep_del["sep_id"]){
$mdl_dealer_series_endorse_products->delete(array("sep_id"=>$var_dsep_del["sep_id"]));
}
}
}
}
}
$shopBsList = kernel::single('organization_cos')->getBsFromShopId($_POST["shop_id"]);
//产品线授权到店和产品授权到店更新和新增
foreach($_POST["shop_id"] as $var_shop_id){
if(isset($rl_shopid_enid[$var_shop_id])){ //存在的做“修改时间”的更新
$filter_dse = array("en_id"=>$rl_shopid_enid[$var_shop_id]);
$update_dse = array(
"sku_nums" => $sku_nums,
);
if ($shopBsList[$var_shop_id]) {
$update_dse['bs_id'] = $shopBsList[$var_shop_id]['bs_id'];
}
$mdl_dealer_series_endorse->update($update_dse,$filter_dse);
foreach($_POST["bm_id"] as $var_bm_id_dse){
$filter_dsep = array("bm_id"=>$var_bm_id_dse,"en_id"=>$rl_shopid_enid[$var_shop_id]);
$rs_dsep = $mdl_dealer_series_endorse_products->dump($filter_dsep);
if($rs_dsep["sep_id"]){ //存在的 做更新
$snapshoot['sdb_dealer_series_endorse_products'][] = $rs_dsep;
$filter_dsep_inner = array("sep_id" => $rs_dsep["sep_id"]);
$update_dsep_inner = array("up_time" => date('Y-m-d H:i:s'));
$mdl_dealer_series_endorse_products->update($update_dsep_inner,$filter_dsep_inner);
}else{ //不存在的 做新增
$insert_desp_inner = array(
"en_id" => $rl_shopid_enid[$var_shop_id],
"series_id" => $_POST["series_id"],
"shop_id" => $var_shop_id,
"bm_id" => $var_bm_id_dse,
"op_name" => $opinfo["op_name"],
);
$mdl_dealer_series_endorse_products->insert($insert_desp_inner);
}
}
}else{ //不存在的做新增
$insert_arr_dse = array(
"series_id" => $_POST["series_id"],
"shop_id" => $var_shop_id,
"sku_nums" => $sku_nums,
);
if ($shopBsList[$var_shop_id]) {
$insert_arr_dse['bs_id'] = $shopBsList[$var_shop_id]['bs_id'];
}
$mdl_dealer_series_endorse->insert($insert_arr_dse);
$en_id = $mdl_dealer_series_endorse->db->lastInsertId();
foreach($_POST["bm_id"] as $var_bm_id_dse){
$insert_arr_dsep = array(
"en_id" => $en_id,
"series_id" => $_POST["series_id"],
"shop_id" => $var_shop_id,
"bm_id" => $var_bm_id_dse,
"op_name" => $opinfo["op_name"],
);
$mdl_dealer_series_endorse_products->insert($insert_arr_dsep);
}
}
}
$log_id = $mdl_ool->write_log('dealer_series_edit@dealer',$_POST["series_id"], isset($_POST["log_memo"]) ? $_POST["log_memo"] : "编辑产品线");
if ($log_id && $snapshoot) {
$shootMdl = app::get('ome')->model('operation_log_snapshoot');
$snapshoot = json_encode($snapshoot, JSON_UNESCAPED_UNICODE);
$tmp = ['log_id' => $log_id, 'snapshoot' => $snapshoot];
$shootMdl->insert($tmp);
}
$this->end(true, '操作成功');
}
/**
* 授权店铺保存
* @param Int $series_id
* @return Boolean
*/
public function toEditShop(){
if (!$_POST['series_id']) {
$this->begin('index.php?app=dealer&ctl=admin_series&act=index');
$this->end(false, '产品线ID无效');
}
$_POST['bm_id'] = [];
$serProductsMdl = app::get('dealer')->model('series_products');
$prductsList = $serProductsMdl->getList("bm_id",array("series_id"=>$_POST['series_id']));
if ($prductsList) {
$_POST['bm_id'] = array_column($prductsList,'bm_id');
}
$_POST['log_memo'] = '授权店铺';
return $this->toEdit();
}
/**
* 产品线物料保存
* @param Int $series_id
* @return Boolean
*/
public function toEditMaterial(){
if (!$_POST['series_id']) {
$this->begin('index.php?app=dealer&ctl=admin_series&act=index');
$this->end(false, '产品线ID无效');
}
$_POST['shop_id'] = [];
$serEndorseMdl = app::get('dealer')->model('series_endorse');
$endorseList = $serEndorseMdl->getList("shop_id", ["series_id"=>$_POST['series_id']]);
if ($endorseList) {
$_POST['shop_id'] = array_column($endorseList,'shop_id');
}
$_POST['log_memo'] = '添加物料';
return $this->toEdit();
}
/**
* 产品线编辑提交方法
* @param Int $series_id
* @return Boolean
*/
public function toEditMain(){
$this->begin('index.php?app=dealer&ctl=admin_series&act=index');
if(!$_POST["series_id"]){
$this->end(false,'产品线主键ID缺失。');
}
$lib_dealer_series = kernel::single("dealer_series");
$error_msg = "";
$check_result = $lib_dealer_series->check_series_data($_POST,$error_msg);
if(!$check_result){
$this->end(false,$error_msg);
}
$mdl_ool = app::get('ome')->model('operation_log');
$mdl_dealer_series = app::get('dealer')->model('series');
$mdl_dealer_series_endorse = app::get('dealer')->model('series_endorse');
$filter_arr = array("series_id"=>$_POST["series_id"]);
$seriesInfo = $mdl_dealer_series->db_dump($filter_arr);
if ($seriesInfo['betc_id']!=$_POST['betc_id']) {
if ($seriesInfo['sku_nums']>0) {
$this->end(false, '已添加商品,不能修改所属贸易公司。');
}
$endorseList = $mdl_dealer_series_endorse->db_dump(["series_id"=>$_POST["series_id"]]);
if ($endorseList) {
$this->end(false, '已授权店铺,不能修改所属贸易公司。');
}
}
//获取贸易公司的组织架构ID
$mdl_dealer_betc = app::get('dealer')->model('betc');
$rs_dealer_betc = $mdl_dealer_betc->dump(array("betc_id"=>$_POST["betc_id"]),"cos_id");
if(!$rs_dealer_betc["cos_id"]){
$this->end(false,"缺少组织架构ID。");
}
$snapshoot = []; //日志快照
$snapshoot['sdb_dealer_series'] = $seriesInfo;
// 产品线更新
$update_arr = array(
"series_name" => $_POST["series_name"], //产品线名称
"description" => $_POST["description"], //产品线描述
"cat_name" => $_POST["cat_name"], //产品线分类
"betc_id" => $_POST["betc_id"], //贸易公司ID
"cos_id" => $rs_dealer_betc["cos_id"], //组织架构ID
"remark" => $_POST["remark"], //备注
);
$mdl_dealer_series->update($update_arr,$filter_arr);
$log_id = $mdl_ool->write_log('dealer_series_edit@dealer', $_POST["series_id"], "编辑产品线");
if ($log_id && $snapshoot) {
$shootMdl = app::get('ome')->model('operation_log_snapshoot');
$snapshoot = json_encode($snapshoot, JSON_UNESCAPED_UNICODE);
$tmp = ['log_id' => $log_id, 'snapshoot' => $snapshoot];
$shootMdl->insert($tmp);
}
$this->end(true, '操作成功');
}
/**
* 定制弹窗显示方法
* @param void
* @return void
*/
public function object_rows(){
if ($_POST['data']) {
if ($_POST['app_id']) {
$app = app::get($_POST['app_id']);
} else {
$app = $this->app;
}
$obj = $app->model($_POST['object']);
$schema = $obj->get_schema();
$textColumn = $_POST['textcol'] ? $_POST['textcol'] : $schema['textColumn'];
$textColumn = explode(',', $textColumn);
$_textcol = $textColumn;
$textColumn = $textColumn[0];
$keycol = $_POST['key'] ? $_POST['key'] : $schema['idColumn'];
//统一做掉了。
if ($_POST['data'][0] === '_ALL_') {
if (isset($_POST['filter']['advance']) && $_POST['filter']['advance']) {
$arr_filters = explode(',', $_POST['filter']['advance']);
foreach ($arr_filters as $obj_filter) {
$arr = explode('=', $obj_filter);
$_POST['filter'][$arr[0]] = $arr[1];
}
unset($_POST['filter']['advance']);
}
$all_filter = !empty($obj->__all_filter) ? $obj->__all_filter : array();
$filter = !empty($_POST['filter']) ? $_POST['filter'] : $all_filter;
$arr_list = $obj->getList($keycol, $filter);
$_POST['data'] = array_map('current', $arr_list);
}
$items = $obj->getList('*', array($keycol => $_POST['data']));
$name = $items[0][$textColumn];
if ($_POST['type'] == 'radio') {
if (strpos($textColumn, '@') !== false) {
list($field, $table, $app_) = explode('@', $textColumn);
if ($app_) {
$app = app::get($app_);
}
$mdl = $app->model($table);
$schema = $mdl->get_schema();
$row = $mdl->getList('*', array($schema['idColumn'] => $items[0][$keycol]));
$name = $row[0][$field];
}
echo json_encode(array('id' => $items[0][$keycol], 'name' => $name));
exit;
}
$this->pagedata['_input'] = array('items' => $items,
'idcol' => $schema['idColumn'],
'keycol' => $keycol,
'textcol' => $textColumn,
'_textcol' => $_textcol,
'name' => $_POST['name'],
);
$this->pagedata['_input']['view_app'] = 'desktop';
$this->pagedata['_input']['view'] = $_POST['view'];
if ($_POST['view_app']) {
$this->pagedata['_input']['view_app'] = $_POST['view_app'];
}
if (strpos($_POST['view'], ':') !== false) {
list($view_app, $view) = explode(':', $_POST['view']);
$this->pagedata['_input']['view_app'] = $view_app;
$this->pagedata['_input']['view'] = $view;
}
$this->display('admin/series/input-row.html');
}
}
/**
* 定制input方法
* @param void
* @return void
*/
public function finder_common(){
$params = array(
'title' => app::get('desktop')->_('列表'),
'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_buildin_setcol' => true,
'use_buildin_refresh' => true,
'finder_aliasname' => 'finder_common',
'alertpage_finder' => true,
'use_buildin_tagedit' => false,
);
if ($_GET['findercount']) {
$params['object_method']['count'] = $_GET['findercount'];
}
if ($_GET['findergetlist']) {
$params['object_method']['getlist'] = $_GET['findergetlist'];
}
if (substr($_GET['name'], 0, 7) == 'adjunct') {
$params['orderBy'] = 'goods_id desc';
}
$this->finder($_GET['app_id'] . '_mdl_' . $_GET['object'], $params);
}
/**
* 设置状态(启、停用)
* @param $series_id 产品线主键ID
* @param $status active做启用 close做停用
* @return void
*/
function setStatus($series_id,$status){
$this->begin('index.php?app=dealer&ctl=admin_series&act=index');
if($status == 'true'){
$status = "active";
$operation = 'dealer_series_on@dealer';
$memo = '产品线开启';
} else {
$status = "close";
$operation = 'dealer_series_off@dealer';
$memo = '产品线关停';
}
kernel::database()->query("update sdb_dealer_series set status='{$status}' where series_id={$series_id} limit 1");
$mdl_ool = app::get('ome')->model('operation_log');
$log_id = $mdl_ool->write_log($operation, $series_id, $memo);
if ($status == 'close') {
// 更新代发商品为自发
$dsepMdl = app::get('dealer')->model('series_endorse_products');
$list = $dsepMdl->getList('*',array("series_id"=>$series_id,'is_shopyjdf_type'=>'2'));
if ($list) {
$list = array_column($list, null, 'sep_id');
$upInfo = [
'is_shopyjdf_type' => '1',
'from_time' => strtotime(date('Y-m-d H:i:00')),
'end_time' => null,
];
$dsepMdl->update($upInfo, ['sep_id|in' => array_keys($list)]);
$memo = '关停产品线后自动设置自发货模式,生效时间:' . date('Y-m-d H:i', $upInfo['from_time']) . ',结束时间:';
// 保存操作记录
$shootMdl = app::get('ome')->model('operation_log_snapshoot');
foreach ($list as $sep_id => $snapshoot) {
$log_id = $mdl_ool->write_log('set_shop_yjdfType@dealer', $sep_id, $memo);
if ($log_id && $snapshoot) {
$snapshoot = json_encode($snapshoot, JSON_UNESCAPED_UNICODE);
$tmp = ['log_id' => $log_id, 'snapshoot' => $snapshoot];
$shootMdl->insert($tmp);
}
}
}
}
$this->end(true, '操作成功');
// echo "<script>parent.MessageBox.success('设置已成功!');parent.finderGroup['{$_GET[finder_id]}'].refresh();</script>";
// exit;
}
/**
* 产品线查询详情
* @param $series_id 产品线主键ID
* @return void
*/
public function detail($series_id){
if (!$series_id) {
die("缺失主键ID");
}
$mdl_dealer_series = app::get('dealer')->model('series');
$rs_dealer_series = $mdl_dealer_series->dump(array("series_id"=>$series_id));
if(empty($rs_dealer_series)){
die("产品线数据为空");
}
//贸易公司
$mdl_dealer_betc = app::get('dealer')->model('betc');
$dealer_betc_list = $mdl_dealer_betc->getList('betc_id,betc_name');
$this->pagedata['betcs'] = $dealer_betc_list;
//基础物料
$mdl_dealer_series_products = app::get('dealer')->model('series_products');
$rs_dealer_series_products = $mdl_dealer_series_products->getList("bm_id",array("series_id"=>$series_id));
if(empty($rs_dealer_series_products)){
die("产品线绑物料数据为空");
}
$bm_ids = array();
foreach($rs_dealer_series_products as $var_rdsp){
$bm_ids[] = $var_rdsp["bm_id"];
}
$count = is_array($bm_ids) ? count($bm_ids) : 0;
$this->pagedata['bind_bm_ids'] = $bm_ids;
$this->pagedata['replacehtml'] = <<<EOF
<div id='hand-selected-product' style='float:left;margin:10px 10px 10px 5px'>已选择了{$count}个基础物料,<a href='javascript:void(0);' onclick='product_selected_show();'>查看选中的基础物料.</a></div>
EOF;
//经销店铺
$mdl_dealer_series_endorse = app::get('dealer')->model('series_endorse');
$rs_dealer_series_endorse = $mdl_dealer_series_endorse->getList("shop_id",array("series_id"=>$series_id));
if(empty($rs_dealer_series_endorse)){
die("产品线绑经销店铺为空");
}
$shop_ids = array();
foreach($rs_dealer_series_endorse as $var_rdse){
$shop_ids[] = $var_rdse["shop_id"];
}
$count_shop = is_array($shop_ids) ? count($shop_ids) : 0;
$this->pagedata['bind_shop_ids'] = $shop_ids;
$this->pagedata['replacehtml_shop'] = <<<EOF
<div id='hand-selected-shop' style='float:left;margin:10px 10px 10px 5px'>已选择了{$count_shop}个经销店铺,<a href='javascript:void(0);' onclick='shop_selected_show();'>查看选中的经销店铺.</a></div>
EOF;
$this->pagedata['series_info'] = $rs_dealer_series;
// //操作日志
// $logObj = app::get('ome')->model('operation_log');
// //产品线日志
// $logList = $logObj->read_log(array('obj_id'=>$series_id, 'obj_type'=>'series@dealer'), 0, -1);
// foreach($logList as $k => $v){
// $logList[$k]['operate_time'] = date('Y-m-d H:i:s', $v['operate_time']);
// }
// $this->pagedata['data'] = $logList;
$this->singlepage('admin/series/detail.html');
}
public function closeSeries($series_id)
{
if (!$series_id) {
die("缺失主键ID");
}
$mdl_dealer_series = app::get('dealer')->model('series');
$rs_dealer_series = $mdl_dealer_series->dump(array("series_id"=>$series_id));
if(empty($rs_dealer_series)){
die("产品线数据为空");
}
//代发货的基础物料
$mdl_dealer_series_products = app::get('dealer')->model('series_products');
$dsepMdl = app::get('dealer')->model('series_endorse_products');
$dsepList = $dsepMdl->getList("bm_id",array("series_id"=>$series_id,'is_shopyjdf_type'=>'2'));
if ($dsepList) {
$bMaterialMdl = app::get('material')->model('basic_material');
$bm_ids = array_column($dsepList, 'bm_id');
$materialList = $bMaterialMdl->getList('material_bn,material_name', ['bm_id|in'=>$bm_ids]);
$this->pagedata['drop_shipping'] = $materialList;
} else {
$this->pagedata['drop_shipping'] = [];
}
$this->pagedata['series_id'] = $series_id;
$this->display('admin/series/close.html');
}
/**
* 查看快照
*/
public function show_history($log_id)
{
$logSnapshootMdl = app::get('ome')->model('operation_log_snapshoot');
//日志
$log = $logSnapshootMdl->db_dump(['log_id' => $log_id]);
$row = json_decode($log['snapshoot'], 1);
// 产品线
$rs_dealer_series = $row['sdb_dealer_series'];
$this->pagedata['series_info'] = $rs_dealer_series;
//贸易公司
$mdl_dealer_betc = app::get('dealer')->model('betc');
$dealer_betc_list = $mdl_dealer_betc->getList('betc_id,betc_name');
$this->pagedata['betcs'] = $dealer_betc_list;
//基础物料
$rs_dealer_series_products = $row['sdb_dealer_series_products'];
$bm_ids = array();
foreach($rs_dealer_series_products as $var_rdsp){
$bm_ids[] = $var_rdsp["bm_id"];
}
$count = is_array($bm_ids) ? count($bm_ids) : 0;
$this->pagedata['bind_bm_ids'] = $bm_ids;
$this->pagedata['replacehtml'] = <<<EOF
<div id='hand-selected-product' style='float:left;margin:10px 10px 10px 5px'>已选择了{$count}个基础物料,<a href='javascript:void(0);' onclick='product_selected_show();'>查看选中的基础物料.</a></div>
EOF;
//经销店铺
$rs_dealer_series_endorse = $row['sdb_dealer_series_endorse'];
$shop_ids = array();
foreach($rs_dealer_series_endorse as $var_rdse){
$shop_ids[] = $var_rdse["shop_id"];
}
$count_shop = is_array($shop_ids) ? count($shop_ids) : 0;
$this->pagedata['bind_shop_ids'] = $shop_ids;
$this->pagedata['replacehtml_shop'] = <<<EOF
<div id='hand-selected-shop' style='float:left;margin:10px 10px 10px 5px'>已选择了{$count_shop}个经销店铺,<a href='javascript:void(0);' onclick='shop_selected_show();'>查看选中的经销店铺.</a></div>
EOF;
$this->pagedata['history'] = true;
$this->singlepage('admin/series/detail.html');
}
public function exportSeriesTemplate()
{
$seriesMdl = app::get('dealer')->model('series');
$row = $seriesMdl->exportTemplate();
$lib = kernel::single('omecsv_phpexcel');
$lib->newExportExcel(null, '产品线导入模板', 'xls', $row);
}
}