mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-31 05:31:10 -04:00 
			
		
		
		
	build version 400
This commit is contained in:
		| @ -1,45 +1,96 @@ | ||||
| <?php | ||||
|  | ||||
| /** @var \Illuminate\Database\Eloquent\Factory $factory */ | ||||
| namespace Database\Factories; | ||||
|  | ||||
| use Crater\Estimate; | ||||
| use Crater\User; | ||||
| use Crater\Tax; | ||||
| use Faker\Generator as Faker; | ||||
| use Crater\EstimateItem; | ||||
| use Crater\EstimateTemplate; | ||||
| use Crater\Models\Estimate; | ||||
| use Crater\Models\EstimateTemplate; | ||||
| use Crater\Models\User; | ||||
| use Illuminate\Database\Eloquent\Factories\Factory; | ||||
|  | ||||
| $factory->define(Estimate::class, function (Faker $faker) { | ||||
|     return [ | ||||
|         'estimate_date' => $faker->date($format = 'Y-m-d', $max = 'now'), | ||||
|         'expiry_date' => $faker->date($format = 'Y-m-d', $max = 'now'), | ||||
|         'estimate_number' => 'EST-'.Estimate::getNextEstimateNumber('EST'), | ||||
|         'reference_number' => Estimate::getNextEstimateNumber('EST'), | ||||
|         'company_id' => User::find(1)->company_id, | ||||
|         'user_id' => function () { | ||||
|             return factory(User::class)->create(['role' => 'customer'])->id; | ||||
|         }, | ||||
|         'status' => Estimate::STATUS_DRAFT, | ||||
|         'estimate_template_id' => 1, | ||||
|         'sub_total' => $faker->randomDigitNotNull, | ||||
|         'discount' => 0, | ||||
|         'discount_type' => 'fixed', | ||||
|         'discount_val' => 0, | ||||
|         'tax_per_item' => 'YES', | ||||
|         'discount_per_item' => 'No', | ||||
|         'total' => $faker->randomDigitNotNull, | ||||
|         'tax' => $faker->randomDigitNotNull, | ||||
|         'notes' => $faker->text(80), | ||||
|         'unique_hash' => str_random(60) | ||||
|     ]; | ||||
| }); | ||||
| class EstimateFactory extends Factory | ||||
| { | ||||
|     /** | ||||
|      * The name of the factory's corresponding model. | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $model = Estimate::class; | ||||
|  | ||||
| $factory->afterCreating(Estimate::class, function ($estimate, $faker) { | ||||
|     $estimate->items()->save(factory(EstimateItem::class)->make()); | ||||
|     $estimate->items()->save(factory(EstimateItem::class)->make()); | ||||
| }); | ||||
|     public function sent() | ||||
|     { | ||||
|         return $this->state(function (array $attributes) { | ||||
|             return [ | ||||
|                 'status' => Estimate::STATUS_SENT, | ||||
|             ]; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
| $factory->afterCreating(Estimate::class, function ($estimate, $faker) { | ||||
|     $estimate->taxes()->save(factory(Tax::class)->make()); | ||||
|     $estimate->items()->save(factory(Tax::class)->make()); | ||||
| }); | ||||
|     public function viewed() | ||||
|     { | ||||
|         return $this->state(function (array $attributes) { | ||||
|             return [ | ||||
|                 'status' => Estimate::STATUS_VIEWED, | ||||
|             ]; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public function expired() | ||||
|     { | ||||
|         return $this->state(function (array $attributes) { | ||||
|             return [ | ||||
|                 'status' => Estimate::STATUS_EXPIRED, | ||||
|             ]; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public function accepted() | ||||
|     { | ||||
|         return $this->state(function (array $attributes) { | ||||
|             return [ | ||||
|                 'status' => Estimate::STATUS_ACCEPTED, | ||||
|             ]; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public function rejected() | ||||
|     { | ||||
|         return $this->state(function (array $attributes) { | ||||
|             return [ | ||||
|                 'status' => Estimate::STATUS_REJECTED, | ||||
|             ]; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Define the model's default state. | ||||
|      * | ||||
|      * @return array | ||||
|      */ | ||||
|     public function definition() | ||||
|     { | ||||
|         return [ | ||||
|             'estimate_date' => $this->faker->date('Y-m-d', 'now'), | ||||
|             'expiry_date' => $this->faker->date('Y-m-d', 'now'), | ||||
|             'estimate_number' => 'EST-'.Estimate::getNextEstimateNumber('EST'), | ||||
|             'reference_number' => Estimate::getNextEstimateNumber('EST'), | ||||
|             'company_id' => User::where('role', 'super admin')->first()->company_id, | ||||
|             'user_id' => User::factory()->create(['role' => 'customer'])->id, | ||||
|             'status' => Estimate::STATUS_DRAFT, | ||||
|             'estimate_template_id' => EstimateTemplate::find(1) ?? EstimateTemplate::factory(), | ||||
|             'sub_total' => $this->faker->randomDigitNotNull, | ||||
|             'total' => $this->faker->randomDigitNotNull, | ||||
|             'discount_type' => $this->faker->randomElement(['percentage', 'fixed']), | ||||
|             'discount_val' => function (array $estimate) { | ||||
|                 return $estimate['discount_type'] == 'percentage' ? $this->faker->numberBetween($min = 0, $max = 100) : $this->faker->randomDigitNotNull; | ||||
|             }, | ||||
|             'discount' => function (array $estimate) { | ||||
|                 return $estimate['discount_type'] == 'percentage' ? (($estimate['discount_val'] * $estimate['total']) / 100) : $estimate['discount_val']; | ||||
|             }, | ||||
|             'tax_per_item' => 'YES', | ||||
|             'discount_per_item' => 'No', | ||||
|             'tax' => $this->faker->randomDigitNotNull, | ||||
|             'notes' => $this->faker->text(80), | ||||
|             'unique_hash' => str_random(60), | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user