lihaiMiddleOffice/app/psi/logic/WarehouseOrderLogic.php

141 lines
4.3 KiB
PHP
Raw Normal View History

2025-03-10 11:31:34 +08:00
<?php
namespace app\psi\logic;
use app\common\model\WarehouseOrder;
use app\common\logic\BaseLogic;
use Exception;
2025-03-10 17:54:52 +08:00
use support\exception\BusinessException;
2025-03-10 11:31:34 +08:00
use think\facade\Db;
/**
* PsiWarehouseOrder逻辑
* Class WarehouseOrderLogic
* @package app\psi\logic
*/
class WarehouseOrderLogic extends BaseLogic
{
/**
* @notes 添加
* @param array $params
* @return bool
* @author admin
* @date 2025/03/10 11:08
*/
public static function add(array $params): bool
{
Db::startTrans();
try {
2025-03-10 17:54:52 +08:00
$warehouseOrderAttr = [
2025-03-10 11:31:34 +08:00
'warehouse_id' => $params['warehouse_id'],
'supplier_id' => $params['supplier_id'],
2025-03-10 17:54:52 +08:00
'order_type' => $params['order_type'] ?? 7,
2025-03-10 11:31:34 +08:00
'admin_id' => $params['admin_id'],
2025-03-10 17:54:52 +08:00
'batch' => 0,
'code' => getNewOrderId('RK'),
'mark' => $params['remark'],
'completed_amount' => $params['completed_amount'] ?? 0,
'outstanding_amount' => $params['outstanding_amount'] ?? 0,
];
$total_price = 0;
foreach ($params['product_arr'] as $k => $v) {
$total_price += $v['total_price'];
}
$warehouseOrderAttr['total_price'] = $total_price;
$res = WarehouseOrder::create($warehouseOrderAttr);
foreach ($params['product_arr'] as $k => $v) {
$data['admin_id'] = $params['admin_id'];
$data['store_id'] = 0;
$data['oid'] = $res['id'];
$data['supplier_id'] = $params['supplier_id'];
$data['warehouse_id'] = $params['warehouse_id'];
$data['code'] = $params['code'];
$data['product_id'] = $v['product_id'];
$data['nums'] = $v['nums'];
$data['purchase'] = $v['purchase'];
$data['total_price'] = $v['total_price'];
$data['order_type'] = $warehouseOrderAttr['order_type'];
if (!empty($v['manufacture'])) {
$data['manufacture'] = $v['manufacture'];
}
if (!empty($v['expiration_date'])) {
$data['expiration_date'] = $v['expiration_date'];
}
WarehouseProductLogic::add($data, 1, $params['admin_id']);
}
2025-03-10 11:31:34 +08:00
Db::commit();
return true;
} catch (\Throwable $e) {
Db::rollback();
2025-03-10 17:54:52 +08:00
throw new BusinessException($e->getMessage());
2025-03-10 11:31:34 +08:00
}
}
/**
* @notes 编辑
* @param array $params
* @return bool
* @author admin
* @date 2025/03/10 11:08
*/
public static function edit(array $params): bool
{
Db::startTrans();
try {
WarehouseOrder::where('id', $params['id'])->update([
'warehouse_id' => $params['warehouse_id'],
'supplier_id' => $params['supplier_id'],
'store_id' => $params['store_id'],
'oid' => $params['oid'],
'order_type' => $params['order_type'],
'code' => $params['code'],
'admin_id' => $params['admin_id'],
'batch' => $params['batch'],
'mark' => $params['mark'],
'nums' => $params['nums'],
'purchase' => $params['purchase'],
'total_price' => $params['total_price'],
'completed_amount' => $params['completed_amount'],
'outstanding_amount' => $params['outstanding_amount'],
'status' => $params['status'],
]);
Db::commit();
return true;
} catch (\Throwable $e) {
Db::rollback();
throw new Exception($e->getMessage());
}
}
/**
* @notes 删除
* @param array $params
* @return bool
* @author admin
* @date 2025/03/10 11:08
*/
public static function delete(array $params): bool
{
return WarehouseOrder::destroy($params['id']);
}
/**
* @notes 获取详情
* @param $params
* @return array
* @author admin
* @date 2025/03/10 11:08
*/
public static function detail($params): array
{
return WarehouseOrder::findOrEmpty($params['id'])->toArray();
}
}