diff --git a/application/admin/view/default/warehousegoods/inventory_info.html b/application/admin/view/default/warehousegoods/inventory_info.html index 9bf9e32be53314fc48b7483911790e2a4142a789..d778713366e76558fbf459afdb4b790309d2542a 100644 --- a/application/admin/view/default/warehousegoods/inventory_info.html +++ b/application/admin/view/default/warehousegoods/inventory_info.html @@ -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'); diff --git a/application/service/GoodsService.php b/application/service/GoodsService.php index 827d4ba05879332a16e1ac19341b2634eff60b0a..571ef77fb5f891bb8c845c2b6c3b152a90a69237 100755 --- a/application/service/GoodsService.php +++ b/application/service/GoodsService.php @@ -1064,6 +1064,15 @@ class GoodsService return $ret; } + // 仓库规格库存同步 + $ret = WarehouseGoodsService::GoodsSpecChangeInventorySync($goods_id); + if($ret['code'] != 0) + { + // 回滚事务 + Db::rollback(); + return $ret; + } + // 操作成功 $status = true; } diff --git a/application/service/WarehouseGoodsService.php b/application/service/WarehouseGoodsService.php index 54d9781b860d4cbbaa85e53d1cb50c9d8b917e53..6e694135303efe498e438fe48c170432a6e30527 100644 --- a/application/service/WarehouseGoodsService.php +++ b/application/service/WarehouseGoodsService.php @@ -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