request->input('material_id'); $supplierId = (int)$this->request->input('supplier_id'); $number = (double)$this->request->input('number'); $saleId = (int)$this->request->input('sale_id'); $cityId = (int)$this->request->input('city_id'); $kitchenId = (int)$this->request->input('kitchen_id'); $depotInfo = $this->DepotModel ->getInfoByName('回收仓库',$kitchenId); if (empty($depotInfo)) throw new ErrException('未创建回收仓库'); else $depotId = $depotInfo->id; $saleInfo = $this->DepotSaleModel->getInfoById($saleId); $saleInfo->back_number = $saleInfo->back_number + $number; if ($saleInfo->back_number > $saleInfo->number) throw new ErrException('回收数量不能大于出库数量'); $depotRecycle = new DepotRecycle(); $depotRecycle->depot_id = $depotId; $depotRecycle->material_id = $materialId; $depotRecycle->supplier_id = $supplierId; $depotRecycle->recycle_price = $saleInfo->sale_price; $depotRecycle->number = $number; $depotRecycle->sum_price = $saleInfo->sale_price * $number; $depotRecycle->sale_id = $saleId; $depotRecycle->status = MaterialCode::UN_AUDIT; $depotRecycle->city_id = $cityId; $depotRecycle->kitchen_id = $kitchenId; $depotRecycle->operator_id = $this->userId; if (!$depotRecycle->save()) throw new ErrException('回收发生异常'); return $this->return->success(); } public function recycleUpdate():array { $id = (int)$this->request->input('id'); $number = (double)$this->request->input('number'); $info = $this->DepotRecycleModel->getInfoById($id); if ($info->status == MaterialCode::AUDITED) throw new ErrException('记录已审核通过'); $old_number = $info->number; $sum_price = $info->recycle_price * $number; $info->number = $number; $info->sum_price = $sum_price; $info->status = MaterialCode::UN_AUDIT; $saleInfo = $this->DepotSaleModel->getInfoById($info->sale_id); $saleInfo->back_number = $saleInfo->back_number + $number - $old_number; if ($saleInfo->back_number > $saleInfo->number) throw new ErrException('回收数量不能大于出库数量'); if (!$info->save()) throw new ErrException('商品回收数量修改失败'); return $this->return->success(); } public function recycleDelete():array { $id = (int)$this->request->input('id'); $info = $this->DepotRecycleModel->getInfoById($id); if ($info->status == MaterialCode::AUDITED) throw new ErrException('该记录已审核通过'); $info->is_del = MaterialCode::IS_DEL; if (!$info->save()) throw new ErrException('回收删除失败'); return $this->return->success(); } public function recycleList():array { $limit = (int)$this->request->input('limit', 10); $id = (int)$this->request->input('query_id'); $kitchenId = (int)$this->request->input('query_kitchen_id'); $list = $this->DepotRecycleModel ->leftJoin('depot','depot_recycle.depot_id','=','depot.id') ->leftJoin('material','depot_recycle.material_id','=','material.id') ->leftJoin('supplier','depot_recycle.supplier_id','=','supplier.id') ->leftJoin('admin_user','depot_recycle.operator_id','=','admin_user.id') ->where('depot_recycle.is_del',MaterialCode::IS_NO_DEL) ->where('depot_recycle.operator_id',$this->userId) ->when($id,function ($query) use ($id) { $query->where('depot_recycle.id',$id); }) ->when($kitchenId > 0,function($query) use($kitchenId){ $query->where('depot_recycle.kitchen_id',$kitchenId); }) ->paginate($limit,['depot_recycle.*','material.name as material_name','supplier.name as supplier_name','admin_user.chinese_name as operator_name','depot.name as depot_name']) ->toArray(); return $this->return->success('success',$list); } }