<?phpnamespace App\Finance\Domain\Entity;use App\Entity\SchoolYear;use App\Entity\Level;use App\Finance\Domain\Enum\FeeType;use App\Finance\Domain\Repository\FeeDefinitionRepository;use Doctrine\ORM\Mapping as ORM;#[ORM\Entity(repositoryClass: FeeDefinitionRepository::class)]#[ORM\Table(name: 'fee_definitions')]class FeeDefinition{ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(enumType: FeeType::class)] private FeeType $feeType; #[ORM\Column(length: 255)] private string $label; #[ORM\Column(type: 'text', nullable: true)] private ?string $description = null; #[ORM\Column(type: 'decimal', precision: 10, scale: 2)] private float $amount; #[ORM\ManyToOne(targetEntity: SchoolYear::class)] #[ORM\JoinColumn(nullable: false)] private SchoolYear $schoolYear; #[ORM\ManyToOne(targetEntity: Level::class)] #[ORM\JoinColumn(nullable: true)] private ?Level $level = null; #[ORM\Column(type: 'date', nullable: true)] private ?\DateTimeInterface $dueDate = null; #[ORM\Column(type: 'integer', nullable: true)] private ?int $installments = null; #[ORM\Column] private bool $isActive = true; #[ORM\Column] private \DateTimeImmutable $createdAt; #[ORM\Column] private \DateTimeImmutable $updatedAt; public function __construct() { $this->createdAt = new \DateTimeImmutable(); $this->updatedAt = new \DateTimeImmutable(); } public function getId(): ?int { return $this->id; } public function getFeeType(): FeeType { return $this->feeType; } public function setFeeType(FeeType $feeType): self { $this->feeType = $feeType; $this->updatedAt = new \DateTimeImmutable(); return $this; } public function getLabel(): string { return $this->label; } public function setLabel(string $label): self { $this->label = $label; $this->updatedAt = new \DateTimeImmutable(); return $this; } public function getAmount(): float { return (float) $this->amount; } public function setAmount(float $amount): self { $this->amount = $amount; $this->updatedAt = new \DateTimeImmutable(); return $this; } public function getSchoolYear(): SchoolYear { return $this->schoolYear; } public function setSchoolYear(SchoolYear $schoolYear): self { $this->schoolYear = $schoolYear; $this->updatedAt = new \DateTimeImmutable(); return $this; } public function getLevel(): ?Level { return $this->level; } public function setLevel(?Level $level): self { $this->level = $level; $this->updatedAt = new \DateTimeImmutable(); return $this; } public function getDueDate(): ?\DateTimeInterface { return $this->dueDate; } public function setDueDate(?\DateTimeInterface $dueDate): self { $this->dueDate = $dueDate; $this->updatedAt = new \DateTimeImmutable(); return $this; } public function getInstallments(): ?int { return $this->installments; } public function setInstallments(?int $installments): self { $this->installments = $installments; $this->updatedAt = new \DateTimeImmutable(); return $this; } public function isActive(): bool { return $this->isActive; } public function setIsActive(bool $isActive): self { $this->isActive = $isActive; $this->updatedAt = new \DateTimeImmutable(); return $this; } public function getCreatedAt(): \DateTimeImmutable { return $this->createdAt; } public function getUpdatedAt(): \DateTimeImmutable { return $this->updatedAt; }}