<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\Table as Table;
/**
* DocumentPayment
*
* @Table(name="document_payments")
* @Entity(repositoryClass="App\AtechNet\CoreBundle\Repository\DocumentPaymentRepository")
*/
class DocumentPayment extends AbstractSignedEntity
{
public const int NOT_SELECTED = 0;
public const int BANK_SK_SLSP_1 = 1;
public const int BANK_SK_TATRA_BANKA = 2;
public const int BANK_CZ_CESKA_SPORITELNA = 3;
public const int BANK_ERSTE = 4;
public const int BANK_OTP = 5;
public const int CASH = 6;
public const int CASH_ON_DELIVERY = 7;
public const int GOPAY = 8;
public const int SIMPLEPAY = 9;
public const int PAYPAL = 10;
public const int REVOLUT = 11;
public const int COMPENSATION = 12;
public const int CETELEM = 13;
public const int QUATRO = 14;
public const int INSTACASH = 15;
public const int BANK_SK_CSOB = 16;
public const int PASTPAY = 17;
public const int KLARNA = 18;
public const int BANK_RAIFFEISEN = 19;
public const int MILPAY = 20;
public const int BANK_VUB = 21;
/**
* @return array
*/
public static function getPaymentSourceList(): array
{
return [
self::NOT_SELECTED => 'Not selected',
self::BANK_SK_SLSP_1 => 'SLSP 1',
self::BANK_SK_TATRA_BANKA => 'Tatra banka',
self::BANK_SK_CSOB => 'ČSOB SK',
self::BANK_CZ_CESKA_SPORITELNA => 'Česká spořitelna',
self::BANK_ERSTE => 'Erste',
self::BANK_OTP => 'OTP',
self::BANK_RAIFFEISEN => 'Raiffeisen',
self::CASH => 'Cash',
self::CASH_ON_DELIVERY => 'Cash on delivery',
self::GOPAY => 'GoPay',
self::SIMPLEPAY => 'SimplePay',
self::PAYPAL => 'PayPal',
self::REVOLUT => 'Revolut',
self::COMPENSATION => 'Compensation',
self::CETELEM => 'Cetelem',
self::QUATRO => 'Quatro',
self::INSTACASH => 'Instacash',
self::PASTPAY => 'Pastpay',
self::KLARNA => 'Klarna',
self::MILPAY => 'Milpay',
self::BANK_VUB => 'VUB bank'
];
}
/**
* @return array
*/
public static function getBankAccountAddressList(): array
{
return [
self::BANK_SK_SLSP_1 => [
'iban' => 'SK4509000000000212959395',
'swift' => 'GIBASKBX',
],
self::BANK_SK_TATRA_BANKA => [
'iban' => 'SK8511000000002946074341',
'swift' => 'TATRSKBX',
],
self::BANK_CZ_CESKA_SPORITELNA => [
'iban' => 'CZ3808000000004732551359',
'swift' => 'GIBACZPX',
],
];
}
/**
* @var Document
*
* @ManyToOne(targetEntity="Document", inversedBy="payments")
* @JoinColumn(name="document_id", referencedColumnName="id", nullable=false)
*/
private $document;
/**
* @var string
*
* @Column(name="amount", type="decimal", precision=10, scale=2)
*/
private $amount = 0;
/**
* @var string
*
* @Column(name="note", type="text", nullable=true)
*/
private $note;
/**
* @var int
*
* @Column(name="payment_source", type="integer")
*/
private $paymentSource = self::NOT_SELECTED;
/**
* @var string
*
* @Column(name="transaction_id", type="string", length=64, nullable=true)
*/
private $transactionId;
/**
* @var \DateTime
*
* @Column(name="payment_date", type="datetime", nullable=true)
*/
private $paymentDate;
public function __construct()
{
$this->paymentDate = (new \DateTime())->setTime(0, 0);
}
/**
* @return Document
*/
public function getDocument()
{
return $this->document;
}
/**
* @param Document $document
*/
public function setDocument($document)
{
$this->document = $document;
}
/**
* @return string
*/
public function getAmount()
{
return $this->amount;
}
/**
* @param string $amount
* @return $this
*/
public function setAmount($amount)
{
$this->amount = str_replace(',', '.', $amount);
return $this;
}
/**
* @return int
*/
public function getNote()
{
return $this->note;
}
/**
* @param int $note
* @return $this
*/
public function setNote($note)
{
$this->note = $note;
return $this;
}
/**
* @return int
*/
public function getPaymentSource()
{
return $this->paymentSource;
}
/**
* @param int $paymentSource
*/
public function setPaymentSource($paymentSource)
{
$this->paymentSource = $paymentSource;
}
/**
* @return \DateTime
*/
public function getPaymentDate()
{
return $this->paymentDate;
}
/**
* @param \DateTime $paymentDate
*/
public function setPaymentDate($paymentDate)
{
$this->paymentDate = $paymentDate;
}
/**
* @return string|null
*/
public function getTransactionId(): ?string
{
return $this->transactionId;
}
/**
* @param string|null $transactionId
*/
public function setTransactionId(?string $transactionId): void
{
$this->transactionId = $transactionId;
}
}