diff --git a/src/Invoice.php b/src/Invoice.php index 141d9d9..e06d12b 100644 --- a/src/Invoice.php +++ b/src/Invoice.php @@ -21,6 +21,7 @@ class Invoice implements XmlSerializable, XmlDeserializable private $id; private $copyIndicator; private $issueDate; + private ?DateTime $issueTime; protected $invoiceTypeCode = InvoiceTypeCode::INVOICE; private $note; private $taxPointDate; @@ -144,6 +145,25 @@ public function setIssueDate(?DateTime $issueDate) return $this; } + /** + * @return DateTime + */ + public function getIssueTime() : ?DateTime + { + return $this->issueTime ?? null; + } + + /** + * @param DateTime $issueTime + * @return static + */ + public function setIssueTime(?DateTime $issueTime = null) : self + { + $this->issueTime = $issueTime; + + return $this; + } + /** * @return DateTime */ @@ -756,6 +776,12 @@ public function xmlSerialize(Writer $writer): void Schema::CBC . "IssueDate" => $this->issueDate->format("Y-m-d"), ]); + if (isset($this->issueTime)) { + $writer->write([ + Schema::CBC . 'IssueTime' => $this->issueTime->format('H:i:s'), + ]); + } + if ($this->dueDate !== null && $this->xmlTagName === "Invoice") { $writer->write([ Schema::CBC . "DueDate" => $this->dueDate->format("Y-m-d"), @@ -996,6 +1022,14 @@ protected static function deserializedTag(array $mixedContent) ), )->toDateTime(), ) + ->setIssueTime( + Carbon::parse( + ReaderHelper::getTagValue( + Schema::CBC . "IssueTime", + $collection, + ), + )->toDateTime(), + ) ->setDueDate( Carbon::parse( ReaderHelper::getTagValue( diff --git a/tests/Write/SimpleInvoiceTest.php b/tests/Write/SimpleInvoiceTest.php index 8b6a87a..5208312 100644 --- a/tests/Write/SimpleInvoiceTest.php +++ b/tests/Write/SimpleInvoiceTest.php @@ -138,6 +138,7 @@ public function testIfXMLIsValid() ->setId(1234) ->setCopyIndicator(false) ->setIssueDate(new \DateTime()) + ->setIssueTime(new \DateTime()) ->setAccountingSupplierParty($accountingSupplierParty) ->setAccountingCustomerParty($accountingCustomerParty) ->setInvoiceLines($invoiceLines)