备货单完善

This commit is contained in:
mzl
2025-09-04 18:22:24 +08:00
parent e9a3be88af
commit ea38afff9a
4 changed files with 144 additions and 35 deletions
+2 -15
View File
@@ -43,21 +43,8 @@ class StockOrderItems extends Model
*/
protected $fillable = [
'id', 'order_id', 'product_code', 'sku_id', 'sku_snapshot',
'model_snapshot', 'quantity', 'color_interior_coide', 'color_interior_snapshot',
'color_exterior_coide', 'color_exterior_snapshot', 'remark',
// 'unit_price',
// 'handling_fee',
// 'fob_transport_fee',
// 'port_misc_fee',
// 'retrofit_fee',
// 'total_price',
'created_at', 'updated_at',
// 'unit_price_value_id',
// 'handling_fee_value_id',
// 'fob_transport_fee_value_id',
// 'port_misc_fee_value_id',
// 'retrofit_fee_value_id',
// 'total_price_value_id'
'model_snapshot', 'quantity', 'color_interior_code', 'color_interior_snapshot',
'color_exterior_code', 'color_exterior_snapshot', 'remark', 'vin', 'created_at', 'updated_at'
];
/**
+8
View File
@@ -3,6 +3,7 @@
namespace app\common\model;
use support\Model;
use app\common\traits\HasMoneyJournal;
class StockOrders extends Model
{
@@ -58,6 +59,13 @@ class StockOrders extends Model
protected $guarded = [];
use HasMoneyJournal;
// 实现抽象方法
protected static function moneyObjectScene(): string
{
return 'stock_orders';
}
/**
* 关联订单项
*/
+43 -11
View File
@@ -45,6 +45,22 @@ class StockOrdersService
$config['model'] = $this->modelClass;
switch ($scene) {
case 'index':
// ====== ====== 筛选 ====== ======
// 业务id
if (isset($p['salesperson_id']) && $p['salesperson_id']) {
$config['where']['salesperson_id'] = $p['salesperson_id'];
}
// 初、终版
$config['where']['is_final'] = $p['is_final'] ?? 0;
// 关键字
if (isset($p['keyword']) && $p['keyword']) {
$k = '%' . $p['keyword'] . '%';
foreach (['pi_no', 'order_no', 'customer_snapshot'] as $col) {
$config['orWhere'][] = [$col, 'like', $k];
}
}
$config['order']['id'] = 'desc';
break;
case 'show':
@@ -79,6 +95,10 @@ class StockOrdersService
$created = $this->logicCreate($data, $dl); // 表1
// 车辆
$cifTotalAmount = 0;
$cifTotalAmountRate = 0;
$cifTotalAmountCurrency = 'CNY';
// $profit = 0;
foreach ($data['veh_list'] as $veh) {
$veh['order_id'] = $created->id;
$item = StockOrderItems::create($veh); // 表2
@@ -93,6 +113,15 @@ class StockOrdersService
$item->addMoney('port_misc_fee', $veh['port_misc_fee']['currency'], $veh['port_misc_fee']['amount'], $veh['port_misc_fee']['rate'], '港杂');
$item->addMoney('retrofit_fee', $veh['retrofit_fee']['currency'], $veh['retrofit_fee']['amount'], $veh['retrofit_fee']['rate'], '改装费');
// 利润
$profit = $veh['unit_price']['amount'] - ($veh['official_price']['amount'] / $created->contract_exchange_rate) - $veh['discount_price']['amount'] - $veh['handling_fee']['amount'] - $veh['fob_transport_fee']['amount'] - $veh['port_misc_fee']['amount'] - $veh['retrofit_fee']['amount'];
$item->addMoney('profit', $veh['unit_price']['currency'], $profit, $veh['unit_price']['rate'], '利润');
// cif_total_amount
$cifTotalAmount += $veh['total_price']['amount'];
$cifTotalAmountRate = $veh['retrofit_fee']['rate'];
$cifTotalAmountCurrency = $veh['retrofit_fee']['currency'];
// 改装
if (count($veh['modify_list']) > 0) {
foreach ($veh['modify_list'] as $modify) {
@@ -102,6 +131,9 @@ class StockOrdersService
}
}
// 计算&&插入 表1
$created->addMoney('cif_total_amount', $cifTotalAmountCurrency, $cifTotalAmount, $cifTotalAmountRate, '合计到岸价');
// 账户
if (count($data['account_list']) > 0) {
foreach ($data['account_list'] as $account) {
@@ -129,17 +161,17 @@ class StockOrdersService
return $data;
}
// protected function afterServiceStore($res)
// {
// return $res;
// }
public function serviceShow(Request $request)
protected function afterServiceStore($res)
{
$config = $this->buildQueryConfig($request, 'show');
$item = $this->logicShow($config);
return $this->postProcess('Show', $item);
// 处理原单
if ($res->is_final == 1 && $res->object_id > 0) {
$order = StockOrders::find($res->object_id);
$order->is_use = 1;
$order->object_id = $res->id;
if (!$order->save()) {
flg('备货单【'.$order->order_no.'】创建终版成功,但更新原单失败');
}
}
return $res;
}
}