diff --git a/src/Example/Ubl/CreateDocumentExample.php b/src/Example/Ubl/CreateDocumentExample.php index 7e73ab8..68a8714 100644 --- a/src/Example/Ubl/CreateDocumentExample.php +++ b/src/Example/Ubl/CreateDocumentExample.php @@ -209,22 +209,24 @@ private function setUBLExtension($document) private function setBillingReference($document) { - $additionalDocumentReference = new AdditionalDocumentReference(); - $additionalDocumentReference->setId('E12345678912'); + for ($i = 0; $i < 2; $i++) { + $additionalDocumentReference = new AdditionalDocumentReference(); + $additionalDocumentReference->setId('E12345678912' . $i); - $billingReference = new BillingReference(); - $billingReference->setAdditionalDocumentReference($additionalDocumentReference); + $billingReference = new BillingReference(); + $billingReference->setAdditionalDocumentReference($additionalDocumentReference); - $invoiceTypeCode = $document->getInvoiceTypeCode(); - if($invoiceTypeCode == InvoiceTypeCodes::CREDIT_NOTE) { - $invoiceDocumentReference = new InvoiceDocumentReference(); - $invoiceDocumentReference->setId('INV12345'); - $invoiceDocumentReference->setUuid('00000000000000000000'); + $invoiceTypeCode = $document->getInvoiceTypeCode(); + if($invoiceTypeCode == InvoiceTypeCodes::CREDIT_NOTE) { + $invoiceDocumentReference = new InvoiceDocumentReference(); + $invoiceDocumentReference->setId('INV12345' . $i); + $invoiceDocumentReference->setUuid('00000000000000000000' . $i); - $billingReference->setInvoiceDocumentReference($invoiceDocumentReference); - } + $billingReference->setInvoiceDocumentReference($invoiceDocumentReference); + } - $document->setBillingReference($billingReference); + $document->addBillingReference($billingReference); + } return $document; } diff --git a/src/Ubl/Invoice.php b/src/Ubl/Invoice.php index b5beab4..0c584f4 100644 --- a/src/Ubl/Invoice.php +++ b/src/Ubl/Invoice.php @@ -38,7 +38,7 @@ class Invoice implements ISerializable, IValidator private $invoicePeriod; private $delivery; private $orderReference; - private $billingReference; + private $billingReferences = []; private $prepaidPayment; private $ublExtensions; private $signatureId = UblSpecifications::SIGNATURE_ID; @@ -474,11 +474,11 @@ public function setOrderReference(OrderReference $orderReference) } /** - * @return BillingReference + * @return array */ - public function getBillingReference() + public function getBillingReferences() { - return $this->billingReference; + return $this->billingReferences; } /** @@ -487,7 +487,27 @@ public function getBillingReference() */ public function setBillingReference(BillingReference $billingReference) { - $this->billingReference = $billingReference; + $this->billingReferences = [$billingReference]; + return $this; + } + + /** + * @param BillingReference[] $billingReferences + * @return Invoice + */ + public function setBillingReferences($billingReferences) + { + $this->billingReferences = $billingReferences; + return $this; + } + + /** + * @param BillingReference $billingReference + * @return Invoice + */ + public function addBillingReference(BillingReference $billingReference) + { + $this->billingReferences[] = $billingReference; return $this; } @@ -679,10 +699,12 @@ public function xmlSerialize(Writer $writer): void ]); } - if ($this->billingReference !== null) { - $writer->write([ - XmlSchema::CAC . 'BillingReference' => $this->billingReference - ]); + if (!empty($this->billingReferences)) { + foreach ($this->billingReferences as $billingReference) { + $writer->write([ + XmlSchema::CAC . 'BillingReference' => $billingReference + ]); + } } if (!empty($this->additionalDocumentReferences)) { @@ -826,8 +848,10 @@ public function jsonSerialize() $arrays['OrderReference'][] = $this->orderReference; } - if ($this->billingReference !== null) { - $arrays['BillingReference'][] = $this->billingReference; + if (!empty($this->billingReferences)) { + foreach ($this->billingReferences as $billingReference) { + $arrays['BillingReference'][] = $billingReference; + } } if (!empty($this->additionalDocumentReferences)) {