From 20e8d15cbe93f8aab20b4940506a1fd373b5047f Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Mon, 14 Aug 2023 14:29:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E4=B8=8A/=E7=BA=BF=E4=B8=8B=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E6=97=B6=EF=BC=8C=E5=9B=BA=E5=AE=9A=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=B1=BB=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Store/StockTotalController.php | 10 ++++++++- app/Admin/Forms/OrderPackage.php | 9 +++----- .../Repositories/StoreTockRepository.php | 21 ++++++++++++++++--- app/Listeners/OrderPackage.php | 7 ++----- app/Models/Store/ProductSku.php | 5 +++++ 5 files changed, 37 insertions(+), 15 deletions(-) diff --git a/app/Admin/Controllers/Store/StockTotalController.php b/app/Admin/Controllers/Store/StockTotalController.php index d5db3275..23dfc546 100644 --- a/app/Admin/Controllers/Store/StockTotalController.php +++ b/app/Admin/Controllers/Store/StockTotalController.php @@ -15,6 +15,13 @@ class StockTotalController extends AdminController protected function grid() { // return Grid::make(ProductSku::with(['productSku.category', 'stockLogs']), function (Grid $grid) { + $request = request(); + if (!$request->filled('date.start')) { + $request->offsetSet('date.start', now()->startOfMonth()->format('Y-m-d')); + } + if (!$request->filled('date.end')) { + $request->offsetSet('date.end', now()->format('Y-m-d')); + } return Grid::make(new StoreTockRepository, function (Grid $grid) { $tags = StockLog::tags()->get(); $grid->column('store_name', '门店'); @@ -23,6 +30,7 @@ class StockTotalController extends AdminController $grid->column('cost_price', '成本单价'); $grid->column('sell_price', '售价'); + $grid->column('init_stock', '初期库存'); $grid->column('tag_in', '入库数'); $grid->column('tag_sell', '销售数'); $grid->column('tag_online', '线上销售数'); @@ -45,7 +53,7 @@ class StockTotalController extends AdminController $grid->footer(function ($collection) use ($grid) { $total = $grid->model()->repository()->getTotal($grid->model()); - $html = ''; + $html = '
'; $html .= ''; $html .= ''; $html .= ''; diff --git a/app/Admin/Forms/OrderPackage.php b/app/Admin/Forms/OrderPackage.php index e4348fdf..4448a678 100644 --- a/app/Admin/Forms/OrderPackage.php +++ b/app/Admin/Forms/OrderPackage.php @@ -12,7 +12,7 @@ use Illuminate\Support\Facades\DB; use Throwable; use Dcat\Admin\Admin; use App\Models\Store\ProductSku as StoreProductSku; -use App\Models\Store\Store; +use App\Models\Store\{Store, StockLog}; class OrderPackage extends Form implements LazyRenderable { @@ -48,14 +48,11 @@ class OrderPackage extends Form implements LazyRenderable $orderPackageService->createPackage($order, $input); // 店铺发货, 添加出库记录 $store_id = data_get($input, 'store_id', $order->store_id); + $tag_id = StockLog::TAG_SEND; if ($store_id) { $packageProducts = $input['packages']; $operator = Admin::user(); $store = Store::findOrFail($store_id); - $tag = Tag::firstOrCreate([ - 'type' => Tag::TYPE_STORE_STOCK, - 'name' => '发货' - ]); foreach($packageProducts as $item) { $order_product = $order->products()->findOrFail($item['order_product_id']); $amount = $item['quantity']; @@ -77,7 +74,7 @@ class OrderPackage extends Form implements LazyRenderable 'amount' => 0-$amount, 'product_sku_id' => $product->id, 'remarks' => '后台发货', - 'tag_id' => $tag->id + 'tag_id' => $tag_id, ]); } } diff --git a/app/Admin/Repositories/StoreTockRepository.php b/app/Admin/Repositories/StoreTockRepository.php index 8cf2f392..82da5e28 100644 --- a/app/Admin/Repositories/StoreTockRepository.php +++ b/app/Admin/Repositories/StoreTockRepository.php @@ -49,6 +49,8 @@ class StoreTockRepository extends Repository 'tag_loss' => $loss, // 自用数 'tag_self' => $self, + // 初期库存 + 'init_stock' => data_get($item->stockLog, 'balance', 0), // 调货数 = 出库数 'tag_out' => $stock->where('product_sku_id', $item->product_sku_id)->where('tag_id', StockLog::TAG_OUT)->sum('amount'), // 毛利 = (入库数-报损数-自用数) x (售价-成本) @@ -68,14 +70,27 @@ class StoreTockRepository extends Repository 'stockLogs' => function ($q) use ($model) { $q->select('id', 'product_sku_id', DB::raw('abs(`amount`) as `amount`'), 'tag_id'); if ($start = $model->filter()->input('date.start')) { - $start = Carbon::createFromFormat('Y-m-d', $start); + $start = Carbon::createFromFormat('Y-m-d', $start)->startOfDay(); $q->where('created_at', '>=', $start); } if ($end = $model->filter()->input('date.end')) { - $end = Carbon::createFromFormat('Y-m-d', $end); + $end = Carbon::createFromFormat('Y-m-d', $end)->endOfDay(); $q->where('created_at', '<=', $end); } - } + if ($store_id = $model->filter()->input('store_id')) { + $q->where('store_id', $store_id); + } + }, + 'stockLog' => function ($q) use ($model) { + if ($store_id = $model->filter()->input('store_id')) { + $q->where('store_id', $store_id); + } + if ($start = $model->filter()->input('date.start')) { + $start = Carbon::createFromFormat('Y-m-d', $start)->startOfDay(); + $q->where('created_at', '<=', $start); + } + $q->orderBy('created_at', 'desc')->limit(1); + }, ]); // 查询条件 diff --git a/app/Listeners/OrderPackage.php b/app/Listeners/OrderPackage.php index 11fbe3ba..6dfc0bd3 100644 --- a/app/Listeners/OrderPackage.php +++ b/app/Listeners/OrderPackage.php @@ -9,6 +9,7 @@ use App\Models\{Order, OrderPre, Tag, User}; use Illuminate\Support\Facades\DB; use Throwable; use App\Exceptions\BizException; +use App\Models\Store\StockLog; class OrderPackage { @@ -39,10 +40,6 @@ class OrderPackage $inviter = $order->inviter_id ? User::find($order->inviter_id) : null; try { DB::beginTransaction(); - $tag = Tag::firstOrCreate([ - 'type' => Tag::TYPE_STORE_STOCK, - 'name' => '提货' - ]); $order_products = $order->products; // 根据 order_pres 发货数量, 自动发货 $service_package = new \App\Admin\Services\OrderPackageService(); @@ -80,7 +77,7 @@ class OrderPackage 'balance' => $balance, 'product_sku_id' => $product->id, 'remarks' => '店铺提货(自动)', - 'tag_id' => $tag->id + 'tag_id' => StockLog::TAG_CARRY ]); } } diff --git a/app/Models/Store/ProductSku.php b/app/Models/Store/ProductSku.php index 5f01257d..ddabe8ff 100644 --- a/app/Models/Store/ProductSku.php +++ b/app/Models/Store/ProductSku.php @@ -36,4 +36,9 @@ class ProductSku extends Model { return $this->hasMany(StockLog::class, 'product_sku_id', 'product_sku_id'); } + + public function stockLog() + { + return $this->hasOne(StockLog::class, 'product_sku_id', 'product_sku_id'); + } }
入库总成本: '.data_get($total, 'total_in').'销售总金额: '.data_get($total, 'total_sell').'线上销售总金额: '.data_get($total, 'total_online').'