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(targetEntityUser::class)]
  25.     protected User $account;
  26.     #[ORM\Column(name'refunded_amount'type'integer')]
  27.     protected string $refundedAmount;
  28.     #[ORM\Column(name'currency'type'string'length3)]
  29.     protected string $currency;
  30.     #[ORM\Column(name'date'type'datetimetz_immutable')]
  31.     protected \DateTimeImmutable $date;
  32.     #[ORM\OneToOne(targetEntityAccountTransaction::class, mappedBy'refund'cascade: ['all'])]
  33.     protected AccountTransaction $transaction;
  34.     #[ORM\JoinColumn(name'price_id'referencedColumnName'id')]
  35.     #[ORM\ManyToOne(targetEntityPaidPlacementPrice::class)]
  36.     protected PaidPlacementPrice $price;
  37.     public function __construct(User $accountMoney $refundedMoney\DateTimeImmutable $datePaidPlacementPrice $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. }