mirror of
https://gitee.com/hzchunfen/erp.git
synced 2025-11-30 22:20:45 +00:00
批量修改在售库存
This commit is contained in:
parent
68168a0936
commit
dd482189f9
@ -7,6 +7,7 @@ use App\Events\StockUpdateEvent;
|
||||
use App\Exports\GoodsSkusExport;
|
||||
use App\Exports\WeekDataExport;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Enum\ExcelKeyEnum;
|
||||
use App\Http\Requests\GoodsRequest;
|
||||
use App\Http\Requests\GoodsSkuRequest;
|
||||
use App\Imports\InventoryImport;
|
||||
@ -140,7 +141,7 @@ class GoodsSkusController extends Controller
|
||||
$sku['sale_ratio'] = 0;
|
||||
}
|
||||
}
|
||||
$data = ["manage"=>["is_admin"=>in_array($rolesName[0],["运营","超级管理员","管理员","系统管理员","店铺运营"])?1:0]];
|
||||
$data = ["manage" => ["is_admin" => in_array($rolesName[0], ["运营", "超级管理员", "管理员", "系统管理员", "店铺运营"]) ? 1 : 0]];
|
||||
return GoodsSkuResource::collection($goodsSkus)->additional($data);
|
||||
}
|
||||
|
||||
@ -269,6 +270,12 @@ class GoodsSkusController extends Controller
|
||||
$costLog['target_field'] = 'sale_stock';
|
||||
$costLog['before_update'] = $goodsSku->sale_stock;
|
||||
$goodsSku->sale_stock = $sku['sale_stock'];
|
||||
if (0 >= $goodsSku->sale_stock) {
|
||||
$status = GoodsSku::$STATUS_DOWN;
|
||||
} else {
|
||||
$status = GoodsSku::$STATUS_ON_SALE;
|
||||
}
|
||||
$goodsSku->status = $status;
|
||||
$goodsSku->save();
|
||||
$costLog['after_update'] = $goodsSku->sale_stock;
|
||||
$logs[] = $costLog;
|
||||
@ -713,4 +720,25 @@ class GoodsSkusController extends Controller
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function saleStockImport(Request $request)
|
||||
{
|
||||
if (!$request->hasFile(ExcelKeyEnum::SALE_STOCK_FILE)) {
|
||||
$this->res = [
|
||||
'httpCode' => 404,
|
||||
'errorCode' => 404404,
|
||||
'errorMessage' => 'not found inventory file',
|
||||
];
|
||||
}
|
||||
try {
|
||||
$import = new InventoryImport();
|
||||
$path = $request->file(ExcelKeyEnum::SALE_STOCK_FILE);
|
||||
Excel::import($import, $path);
|
||||
$this->addLog(0, 'import', ExcelKeyEnum::SALE_STOCK_FILE);
|
||||
} catch (ValidationException $exception) {
|
||||
$this->setValidatorFailResponse($exception->validator->getMessageBag()->getMessages());
|
||||
}
|
||||
|
||||
return response($this->res, $this->res['httpCode']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,6 +142,10 @@ class PurchaseRecordController extends Controller
|
||||
$purchaseRecords->buyer_name = $allParams['buyer_name'] ?? '';
|
||||
$purchaseRecords->supplier_name = $allParams['supplier_name'] ?? '';
|
||||
$purchaseRecords->supplier_id = $allParams['supplier_id'] ?? 0;
|
||||
if ($purchaseRecords->status == PurchaseStatusEnum::WAIT_CHECK) {
|
||||
$purchaseRecords->cost = $allParams['cost'] ?? 0;
|
||||
$purchaseRecords->num = $allParams['num'] ?? 0;
|
||||
}
|
||||
if (!empty($allParams['expire_time'])) {
|
||||
$purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString();
|
||||
}
|
||||
@ -264,7 +268,9 @@ class PurchaseRecordController extends Controller
|
||||
$params = $request->validate([
|
||||
'purchaseOrders' => 'required|array',
|
||||
'purchaseOrders.*.id' => 'required|integer',
|
||||
'purchaseOrders.*.status' => 'required|in:1,2']);
|
||||
'purchaseOrders.*.status' => 'required|in:1,2',
|
||||
'purchaseOrders.*.num' => 'sometimes|integer',
|
||||
]);
|
||||
$allUpdateIds = [];
|
||||
$now = Carbon::now()->toDateTimeString();
|
||||
foreach ($params['purchaseOrders'] as $v) {
|
||||
@ -279,6 +285,11 @@ class PurchaseRecordController extends Controller
|
||||
if ($purchaseRecords['status'] == $v['status']) {
|
||||
continue;
|
||||
}
|
||||
if (!empty($v['num'])) {
|
||||
$purchaseRecordBuilder->num = $v['num'];
|
||||
$purchaseRecords['num'] = $purchaseRecords;
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
if (PurchaseStatusEnum::CHECK_SUCCESS == $v['status']) {
|
||||
|
||||
@ -9,4 +9,6 @@ class ExcelKeyEnum
|
||||
|
||||
const LOSS_KEY = "lossFile";
|
||||
|
||||
const SALE_STOCK_FILE = "saleStockFile";
|
||||
|
||||
}
|
||||
@ -16,6 +16,9 @@ class CheckPermissions
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
//目前permission仅菜单权限和接口权限耦合 这里先放开
|
||||
$permissions = $request->user()->getPermissionsViaRoles()->toArray();
|
||||
return $next($request);
|
||||
// 获取当前路由名称
|
||||
$currentRouteName = Route::currentRouteName();
|
||||
// 引入当前守卫的权限文件
|
||||
|
||||
80
app/Imports/SaleStockImport.php
Normal file
80
app/Imports/SaleStockImport.php
Normal file
@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Imports;
|
||||
|
||||
use App\Events\BatchStockUpdateEvent;
|
||||
use App\Models\GoodsSku;
|
||||
use App\Services\GoodSku\GoodSkuService;
|
||||
use Exception;
|
||||
use App\Models\Log as LogModel;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Maatwebsite\Excel\Concerns\SkipsEmptyRows;
|
||||
use Maatwebsite\Excel\Concerns\ToArray;
|
||||
|
||||
class SaleStockImport implements ToArray, SkipsEmptyRows
|
||||
{
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public function array(array $collection)
|
||||
{
|
||||
if (!empty($collection)) {
|
||||
unset($collection[0]);
|
||||
$externalSkuIds = [];
|
||||
$inventoryKeyByExternalSkuIdMap = [];
|
||||
foreach ($collection as &$row) {
|
||||
$row = array_map(static function ($v) {
|
||||
return trim($v);
|
||||
}, $row);
|
||||
$inventoryKeyByExternalSkuIdMap[$row[0]] = $row[1];
|
||||
$externalSkuIds[] = $row[0];
|
||||
}
|
||||
unset($row);
|
||||
//新版盘点excel字段 编码 在售库存值 商品名称
|
||||
|
||||
$updateIds = [];
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
$logs = [];
|
||||
foreach ($externalSkuIds as $externalSkuId) {
|
||||
// 成本
|
||||
$goodsSku = GoodsSku::query()->where('external_sku_id', $externalSkuId)->first(['id', 'cost', 'sale_stock']);
|
||||
if (empty($goodsSku)) {
|
||||
continue;
|
||||
}
|
||||
$costLog = [
|
||||
'module' => 'goods',
|
||||
'action' => "SaleStockImport",
|
||||
'target_type' => 'goods_sku',
|
||||
'target_id' => $goodsSku['id'],
|
||||
'user_id' => Auth::id() ?? 999
|
||||
];
|
||||
$costLog['target_field'] = 'sale_stock';
|
||||
$costLog['before_update'] = $goodsSku->sale_stock;
|
||||
$goodsSku->sale_stock = $inventoryKeyByExternalSkuIdMap[$externalSkuId] ?? 0;
|
||||
if (0 >= $goodsSku->sale_stock) {
|
||||
$status = GoodsSku::$STATUS_DOWN;
|
||||
} else {
|
||||
$status = GoodsSku::$STATUS_ON_SALE;
|
||||
}
|
||||
$goodsSku->status = $status;
|
||||
$goodsSku->save();
|
||||
$costLog['after_update'] = $goodsSku->sale_stock;
|
||||
$logs[] = $costLog;
|
||||
$updateIds[] = $goodsSku['id'];
|
||||
}
|
||||
$log = new LogModel();
|
||||
$log->batchInsert($logs);
|
||||
DB::commit();
|
||||
if (!empty($updateIds)) {
|
||||
event(new BatchStockUpdateEvent($updateIds));
|
||||
}
|
||||
} catch (\Exception $exception) {
|
||||
DB::rollBack();
|
||||
throw new Exception($exception->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user