diff --git a/application/store/controller/Goods.php b/application/store/controller/Goods.php index f9aa540e5..fb8d9b7c4 100644 --- a/application/store/controller/Goods.php +++ b/application/store/controller/Goods.php @@ -223,6 +223,45 @@ class Goods extends BasicAdmin return ['main' => $main, 'list' => $list]; } + /** + * 商品库存信息更新 + * @return string + * @throws \think\Exception + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + * @throws \think\exception\PDOException + */ + public function stock() + { + if (!$this->request->post()) { + $goods_id = $this->request->get('id'); + $goods = Db::name('StoreGoods')->where(['id' => $goods_id, 'is_deleted' => '0'])->find(); + empty($goods) && $this->error('该商品无法操作入库操作!'); + $where = ['goods_id' => $goods_id, 'status' => '1', 'is_deleted' => '0']; + $goods['list'] = Db::name('StoreGoodsList')->where($where)->select(); + return $this->fetch('', ['vo' => $goods]); + } + // 入库保存 + $goods_id = $this->request->post('id'); + list($post, $data) = [$this->request->post(), []]; + foreach ($post['spec'] as $key => $spec) { + if ($post['stock'][$key] > 0) { + $data[] = [ + 'goods_stock' => $post['stock'][$key], + 'stock_desc' => $this->request->post('desc'), + 'goods_spec' => $spec, 'goods_id' => $goods_id, + ]; + } + } + empty($data) && $this->error('无需入库的数据哦!'); + if (Db::name('StoreGoodsStock')->insertAll($data) !== false) { + GoodsService::syncGoodsStock($goods_id); + $this->success('商品入库成功!', ''); + } + $this->error('商品入库失败,请稍候再试!'); + } + /** * 删除商品 * @throws \think\Exception diff --git a/application/store/service/GoodsService.php b/application/store/service/GoodsService.php index 75c5c07f9..7ef6c6a7f 100644 --- a/application/store/service/GoodsService.php +++ b/application/store/service/GoodsService.php @@ -99,7 +99,7 @@ class GoodsService { // 检查商品是否需要更新库存 $map = ['id' => $goods_id, 'is_deleted' => '0']; - if (!($goods = Db::name('Goods')->where($map)->find())) { + if (!($goods = Db::name('StoreGoods')->where($map)->find())) { return ['code' => 0, 'msg' => '指定商品信息无法同步库存!']; } // 统计入库信息 @@ -109,7 +109,7 @@ class GoodsService // 统计销售信息 $saleField = 'goods_id,goods_spec,ifnull(sum(number), 0) goods_sale'; $saleWhere = ['status' => '1', 'is_deleted' => '0', 'goods_id' => $goods_id]; - $saleList = (array)Db::name('StoreOrderList')->field($saleField)->where($saleWhere)->group('goods_id,goods_spec')->select(); + $saleList = (array)Db::name('StoreOrderGoods')->field($saleField)->where($saleWhere)->group('goods_id,goods_spec')->select(); // 库存置零 list($where, $total_sale) = [['goods_id' => $goods_id], 0]; Db::name('StoreGoodsList')->where($where)->update(['goods_stock' => 0, 'goods_sale' => 0]); diff --git a/application/store/view/goods/index.html b/application/store/view/goods/index.html index b47420777..6b33ced59 100644 --- a/application/store/view/goods/index.html +++ b/application/store/view/goods/index.html @@ -159,6 +159,11 @@ <a data-open='{:url("$classuri/edit")}?id={$vo.id}'>编辑</a> <!--{/if}--> + <!--{if auth("$classuri/stock")}--> + <span class="text-explode">|</span> + <a data-title="商品入库" data-modal='{:url("$classuri/stock")}?id={$vo.id}'>入库</a> + <!--{/if}--> + <!--{if $vo.status eq 1 and auth("$classuri/forbid")}--> <span class="text-explode">|</span> <a data-update="{$vo.id}" data-field='status' data-value='0' data-action='{:url("$classuri/forbid")}'>下架</a> diff --git a/application/store/view/goods/stock.html b/application/store/view/goods/stock.html new file mode 100644 index 000000000..d712b1f9b --- /dev/null +++ b/application/store/view/goods/stock.html @@ -0,0 +1,52 @@ +<form class="layui-form layui-box modal-form-box" action="{:request()->url()}" data-auto="true" method="post"> + + <div class="layui-form-item"> + <label class="layui-form-label">商品名称</label> + <div class="layui-input-block"> + <input value='{$vo.goods_title|default=""}' disabled="disabled" class="layui-input layui-bg-gray"> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label label-required">商品库存</label> + <div class="layui-input-block"> + <table class="layui-table" lay-size="sm"> + <thead> + <tr> + <th>商品规格</th> + <th class="text-right">入库数量</th> + </tr> + </thead> + {foreach $vo.list as $spec} + <tr> + <td> + {$spec.goods_spec|str_replace=['default:default',',',':'],['默认规格',',',':'],###} + </td> + <td style="padding:0"> + <input name="spec[]" value="{$spec.goods_spec}" type="hidden"> + <input name="stock[]" value="0" onblur="this.value=parseInt(this.value)||0" + class="layui-input text-right padding-right-10 border-none"> + </td> + </tr> + {/foreach} + </table> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">入库描述</label> + <div class="layui-input-block"> + <textarea placeholder="请输入入库描述" title="请输入入库描述" class="layui-textarea" name="desc"></textarea> + </div> + </div> + + <div class="hr-line-dashed"></div> + + <div class="layui-form-item text-center"> + {if isset($vo['id'])}<input type='hidden' value='{$vo.id}' name='id'/>{/if} + <button class="layui-btn" type='submit'>保存数据</button> + <button class="layui-btn layui-btn-danger" type='button' data-confirm="确定要取消编辑吗?" data-close>取消编辑</button> + </div> + + <script>window.form.render();</script> +</form>