OpenXE/classes/Modules/ShopimporterAmazon/Data/InvoiceUpload.php

628 lines
14 KiB
PHP
Raw Normal View History

2021-05-21 08:49:41 +02:00
<?php
declare(strict_types=1);
namespace Xentral\Modules\ShopimporterAmazon\Data;
use DateTimeInterface;
use DateTime;
class InvoiceUpload
{
private const SENT_AT_NULL_THRESHOLD = '1970-01-02 00:00:00';
/** @var int|null $id */
private $id;
/** @var int $shopId */
private $shopId;
/** @var int $internalOrderId */
private $internalOrderId;
/** @var int $invoiceId */
private $invoiceId;
/** @var int $creditNoteId */
private $creditNoteId;
/** @var string $orderId */
private $orderId;
/** @var string $shippingId */
private $shippingId;
/** @var string $status */
private $status;
/** @var DateTimeInterface|null $createdAt */
private $createdAt;
/** @var DateTimeInterface|null $sentAt */
private $sentAt;
/** @var string $report */
private $report;
/** @var string $marketplace */
private $marketplace;
/** @var float $totalAmount */
private $totalAmount;
/** @var float $totalVatAmount */
private $totalVatAmount;
/** @var string $transactionId */
private $transactionId;
/** @var int $countSent */
private $countSent;
/** @var int|null $fileId */
private $fileId;
/** @var string $invoiceNumber */
private $invoiceNumber;
/** @var string $errorCode */
private $errorCode;
/** @var string $errorMessage */
private $errorMessage;
/**
* InvoiceUpload constructor.
*
* @param int $shopId
* @param int $internalOrderId
* @param string $orderId
* @param string $shippingId
* @param string $transactionId
* @param string $marketplace
* @param string $invoiceNumber
* @param float $totalAmount
* @param float $totalVatAmount
* @param int $invoiceId
* @param int $creditNoteId
* @param DateTimeInterface|null $createdAt
* @param string $status
* @param string $report
* @param string $errorCode
* @param string $errorMessage
* @param int $fileId
* @param int $countSent
* @param DateTimeInterface|null $sentAt
* @param int|null $id
*/
public function __construct(
int $shopId,
int $internalOrderId,
string $orderId,
string $shippingId,
string $transactionId,
string $marketplace,
string $invoiceNumber,
float $totalAmount,
float $totalVatAmount,
int $invoiceId,
int $creditNoteId = 0,
?DateTimeInterface $createdAt = null,
string $status = '',
string $report = '',
string $errorCode = '',
string $errorMessage = '',
int $fileId = 0,
int $countSent = 0,
?DateTimeInterface $sentAt = null,
?int $id = null
) {
$this->shopId = $shopId;
$this->internalOrderId = $internalOrderId;
$this->orderId = $orderId;
$this->shippingId = $shippingId;
$this->transactionId = $transactionId;
$this->marketplace = $marketplace;
$this->invoiceNumber = $invoiceNumber;
$this->totalAmount = $totalAmount;
$this->totalVatAmount = $totalVatAmount;
$this->invoiceId = $invoiceId;
$this->creditNoteId = $creditNoteId;
$this->status = $status;
$this->report = $report;
$this->errorCode = $errorCode;
$this->errorMessage = $errorMessage;
$this->fileId = $fileId;
$this->countSent = $countSent;
$this->id = $id;
$this->createdAt = $createdAt;
$this->setSentAt($sentAt);
}
/**
* @param array $dbState
*
* @return static
*/
public static function fromDbState(array $dbState): self
{
$createdAt = $dbState['created_at'] === '0000-00-00 00:00:00' || $dbState['created_at'] === null
? '' : $dbState['created_at'];
$sentAt = $dbState['sent_at'] === '0000-00-00 00:00:00' || $dbState['sent_at'] === null
? '' : $dbState['sent_at'];
return new self(
(int)$dbState['shop_id'],
(int)$dbState['int_order_id'],
(string)$dbState['orderid'],
(string)$dbState['shippingid'],
(string)$dbState['transaction_id'],
(string)$dbState['marketplace'],
(string)$dbState['invoice_number'],
(float)$dbState['total_amount'],
(float)$dbState['total_vat_amount'],
(int)$dbState['invoice_id'],
(int)$dbState['credit_note_id'],
DateTime::createFromFormat('Y-m-d H:i:s', $createdAt) ?: null,
(string)$dbState['status'],
(string)$dbState['report'],
(string)$dbState['error_code'],
(string)$dbState['error_message'],
(int)$dbState['file_id'],
(int)$dbState['count_sent'],
DateTime::createFromFormat('Y-m-d H:i:s', $sentAt) ?: null,
empty($dbState['id']) ? null : (int)$dbState['id']
);
}
/**
* @return array
*/
public function toArray(): array
{
return [
'id' => $this->id,
'shop_id' => $this->shopId,
'int_order_id' => $this->internalOrderId,
'invoice_id' => $this->invoiceId,
'file_id' => $this->fileId,
'orderid' => $this->orderId,
'shippingid' => $this->shippingId,
'created_at' => $this->createdAt === null ? null : $this->createdAt->format('Y-m-d H:i:s'),
'sent_at' => $this->sentAt === null ? null : $this->sentAt->format('Y-m-d H:i:s'),
'report' => $this->report,
'marketplace' => $this->marketplace,
'status' => $this->status,
'error_code' => $this->errorCode,
'error_message' => $this->errorMessage,
'invoice_number' => $this->invoiceNumber,
'total_amount' => $this->totalAmount,
'total_vat_amount' => $this->totalVatAmount,
'credit_note_id' => $this->creditNoteId,
'transaction_id' => $this->transactionId,
'count_sent' => $this->countSent,
];
}
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @param int|null $id
*
* @return self
*/
public function setId(?int $id): self
{
$this->id = $id;
return $this;
}
/**
* @return int
*/
public function getShopId(): int
{
return $this->shopId;
}
/**
* @param int $shopId
*
* @return self
*/
public function setShopId(int $shopId): self
{
$this->shopId = $shopId;
return $this;
}
/**
* id of table auftrag
*
* @return int
*/
public function getInternalOrderId(): int
{
return $this->internalOrderId;
}
/**
* @param int $internalOrderId
*
* @return self
*/
public function setInternalOrderId(int $internalOrderId): self
{
$this->internalOrderId = $internalOrderId;
return $this;
}
/**
* @return int
*/
public function getInvoiceId(): int
{
return $this->invoiceId;
}
/**
* @param int $invoiceId
*
* @return self
*/
public function setInvoiceId(int $invoiceId): self
{
$this->invoiceId = $invoiceId;
return $this;
}
/**
* @return int
*/
public function getCreditNoteId(): int
{
return $this->creditNoteId;
}
/**
* @param int $creditNoteId
*
* @return self
*/
public function setCreditNoteId(int $creditNoteId): self
{
$this->creditNoteId = $creditNoteId;
return $this;
}
/**
* column internet in table auftrag (order-number from Amazon)"
*
* @return string
*/
public function getExternalOrderId(): string
{
return $this->orderId;
}
/**
* @param string $orderId
*
* @return self
*/
public function setExternalOrderId(string $orderId): self
{
$this->orderId = $orderId;
return $this;
}
/**
* @return string
*/
public function getShippingId(): string
{
return $this->shippingId;
}
/**
* @param string $shippingId
*
* @return self
*/
public function setShippingId(string $shippingId): self
{
$this->shippingId = $shippingId;
return $this;
}
/**
* @return string
*/
public function getStatus(): string
{
return $this->status;
}
/**
* @param string $status
*
* @return self
*/
public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}
/**
* @return DateTimeInterface|null
*/
public function getCreatedAt(): ?DateTimeInterface
{
return $this->createdAt;
}
/**
* @param DateTimeInterface|null $createdAt
*
* @return self
*/
public function setCreatedAt(?DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
/**
* @return DateTimeInterface|null
*/
public function getSentAt(): ?DateTimeInterface
{
return $this->sentAt;
}
/**
* @param DateTimeInterface|null $sentAt
*
* @return self
*/
public function setSentAt(?DateTimeInterface $sentAt): self
{
if ($sentAt === null || $sentAt <= new DateTime(self::SENT_AT_NULL_THRESHOLD)) {
$this->sentAt = null;
return $this;
}
$this->sentAt = $sentAt;
return $this;
}
/**
* @return string
*/
public function getReport(): string
{
return $this->report;
}
/**
* @param string $report
*
* @return self
*/
public function setReport(string $report): self
{
$this->report = $report;
return $this;
}
/**
* @return string
*/
public function getMarketplace(): string
{
return $this->marketplace;
}
/**
* @param string $marketplace
*
* @return self
*/
public function setMarketplace(string $marketplace): self
{
$this->marketplace = $marketplace;
return $this;
}
/**
* @return float
*/
public function getTotalAmount(): float
{
return $this->totalAmount;
}
/**
* @param float $totalAmount
*
* @return self
*/
public function setTotalAmount(float $totalAmount): self
{
$this->totalAmount = $totalAmount;
return $this;
}
/**
* @return float
*/
public function getTotalVatAmount(): float
{
return $this->totalVatAmount;
}
/**
* @param float $totalVatAmount
*
* @return self
*/
public function setTotalVatAmount(float $totalVatAmount): self
{
$this->totalVatAmount = $totalVatAmount;
return $this;
}
/**
* @return string
*/
public function getTransactionId(): string
{
return $this->transactionId;
}
/**
* @param string $transactionId
*
* @return self
*/
public function setTransactionId(string $transactionId): self
{
$this->transactionId = $transactionId;
return $this;
}
/**
* @return int
*/
public function getCountSent(): int
{
return $this->countSent;
}
/**
* @param int $countSent
*
* @return self
*/
public function setCountSent(int $countSent): self
{
$this->countSent = $countSent;
return $this;
}
/**
* @param int $incrementation
*
* @return $this
*/
public function increaseCountSent(int $incrementation = 1): self
{
$this->countSent += $incrementation;
return $this;
}
/**
* @return int|null
*/
public function getFileId(): ?int
{
return $this->fileId;
}
/**
* @param int|null $fileId
*
* @return self
*/
public function setFileId(?int $fileId): self
{
$this->fileId = $fileId;
return $this;
}
/**
* @return string
*/
public function getInvoiceNumber(): string
{
return $this->invoiceNumber;
}
/**
* @param string $invoiceNumber
*
* @return self
*/
public function setInvoiceNumber(string $invoiceNumber): self
{
$this->invoiceNumber = $invoiceNumber;
return $this;
}
/**
* @return string
*/
public function getErrorCode(): string
{
return $this->errorCode;
}
/**
* @param string $errorCode
*
* @return self
*/
public function setErrorCode(string $errorCode): self
{
$this->errorCode = $errorCode;
return $this;
}
/**
* @return string
*/
public function getErrorMessage(): string
{
return $this->errorMessage;
}
/**
* @param string $errorMessage
*
* @return self
*/
public function setErrorMessage(string $errorMessage): self
{
$this->errorMessage = $errorMessage;
return $this;
}
}