ldc-boutique-cnc-sable/domain/Models/Entities/Product.php
2026-10-27 09:58:12 +01:00

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;
}
}