mirror of
https://gitee.com/hzchunfen/erp.git
synced 2025-11-30 22:20:45 +00:00
鲜花2.0-采购流程变更
This commit is contained in:
parent
ea65bcee66
commit
a43d8b0c81
@ -5,6 +5,8 @@ namespace App\Http\Controllers\Supplier;
|
||||
use App\Events\BatchStockUpdateEvent;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Enum\ExcelKeyEnum;
|
||||
use App\Http\Enum\Purchase\PurchaseConfigEnum;
|
||||
use App\Http\Enum\Purchase\PurchaseStatusEnum;
|
||||
use App\Http\Enum\TargetTypeEnum;
|
||||
use App\Http\Resources\GoodsSkuResource;
|
||||
use App\Http\Resources\RolesResource;
|
||||
@ -29,6 +31,8 @@ use Maatwebsite\Excel\Facades\Excel;
|
||||
|
||||
class PurchaseRecordController extends Controller
|
||||
{
|
||||
public $isAutoCheck = 0;
|
||||
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->log = new LogModel([
|
||||
@ -95,12 +99,13 @@ class PurchaseRecordController extends Controller
|
||||
$purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString();
|
||||
} else {
|
||||
$purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString();
|
||||
|
||||
}
|
||||
$purchaseRecords->save();
|
||||
$allParams['user_id'] = $request->user()->id;
|
||||
$updateIds = GoodSkuService::computeSkuStock($goodsSku->toArray(), $allParams, TargetTypeEnum::PURCHASE);
|
||||
event(new BatchStockUpdateEvent($updateIds));
|
||||
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||
$allParams['user_id'] = $request->user()->id;
|
||||
$updateIds = GoodSkuService::computeSkuStock($goodsSku->toArray(), $allParams, TargetTypeEnum::PURCHASE);
|
||||
event(new BatchStockUpdateEvent($updateIds));
|
||||
}
|
||||
} else {
|
||||
$this->res = [
|
||||
'httpCode' => 400,
|
||||
@ -140,6 +145,9 @@ class PurchaseRecordController extends Controller
|
||||
if (!empty($allParams['expire_time'])) {
|
||||
$purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString();
|
||||
}
|
||||
if (!empty($allParams['arrived_time'])) {
|
||||
$purchaseRecords->arrived_time = Carbon::parse($allParams['arrived_time'])->toDateTimeString();
|
||||
}
|
||||
|
||||
$purchaseRecords->save();
|
||||
|
||||
@ -175,10 +183,10 @@ class PurchaseRecordController extends Controller
|
||||
$purchaseOrders = $request->input('purchaseOrders') ?? [];
|
||||
$externalSkuIds = collect($purchaseOrders)->pluck("external_sku_id")->toArray();
|
||||
$goodsSku = GoodsSku::query()->whereIn('external_sku_id', $externalSkuIds)->get();
|
||||
if ($goodsSku->pluck("external_sku_id")->diff($externalSkuIds)->isNotEmpty()) {
|
||||
$content = implode(',', $goodsSku->pluck("external_sku_id")->diff($externalSkuIds)->toArray());
|
||||
if (collect($externalSkuIds)->diff($goodsSku->pluck("external_sku_id"))->isNotEmpty()) {
|
||||
$content = implode(',', collect($externalSkuIds)->diff($goodsSku->pluck("external_sku_id"))->toArray());
|
||||
$content .= "以上sku编码数据库中不存在";
|
||||
return response($content, $this->res['httpCode']);
|
||||
return response($content, 400);
|
||||
}
|
||||
$goodsSkuMap = $goodsSku->pluck(null, 'external_sku_id')->toArray();
|
||||
$allUpdateIds = [];
|
||||
@ -199,15 +207,21 @@ class PurchaseRecordController extends Controller
|
||||
$purchaseRecords->buyer_name = $v['buyer_name'] ?? '';
|
||||
$purchaseRecords->supplier_name = $v['supplier_name'] ?? '';
|
||||
$purchaseRecords->supplier_id = $v['supplier_id'] ?? 0;
|
||||
$purchaseRecords->arrived_time = $v['arrived_time'] ?? Carbon::now()->toDateTimeString();
|
||||
$purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString();
|
||||
$purchaseRecords->save();
|
||||
$v['user_id'] = $request->user()->id;
|
||||
$updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, $v, TargetTypeEnum::PURCHASE);
|
||||
$allUpdateIds = array_merge($allUpdateIds, $updateIds);
|
||||
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||
$v['user_id'] = $request->user()->id;
|
||||
$updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, $v, TargetTypeEnum::PURCHASE);
|
||||
$allUpdateIds = array_merge($allUpdateIds, $updateIds);
|
||||
}
|
||||
|
||||
}
|
||||
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||
//如果是組合商品会触发重算逻辑
|
||||
event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray()));
|
||||
}
|
||||
|
||||
//如果是組合商品会触发重算逻辑
|
||||
event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray()));
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
|
||||
@ -237,5 +251,35 @@ class PurchaseRecordController extends Controller
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 报损单后台批量存储
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response|void
|
||||
*/
|
||||
public function purchaseBatchCheck(Request $request)
|
||||
{
|
||||
$params = $request->validate([
|
||||
'purchaseOrders' => 'required|array',
|
||||
'purchaseOrders.*.id' => 'required|integer',
|
||||
'purchaseOrders.*.status' => 'required|in:1,2']);
|
||||
$allUpdateIds = [];
|
||||
foreach ($params['purchaseOrders'] as $v) {
|
||||
$purchaseRecords = PurchaseRecords::query()->with("goodsSku")->where("id", $v['id'])->first();
|
||||
if (empty($purchaseRecords)) {
|
||||
continue;
|
||||
}
|
||||
$purchaseRecords->status = $v['status'];
|
||||
$purchaseRecords->save();
|
||||
if (PurchaseStatusEnum::CHECK_SUCCESS == $v['status']) {
|
||||
$updateIds = GoodSkuService::computeSkuStock($v['goodsSku'], $v, TargetTypeEnum::PURCHASE);
|
||||
$allUpdateIds = array_merge($allUpdateIds, $updateIds);
|
||||
}
|
||||
}
|
||||
if(!empty($allUpdateIds)){
|
||||
event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray()));
|
||||
}
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
11
app/Http/Enum/Purchase/PurchaseConfigEnum.php
Normal file
11
app/Http/Enum/Purchase/PurchaseConfigEnum.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Enum\Purchase;
|
||||
|
||||
|
||||
class PurchaseConfigEnum
|
||||
{
|
||||
|
||||
const IS_AUTO_CHECK = 0;
|
||||
|
||||
}
|
||||
11
app/Http/Enum/Purchase/PurchaseStatusEnum.php
Normal file
11
app/Http/Enum/Purchase/PurchaseStatusEnum.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Enum\Purchase;
|
||||
|
||||
|
||||
class PurchaseStatusEnum
|
||||
{
|
||||
const WAIT_CHECK = 0;
|
||||
const CHECK_SUCCESS = 1;
|
||||
const CHECK_FAILED = 2;
|
||||
}
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Imports;
|
||||
|
||||
use App\Events\BatchStockUpdateEvent;
|
||||
use App\Http\Enum\Purchase\PurchaseConfigEnum;
|
||||
use App\Http\Enum\TargetTypeEnum;
|
||||
use App\Jobs\SyncCostToMiaoXuan;
|
||||
use App\Models\DailyStockRecord;
|
||||
@ -79,14 +80,16 @@ class PurchaseImport implements ToArray, SkipsEmptyRows
|
||||
$purchaseRecords->supplier_id = $supplierIdKeyByNameMap[$row[5]] ?? 0;
|
||||
$purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString();
|
||||
$purchaseRecords->save();
|
||||
|
||||
$updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, ["num" => $row[2], 'cost' => $row[3]], TargetTypeEnum::PURCHASE);
|
||||
$allUpdateIds = array_merge($allUpdateIds, $updateIds);
|
||||
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||
$updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, ["num" => $row[2], 'cost' => $row[3]], TargetTypeEnum::PURCHASE);
|
||||
$allUpdateIds = array_merge($allUpdateIds, $updateIds);
|
||||
}
|
||||
}
|
||||
Log::info("采购导入内容:", $collection);
|
||||
Log::info("allUpdateIds:", $allUpdateIds);
|
||||
// 批量更新
|
||||
event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray()));
|
||||
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||
// 批量更新
|
||||
event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,6 +33,7 @@ class SaleDataService
|
||||
return static::skuSaleStatisticsByHistory($request);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* sku维度 今日实时统计
|
||||
*/
|
||||
@ -130,7 +131,7 @@ class SaleDataService
|
||||
return $v;
|
||||
})->pluck(null, "external_sku_id")->toArray();
|
||||
Log::info("combineGoodsSkus", $combineGoodsSkus);
|
||||
$orderItems->getCollection()· use ($combineGoodsSkus) {
|
||||
$orderItems->getCollection()->map(function ($v) use ($combineGoodsSkus) {
|
||||
if (!empty($combineGoodsSkus[$v['external_sku_id']])) {
|
||||
foreach ($combineGoodsSkus[$v['external_sku_id']] as $key => $val) {
|
||||
$v->$key = $val;
|
||||
|
||||
@ -102,6 +102,8 @@ Route::middleware(['auth:api', 'check.permissions'])->group(function () {
|
||||
Route::post('purchase_record/purchase_batch_store', [PurchaseRecordController::class, 'purchaseBatchStore'])->name('purchase_record.purchase_batch_store');
|
||||
Route::post('daily_stock_record/inventory_batch_store', [DailyStockRecordController::class, 'inventoryBatchStore'])->name('daily_stock_record.inventory_batch_store');
|
||||
|
||||
Route::post('purchase_record/purchase_batch_check', [PurchaseRecordController::class, 'purchaseBatchCheck'])->name('purchase_record.purchase_batch_check');
|
||||
|
||||
Route::get('user/user_roles', [UsersController::class, 'userRoles'])->name('users.user_roles');
|
||||
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user