| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- namespace App\Models;
- use Illuminate\Database\Eloquent\Factories\HasFactory;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Database\Eloquent\Relations\BelongsTo;
- use Illuminate\Database\Eloquent\Relations\HasMany;
- /**
- * @property int $id
- * @property int $class_package_unit_id
- * @property string $type
- * @property float $register_value
- * @property int $register_installments_min
- * @property int $register_installments_max
- * @property float $package_value
- * @property int $package_installments_min
- * @property int $package_installments_max
- * @property float $material_value
- * @property int $material_installments_min
- * @property int $material_installments_max
- * @property \Illuminate\Support\Carbon|null $created_at
- * @property \Illuminate\Support\Carbon|null $updated_at
- * @property float|null $discount_value
- * @property-read \App\Models\ClassPackageUnit $classPackageUnit
- * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ClassPackageUnitVariationProduct> $products
- * @property-read int|null $products_count
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation newModelQuery()
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation newQuery()
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation query()
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereClassPackageUnitId($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereCreatedAt($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereDiscountValue($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereId($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereMaterialInstallmentsMax($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereMaterialInstallmentsMin($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereMaterialValue($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation wherePackageInstallmentsMax($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation wherePackageInstallmentsMin($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation wherePackageValue($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereRegisterInstallmentsMax($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereRegisterInstallmentsMin($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereRegisterValue($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereType($value)
- * @method static \Illuminate\Database\Eloquent\Builder<static>|ClassPackageUnitVariation whereUpdatedAt($value)
- * @mixin \Eloquent
- */
- class ClassPackageUnitVariation extends Model
- {
- use HasFactory;
- public const TYPE_PAVAO = 'pavao';
- public const TYPE_IRRECUSAVEL = 'irrecusavel';
- public const TYPE_CUSTOM = 'custom';
- public const TYPES = [
- self::TYPE_PAVAO,
- self::TYPE_IRRECUSAVEL,
- ];
- protected $table = 'class_package_unit_variations';
- protected $guarded = [
- 'id',
- ];
- protected $casts = [
- 'register_value' => 'float',
- 'register_installments_min' => 'integer',
- 'register_installments_max' => 'integer',
- 'package_value' => 'float',
- 'package_installments_min' => 'integer',
- 'package_installments_max' => 'integer',
- 'discount_value' => 'float',
- 'material_value' => 'float',
- 'material_installments_min' => 'integer',
- 'material_installments_max' => 'integer',
- 'created_at' => 'datetime',
- 'updated_at' => 'datetime',
- ];
- // Relationships
- public function classPackageUnit(): BelongsTo
- {
- return $this->belongsTo(ClassPackageUnit::class);
- }
- public function products(): HasMany
- {
- return $this->hasMany(ClassPackageUnitVariationProduct::class);
- }
- // Business Logic Methods
- public function totalValue(): float
- {
- return round(
- $this->register_value + $this->package_value + $this->material_value,
- 2,
- );
- }
- }
|