价格增加百分比上浮
This commit is contained in:
@@ -99,4 +99,41 @@ class PurchaseGenerateTest extends ProcurementTestCase
|
||||
|
||||
$this->assertSame(1, PurchaseOrderModel::count(), '第二次生成应被拒绝,不产生新采购单');
|
||||
}
|
||||
|
||||
/** 估算单价取「最低实际价」:固定价与百分比计价混合时按换算后值比较 */
|
||||
public function test_generate_uses_min_actual_price_across_types(): void
|
||||
{
|
||||
$level = CustomerLevelModel::factory()->create();
|
||||
$levelFixed = CustomerLevelModel::factory()->create();
|
||||
$store = StoreModel::factory()->create(['level_id' => $level->id]);
|
||||
$product = ProductModel::factory()->create([
|
||||
'status' => ProductModel::STATUS_ON,
|
||||
'cost_price' => 10,
|
||||
]);
|
||||
// 百分比行:10 × (1+40%) = 14.00;固定价行 5.00 → 估算应取 5.00
|
||||
ProductPriceModel::factory()->create([
|
||||
'product_id' => $product->id,
|
||||
'level_id' => $level->id,
|
||||
'price_type' => ProductPriceModel::PRICE_TYPE_PERCENT,
|
||||
'percent' => 40,
|
||||
'price' => 14.00,
|
||||
]);
|
||||
ProductPriceModel::factory()->create([
|
||||
'product_id' => $product->id,
|
||||
'level_id' => $levelFixed->id,
|
||||
'price' => 5.00,
|
||||
]);
|
||||
|
||||
$this->actingAsMiniUser(UserModel::factory()->forStore($store->id)->create());
|
||||
$this->postJson('/mini/order', ['items' => [['product_id' => $product->id, 'quantity' => 3]]])
|
||||
->assertJsonPath('success', true);
|
||||
|
||||
$this->actingAsSysUser();
|
||||
$this->postJson('/purchase/order/generate', ['purchase_date' => now()->toDateString()])
|
||||
->assertJsonPath('success', true);
|
||||
|
||||
$item = PurchaseOrderModel::first()->items->first();
|
||||
$this->assertSame('5.00', (string) $item->price, '估算单价应取换算后的最低实际价');
|
||||
$this->assertSame('15.00', (string) $item->amount, '3 × 5.00');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user