diff --git a/app/Http/Controllers/Goods/GoodsSkusController.php b/app/Http/Controllers/Goods/GoodsSkusController.php index f72f1a7..044d95e 100644 --- a/app/Http/Controllers/Goods/GoodsSkusController.php +++ b/app/Http/Controllers/Goods/GoodsSkusController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\GoodsRequest; use App\Http\Requests\GoodsSkuRequest; use App\Models\Goods; +use App\Models\Log; use App\Models\Log as LogModel; use App\Utils\FormatUtils; use Illuminate\Http\Request; @@ -36,10 +37,20 @@ class GoodsSkusController extends Controller $goods = Goods::query()->filter()->get()->toArray(); $goodsIds = array_column($goods, 'id'); // 状态变更时间查询,日志 - + $ids = []; + if ($request->get('keyword_type', '') && $request->get('keyword_value', '')) { + $ids = Log::query()->where('target_type', 'sku') + ->where('target_field', $request->keyword_type) + ->whereBetween('created_at', explode(' - ', $request->keyword_value)) + ->pluck('sku_id') + ->toArray(); + } $day = FormatUtils::date(); $goodsSkus = GoodsSku::query() ->whereIn('goods_id', $goodsIds) + ->when($ids, function ($query, $ids) { + return $query->whereIn('id', $ids); + }) ->filter() ->with(['goods' => function ($query) { $query->with(['type:id,name', 'brand:id,name']); @@ -133,11 +144,13 @@ class GoodsSkusController extends Controller 'user_id' => $request->user()->id ]; // 成本 - $goodsSku = GoodsSku::query()->where('id', $sku['id'])->first(['id', 'cost']); + $goodsSku = GoodsSku::query()->where('id', $sku['id'])->first(['id', 'cost', 'stock', 'num']); $costLog['target_field'] = 'cost'; $costLog['before_update'] = $goodsSku->cost; $goodsSku->cost = $sku['cost']; $goodsSku->reference_price = $sku['cost'] * 1.5; + $goodsSku->stock += $sku['arrived_today_num']; + $goodsSku->num += $sku['arrived_today_num']; $goodsSku->save(); $costLog['after_update'] = $goodsSku->cost; $logs[] = $costLog; @@ -145,7 +158,7 @@ class GoodsSkusController extends Controller $record = DailyStockRecord::query()->where('sku_id', $sku['id'])->where('day', FormatUtils::date())->first(['id', 'arrived_today_num']); $arrivedLog['target_field'] = 'arrived_today_num'; $arrivedLog['before_update'] = $record->arrived_today_num; - $record->arrived_today_num = $sku['arrived_today_num']; + $record->arrived_today_num += $sku['arrived_today_num']; $record->save(); $arrivedLog['after_update'] = $record->arrived_today_num; $logs[] = $arrivedLog; @@ -207,7 +220,7 @@ class GoodsSkusController extends Controller $update = reset($skus); DB::beginTransaction(); try { - $sku = GoodsSku::query()->where('id', $update['id'])->get(['id', 'two_days_ago_num', 'yesterday_num']); + $sku = GoodsSku::query()->where('id', $update['id'])->get(['id', 'two_days_ago_num', 'yesterday_num', 'num', 'stock']); $record = DailyStockRecord::query() ->where('sku_id', $sku->id) ->where('day', FormatUtils::date()) @@ -215,10 +228,12 @@ class GoodsSkusController extends Controller $this->setBeforeUpdate([ 'two_days_ago_num' => $sku->two_days_ago_num, 'yesterday_num' => $sku->yesterday_num, + 'num' => $sku->num, 'arrived_today_num' => $record->arrived_today_num, ]); $sku->two_days_ago_num = $update['two_days_ago_num']; - $sku->yesterday_num = $update['two_days_ago_num']; + $sku->yesterday_num = $update['yesterday_num']; + $sku->num = $update['two_days_ago_num'] + $update['yesterday_num'] + $sku->stock; $sku->save(); $record->arrived_today_num = $update['arrived_today_num']; $record->save(); @@ -284,12 +299,21 @@ class GoodsSkusController extends Controller ->where('sku_id', $id) ->where('day', FormatUtils::date()) ->first(['id', 'loss_num']); - $this->log->message = $request->input('reason', ''); + $this->log->message = $request->get('reason'); + $this->setBeforeUpdate($model->loss_num); + $model->loss_num += $request->loss_num; } else { $model = GoodsSku::query()->find($id); + $this->setBeforeUpdate($model->$updateField); + if ('reserve' === $updateField) { + $changeNum = $model->reserve - $request->reserve; + $model->stock += $changeNum; + $model->reserve = $request->reserve; + $model->num += $changeNum; + } else { + $model->$updateField = $request->$updateField; + } } - $this->setBeforeUpdate($model->$updateField); - $model->$updateField = $request->$updateField; $model->save(); $this->setAfterUpdate($model->$updateField); $this->addLog($id, $updateField);