提交 0df07e9c 编写于 作者: D devil

库存优化

上级 04958b8f
......@@ -69,8 +69,16 @@ function ViewModalBack(e)
Prompt(e.msg, 'success');
setTimeout(function()
{
// 关闭弹窗
$(window.parent.document).find('.warehouse-goods-popup .am-close').trigger('click');
// 关闭弹窗、仅关闭窗口后列表数据不更新
// $(window.parent.document).find('.warehouse-goods-popup .am-close').trigger('click');
// 刷新页面、刷新页面列表数据重新加载
if(self.frameElement && self.frameElement.tagName == "IFRAME")
{
parent.location.reload();
} else {
window.location.reload();
}
}, 1500);
} else {
$('form.form-validation').find('button[type="submit"]').button('reset');
......
......@@ -1064,6 +1064,15 @@ class GoodsService
return $ret;
}
// 仓库规格库存同步
$ret = WarehouseGoodsService::GoodsSpecChangeInventorySync($goods_id);
if($ret['code'] != 0)
{
// 回滚事务
Db::rollback();
return $ret;
}
// 操作成功
$status = true;
}
......
......@@ -727,6 +727,75 @@ class WarehouseGoodsService
return DataReturn('更新成功', 0);
}
/**
* 商品改变规格仓库商品库存同步
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-16
* @desc description
* @param [int] $goods_id [商品id]
*/
public static function GoodsSpecChangeInventorySync($goods_id)
{
// 获取商品实际规格
$res = GoodsService::GoodsSpecificationsActual($goods_id);
if(empty($res['value']))
{
// 没有规格则读取默认规格数据
$res['value'][] = [
'base_id' => Db::name('GoodsSpecBase')->where(['goods_id'=>$goods_id])->value('id'),
'value' => 'default',
];
}
// 获取商品仓库
$warehouse_goods = Db::name('WarehouseGoods')->where(['goods_id'=>$goods_id])->select();
if(!empty($warehouse_goods))
{
// 循环根据仓库处理库存
foreach($warehouse_goods as $wg)
{
$data = [];
foreach($res['value'] as $v)
{
$md5_key = md5(empty($v['value']) ? 'default' : str_replace(',', '', $v['value']));
$inventory = (int) Db::name('WarehouseGoodsSpec')->where(['warehouse_id'=>$wg['warehouse_id'], 'md5_key'=>$md5_key])->value('inventory');
$data[] = [
'warehouse_goods_id' => $wg['id'],
'warehouse_id' => $wg['warehouse_id'],
'goods_id' => $wg['goods_id'],
'md5_key' => $md5_key,
'spec' => json_encode(self::GoodsSpecMuster($v['value'], $res['title']), JSON_UNESCAPED_UNICODE),
'inventory' => $inventory,
'add_time' => time(),
];
}
// 删除原始数据
$where = [
'warehouse_id' => $wg['warehouse_id'],
'goods_id' => $wg['goods_id'],
];
Db::name('WarehouseGoodsSpec')->where($where)->delete();
// 仓库商品更新
Db::name('WarehouseGoods')->where(['id'=>$wg['id']])->update([
'inventory' => array_sum(array_column($data, 'inventory')),
'upd_time' => time(),
]);
// 添加数据
if(Db::name('WarehouseGoodsSpec')->insertAll($data) < count($data))
{
return DataReturn('规格库存添加失败', -1);
}
}
}
return DataReturn('操作成功', 0);
}
/**
* 商品规格库存同步
* @author Devil
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册