'总采购金额', 'desc' => '平台采购商品总支付金额', 'total_money' => WarehouseOrder::sum('total_price'), 'value' => [], 'type' => 1, ]; $topData[] = [ 'title' => '已结算金额', 'desc' => '平台支付给供应商的金额', 'total_money' => WarehouseOrder::sum('completed_amount'), 'value' => [], 'type' => 1, ]; $topData[] = [ 'title' => '未结算金额', 'desc' => '平台未支付给供应商的金额', 'total_money' => WarehouseOrder::sum('outstanding_amount'), 'value' => [], 'type' => 1, ]; $toreProduct = StoreProduct::where('stock', '>', 0)->field('sum(stock) as stock,sum(total_price) as total_price')->find(); $topData[] = [ 'title' => '总商品库存', 'desc' => '平台统计商品总库存、含门店仓库', 'total_money' => $toreProduct['stock'], 'cash_title' => $toreProduct['total_price'], 'value' => [], 'type' => 1, ]; $warehouseProductStorege = WarehouseProductStorege::where('nums', '>', 0)->field('sum(nums) as nums,sum(total_price) as total_price')->find(); $topData[] = [ 'title' => '总仓库库存', 'desc' => '平台统计仓库库存', 'total_money' => $warehouseProductStorege['nums'], 'cash_title' => $warehouseProductStorege['total_price'], 'value' => [], 'type' => 1, ]; $warehouseProductStorege_1 = WarehouseProductStorege::where('nums', '>', 0)->where('warehouse_id', 1)->field('sum(nums) as nums,sum(total_price) as total_price')->find(); $topData[] = [ 'title' => '海吉星仓库库存', 'desc' => '平台统计海吉星仓库库存', 'total_money' => $warehouseProductStorege_1['nums'], 'cash_title' => $warehouseProductStorege_1['total_price'], 'value' => [], 'type' => 1, ]; $warehouseProductStorege_2 = WarehouseProductStorege::where('nums', '>', 0)->where('warehouse_id', 2)->field('sum(nums) as nums,sum(total_price) as total_price')->find(); $topData[] = [ 'title' => '泸县集采集配库存', 'desc' => '平台统计泸县集采集配库存', 'total_money' => $warehouseProductStorege_2['nums'], 'cash_title' => $warehouseProductStorege_2['total_price'], 'value' => [], 'type' => 1, ]; $storeBranchProduct = StoreBranchProduct::where('stock', '>', 0)->field('sum(stock) as stock,sum(total_price) as total_price')->find(); $topData[] = [ 'title' => '总门店库存', 'desc' => '平台统计门店库存', 'total_money' => $storeBranchProduct['stock'], 'cash_title' => $storeBranchProduct['total_price'], 'value' => [], 'type' => 1, ]; $data['series'] = []; foreach ($topData as $k => $v) { // $data['x'] = $Chain['out']['x']; $data['series'][$k]['name'] = $v['title']; $data['series'][$k]['desc'] = $v['desc']; $data['series'][$k]['total_value'] = $v['total_money']; $data['series'][$k]['total_money'] = $v['cash_title'] ?? ''; $data['series'][$k]['type'] = $v['type']; } return $data; } /** * 统计门店仓库总库存 * @return array */ public static function total_warehouse_list($parmas, $type = 1) { if ($type == 1) { $list = StoreBranchProduct::where('stock', '>', 0)->where('product_id', $parmas['product_id']) ->select()->each(function ($item) { $item->system_store = SystemStore::where('id', $item['store_id'])->value('name'); $item->total_price = bcmul($item->purchase, $item->stock, 2); }); $count = StoreBranchProduct::where('stock', '>', 0)->where('product_id', $parmas['product_id']) ->count(); } else { $list = WarehouseProductStorege::where('nums', '>', 0)->where('product_id', $parmas['product_id'])->select()->each(function ($item) { $item->warehouse_name = Warehouse::where('id', $item['warehouse_id'])->value('name'); $find = StoreProduct::where('id', $item['product_id'])->find(); $item->store_name = $find['store_name']; $item->image = $find['image']; $item->purchase = $find['purchase']; if ($find['purchase'] > 0 && $item->nums > 0) { $item->total_price = bcmul($find['purchase'], $item->nums, 2); } else { $item->total_price = 0; } }); $count = WarehouseProductStorege::where('nums', '>', 0)->where('product_id', $parmas['product_id'])->count(); } return ['lists' => $list, 'count' => $count]; } /** * 统计商品采购总价 已结未结 * @return array */ public static function total_warehouse_product_list($parmas, $type = 1) { $list = []; $count = 0; if ($type == 1) { //总采购价 $where = [['product_id', '=', $parmas['product_id']], ['nums', '>', 0], ['financial_pm', '=', 1]]; $list = WarehouseProduct::where($where)->select()->each(function ($item) { $item->warehouse_name = Warehouse::where('id', $item['warehouse_id'])->value('name'); $item->supplier_name = Supplier::where('id', $item['supplier_id'])->value('mer_name'); $find = StoreProduct::where('id', $item['product_id'])->find(); $item->store_name = $find['store_name']; $item->image = $find['image']; }); $count = WarehouseProduct::where($where)->count(); } elseif ($type == 2) { //已结算采购价 $where = [['product_id', '=', $parmas['product_id']], ['nums', '>', 0], ['financial_pm', '=', 1], ['is_pay', '=', 1]]; $list = WarehouseProduct::where($where)->select()->each(function ($item) { $item->warehouse_name = Warehouse::where('id', $item['warehouse_id'])->value('name'); $item->supplier_name = Supplier::where('id', $item['supplier_id'])->value('mer_name'); $find = StoreProduct::where('id', $item['product_id'])->find(); $item->store_name = $find['store_name']; $item->image = $find['image']; }); $count = WarehouseProduct::where($where)->count(); } elseif ($type == 3) { //未结算采购价 $where = [['product_id', '=', $parmas['product_id']], ['nums', '>', 0], ['financial_pm', '=', 1], ['is_pay', '=', 0]]; $list = WarehouseProduct::where($where)->select()->each(function ($item) { $item->warehouse_name = Warehouse::where('id', $item['warehouse_id'])->value('name'); $item->supplier_name = Supplier::where('id', $item['supplier_id'])->value('mer_name'); $find = StoreProduct::where('id', $item['product_id'])->find(); $item->store_name = $find['store_name']; $item->image = $find['image']; }); $count = WarehouseProduct::where($where)->count(); } return ['lists' => $list, 'count' => $count]; } /** * 负库存检测 */ public static function negativeInventory($parmas) { if ($parmas['type'] == 1) { $list = StoreProduct::where('stock', '<', 0)->page($parmas['page_no'], 15)->select()->toArray(); $count = StoreProduct::where('stock', '<', 0)->count(); } elseif ($parmas['type'] == 2) { $where[]=['stock','<',0]; if(isset($parmas['store_id']) && $parmas['store_id'] > 0){ $where[]=['store_id','=',$parmas['store_id']]; } $store_arr=getenv('NO_STORE_STATISTICS'); if($store_arr){ $store_arr=explode(',',$store_arr); $where[]=['store_id','not in',$store_arr]; } $list = StoreBranchProduct::where($where)->page($parmas['page_no'], 15)->select() ->each(function ($item) { $item->remark = SystemStore::where('id', $item['store_id'])->value('name'); }) ->toArray(); $count = StoreBranchProduct::where($where)->count(); } elseif ($parmas['type'] == 3) { $list = WarehouseProductStorege::where('nums', '<', 0)->page($parmas['page_no'], 15)->select() ->each(function ($item) { $find = StoreProduct::where('id', $item['product_id'])->find(); $item->store_name = $find['store_name']; $item->image = $find['image']; $item->stock = $item['nums']; $item->remark = Warehouse::where('id', $item['warehouse_id'])->value('name'); })->toArray(); $count = WarehouseProductStorege::where('nums', '<', 0)->count(); } return ['lists' => $list, 'count' => $count]; } /** * 负库存更新归0 */ public static function updateNegativeZero($parmas) { if ($parmas['type'] == 1) { $res = StoreProduct::where('id',$parmas['id'])->update(['stock'=>0]); } elseif ($parmas['type'] == 2) { $res=StoreBranchProduct::where('id',$parmas['id'])->update(['stock'=>0]); } elseif ($parmas['type'] == 3) { $res = WarehouseProductStorege::where('id',$parmas['id'])->update(['nums'=>0]); } return $res; } public static function stockProductPrice($parmas){ $arr1=WarehouseProductStorege::where('nums','>',0)->select(); foreach ($arr1 as $k=>$v){ $find=StoreProduct::where('id',$v['product_id'])->find(); if($find&& $find['price']>0){ $total_price=bcmul($find['price'],$v['nums'],2); $price=$find['price']; }else{ $total_price=0; $price=0; } WarehouseProductStorege::where('id',$v['id'])->update(['price'=>$price,'total_price'=>$total_price]); } $arr2=StoreBranchProduct::where('stock','>',0)->select(); foreach ($arr2 as $k=>$v){ if($v['price']>0){ $total_price=bcmul($v['price'],$v['stock'],2); }else{ $total_price=0; } StoreBranchProduct::where('id',$v['id'])->update(['total_price'=>$total_price]); } $arr3=WarehouseProductStorege::where('nums','>',0)->field('product_id,sum(nums) as nums')->select(); foreach ($arr3 as $k=>$v){ StoreProduct::where('id',$v['product_id'])->update(['stock'=>$v['nums']]); } $arr4=StoreBranchProduct::where('stock','>',0)->field('product_id,sum(stock) as stock')->group('product_id')->order('stock desc')->select(); foreach ($arr4 as $k=>$v){ $find=StoreProduct::where('id',$v['product_id'])->find(); if($find){ $stock=bcadd($find['stock'],$v['stock'],2); $find->total_price=bcmul($find['purchase'],$v['stock'],2); $find->stock=$stock; $find->save(); } } return true; } }