diff --git a/app/admin/lists/warehouse_product_storege/WarehouseProductStoregeLists.php b/app/admin/lists/warehouse_product_storege/WarehouseProductStoregeLists.php index 96177242..4b1d56d1 100644 --- a/app/admin/lists/warehouse_product_storege/WarehouseProductStoregeLists.php +++ b/app/admin/lists/warehouse_product_storege/WarehouseProductStoregeLists.php @@ -90,7 +90,7 @@ class WarehouseProductStoregeLists extends BaseAdminDataLists implements ListsSe ->order($this->sortOrder) ->select()->each(function ($item) { $item->warehouse_name = Warehouse::where('id', $item->warehouse_id)->value('name'); - $find = StoreProduct::where('id', $item->product_id)->find(); + $find = StoreProduct::where('id', $item->product_id)->withTrashed()->find(); if ($find) { $item->store_name = $find->store_name; $item->image = $find->image; @@ -101,8 +101,8 @@ class WarehouseProductStoregeLists extends BaseAdminDataLists implements ListsSe $item->purchase = $find->purchase; $item->store_info = $find->store_info; $item->rose = $find->rose; - $item['unit_name'] = StoreProductUnit::where('id', $find['unit'])->value('name'); - $item['cate_name'] = StoreCategory::where('id', $find['cate_id'])->value('name'); + $item['unit_name'] = StoreProductUnit::where('id', $find['unit'])->withTrashed()->value('name'); + $item['cate_name'] = StoreCategory::where('id', $find['cate_id'])->withTrashed()->value('name'); }else{ $item->store_name = ''; $item->cate_name = ''; diff --git a/app/admin/logic/warehouse_product/WarehouseProductLogic.php b/app/admin/logic/warehouse_product/WarehouseProductLogic.php index 3edd24a5..01d4f591 100644 --- a/app/admin/logic/warehouse_product/WarehouseProductLogic.php +++ b/app/admin/logic/warehouse_product/WarehouseProductLogic.php @@ -211,14 +211,21 @@ class WarehouseProductLogic extends BaseLogic $res = WarehouseProduct::where('id', $params['id'])->withTrashed()->find(); if($params['nums']>$res['nums']){ $nums=bcsub($params['nums'], $res['nums'],2); - self::incProductDecStorege($res, $nums,$admin_id); + if ($res['financial_pm'] == 0) { + self::decWarehouseProduct($res, $nums); + } else { + self::incWarehouseProduct($res, $nums); + } }else{ if($params['nums']==0){ - $nums=$params['nums']; - self::decProductIncStorege($res, $nums,$admin_id); + self::decWarehouseProduct($res, $res['nums']); }else{ - $nums=bcsub($res['nums'],$params['nums'],2); - self::decProductIncStorege($res, $nums,$admin_id); + $nums = bcsub($res['nums'], $params['nums'], 2); + if ($res['financial_pm'] == 0) { + self::incWarehouseProduct($res, $nums); + } else { + self::decWarehouseProduct($res, $nums); + } } } $datas = [ @@ -354,7 +361,9 @@ class WarehouseProductLogic extends BaseLogic return $data; } - //减少 + /** + * @deprecated 已废弃 + */ private static function decProductIncStorege($warehouseProduct,$nums,$admin_id=0) { $warehouseProductStorage = WarehouseProductStorege::where('warehouse_id', $warehouseProduct['warehouse_id']) @@ -381,6 +390,9 @@ class WarehouseProductLogic extends BaseLogic self::updateStoreStorage($warehouseProduct['oid'], $nums, 'dec'); } + /** + * @deprecated 已废弃 + */ //增加 private static function incProductDecStorege($warehouseProduct, $nums,$admin_id=0) { @@ -409,11 +421,7 @@ class WarehouseProductLogic extends BaseLogic } /** - * 更新门店库存和门店入库单 - * @param $outboundId - * @param $nums - * @param $type - * @return void + * @deprecated 已废弃 */ private static function updateStoreStorage($outboundId, $nums, $type = 'inc') { @@ -435,4 +443,102 @@ class WarehouseProductLogic extends BaseLogic } } + /** + * 增加商品入库数量 + * @param $warehouseProduct + * @param $nums + * @return void + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public static function incWarehouseProduct($warehouseProduct, $nums) + { + $warehouseProductStorage = WarehouseProductStorege::where('warehouse_id', $warehouseProduct['warehouse_id']) + ->where('product_id', $warehouseProduct['product_id'])->find(); + $warehouseProductStorage->nums = bcadd($warehouseProductStorage->nums, $nums, 2); + $warehouseProductStorage->save(); + SqlChannelLog('WarehouseProductStorege', $warehouseProductStorage['id'], $nums, 1, Request()->url()); + + $update = [ + 'nums' => bcadd($warehouseProduct['nums'], $nums, 2), + 'total_price' => bcadd($warehouseProduct['total_price'], bcmul($nums, $warehouseProduct['price'], 2), 2), + ]; + WarehouseProduct::where('id',$warehouseProduct['id'])->update($update); + SqlChannelLog('WarehouseProduct', $warehouseProduct['id'], $nums, 1, Request()->url()); + + $find = WarehouseProduct::where('oid', $warehouseProduct['oid'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); + if ($find) { + WarehouseOrder::where('id', $warehouseProduct['oid'])->update([ + 'nums' => $find['nums'], + 'total_price' => $find['total_price'] + ]); + } + self::updateStoreStorage2($warehouseProduct, $nums); + } + + /** + * 减少商品入库数量 + * @param $warehouseProduct + * @param $nums + * @return void + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public static function decWarehouseProduct($warehouseProduct, $nums) + { + $warehouseProductStorage = WarehouseProductStorege::where('warehouse_id', $warehouseProduct['warehouse_id']) + ->where('product_id', $warehouseProduct['product_id'])->find(); + $warehouseProductStorage->nums = bcsub($warehouseProductStorage->nums, $nums, 2); + $warehouseProductStorage->save(); + SqlChannelLog('WarehouseProductStorege', $warehouseProductStorage['id'], $nums, -1, Request()->url()); + + $update = [ + 'nums' => bcsub($warehouseProduct['nums'], $nums, 2), + 'total_price' => bcsub($warehouseProduct['total_price'], bcmul($nums, $warehouseProduct['price'], 2), 2), + ]; + WarehouseProduct::where('id',$warehouseProduct['id'])->update($update); + SqlChannelLog('WarehouseProduct', $warehouseProduct['id'], $nums, -1, Request()->url()); + + $find = WarehouseProduct::where('oid', $warehouseProduct['oid'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); + if ($find) { + WarehouseOrder::where('id', $warehouseProduct['oid'])->update([ + 'nums' => $find['nums'], + 'total_price' => $find['total_price'] + ]); + } + self::updateStoreStorage2($warehouseProduct, $nums); + } + + /** + * 修改门店商品库存 + * @param $warehouseProduct + * @param $nums + * @return void + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public static function updateStoreStorage2($warehouseProduct, $nums) + { + if ($warehouseProduct['financial_pm'] == 0 && $warehouseProduct['status'] == 1) { + // 出库单已确认,增加门店库存 + $storeBranchProduct = StoreBranchProduct::where('store_id', $warehouseProduct->store_id) + ->where('product_id', $warehouseProduct->product_id)->find(); + if (!empty($storeBranchProduct)) { + $storeBranchProduct->stock = $storeBranchProduct->stock + $nums; + $storeBranchProduct->save(); + } + } elseif ($warehouseProduct['store_id'] == 1 && $warehouseProduct['financial_pm'] == 1 && $warehouseProduct['status'] == 1) { + // 入库单已确认,减少门店库存 + $storeBranchProduct = StoreBranchProduct::where('store_id', $warehouseProduct->store_id) + ->where('product_id', $warehouseProduct->product_id)->find(); + if (!empty($storeBranchProduct)) { + $storeBranchProduct->stock = $storeBranchProduct->stock - $nums; + $storeBranchProduct->save(); + } + } + } + }