<?php
namespace Plugin\GmoPs42\Entity;
use Doctrine\ORM\Mapping as ORM;
use Eccube\Entity\AbstractEntity;
use Eccube\Entity\Order;
/**
* OrderPayment
*
* @ORM\Table(name="plg_gmops_order_payment")
* @ORM\HasLifecycleCallbacks()
* @ORM\Entity(repositoryClass="Plugin\GmoPs42\Repository\OrderPaymentRepository")
*/
class OrderPayment extends AbstractEntity
{
const PD_COMPANY_CODES = [
'00' => 'その他',
'11' => '佐川急便',
'12' => 'ヤマト運輸・クロネコメール便',
'14' => '西濃運輸',
'15' => '郵便書留・特定記録郵便',
'16' => 'ゆうぱっく・エクスパック・ポスパケット',
'18' => '福山通運',
'27' => 'エコ配',
'28' => '翌朝10時便・レターパック・新特急郵便',
];
const PD_COMPANY_SAGAWA = '11';
const PD_COMPANY_YAMATO = '12';
const PD_COMPANY_JAPANPOST = '16';
const AUTHOR_RESULTS = [
'OK' => '審査OK',
'審査中' => '審査中',
'保留' => '保留',
'NG' => '審査NG',
'出荷報告済' => '出荷報告済',
'キャンセル' => 'キャンセル済み',
];
const AUTHOR_RESULT_OK = 'OK';
const AUTHOR_RESULT_AUTHOR = '審査中';
const AUTHOR_RESULT_PENDING = '保留';
const AUTHOR_RESULT_NG = 'NG';
const AUTHOR_RESULT_PD = '出荷報告済';
const AUTHOR_RESULT_CANCEL = 'キャンセル';
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", options={"unsigned":true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="author_result", type="string", length=10, nullable=true)
*/
private $authorResult;
/**
* @var string|null
*
* @ORM\Column(name="auto_author_result", type="string", length=10, nullable=true)
*/
private $autoAuthorResult;
/**
* @var string|null
*
* @ORM\Column(name="maul_author_result", type="string", length=10, nullable=true)
*/
private $maulAuthorResult;
/**
* @var array|null
*
* @ORM\Column(name="reasons", type="array", nullable=true)
*/
private $reasons;
/**
* @var integer|null
*
* @ORM\Column(name="billed_amount", type="integer", nullable=true)
*/
private $billedAmount;
/**
* @var string|null
*
* @ORM\Column(name="shop_transaction_id", type="string", length=50, nullable=true)
*/
private $shopTransactionId;
/**
* @var string|null
*
* @ORM\Column(name="gmo_transaction_id", type="string", length=11, nullable=true)
*/
private $gmoTransactionId;
/**
* @var string|null
*
* @ORM\Column(name="pd_company_code", type="string", length=2, nullable=true)
*/
private $pdCompanyCode;
/**
* @var string|null
*
* @ORM\Column(name="slip_no", type="string", length=20, nullable=true)
*/
private $slipNo;
/**
* @var \DateTime|null
*
* @ORM\Column(name="pd_date", type="datetimetz", nullable=true)
*/
private $pdDate;
/**
* @var \DateTime|null
*
* @ORM\Column(name="cancel_date", type="datetimetz", nullable=true)
*/
private $cancelDate;
/**
* @var \DateTime
*
* @ORM\Column(name="create_date", type="datetimetz")
*/
private $createDate;
/**
* @var \DateTime
*
* @ORM\Column(name="update_date", type="datetimetz")
*/
private $updateDate;
/**
* @var Order
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Order", inversedBy="orderPayments")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="order_id", referencedColumnName="id")
* })
*/
private $order;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set authorResult
*
* @param string $authorResult
* @return OrderPayment
*/
public function setAuthorResult($authorResult)
{
$this->authorResult = $authorResult;
return $this;
}
/**
* Get authorResult
*
* @return string
*/
public function getAuthorResult()
{
return $this->authorResult;
}
/**
* Set autoAuthorResult
*
* @param string $autoAuthorResult
* @return OrderPayment
*/
public function setAutoAuthorResult($autoAuthorResult)
{
$this->autoAuthorResult = $autoAuthorResult;
return $this;
}
/**
* Get autoAuthorResult
*
* @return string
*/
public function getAutoAuthorResult()
{
return $this->autoAuthorResult;
}
/**
* Set maulAuthorResult
*
* @param string $maulAuthorResult
* @return OrderPayment
*/
public function setMaulAuthorResult($maulAuthorResult)
{
$this->maulAuthorResult = $maulAuthorResult;
return $this;
}
/**
* Get maulAuthorResult
*
* @return string
*/
public function getMaulAuthorResult()
{
return $this->maulAuthorResult;
}
/**
* Set reason
*
* @param array|null $reasons
* @return OrderPayment
*/
public function setReasons($reasons)
{
$this->reasons = $reasons;
return $this;
}
/**
* Get reason
*
* @return array|null
*/
public function getReasons()
{
return $this->reasons;
}
/**
* Set billedAmount
*
* @param integer $billedAmount
* @return OrderPayment
*/
public function setBilledAmount($billedAmount)
{
$this->billedAmount = $billedAmount;
return $this;
}
/**
* Get billedAmount
*
* @return integer
*/
public function getBilledAmount()
{
return $this->billedAmount;
}
/**
* Set shopTransactionId
*
* @param string $shopTransactionId
* @return OrderPayment
*/
public function setShopTransactionId($shopTransactionId)
{
$this->shopTransactionId = $shopTransactionId;
return $this;
}
/**
* Get shopTransactionId
*
* @return string
*/
public function getShopTransactionId()
{
return $this->shopTransactionId;
}
/**
* Set gmoTransactionId
*
* @param string $gmoTransactionId
* @return OrderPayment
*/
public function setGmoTransactionId($gmoTransactionId)
{
$this->gmoTransactionId = $gmoTransactionId;
return $this;
}
/**
* Set pdCompanyCode
*
* @param string $pdCompanyCode
* @return OrderPayment
*/
public function setPdCompanyCode($pdCompanyCode)
{
$this->pdCompanyCode = $pdCompanyCode;
return $this;
}
/**
* Get pdCompanyCode
*
* @return string
*/
public function getPdCompanyCode()
{
return $this->pdCompanyCode;
}
/**
* Set slipNo
*
* @param string $slipNo
* @return OrderPayment
*/
public function setSlipNo($slipNo)
{
$this->slipNo = $slipNo;
return $this;
}
/**
* Get slipNo
*
* @return string
*/
public function getSlipNo()
{
return $this->slipNo;
}
/**
* Get gmoTransactionId
*
* @return string
*/
public function getGmoTransactionId()
{
return $this->gmoTransactionId;
}
/**
* Set pdDate
*
* @param \DateTime $pdDate
* @return OrderPayment
*/
public function setPdDate($pdDate)
{
$this->pdDate = $pdDate;
return $this;
}
/**
* Get pdDate
*
* @return \DateTime
*/
public function getPdDate()
{
return $this->pdDate;
}
/**
* Set cancelDate
*
* @param \DateTime $cancelDate
* @return OrderPayment
*/
public function setCancelDate($cancelDate)
{
$this->cancelDate = $cancelDate;
return $this;
}
/**
* Get cancelDate
*
* @return \DateTime
*/
public function getCancelDate()
{
return $this->cancelDate;
}
/**
* Set createDate
*
* @param \DateTime $createDate
* @return OrderPayment
*/
public function setCreateDate($createDate)
{
$this->createDate = $createDate;
return $this;
}
/**
* Get createDate
*
* @return \DateTime
*/
public function getCreateDate()
{
return $this->createDate;
}
/**
* Set updateDate
*
* @param \DateTime $updateDate
* @return OrderPayment
*/
public function setUpdateDate($updateDate)
{
$this->updateDate = $updateDate;
return $this;
}
/**
* Get updateDate
*
* @return \DateTime
*/
public function getUpdateDate()
{
return $this->updateDate;
}
/**
* Set order
*
* @param Order $order
* @return OrderPayment
*/
public function setOrder(Order $order = null)
{
$this->order = $order;
return $this;
}
/**
* Get order
*
* @return Order
*/
public function getOrder()
{
return $this->order;
}
public function getPdCompanyName(): string
{
return array_key_exists($this->getPdCompanyCode(), static::PD_COMPANY_CODES) ? static::PD_COMPANY_CODES[$this->getPdCompanyCode()] : '';
}
public function isCancel()
{
return ($this->getCancelDate() || $this->getAuthorResult() === static::AUTHOR_RESULT_CANCEL);
}
public function isPd()
{
return ((!$this->getCancelDate() && $this->getPdDate()) || $this->getAuthorResult() === static::AUTHOR_RESULT_PD);
}
public function getAuthorResultText()
{
if ($this->isCancel()) {
return static::AUTHOR_RESULT_CANCEL;
} elseif ($this->isPd()) {
return static::AUTHOR_RESULT_PD;
} else {
return $this->getAuthorResult();
}
}
}