71e38ee0a9
- app/Models/PricingTier.php — fillable + casts (date, boolean, integer) + accessor priceRubles (kopecks → float rubles) + scopeActive (is_active=true AND effective_from <= today) + static current() — keyed by tier_no Collection<int, PricingTier> - database/factories/PricingTierFactory.php — реалистичные ступени (300/700/1000/.../null) - tests/Feature/Models/PricingTierTest.php — 4 теста: factory, accessor, scopeActive, current() snapshot всех 7 ступеней ide-helper:models -W -M -N перегенерил docblocks (WebhookDedupKey synced после schema v8.16). Pest: 455 / 453 passed / 2 skipped (449 + 4 новых = 453). Larastan: 0 errors. Pint auto-fix. Spec: §7.2 Plan: Task 7 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
28 lines
669 B
PHP
28 lines
669 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Database\Factories;
|
|
|
|
use App\Models\PricingTier;
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
/**
|
|
* @extends Factory<PricingTier>
|
|
*/
|
|
class PricingTierFactory extends Factory
|
|
{
|
|
protected $model = PricingTier::class;
|
|
|
|
public function definition(): array
|
|
{
|
|
return [
|
|
'tier_no' => fake()->numberBetween(1, 7),
|
|
'leads_in_tier' => fake()->randomElement([300, 700, 1000, 2000, 5000, 10000, null]),
|
|
'price_per_lead_kopecks' => fake()->numberBetween(2000, 7000),
|
|
'is_active' => true,
|
|
'effective_from' => now()->toDateString(),
|
|
];
|
|
}
|
|
}
|