40 lines
1 KiB
PHP
40 lines
1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Domain\Models\Entities;
|
|
|
|
use Carbon\CarbonImmutable;
|
|
use Domain\Enums\SellUnit;
|
|
use Domain\Enums\TaxRate;
|
|
use Domain\Enums\Units\InvoicingUnit;
|
|
use Domain\Models\ValueObjects\DiscountValue;
|
|
use Domain\Models\ValueObjects\Entities\ProductId;
|
|
use Domain\Models\ValueObjects\ProductWeight;
|
|
use Money\Money;
|
|
use Shared\DDD\Entity;
|
|
|
|
/** @implements \Shared\DDD\Entity<\Domain\Models\ValueObjects\Entities\ProductId> */
|
|
final readonly class Product implements Entity
|
|
{
|
|
public function __construct(
|
|
private ProductId $id,
|
|
public Money $price,
|
|
public TaxRate $tax_rate,
|
|
public ?ProductWeight $product_weight,
|
|
public InvoicingUnit $invoicing_unit,
|
|
public SellUnit $sell_unit,
|
|
public ?DiscountValue $validDiscount,
|
|
public bool $status,
|
|
public ?CarbonImmutable $orderable_start,
|
|
public ?CarbonImmutable $orderable_end,
|
|
public bool $hasInco
|
|
) {
|
|
}
|
|
|
|
#[\Override]
|
|
public function id(): ProductId
|
|
{
|
|
return $this->id;
|
|
}
|
|
}
|