You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

521 lines
18 KiB

<?php
/**
* ECSHOP 管理中心供货商管理
* ============================================================================
* * 版权所有 2005-2016 上海商创网络科技有限公司,并保留所有权利。
* 网站地址: http://www.ecmoban.com;
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* $Author: wanglei $
* $Id: suppliers.php 15013 2009-05-13 09:31:42Z wanglei $
*/
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');
define('SUPPLIERS_ACTION_LIST', 'delivery_view,back_view');
/*------------------------------------------------------ */
//-- 供货商列表
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'list')
{
/* 检查权限 */
admin_priv('suppliers_manage');
/* 查询 */
$result = suppliers_list();
/* 模板赋值 */
$smarty->assign('ur_here', $_LANG['suppliers_list']); // 当前导航
$smarty->assign('action_link', array('href' => 'suppliers.php?act=add', 'text' => $_LANG['add_suppliers']));
$smarty->assign('full_page', 1); // 翻页参数
$smarty->assign('suppliers_list', $result['result']);
$smarty->assign('filter', $result['filter']);
$smarty->assign('record_count', $result['record_count']);
$smarty->assign('page_count', $result['page_count']);
$smarty->assign('sort_suppliers_id', '<img src="images/sort_desc.gif">');
/* 显示模板 */
assign_query_info();
$smarty->display('suppliers_list.htm');
}
/*------------------------------------------------------ */
//-- 排序、分页、查询
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'query')
{
check_authz_json('suppliers_manage');
$result = suppliers_list();
$smarty->assign('suppliers_list', $result['result']);
$smarty->assign('filter', $result['filter']);
$smarty->assign('record_count', $result['record_count']);
$smarty->assign('page_count', $result['page_count']);
/* 排序标记 */
$sort_flag = sort_flag($result['filter']);
$smarty->assign($sort_flag['tag'], $sort_flag['img']);
make_json_result($smarty->fetch('suppliers_list.htm'), '',
array('filter' => $result['filter'], 'page_count' => $result['page_count']));
}
/*------------------------------------------------------ */
//-- 列表页编辑名称
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'edit_suppliers_name')
{
check_authz_json('suppliers_manage');
$id = intval($_POST['id']);
$name = json_str_iconv(trim($_POST['val']));
/* 判断名称是否重复 */
$sql = "SELECT suppliers_id
FROM " . $ecs->table('suppliers') . "
WHERE suppliers_name = '$name'
AND suppliers_id <> '$id' ";
if ($db->getOne($sql))
{
make_json_error(sprintf($_LANG['suppliers_name_exist'], $name));
}
else
{
/* 保存供货商信息 */
$sql = "UPDATE " . $ecs->table('suppliers') . "
SET suppliers_name = '$name'
WHERE suppliers_id = '$id'";
if ($result = $db->query($sql))
{
/* 记日志 */
admin_log($name, 'edit', 'suppliers');
clear_cache_files();
make_json_result(stripslashes($name));
}
else
{
make_json_result(sprintf($_LANG['agency_edit_fail'], $name));
}
}
}
/*------------------------------------------------------ */
//-- 删除供货商
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'remove')
{
check_authz_json('suppliers_manage');
$id = intval($_REQUEST['id']);
$sql = "SELECT *
FROM " . $ecs->table('suppliers') . "
WHERE suppliers_id = '$id'";
$suppliers = $db->getRow($sql, TRUE);
if ($suppliers['suppliers_id'])
{
/* 判断供货商是否存在订单 */
$sql = "SELECT COUNT(*)
FROM " . $ecs->table('order_info') . "AS O, " . $ecs->table('order_goods') . " AS OG, " . $ecs->table('goods') . " AS G
WHERE O.order_id = OG.order_id
AND OG.goods_id = G.goods_id
AND G.suppliers_id = '$id'";
$order_exists = $db->getOne($sql, TRUE);
if ($order_exists > 0)
{
$url = 'suppliers.php?act=query&' . str_replace('act=remove', '', $_SERVER['QUERY_STRING']);
ecs_header("Location: $url\n");
exit;
}
/* 判断供货商是否存在商品 */
$sql = "SELECT COUNT(*)
FROM " . $ecs->table('goods') . "AS G
WHERE G.suppliers_id = '$id'";
$goods_exists = $db->getOne($sql, TRUE);
if ($goods_exists > 0)
{
$url = 'suppliers.php?act=query&' . str_replace('act=remove', '', $_SERVER['QUERY_STRING']);
ecs_header("Location: $url\n");
exit;
}
$sql = "DELETE FROM " . $ecs->table('suppliers') . "
WHERE suppliers_id = '$id'";
$db->query($sql);
/* 删除管理员、发货单关联、退货单关联和订单关联的供货商 */
$table_array = array('admin_user', 'delivery_order', 'back_order');
foreach ($table_array as $value)
{
$sql = "DELETE FROM " . $ecs->table($value) . " WHERE suppliers_id = '$id'";
$db->query($sql, 'SILENT');
}
/* 记日志 */
admin_log($suppliers['suppliers_name'], 'remove', 'suppliers');
/* 清除缓存 */
clear_cache_files();
}
$url = 'suppliers.php?act=query&' . str_replace('act=remove', '', $_SERVER['QUERY_STRING']);
ecs_header("Location: $url\n");
exit;
}
/*------------------------------------------------------ */
//-- 修改供货商状态
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'is_check')
{
check_authz_json('suppliers_manage');
$id = intval($_REQUEST['id']);
$sql = "SELECT suppliers_id, is_check
FROM " . $ecs->table('suppliers') . "
WHERE suppliers_id = '$id'";
$suppliers = $db->getRow($sql, TRUE);
if ($suppliers['suppliers_id'])
{
$_suppliers['is_check'] = empty($suppliers['is_check']) ? 1 : 0;
$db->autoExecute($ecs->table('suppliers'), $_suppliers, '', "suppliers_id = '$id'");
clear_cache_files();
make_json_result($_suppliers['is_check']);
}
exit;
}
/*------------------------------------------------------ */
//-- 批量操作
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'batch')
{
/* 取得要操作的记录编号 */
if (empty($_POST['checkboxes']))
{
sys_msg($_LANG['no_record_selected']);
}
else
{
/* 检查权限 */
admin_priv('suppliers_manage');
$ids = $_POST['checkboxes'];
if (isset($_POST['remove']))
{
$sql = "SELECT *
FROM " . $ecs->table('suppliers') . "
WHERE suppliers_id " . db_create_in($ids);
$suppliers = $db->getAll($sql);
foreach ($suppliers as $key => $value)
{
/* 判断供货商是否存在订单 */
$sql = "SELECT COUNT(*)
FROM " . $ecs->table('order_info') . "AS O, " . $ecs->table('order_goods') . " AS OG, " . $ecs->table('goods') . " AS G
WHERE O.order_id = OG.order_id
AND OG.goods_id = G.goods_id
AND G.suppliers_id = '" . $value['suppliers_id'] . "'";
$order_exists = $db->getOne($sql, TRUE);
if ($order_exists > 0)
{
unset($suppliers[$key]);
}
/* 判断供货商是否存在商品 */
$sql = "SELECT COUNT(*)
FROM " . $ecs->table('goods') . "AS G
WHERE G.suppliers_id = '" . $value['suppliers_id'] . "'";
$goods_exists = $db->getOne($sql, TRUE);
if ($goods_exists > 0)
{
unset($suppliers[$key]);
}
}
if (empty($suppliers))
{
sys_msg($_LANG['batch_drop_no']);
}
$sql = "DELETE FROM " . $ecs->table('suppliers') . "
WHERE suppliers_id " . db_create_in($ids);
$db->query($sql);
/* 更新管理员、发货单关联、退货单关联和订单关联的供货商 */
$table_array = array('admin_user', 'delivery_order', 'back_order');
foreach ($table_array as $value)
{
$sql = "DELETE FROM " . $ecs->table($value) . " WHERE suppliers_id " . db_create_in($ids) . " ";
$db->query($sql, 'SILENT');
}
/* 记日志 */
$suppliers_names = '';
foreach ($suppliers as $value)
{
$suppliers_names .= $value['suppliers_name'] . '|';
}
admin_log($suppliers_names, 'remove', 'suppliers');
/* 清除缓存 */
clear_cache_files();
sys_msg($_LANG['batch_drop_ok']);
}
}
}
/*------------------------------------------------------ */
//-- 添加、编辑供货商
/*------------------------------------------------------ */
elseif (in_array($_REQUEST['act'], array('add', 'edit')))
{
/* 检查权限 */
admin_priv('suppliers_manage');
if ($_REQUEST['act'] == 'add')
{
$suppliers = array();
/* 取得所有管理员,*/
/* 标注哪些是该供货商的('this'),哪些是空闲的('free'),哪些是别的供货商的('other') */
/* 排除是办事处的管理员 */
$sql = "SELECT user_id, user_name, CASE
WHEN suppliers_id = 0 THEN 'free'
ELSE 'other' END AS type
FROM " . $ecs->table('admin_user') . "
WHERE agency_id = 0
AND action_list <> 'all'";
$suppliers['admin_list'] = $db->getAll($sql);
$smarty->assign('ur_here', $_LANG['add_suppliers']);
$smarty->assign('action_link', array('href' => 'suppliers.php?act=list', 'text' => $_LANG['suppliers_list']));
$smarty->assign('form_action', 'insert');
$smarty->assign('suppliers', $suppliers);
assign_query_info();
$smarty->display('suppliers_info.htm');
}
elseif ($_REQUEST['act'] == 'edit')
{
$suppliers = array();
/* 取得供货商信息 */
$id = $_REQUEST['id'];
$sql = "SELECT * FROM " . $ecs->table('suppliers') . " WHERE suppliers_id = '$id'";
$suppliers = $db->getRow($sql);
if (count($suppliers) <= 0)
{
sys_msg('suppliers does not exist');
}
/* 取得所有管理员,*/
/* 标注哪些是该供货商的('this'),哪些是空闲的('free'),哪些是别的供货商的('other') */
/* 排除是办事处的管理员 */
$sql = "SELECT user_id, user_name, CASE
WHEN suppliers_id = '$id' THEN 'this'
WHEN suppliers_id = 0 THEN 'free'
ELSE 'other' END AS type
FROM " . $ecs->table('admin_user') . "
WHERE agency_id = 0
AND action_list <> 'all'";
$suppliers['admin_list'] = $db->getAll($sql);
$smarty->assign('ur_here', $_LANG['edit_suppliers']);
$smarty->assign('action_link', array('href' => 'suppliers.php?act=list', 'text' => $_LANG['suppliers_list']));
$smarty->assign('form_action', 'update');
$smarty->assign('suppliers', $suppliers);
assign_query_info();
$smarty->display('suppliers_info.htm');
}
}
/*------------------------------------------------------ */
//-- 提交添加、编辑供货商
/*------------------------------------------------------ */
elseif (in_array($_REQUEST['act'], array('insert', 'update')))
{
/* 检查权限 */
admin_priv('suppliers_manage');
if ($_REQUEST['act'] == 'insert')
{
/* 提交值 */
$suppliers = array('suppliers_name' => trim($_POST['suppliers_name']),
'suppliers_desc' => trim($_POST['suppliers_desc']),
'parent_id' => 0
);
/* 判断名称是否重复 */
$sql = "SELECT suppliers_id
FROM " . $ecs->table('suppliers') . "
WHERE suppliers_name = '" . $suppliers['suppliers_name'] . "' ";
if ($db->getOne($sql))
{
sys_msg($_LANG['suppliers_name_exist']);
}
$db->autoExecute($ecs->table('suppliers'), $suppliers, 'INSERT');
$suppliers['suppliers_id'] = $db->insert_id();
if (isset($_POST['admins']))
{
$sql = "UPDATE " . $ecs->table('admin_user') . " SET suppliers_id = '" . $suppliers['suppliers_id'] . "', action_list = '" . SUPPLIERS_ACTION_LIST . "' WHERE user_id " . db_create_in($_POST['admins']);
$db->query($sql);
}
/* 记日志 */
admin_log($suppliers['suppliers_name'], 'add', 'suppliers');
/* 清除缓存 */
clear_cache_files();
/* 提示信息 */
$links = array(array('href' => 'suppliers.php?act=add', 'text' => $_LANG['continue_add_suppliers']),
array('href' => 'suppliers.php?act=list', 'text' => $_LANG['back_suppliers_list'])
);
sys_msg($_LANG['add_suppliers_ok'], 0, $links);
}
if ($_REQUEST['act'] == 'update')
{
/* 提交值 */
$suppliers = array('id' => trim($_POST['id']));
$suppliers['new'] = array('suppliers_name' => trim($_POST['suppliers_name']),
'suppliers_desc' => trim($_POST['suppliers_desc'])
);
/* 取得供货商信息 */
$sql = "SELECT * FROM " . $ecs->table('suppliers') . " WHERE suppliers_id = '" . $suppliers['id'] . "'";
$suppliers['old'] = $db->getRow($sql);
if (empty($suppliers['old']['suppliers_id']))
{
sys_msg('suppliers does not exist');
}
/* 判断名称是否重复 */
$sql = "SELECT suppliers_id
FROM " . $ecs->table('suppliers') . "
WHERE suppliers_name = '" . $suppliers['new']['suppliers_name'] . "'
AND suppliers_id <> '" . $suppliers['id'] . "'";
if ($db->getOne($sql))
{
sys_msg($_LANG['suppliers_name_exist']);
}
/* 保存供货商信息 */
$db->autoExecute($ecs->table('suppliers'), $suppliers['new'], 'UPDATE', "suppliers_id = '" . $suppliers['id'] . "'");
/* 清空供货商的管理员 */
$sql = "UPDATE " . $ecs->table('admin_user') . " SET suppliers_id = 0, action_list = '" . SUPPLIERS_ACTION_LIST . "' WHERE suppliers_id = '" . $suppliers['id'] . "'";
$db->query($sql);
/* 添加供货商的管理员 */
if (isset($_POST['admins']))
{
$sql = "UPDATE " . $ecs->table('admin_user') . " SET suppliers_id = '" . $suppliers['old']['suppliers_id'] . "' WHERE user_id " . db_create_in($_POST['admins']);
$db->query($sql);
}
/* 记日志 */
admin_log($suppliers['old']['suppliers_name'], 'edit', 'suppliers');
/* 清除缓存 */
clear_cache_files();
/* 提示信息 */
$links[] = array('href' => 'suppliers.php?act=list', 'text' => $_LANG['back_suppliers_list']);
sys_msg($_LANG['edit_suppliers_ok'], 0, $links);
}
}
/**
* 获取供应商列表信息
*
* @access public
* @param
*
* @return void
*/
function suppliers_list()
{
$result = get_filter();
if ($result === false)
{
$aiax = isset($_GET['is_ajax']) ? $_GET['is_ajax'] : 0;
/* 过滤信息 */
$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'suppliers_id' : trim($_REQUEST['sort_by']);
$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'ASC' : trim($_REQUEST['sort_order']);
$where = 'WHERE 1 ';
/* 分页大小 */
$filter['page'] = empty($_REQUEST['page']) || (intval($_REQUEST['page']) <= 0) ? 1 : intval($_REQUEST['page']);
if (isset($_REQUEST['page_size']) && intval($_REQUEST['page_size']) > 0)
{
$filter['page_size'] = intval($_REQUEST['page_size']);
}
elseif (isset($_COOKIE['ECSCP']['page_size']) && intval($_COOKIE['ECSCP']['page_size']) > 0)
{
$filter['page_size'] = intval($_COOKIE['ECSCP']['page_size']);
}
else
{
$filter['page_size'] = 15;
}
/* 记录总数 */
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('suppliers') . $where;
$filter['record_count'] = $GLOBALS['db']->getOne($sql);
$filter['page_count'] = $filter['record_count'] > 0 ? ceil($filter['record_count'] / $filter['page_size']) : 1;
/* 查询 */
$sql = "SELECT suppliers_id, suppliers_name, suppliers_desc, is_check
FROM " . $GLOBALS['ecs']->table("suppliers") . "
$where
ORDER BY " . $filter['sort_by'] . " " . $filter['sort_order']. "
LIMIT " . ($filter['page'] - 1) * $filter['page_size'] . ", " . $filter['page_size'] . " ";
set_filter($filter, $sql);
}
else
{
$sql = $result['sql'];
$filter = $result['filter'];
}
$row = $GLOBALS['db']->getAll($sql);
$arr = array('result' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
return $arr;
}
?>