src/Entity/Sales/AccountRefund.php line 20

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by simpson <simpsonwork@gmail.com>
  4.  * Date: 27/08/2019
  5.  * Time: 18:17
  6.  */
  7. namespace App\Entity\Sales;
  8. use App\Entity\User;
  9. use Doctrine\ORM\Mapping as ORM;
  10. use Money\Currency;
  11. use Money\Money;
  12. /**
  13.  * Возврат средств (может быть и частичный) за предыдущее списание
  14.  */
  15. #[ORM\Table(name: 'account_refunds')]
  16. #[ORM\Entity]
  17. class AccountRefund
  18. {
  19.     #[ORM\Id]
  20.     #[ORM\Column(name: 'id', type: 'integer')]
  21.     #[ORM\GeneratedValue(strategy: 'AUTO')]
  22.     protected int $id;
  23.     #[ORM\JoinColumn(name: 'account_id', referencedColumnName: 'id')]
  24.     #[ORM\ManyToOne(targetEntity: User::class)]
  25.     protected User $account;
  26.     #[ORM\Column(name: 'refunded_amount', type: 'integer')]
  27.     protected string $refundedAmount;
  28.     #[ORM\Column(name: 'currency', type: 'string', length: 3)]
  29.     protected string $currency;
  30.     #[ORM\Column(name: 'date', type: 'datetimetz_immutable')]
  31.     protected \DateTimeImmutable $date;
  32.     #[ORM\OneToOne(targetEntity: AccountTransaction::class, mappedBy: 'refund', cascade: ['all'])]
  33.     protected AccountTransaction $transaction;
  34.     #[ORM\JoinColumn(name: 'price_id', referencedColumnName: 'id')]
  35.     #[ORM\ManyToOne(targetEntity: PaidPlacementPrice::class)]
  36.     protected PaidPlacementPrice $price;
  37.     public function __construct(User $account, Money $refundedMoney, \DateTimeImmutable $date, PaidPlacementPrice $price)
  38.     {
  39.         $this->account = $account;
  40.         $this->refundedAmount = $refundedMoney->getAmount();
  41.         $this->currency = $refundedMoney->getCurrency()->getCode();
  42.         $this->date = $date;
  43.         $this->price = $price;
  44.         $this->transaction = AccountTransaction::fromRefund($this);
  45.     }
  46.     public function getId(): int
  47.     {
  48.         return $this->id;
  49.     }
  50.     public function getAccount(): User
  51.     {
  52.         return $this->account;
  53.     }
  54.     public function getRefundedMoney(): Money
  55.     {
  56.         return new Money($this->refundedAmount, new Currency($this->currency));
  57.     }
  58.     public function getDate(): \DateTimeImmutable
  59.     {
  60.         return $this->date;
  61.     }
  62.     public function getTransaction(): AccountTransaction
  63.     {
  64.         return $this->transaction;
  65.     }
  66. }