mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-22 18:35:35 +08:00
313 lines
9.7 KiB
PHP
313 lines
9.7 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.
|
|
*/
|
|
|
|
|
|
class tgstockcost_system_setting
|
|
{
|
|
|
|
private $tgstockcost_cost = array(
|
|
'1' => '不计成本',
|
|
'2' => '固定成本法',
|
|
'3' => '平均成本法',
|
|
'4' => '先进先出法',
|
|
);
|
|
|
|
private $tgstockcost_get_value_type = array(
|
|
'1' => '取货品的固定成本',
|
|
'2' => '取货品的单位平均成本',
|
|
'3' => '取货品的最近一次出入库成本',
|
|
'4' => '取0',
|
|
);
|
|
|
|
/**
|
|
* 退货成本可取值
|
|
*
|
|
* @var string
|
|
* */
|
|
private $_returnCostOptions = [
|
|
'1' => '取销售出库成本',
|
|
'2' => '取单位平均成本',
|
|
];
|
|
|
|
private $branch_unit_cost = array(
|
|
'1'=>'单仓库成本计算',
|
|
'2'=>'组合仓库成本计算',
|
|
);
|
|
|
|
/**
|
|
* __construct
|
|
* @param mixed $app app
|
|
* @return mixed 返回值
|
|
*/
|
|
public function __construct($app)
|
|
{
|
|
$this->app = $app;
|
|
}
|
|
|
|
/**
|
|
* 获取_tgstockcost_cost
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function get_tgstockcost_cost()
|
|
{
|
|
return $this->tgstockcost_cost;
|
|
}
|
|
|
|
/**
|
|
* 获取_tgstockcost_get_value_type
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function get_tgstockcost_get_value_type()
|
|
{
|
|
return $this->tgstockcost_get_value_type;
|
|
}
|
|
|
|
/**
|
|
* 获取_setting_value
|
|
* @param mixed $key key
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function get_setting_value($key = '')
|
|
{
|
|
$setting = array();
|
|
|
|
foreach ($this->all_settings() as $k => $v) {
|
|
$setting[$v] = app::get('ome')->getConf($v);
|
|
}
|
|
|
|
return $key ? $setting[$key] : $setting;
|
|
}
|
|
|
|
/**
|
|
* 库存成本配置
|
|
*
|
|
* @return void
|
|
* @author
|
|
* */
|
|
public function get_setting_tab()
|
|
{
|
|
$settingTabs = array(
|
|
array(
|
|
'name' => '成本设置',
|
|
'file_name' => 'admin/system/setting/tab_stockcost.html',
|
|
'app' => 'tgstockcost',
|
|
// 'url' => 'index.php?app=tgstockcost&ctl=setting&act=settingpage'
|
|
'hidden_default_button' => true,
|
|
'order' => 50,
|
|
),
|
|
);
|
|
|
|
return $settingTabs;
|
|
}
|
|
|
|
/**
|
|
* 获取成本配置项
|
|
*
|
|
* @return void
|
|
* @author
|
|
* */
|
|
public function getCostSetting()
|
|
{
|
|
$costSet = [
|
|
'options' => $this->tgstockcost_cost,
|
|
'value' => $this->get_setting_value('tgstockcost.cost'),
|
|
];
|
|
|
|
$getValueTypeSet = [
|
|
'options' => $this->tgstockcost_get_value_type,
|
|
'value' => $this->get_setting_value('tgstockcost.get_value_type'),
|
|
];
|
|
|
|
$returnCostSet = [
|
|
'options' => $this->_returnCostOptions,
|
|
'value' => $this->get_setting_value('tgstockcost.return_cost'),
|
|
];
|
|
|
|
$branchCostSet = [
|
|
'options' => $this->branch_unit_cost,
|
|
'value' => $this->get_setting_value('tgstockcost.branch_cost'),
|
|
];
|
|
|
|
return ['cost' => $costSet, 'get_value_type' => $getValueTypeSet, 'return_cost' => $returnCostSet, 'branch_cost'=>$branchCostSet];
|
|
}
|
|
|
|
/**
|
|
* 获取_pagedata
|
|
* @param mixed $controller controller
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function get_pagedata(&$controller)
|
|
{
|
|
$costSetting = $this->getCostSetting();
|
|
|
|
$controller->pagedata['tgstockcost']['setting'] = $costSetting;
|
|
|
|
$controller->pagedata['tgstockcost']['install_time'] = app::get('ome')->getConf('tgstockcost_install_time');
|
|
|
|
$oplogModel = app::get('tgstockcost')->model('operation');
|
|
$operationList = $oplogModel->getList('*', array(), 0, 10, 'operation_id desc');
|
|
|
|
if ($operationList) {
|
|
foreach ((array) $operationList as $key => $value) {
|
|
|
|
$operationList[$key]['tgstockcost_cost'] = $costSetting['cost']['options'][$value['tgstockcost_cost']];
|
|
$operationList[$key]['tgstockcost_get_value_type'] = $costSetting['get_value_type']['options'][$value['tgstockcost_get_value_type']];
|
|
$operationList[$key]['tgstockcost_return_cost'] = $costSetting['return_cost']['options'][$value['tgstockcost_return_cost']];
|
|
$operationList[$key]['tgstockcost_branch_cost'] = $costSetting['branch_cost']['options'][$value['tgstockcost_branch_cost']];
|
|
|
|
$operationList[$key]['type'] = $value['type'] == '2' ? '成本设置期初' : '成本设置变更';
|
|
}
|
|
|
|
$controller->pagedata['tgstockcost']['operations'] = $operationList;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* view
|
|
* @return mixed 返回值
|
|
*/
|
|
public function view()
|
|
{
|
|
$render = $this->app->render();
|
|
$render->pagedata['stockcost_cost'] = app::get("ome")->getConf("tgstockcost.cost");
|
|
$render->pagedata['stockcost_get_value_type'] = app::get("ome")->getConf("tgstockcost.get_value_type");
|
|
return $render->fetch("admin/system/system_setting.html");
|
|
}
|
|
|
|
/**
|
|
* all_settings
|
|
* @return mixed 返回值
|
|
*/
|
|
public function all_settings()
|
|
{
|
|
|
|
$all_settings = array(
|
|
'tgstockcost.cost',
|
|
'tgstockcost.get_value_type',
|
|
'tgstockcost.installed',
|
|
'tgstockcost_install_time',
|
|
'tgstockcost.return_cost',
|
|
'tgstockcost.branch_cost',
|
|
);
|
|
return $all_settings;
|
|
}
|
|
|
|
/**
|
|
* undocumented function
|
|
*
|
|
* @return void
|
|
* @author
|
|
* */
|
|
public function get_setting_data()
|
|
{
|
|
$setData = array();
|
|
|
|
$all_settings = $this->all_settings();
|
|
|
|
foreach ($all_settings as $set) {
|
|
$key = str_replace('.', '_', $set);
|
|
$setData[$key] = app::get('ome')->getConf($set);
|
|
}
|
|
|
|
return $setData;
|
|
}
|
|
|
|
public function setting_save($setting, &$msg = "")
|
|
{
|
|
$costSetting = $this->getCostSetting();
|
|
|
|
if ($setting['tgstockcost_cost'] == $costSetting['cost']['value']
|
|
&& $setting['tgstockcost_get_value_type'] == $costSetting['get_value_type']['value']
|
|
&& $setting['tgstockcost_return_cost'] == $costSetting['return_cost']['value']
|
|
&& $setting['tgstockcost_branch_cost'] == $costSetting['branch_cost']['value']
|
|
) {
|
|
$msg = '成本设置无变化,不需要修改';
|
|
return false;
|
|
}
|
|
|
|
if (!$this->checkCost()) {
|
|
$msg = '商品成本价未设置,请先去商品管理中设置成本价';
|
|
return false;
|
|
}
|
|
|
|
if ($setting['tgstockcost_cost'] == '1' && $setting['tgstockcost_get_value_type']) {
|
|
$msg = '不计成本发不能设置盘点/调账成本取值';
|
|
return false;
|
|
} elseif ($setting['tgstockcost_cost'] != '1' && !$setting['tgstockcost_get_value_type']) {
|
|
$msg = '请设置盘点/调账成本取值';
|
|
return false;
|
|
}
|
|
|
|
$oplogModel = app::get('tgstockcost')->model('operation');
|
|
$lastoplog = $oplogModel->getList('install_time', array(), 0, 1, 'install_time desc');
|
|
if ($lastoplog) {
|
|
if (time() - 86400 < $lastoplog[0]['install_time']) {
|
|
$msg = '不允许修改:这一之内不允许重复修改';
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 保存设置
|
|
app::get("ome")->setConf("tgstockcost.cost", $setting['tgstockcost_cost']);
|
|
app::get("ome")->setConf("tgstockcost.get_value_type", $setting['tgstockcost_get_value_type']);
|
|
app::get("ome")->setConf("tgstockcost.return_cost", $setting['tgstockcost_return_cost']);
|
|
app::get("ome")->setConf("tgstockcost.branch_cost", $setting['tgstockcost_branch_cost']);
|
|
|
|
if (!app::get('ome')->getConf('tgstockcost_install_time')) {
|
|
app::get('ome')->setConf('tgstockcost_install_time', time());
|
|
}
|
|
|
|
// 刷新数据
|
|
kernel::single("tgstockcost_instance_router")->create_queue();
|
|
|
|
// 库存成本切换日志
|
|
$now = time();
|
|
$oplogModel->update(array('status' => '0', 'end_time' => $now), array('status' => '1'));
|
|
|
|
$_tgcost = $setting;
|
|
$_tgcost['install_time'] = $now;
|
|
$_tgcost['op_id'] = kernel::single('desktop_user')->get_id();
|
|
$_tgcost['op_name'] = kernel::single('desktop_user')->get_name();
|
|
$_tgcost['operate_time'] = $now;
|
|
$_tgcost['status'] = '1'; //当前成本法
|
|
$_tgcost['type'] = '1';
|
|
$oplogModel->save($_tgcost);
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 检查Cost
|
|
* @return mixed 返回验证结果
|
|
*/
|
|
public function checkCost()
|
|
{
|
|
$sql = "SELECT SUM(cost) AS sum_cost FROM sdb_material_basic_material AS a
|
|
LEFT JOIN sdb_material_basic_material_ext AS b ON a.bm_id=b.bm_id
|
|
WHERE a.visibled=1";
|
|
$rows = kernel::database()->selectrow($sql);
|
|
|
|
if (intval($rows['sum_cost']) == 0) {
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
|
|
}
|
|
|
|
}
|