ProductionOrderFactory.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. declare(strict_types=1);
  3. namespace Database\Factories;
  4. use App\Enums\ProductionOrderExecutionType;
  5. use App\Enums\ProductionOrderSource;
  6. use App\Enums\ProductionOrderStatus;
  7. use App\Models\ProductionOrder;
  8. use App\Models\User;
  9. use Carbon\CarbonImmutable;
  10. use Illuminate\Database\Eloquent\Factories\Factory;
  11. /** @extends Factory<ProductionOrder> */
  12. class ProductionOrderFactory extends Factory
  13. {
  14. protected $model = ProductionOrder::class;
  15. public function definition(): array
  16. {
  17. $paymentDate = CarbonImmutable::instance(fake()->dateTimeBetween('-3 months', '+1 month'));
  18. $supplyDays = fake()->numberBetween(5, 60);
  19. return [
  20. 'external_id' => null,
  21. 'source' => ProductionOrderSource::Manual,
  22. 'order_number' => fake()->unique()->numerify('####.##'),
  23. 'order_year' => (int) $paymentDate->format('Y'),
  24. 'customer_name' => fake()->company(),
  25. 'object_address' => fake()->address(),
  26. 'invoice_number' => fake()->numerify('СЧ-######'),
  27. 'invoice_date' => $paymentDate->subDays(2),
  28. 'contract_number' => fake()->optional()->numerify('Д-######'),
  29. 'contract_date' => fake()->optional()->passthrough($paymentDate->subDays(10)),
  30. 'payment_date' => $paymentDate,
  31. 'supply_working_days' => $supplyDays,
  32. 'contract_shipment_date' => $paymentDate->addWeekdays($supplyDays),
  33. 'application_shipment_date' => null,
  34. 'status' => ProductionOrderStatus::Placed,
  35. 'execution_type' => fake()->randomElement(ProductionOrderExecutionType::cases()),
  36. 'manager_id' => User::factory()->manager(),
  37. 'note' => fake()->optional()->sentence(),
  38. 'created_by' => null,
  39. 'updated_by' => null,
  40. ];
  41. }
  42. }