mirror of
https://gitee.com/hzchunfen/erp.git
synced 2025-12-01 06:30:49 +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\Events\BatchStockUpdateEvent;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Enum\ExcelKeyEnum;
|
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\Enum\TargetTypeEnum;
|
||||||
use App\Http\Resources\GoodsSkuResource;
|
use App\Http\Resources\GoodsSkuResource;
|
||||||
use App\Http\Resources\RolesResource;
|
use App\Http\Resources\RolesResource;
|
||||||
@ -29,6 +31,8 @@ use Maatwebsite\Excel\Facades\Excel;
|
|||||||
|
|
||||||
class PurchaseRecordController extends Controller
|
class PurchaseRecordController extends Controller
|
||||||
{
|
{
|
||||||
|
public $isAutoCheck = 0;
|
||||||
|
|
||||||
public function __construct(Request $request)
|
public function __construct(Request $request)
|
||||||
{
|
{
|
||||||
$this->log = new LogModel([
|
$this->log = new LogModel([
|
||||||
@ -95,12 +99,13 @@ class PurchaseRecordController extends Controller
|
|||||||
$purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString();
|
$purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString();
|
||||||
} else {
|
} else {
|
||||||
$purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString();
|
$purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString();
|
||||||
|
|
||||||
}
|
}
|
||||||
$purchaseRecords->save();
|
$purchaseRecords->save();
|
||||||
|
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||||
$allParams['user_id'] = $request->user()->id;
|
$allParams['user_id'] = $request->user()->id;
|
||||||
$updateIds = GoodSkuService::computeSkuStock($goodsSku->toArray(), $allParams, TargetTypeEnum::PURCHASE);
|
$updateIds = GoodSkuService::computeSkuStock($goodsSku->toArray(), $allParams, TargetTypeEnum::PURCHASE);
|
||||||
event(new BatchStockUpdateEvent($updateIds));
|
event(new BatchStockUpdateEvent($updateIds));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->res = [
|
$this->res = [
|
||||||
'httpCode' => 400,
|
'httpCode' => 400,
|
||||||
@ -140,6 +145,9 @@ class PurchaseRecordController extends Controller
|
|||||||
if (!empty($allParams['expire_time'])) {
|
if (!empty($allParams['expire_time'])) {
|
||||||
$purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString();
|
$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();
|
$purchaseRecords->save();
|
||||||
|
|
||||||
@ -175,10 +183,10 @@ class PurchaseRecordController extends Controller
|
|||||||
$purchaseOrders = $request->input('purchaseOrders') ?? [];
|
$purchaseOrders = $request->input('purchaseOrders') ?? [];
|
||||||
$externalSkuIds = collect($purchaseOrders)->pluck("external_sku_id")->toArray();
|
$externalSkuIds = collect($purchaseOrders)->pluck("external_sku_id")->toArray();
|
||||||
$goodsSku = GoodsSku::query()->whereIn('external_sku_id', $externalSkuIds)->get();
|
$goodsSku = GoodsSku::query()->whereIn('external_sku_id', $externalSkuIds)->get();
|
||||||
if ($goodsSku->pluck("external_sku_id")->diff($externalSkuIds)->isNotEmpty()) {
|
if (collect($externalSkuIds)->diff($goodsSku->pluck("external_sku_id"))->isNotEmpty()) {
|
||||||
$content = implode(',', $goodsSku->pluck("external_sku_id")->diff($externalSkuIds)->toArray());
|
$content = implode(',', collect($externalSkuIds)->diff($goodsSku->pluck("external_sku_id"))->toArray());
|
||||||
$content .= "以上sku编码数据库中不存在";
|
$content .= "以上sku编码数据库中不存在";
|
||||||
return response($content, $this->res['httpCode']);
|
return response($content, 400);
|
||||||
}
|
}
|
||||||
$goodsSkuMap = $goodsSku->pluck(null, 'external_sku_id')->toArray();
|
$goodsSkuMap = $goodsSku->pluck(null, 'external_sku_id')->toArray();
|
||||||
$allUpdateIds = [];
|
$allUpdateIds = [];
|
||||||
@ -199,15 +207,21 @@ class PurchaseRecordController extends Controller
|
|||||||
$purchaseRecords->buyer_name = $v['buyer_name'] ?? '';
|
$purchaseRecords->buyer_name = $v['buyer_name'] ?? '';
|
||||||
$purchaseRecords->supplier_name = $v['supplier_name'] ?? '';
|
$purchaseRecords->supplier_name = $v['supplier_name'] ?? '';
|
||||||
$purchaseRecords->supplier_id = $v['supplier_id'] ?? 0;
|
$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->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString();
|
||||||
$purchaseRecords->save();
|
$purchaseRecords->save();
|
||||||
|
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||||
$v['user_id'] = $request->user()->id;
|
$v['user_id'] = $request->user()->id;
|
||||||
$updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, $v, TargetTypeEnum::PURCHASE);
|
$updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, $v, TargetTypeEnum::PURCHASE);
|
||||||
$allUpdateIds = array_merge($allUpdateIds, $updateIds);
|
$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']);
|
return response($this->res, $this->res['httpCode']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,5 +251,35 @@ class PurchaseRecordController extends Controller
|
|||||||
return response($this->res, $this->res['httpCode']);
|
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;
|
namespace App\Imports;
|
||||||
|
|
||||||
use App\Events\BatchStockUpdateEvent;
|
use App\Events\BatchStockUpdateEvent;
|
||||||
|
use App\Http\Enum\Purchase\PurchaseConfigEnum;
|
||||||
use App\Http\Enum\TargetTypeEnum;
|
use App\Http\Enum\TargetTypeEnum;
|
||||||
use App\Jobs\SyncCostToMiaoXuan;
|
use App\Jobs\SyncCostToMiaoXuan;
|
||||||
use App\Models\DailyStockRecord;
|
use App\Models\DailyStockRecord;
|
||||||
@ -79,14 +80,16 @@ class PurchaseImport implements ToArray, SkipsEmptyRows
|
|||||||
$purchaseRecords->supplier_id = $supplierIdKeyByNameMap[$row[5]] ?? 0;
|
$purchaseRecords->supplier_id = $supplierIdKeyByNameMap[$row[5]] ?? 0;
|
||||||
$purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString();
|
$purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString();
|
||||||
$purchaseRecords->save();
|
$purchaseRecords->save();
|
||||||
|
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||||
$updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, ["num" => $row[2], 'cost' => $row[3]], TargetTypeEnum::PURCHASE);
|
$updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, ["num" => $row[2], 'cost' => $row[3]], TargetTypeEnum::PURCHASE);
|
||||||
$allUpdateIds = array_merge($allUpdateIds, $updateIds);
|
$allUpdateIds = array_merge($allUpdateIds, $updateIds);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
Log::info("采购导入内容:", $collection);
|
Log::info("采购导入内容:", $collection);
|
||||||
Log::info("allUpdateIds:", $allUpdateIds);
|
if (PurchaseConfigEnum::IS_AUTO_CHECK) {
|
||||||
// 批量更新
|
// 批量更新
|
||||||
event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray()));
|
event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -33,6 +33,7 @@ class SaleDataService
|
|||||||
return static::skuSaleStatisticsByHistory($request);
|
return static::skuSaleStatisticsByHistory($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sku维度 今日实时统计
|
* sku维度 今日实时统计
|
||||||
*/
|
*/
|
||||||
@ -130,7 +131,7 @@ class SaleDataService
|
|||||||
return $v;
|
return $v;
|
||||||
})->pluck(null, "external_sku_id")->toArray();
|
})->pluck(null, "external_sku_id")->toArray();
|
||||||
Log::info("combineGoodsSkus", $combineGoodsSkus);
|
Log::info("combineGoodsSkus", $combineGoodsSkus);
|
||||||
$orderItems->getCollection()· use ($combineGoodsSkus) {
|
$orderItems->getCollection()->map(function ($v) use ($combineGoodsSkus) {
|
||||||
if (!empty($combineGoodsSkus[$v['external_sku_id']])) {
|
if (!empty($combineGoodsSkus[$v['external_sku_id']])) {
|
||||||
foreach ($combineGoodsSkus[$v['external_sku_id']] as $key => $val) {
|
foreach ($combineGoodsSkus[$v['external_sku_id']] as $key => $val) {
|
||||||
$v->$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('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('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');
|
Route::get('user/user_roles', [UsersController::class, 'userRoles'])->name('users.user_roles');
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user