From 4387eef6f186a1f55353fc70fe0cbdd86ffbd7a9 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Mon, 7 Oct 2024 13:30:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=95=86=E5=93=81=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=92=8C=E9=87=87=E8=B4=AD=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了商品入库逻辑,支持未在门店的商品直接入库 - 优化了采购报价单操作,包括添加、编辑和查询相关功能 - 调整了仓库商品出库逻辑,支持财务相关操作 - 修复了一些与商品库存相关的逻辑问题 --- .../PurchaseProductOfferController.php | 6 +- .../SystemStoreStorageController.php | 23 +++- .../beforehand_order/BeforehandOrderLists.php | 12 +- .../BeforehandOrderThreeLists.php | 6 + .../BeforehandOrderTwoLists.php | 6 + .../BeforehandOrderCartInfoLists.php | 9 ++ .../beforehand_order/BeforehandOrderLogic.php | 92 +++++++------- .../PurchaseProductOfferLogic.php | 17 ++- .../WarehouseProductLogic.php | 118 +++++++++++++----- .../SystemStoreStorageController.php | 38 ++++-- 10 files changed, 219 insertions(+), 108 deletions(-) diff --git a/app/admin/controller/purchase_product_offer/PurchaseProductOfferController.php b/app/admin/controller/purchase_product_offer/PurchaseProductOfferController.php index f35f8665e..f1c5eb635 100644 --- a/app/admin/controller/purchase_product_offer/PurchaseProductOfferController.php +++ b/app/admin/controller/purchase_product_offer/PurchaseProductOfferController.php @@ -40,10 +40,8 @@ class PurchaseProductOfferController extends BaseAdminController { $params = (new PurchaseProductOfferValidate())->post()->goCheck('add'); $result = PurchaseProductOfferLogic::add($params); - if (true === $result) { - return $this->success('添加成功', [], 1, 1); - } - return $this->fail(PurchaseProductOfferLogic::getError()); + return $this->success('设置成功', [], 1, 1); + } diff --git a/app/admin/controller/system_store_storage/SystemStoreStorageController.php b/app/admin/controller/system_store_storage/SystemStoreStorageController.php index 475cd5f86..e33c3ebb2 100644 --- a/app/admin/controller/system_store_storage/SystemStoreStorageController.php +++ b/app/admin/controller/system_store_storage/SystemStoreStorageController.php @@ -5,9 +5,11 @@ namespace app\admin\controller\system_store_storage; use app\admin\controller\BaseAdminController; use app\admin\lists\system_store_storage\SystemStoreStorageLists; +use app\admin\logic\store_product\StoreProductLogic; use app\admin\logic\system_store_storage\SystemStoreStorageLogic; use app\admin\validate\system_store_storage\SystemStoreStorageValidate; use app\common\model\store_branch_product\StoreBranchProduct; +use app\common\model\store_product\StoreProduct; use app\common\model\system_store_storage\SystemStoreStorage; /** @@ -56,7 +58,7 @@ class SystemStoreStorageController extends BaseAdminController */ public function edit() { - return $this->fail('暂不支持入库操作'); + // return $this->fail('暂不支持入库操作'); // $params = (new SystemStoreStorageValidate())->post()->goCheck('edit'); // $params['admin_id']=$this->adminId; @@ -69,10 +71,21 @@ class SystemStoreStorageController extends BaseAdminController if($id==0){ return $this->fail('参数错误'); } - $res=SystemStoreStorage::where(['id' => $id])->update(['status'=>1,'staff_id'=>$this->adminId,'mark'=>'入库时间:'.date('Y-m-d H:i:s',time())]); - if($res){ - $find=SystemStoreStorage::where(['id' => $id])->find(); - StoreBranchProduct::where(['product_id'=>$find['product_id'],'store_id'=>$find['store_id']])->inc('stock',$find['nums'])->update(); + $find=SystemStoreStorage::where(['id' => $id])->find(); + + if($find){ + $find->save(['status'=>1,'staff_id'=>$this->adminId,'mark'=>'入库时间:'.date('Y-m-d H:i:s',time())]); + $branch_product=StoreBranchProduct::where(['product_id'=>$find['product_id'],'store_id'=>$find['store_id']])->find(); + if($branch_product){ + $branch_product->save(['stock'=>$branch_product['stock']+$find['nums']]); + }else{ + $storeProduct = StoreProduct::where('id', $find['product_id'])->findOrEmpty(); + $storeBranchProduct = StoreProductLogic::ordinary(['id' => $find['product_id']], $find['store_id'], $this->adminId, $storeProduct); + $storeBranchProduct->stock = $find['nums']; + $storeBranchProduct->save(); + } + + return $this->success('操作成功',[]); } return $this->fail('操作失败'); diff --git a/app/admin/lists/beforehand_order/BeforehandOrderLists.php b/app/admin/lists/beforehand_order/BeforehandOrderLists.php index 979124c4f..0026a05de 100644 --- a/app/admin/lists/beforehand_order/BeforehandOrderLists.php +++ b/app/admin/lists/beforehand_order/BeforehandOrderLists.php @@ -6,7 +6,7 @@ namespace app\admin\lists\beforehand_order; use app\admin\lists\BaseAdminDataLists; use app\common\model\beforehand_order\BeforehandOrder; use app\common\lists\ListsSearchInterface; - +use app\common\model\auth\Admin; /** * 预订单表列表 @@ -43,10 +43,16 @@ class BeforehandOrderLists extends BaseAdminDataLists implements ListsSearchInte public function lists(): array { return BeforehandOrder::where($this->searchWhere) - ->field(['id','order_id', 'uid','total_num', 'total_price', 'pay_price', 'deduction_price','create_time', 'status', 'mark']) + ->field(['id','order_id', 'uid','total_num','total_price','admin_id', 'pay_price', 'deduction_price','create_time', 'status', 'mark']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) - ->select() + ->select()->each(function ($item){ + if($item->admin_id){ + $item->admin_name=Admin::where(['id'=>$item->admin_id])->value('name'); + }else{ + $item->admin_name=''; + } + }) ->toArray(); } diff --git a/app/admin/lists/beforehand_order/BeforehandOrderThreeLists.php b/app/admin/lists/beforehand_order/BeforehandOrderThreeLists.php index be66e40ec..38ff72fc0 100644 --- a/app/admin/lists/beforehand_order/BeforehandOrderThreeLists.php +++ b/app/admin/lists/beforehand_order/BeforehandOrderThreeLists.php @@ -8,6 +8,7 @@ use app\common\model\beforehand_order\BeforehandOrder; use app\common\lists\ListsSearchInterface; use app\common\model\store_product\StoreProduct; use app\common\model\store_product_unit\StoreProductUnit; +use app\common\model\supplier\Supplier; use app\common\model\warehouse_product\WarehouseProduct; /** @@ -59,6 +60,11 @@ class BeforehandOrderThreeLists extends BaseAdminDataLists implements ListsSearc }else{ $item['unit_name']=StoreProductUnit::where('id',$item['unit'])->value('name'); } + if($item['supplier_id']){ + $item['supplier_name']=Supplier::where('id',$item['supplier_id'])->value('mer_name'); + }else{ + $item['supplier_name']=''; + } return $item; }) ->toArray(); diff --git a/app/admin/lists/beforehand_order/BeforehandOrderTwoLists.php b/app/admin/lists/beforehand_order/BeforehandOrderTwoLists.php index cb5f87803..539019f23 100644 --- a/app/admin/lists/beforehand_order/BeforehandOrderTwoLists.php +++ b/app/admin/lists/beforehand_order/BeforehandOrderTwoLists.php @@ -8,6 +8,7 @@ use app\common\model\beforehand_order\BeforehandOrder; use app\common\lists\ListsSearchInterface; use app\common\model\store_product\StoreProduct; use app\common\model\store_product_unit\StoreProductUnit; +use app\common\model\supplier\Supplier; use app\common\model\warehouse_product\WarehouseProduct; /** @@ -59,6 +60,11 @@ class BeforehandOrderTwoLists extends BaseAdminDataLists implements ListsSearchI }else{ $item['unit_name']=StoreProductUnit::where('id',$item['unit'])->value('name'); } + if($item['supplier_id']){ + $item['supplier_name']=Supplier::where('id',$item['supplier_id'])->value('mer_name'); + }else{ + $item['supplier_name']=''; + } return $item; }) ->toArray(); diff --git a/app/admin/lists/beforehand_order_cart_info/BeforehandOrderCartInfoLists.php b/app/admin/lists/beforehand_order_cart_info/BeforehandOrderCartInfoLists.php index b6c7f5e2e..be622775b 100644 --- a/app/admin/lists/beforehand_order_cart_info/BeforehandOrderCartInfoLists.php +++ b/app/admin/lists/beforehand_order_cart_info/BeforehandOrderCartInfoLists.php @@ -6,6 +6,7 @@ namespace app\admin\lists\beforehand_order_cart_info; use app\admin\lists\BaseAdminDataLists; use app\common\model\beforehand_order_cart_info\BeforehandOrderCartInfo; use app\common\lists\ListsSearchInterface; +use app\common\model\purchase_product_offer\PurchaseProductOffer; use app\common\model\store_product\StoreProduct; use app\common\model\warehouse_product_storege\WarehouseProductStorege; @@ -53,6 +54,14 @@ class BeforehandOrderCartInfoLists extends BaseAdminDataLists implements ListsSe $item['store_name']=$find['store_name']; $item['image']=$find['image']; $item['unit']=$find['unit']; + if($item->bhoid){ + $status=PurchaseProductOffer::where('order_id',$item->bhoid)->where('product_id',$item->product_id)->value('status'); + if($status==1){ + $item->status_name='已完成'; + }else{ + $item->status_name='采购中'; + } + } return $item; }) ->toArray(); diff --git a/app/admin/logic/beforehand_order/BeforehandOrderLogic.php b/app/admin/logic/beforehand_order/BeforehandOrderLogic.php index 503d91528..2d56ed909 100644 --- a/app/admin/logic/beforehand_order/BeforehandOrderLogic.php +++ b/app/admin/logic/beforehand_order/BeforehandOrderLogic.php @@ -35,9 +35,9 @@ class BeforehandOrderLogic extends BaseLogic Db::startTrans(); try { $datas = []; - $total_num=0; - $total_price=0; - $uid=$params['uid'] ?? 0; + $total_num = 0; + $total_price = 0; + $uid = $params['uid'] ?? 0; foreach ($params['product_arr'] as $k => $v) { $datas[$k]['product_id'] = $v['product_id']; $datas[$k]['uid'] = $uid; @@ -45,13 +45,13 @@ class BeforehandOrderLogic extends BaseLogic $datas[$k]['price'] = $v['purchase']; $datas[$k]['total_price'] = $v['total_price']; $datas[$k]['create_time'] = time(); - $datas[$k]['update_time'] =time(); + $datas[$k]['update_time'] = time(); $total_num += $v['nums']; $total_price += $v['total_price']; } $order = BeforehandOrder::create([ 'order_id' => getNewOrderId('YG'), - 'admin_id' => $params['admin_id']??0, + 'admin_id' => $params['admin_id'] ?? 0, 'uid' => $uid, 'total_num' => $total_num, 'total_price' => $total_price, @@ -59,7 +59,7 @@ class BeforehandOrderLogic extends BaseLogic 'pay_type' => 0, 'deduction_price' => 0, 'paid' => 0, - 'mark' => $params['mark']??'' + 'mark' => $params['mark'] ?? '' ]); foreach ($datas as $k => $v) { $datas[$k]['bhoid'] = $order['id']; @@ -119,58 +119,54 @@ class BeforehandOrderLogic extends BaseLogic */ public static function createOutboundOrder(array $params): bool { - $warehouse_id= $params['warehouse_id']; - $store_id= $params['store_id']; - $admin_id= $params['admin_id']; - $delivery_time= $params['delivery_time']; - $mark= $params['remark']??''; - $order=BeforehandOrder::where('id', $params['bhoid'])->find(); - if(!$order){ + $warehouse_id = $params['warehouse_id']; + $store_id = $params['store_id']; + $admin_id = $params['admin_id']; + $delivery_time = $params['delivery_time']; + $mark = $params['remark'] ?? ''; + $order = BeforehandOrder::where('id', $params['bhoid'])->find(); + if (!$order) { throw new BusinessException('该订单不存在'); } - if($order['outbound_id']>0){ + if ($order['outbound_id'] > 0) { throw new BusinessException('该订单已创建出库单'); } - $info=BeforehandOrderCartInfo::where('bhoid', $params['bhoid'])->select(); + $info = BeforehandOrderCartInfo::where('bhoid', $params['bhoid'])->select(); Db::startTrans(); try { - $arr = [ - 'oid' => 0, + $arr = [ + 'oid' => 0, + 'warehouse_id' => $warehouse_id, + 'store_id' => $store_id, + 'supplier_id' => 0, + 'code' => getNewOrderId('CK'), + 'admin_id' => $admin_id, + 'financial_pm' => 0, + 'batch' => 0, + 'mark' => $mark, + ]; + $arr['delivery_time'] = strtotime($delivery_time); + $res = WarehouseOrder::create($arr); + foreach ($info as $key => $arr) { + $data = [ 'warehouse_id' => $warehouse_id, + 'product_id' => $arr['product_id'], 'store_id' => $store_id, - 'supplier_id' => 0, - 'code' => getNewOrderId('CK'), - 'admin_id' => $admin_id, 'financial_pm' => 0, - 'batch' => 0, - 'mark' => $mark, + 'batch' => 1, + 'nums' => $arr['cart_num'], + 'status' => 1, + 'admin_id' => $admin_id, + 'total_price' => $arr['total_price'], + 'purchase' => $arr['price'], + 'oid' => $res['id'], + 'code' => $res['code'], ]; - $arr['delivery_time'] = strtotime($delivery_time); - $res = WarehouseOrder::create($arr); - foreach ($info as $key => $arr) { - $data = [ - 'warehouse_id' => $warehouse_id, - 'product_id' => $arr['product_id'], - 'store_id' => $store_id, - 'financial_pm' => 0, - 'batch' => 1, - 'nums' => $arr['cart_num'], - 'status' => 1, - 'admin_id' => $admin_id, - ]; - $storeProduct = StoreProduct::where('id', $arr['product_id'])->findOrEmpty()->toArray(); - if ($arr['cart_num'] == 0) { - StoreProductLogic::ordinary($arr, $store_id, $admin_id, $storeProduct); - } else { - $data['total_price'] =$arr['total_price']; - $data['purchase'] = $storeProduct['purchase']; - $data['oid'] = $res['id']; - WarehouseProductLogic::add($data); - $finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); - WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]); - } - } - BeforehandOrder::update(['outbound_id'=>$res['id']],['id'=>$params['bhoid']]); + WarehouseProductLogic::setOutbound($data); + } + $finds = WarehouseProduct::where('oid', $res['id'])->field('sum(nums) as nums,sum(total_price) as total_price')->find(); + WarehouseOrder::where('id', $res['id'])->update(['total_price' => $finds['total_price'], 'nums' => $finds['nums']]); + BeforehandOrder::update(['outbound_id' => $res['id']], ['id' => $params['bhoid']]); Db::commit(); return true; } catch (\Throwable $e) { diff --git a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php index bb341c594..54822b384 100644 --- a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php +++ b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php @@ -5,6 +5,7 @@ namespace app\admin\logic\purchase_product_offer; use app\common\model\purchase_product_offer\PurchaseProductOffer; use app\common\logic\BaseLogic; +use app\common\model\beforehand_order_cart_info\BeforehandOrderCartInfo; use support\exception\BusinessException; use think\facade\Db; @@ -40,7 +41,7 @@ class PurchaseProductOfferLogic extends BaseLogic 'status' => 0, ]); - + BeforehandOrderCartInfo::where(['bhoid'=>$params['order_id'],'product_id'=>$params['product_id']])->update(['is_buyer'=>1]); Db::commit(); return true; } catch (\Exception $e) { @@ -99,12 +100,20 @@ class PurchaseProductOfferLogic extends BaseLogic { Db::startTrans(); try { - PurchaseProductOffer::update([ + $offer=PurchaseProductOffer::where(['id'=>$params['id']])->find(); + $offer->save([ 'buyer_nums' => $params['buyer_nums'], 'supplier_id' => $params['supplier_id'], - 'price' => $params['price'], + 'price' => $params['purchase'], 'total_price' => $params['total_price'], - ],['id'=>$params['id']]); + ]); + $find=BeforehandOrderCartInfo::where(['bhoid'=>$params['bhoid'],'product_id'=>$offer['product_id']])->find(); + if($find){ + $find->purchase=$params['purchase']; + $find->total_price=bcmul($find['cart_num'],$params['price'],2); + $find->price=$params['price']; + $find->save(); + } Db::commit(); return true; } catch (\Throwable $e) { diff --git a/app/admin/logic/warehouse_product/WarehouseProductLogic.php b/app/admin/logic/warehouse_product/WarehouseProductLogic.php index 336528981..69b21bbb1 100644 --- a/app/admin/logic/warehouse_product/WarehouseProductLogic.php +++ b/app/admin/logic/warehouse_product/WarehouseProductLogic.php @@ -52,7 +52,7 @@ class WarehouseProductLogic extends BaseLogic // if ($after_nums < 0) { // throw new BusinessException('库存不足,warehouse_id:'.$params['warehouse_id'].'product_id:'.$params['product_id']); // } - WarehouseProductStorege::update(['nums'=>$after_nums, 'total_price' => $total_price],['id'=> $storege['id']]); + WarehouseProductStorege::update(['nums' => $after_nums, 'total_price' => $total_price], ['id' => $storege['id']]); //门店加库存 $storeBranchProduct = StoreBranchProduct::where('product_id', $params['product_id'])->where('store_id', $params['store_id'])->find(); @@ -74,7 +74,7 @@ class WarehouseProductLogic extends BaseLogic throw new BusinessException('商品不存在'); } $total_price = bcmul($after_nums, $storeProduct['purchase'], 2); - WarehouseProductStorege::update(['nums' => $after_nums, 'total_price' => $total_price],['id'=>$storege['id']]); + WarehouseProductStorege::update(['nums' => $after_nums, 'total_price' => $total_price], ['id' => $storege['id']]); } } $before_nums = $storege['nums']; @@ -85,16 +85,16 @@ class WarehouseProductLogic extends BaseLogic throw new BusinessException('商品不存在'); } $total_price = bcmul($after_nums, $storeProduct['purchase'], 2); - $data=[ + $data = [ 'warehouse_id' => $params['warehouse_id'], 'product_id' => $params['product_id'], 'nums' => $params['nums'], - 'total_price'=>$total_price + 'total_price' => $total_price ]; - if($params['financial_pm']==0){ - $data['nums']=-$params['nums']; + if ($params['financial_pm'] == 0) { + $data['nums'] = -$params['nums']; } - $storege=WarehouseProductStorege::create($data); + $storege = WarehouseProductStorege::create($data); } $batch_count = WarehouseProduct::where(['product_id' => $params['product_id'], 'warehouse_id' => $params['warehouse_id'], 'financial_pm' => $params['financial_pm'], 'store_id' => $params['store_id']])->count(); $data = [ @@ -141,6 +141,59 @@ class WarehouseProductLogic extends BaseLogic } } + /** + * 设置出库商品 + */ + public static function setOutbound(array $params, $type = 1) + { + Db::startTrans(); + try { + $after_nums = 0; + $storege = WarehouseProductStorege::where('warehouse_id', $params['warehouse_id'])->where('product_id', $params['product_id'])->find(); + if ($storege) { + SystemStoreStorage::create([ + 'store_id' => $params['store_id'], + 'admin_id' => $params['admin_id'], + 'staff_id' => 0, + 'type' => 1, + 'product_id' => $params['product_id'], + 'nums' => $params['nums'], + 'status' =>0 + ]); + $after_nums = bcsub($storege['nums'], $params['nums']); + $total_price = bcmul($after_nums, $params['purchase'], 2); + WarehouseProductStorege::update(['nums' =>bcsub($storege['nums'], $params['nums']), 'total_price' => $total_price], ['id' => $storege['id']]); + } else { + throw new BusinessException('仓库商品不存在'); + } + + $batch_count = WarehouseProduct::where(['product_id' => $params['product_id'], 'warehouse_id' => $params['warehouse_id'], 'financial_pm' => $params['financial_pm'], 'store_id' => $params['store_id']])->count(); + $data = [ + 'warehouse_id' => $params['warehouse_id'], + 'supplier_id' => $params['supplier_id'] ?? 0, + 'oid' => $params['oid'] ?? 0, + 'store_id' => $params['store_id'] ?? 0, + 'product_id' => $params['product_id'], + 'financial_pm' => $params['financial_pm'], + 'batch' => $batch_count + 1, + 'nums' => $params['nums'], + 'before_nums' => $storege['nums'], + 'after_nums' => $after_nums, + 'purchase' => $params['purchase'] ?? '', + 'total_price' => $params['total_price'] ?? '', + 'admin_id' => $params['admin_id'], + 'code' => $params['code'] ?? '', + 'status' => 1, + 'mark' => $params['mark'] ?? '', + ]; + $res = WarehouseProduct::create($data); + Db::commit(); + return $res; + } catch (\Throwable $e) { + Db::rollback(); + throw new BusinessException($e->getMessage()); + } + } /** * @notes 编辑商品仓储信息 @@ -156,28 +209,28 @@ class WarehouseProductLogic extends BaseLogic try { $before_nums = 0; $after_nums = 0; - $find=WarehouseOrder::where('id',$params['oid'])->find(); - if($find){ + $find = WarehouseOrder::where('id', $params['oid'])->find(); + if ($find) { $res = WarehouseProduct::where('id', $params['id'])->find(); - if($find['financial_pm']==1){ - WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->dec('nums',$res['nums'])->update(); - StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->dec('stock',$res['nums'])->update(); - - $warehouseProductStorege=WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->find(); - WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->inc('nums',$params['nums'])->update(); - StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->inc('stock',$params['nums'])->update(); - $before_nums=$warehouseProductStorege['nums']; - $after_nums=$warehouseProductStorege['nums']+$params['nums']; - }else{ - WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->inc('nums',$res['nums'])->update(); - StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->dec('stock',$res['nums'])->update(); - - $warehouseProductStorege=WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->find(); - WarehouseProductStorege::where('warehouse_id',$res['warehouse_id'])->where('product_id',$res['product_id'])->dec('nums',$params['nums'])->update(); - StoreBranchProduct::where('store_id',$res['store_id'])->where('product_id',$res['product_id'])->inc('stock',$params['nums'])->update(); - $before_nums=$warehouseProductStorege['nums']; - $after_nums=bcsub($warehouseProductStorege['nums'],$params['nums'],2); + if ($find['financial_pm'] == 1) { + WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])->where('product_id', $res['product_id'])->dec('nums', $res['nums'])->update(); + StoreBranchProduct::where('store_id', $res['store_id'])->where('product_id', $res['product_id'])->dec('stock', $res['nums'])->update(); + + $warehouseProductStorege = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])->where('product_id', $res['product_id'])->find(); + WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])->where('product_id', $res['product_id'])->inc('nums', $params['nums'])->update(); + StoreBranchProduct::where('store_id', $res['store_id'])->where('product_id', $res['product_id'])->inc('stock', $params['nums'])->update(); + $before_nums = $warehouseProductStorege['nums']; + $after_nums = $warehouseProductStorege['nums'] + $params['nums']; + } else { + WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])->where('product_id', $res['product_id'])->inc('nums', $res['nums'])->update(); + StoreBranchProduct::where('store_id', $res['store_id'])->where('product_id', $res['product_id'])->dec('stock', $res['nums'])->update(); + + $warehouseProductStorege = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])->where('product_id', $res['product_id'])->find(); + WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])->where('product_id', $res['product_id'])->dec('nums', $params['nums'])->update(); + StoreBranchProduct::where('store_id', $res['store_id'])->where('product_id', $res['product_id'])->inc('stock', $params['nums'])->update(); + $before_nums = $warehouseProductStorege['nums']; + $after_nums = bcsub($warehouseProductStorege['nums'], $params['nums'], 2); } WarehouseProduct::where('id', $params['id'])->update([ 'nums' => $params['nums'], @@ -241,14 +294,15 @@ class WarehouseProductLogic extends BaseLogic * @param $id * @return void */ - public static function settlement($id){ + public static function settlement($id) + { Db::startTrans(); try { - $find=WarehouseProduct::where(['id'=>$id,'financial_pm'=>1,'is_pay'=>0])->find(); - if($find){ - $find->is_pay=1; + $find = WarehouseProduct::where(['id' => $id, 'financial_pm' => 1, 'is_pay' => 0])->find(); + if ($find) { + $find->is_pay = 1; $find->save(); - } else{ + } else { throw new BusinessException('没有查到出入库信息'); } Db::commit(); diff --git a/app/api/controller/system_store_storage/SystemStoreStorageController.php b/app/api/controller/system_store_storage/SystemStoreStorageController.php index a9eb68379..37a98012e 100644 --- a/app/api/controller/system_store_storage/SystemStoreStorageController.php +++ b/app/api/controller/system_store_storage/SystemStoreStorageController.php @@ -2,11 +2,12 @@ namespace app\api\controller\system_store_storage; - +use app\admin\logic\store_product\StoreProductLogic; use app\api\controller\BaseApiController; use app\api\lists\system_store_storage\SystemStoreStorageLists; use app\api\lists\system_store_storage\SystemStoreStorageGroupLists; use app\common\model\store_branch_product\StoreBranchProduct; +use app\common\model\store_product\StoreProduct; use app\common\model\system_store\SystemStoreStaff; use app\common\model\system_store_storage\SystemStoreStorage; @@ -25,11 +26,11 @@ class SystemStoreStorageController extends BaseApiController */ public function lists() { - $store_id=SystemStoreStaff::where('uid',$this->userId)->value('store_id'); - if(!$store_id){ + $store_id = SystemStoreStaff::where('uid', $this->userId)->value('store_id'); + if (!$store_id) { return $this->fail('请先绑定店铺'); } - $this->request->__set('store_id',$store_id); + $this->request->__set('store_id', $store_id); return $this->dataLists(new SystemStoreStorageLists()); } /** @@ -40,24 +41,37 @@ class SystemStoreStorageController extends BaseApiController */ public function group_lists() { - $store_id=SystemStoreStaff::where('uid',$this->userId)->value('store_id'); - if(!$store_id){ + $store_id = SystemStoreStaff::where('uid', $this->userId)->value('store_id'); + if (!$store_id) { return $this->fail('请先绑定店铺'); } - $this->request->__set('store_id',$store_id); + $this->request->__set('store_id', $store_id); return $this->dataLists(new SystemStoreStorageGroupLists()); } /** * @notes 门店入库 */ - public function warehousing_add() { + public function warehousing_add() + { $params = $this->request->post(); - $find=SystemStoreStorage::where('id',$params['id'])->find(); - if($find){ - $find->status=1; + $find = SystemStoreStorage::where('id', $params['id'])->find(); + if ($find) { + $id = SystemStoreStaff::where('uid', $this->userId)->value('id'); + $find->staff_id = $id; + $find->mark = '入库时间:' . date('Y-m-d H:i:s'); + $find->status = 1; $find->save(); - StoreBranchProduct::where(['product_id'=>$find['product_id'],'store_id'=>$find['store_id']])->inc('stock',$find['nums'])->update(); + + $branch_product=StoreBranchProduct::where(['product_id'=>$find['product_id'],'store_id'=>$find['store_id']])->find(); + if($branch_product){ + $branch_product->save(['stock'=>$branch_product['stock']+$find['nums']]); + }else{ + $storeProduct = StoreProduct::where('id', $find['product_id'])->findOrEmpty(); + $storeBranchProduct = StoreProductLogic::ordinary(['id' => $find['product_id']], $find['store_id'], 0, $storeProduct); + $storeBranchProduct->stock = $find['nums']; + $storeBranchProduct->save(); + } return $this->success('操作成功'); } return $this->fail('操作失败');