'总采购金额', '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, ]; $pay_price=StoreOrder::where('paid',1)->where('refund_status',0)->sum('pay_price'); // $refund_price=StoreOrder::where('paid',1)->sum('refund_price'); $topData[] = [ 'title' => '交易金额', 'desc' => '平台发生交易的金额', 'total_money' =>$pay_price, 'value' => [], 'type' => 1, ]; $number=StoreFinanceFlow::where('financial_type',3)->where('financial_pm',1)->sum('number'); $topData[] = [ 'title' => '获得利润', 'desc' => '平台订单产生的手续费', 'total_money' =>$number, 'value' => [], 'type' => 1, ]; // $toreProduct = StoreProduct::where('stock', '>', 0)->field('sum(stock) as stock,sum(total_price) as total_price')->find(); $warehouseProductStorege = WarehouseProductStorege::where('nums', '>', 0)->field('sum(nums) as nums,sum(total_price) as total_price')->find(); $storeBranchProduct = StoreBranchProduct::where('stock', '>', 0)->field('sum(stock) as stock,sum(total_price) as total_price')->find(); $topData[] = [ 'title' => '总商品库存', 'desc' => '平台统计商品总库存、含门店仓库', 'total_money' => bcadd($warehouseProductStorege['nums'], $storeBranchProduct['stock'], 2), 'cash_title' => bcadd($warehouseProductStorege['total_price'], $storeBranchProduct['total_price'], 2), '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, ]; $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) { $where[]= ['stock', '<', 0]; if($parmas['store_name']!=''){ $where[]=['store_name','like','%'.$parmas['store_name'].'%']; } if($parmas['top_cate_id']!=''){ $where[]=['top_cate_id','=',$parmas['top_cate_id']]; } $list = StoreProduct::where($where)->page($parmas['page_no'], 15)->select()->toArray(); $count = StoreProduct::where($where)->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]; } if($parmas['store_name']!=''){ $where[]=['store_name','like','%'.$parmas['store_name'].'%']; } if($parmas['top_cate_id']!=''){ $where[]=['top_cate_id','=',$parmas['top_cate_id']]; } $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) { $where[]=['nums','<',0]; $where2=[]; if($parmas['store_name']!=''){ $where2[]=['store_name','like','%'.$parmas['store_name'].'%']; } if($parmas['top_cate_id']!=''){ $where2[]=['top_cate_id','=',$parmas['top_cate_id']]; } if($where2){ $ids=StoreProduct::where($where2)->column('id'); $where[]=['product_id','in',$ids]; } $list = WarehouseProductStorege::where($where)->page($parmas['page_no'], 15)->select() ->each(function ($item) { $find = StoreProduct::where('id', $item['product_id'])->withTrashed()->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($where)->count(); } return ['lists' => $list, 'count' => $count]; } /** * 负库存更新归0 */ public static function updateNegativeZero($parmas,$admin_id=0) { if ($parmas['type'] == 1) { $res = StoreProduct::where('id', $parmas['id'])->update(['stock' => 0]); SqlChannelLog('StoreProduct', $parmas['id'], 0, 0, Request()->url(),$admin_id); } elseif ($parmas['type'] == 2) { $res = StoreBranchProduct::where('id', $parmas['id'])->update(['stock' => 0]); SqlChannelLog('StoreBranchProduct', $parmas['id'], 0, 0, Request()->url(),$admin_id); } elseif ($parmas['type'] == 3) { $res = WarehouseProductStorege::where('id', $parmas['id'])->update(['nums' => 0]); SqlChannelLog('WarehouseProductStorege', $parmas['id'], 0, 0, Request()->url(),$admin_id); } 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 = StoreProduct::where('stock', '>=', 0)->select(); foreach ($arr3 as $k => $v) { $stock = StoreBranchProduct::where('product_id', $v['id'])->where('stock', '>', 0)->sum('stock'); $nums = WarehouseProductStorege::where('nums', '>', 0)->where('product_id', $v['id'])->sum('nums'); $stock2 = bcadd($stock, $nums, 2); bcmul($v['purchase'], $stock2, 2); StoreProduct::where('id', $v['id'])->update(['stock' => $stock2, 'total_price' => $v]); } return true; } }