diff --git a/README.md b/README.md index 74aedf1..82601aa 100644 --- a/README.md +++ b/README.md @@ -403,7 +403,7 @@ Ezen az osztályon érhetjük el a NAV interfészén biztosított szolgáltatás `manageInvoice` és `manageAnnulment` híváshoz használandó collection, melyhez a feladni kívánt számlákat lehet hozzáadni. Ez az osztály validálja is az átadott szakmai XML-t az XSD-vel. -- `__construct()` +- `__construct($compression = false)`: compression: gzip tömörítés engedélyezése, részletek: NAV dokumentáció, 1.6.5 Tömörítés és méretkorlát - `useDataSchemaValidation([$flag = true])`: Számla adat hozzáadásakor az XML-t (szakmai XML) validálja az XSD-vel. Alapértelmezetten be van kapcsolva a validáció. - `add(SimpleXMLElement $xml [, $operation = "CREATE"])`: Számla XML hozzáadása a listához - `isTechnicalAnnulment()` diff --git a/examples/manageInvoice_compressed.php b/examples/manageInvoice_compressed.php new file mode 100644 index 0000000..26a1f22 --- /dev/null +++ b/examples/manageInvoice_compressed.php @@ -0,0 +1,24 @@ +add(simplexml_load_file(TEST_DATA_DIR . "invoice1.xml")); + // $invoices->add(simplexml_load_file(TEST_DATA_DIR . "invoice2.xml")); + + // Számlák beküldése: + $transactionId = $reporter->manageInvoice($invoices); + + print "Tranzakciós azonosító a státusz lekérdezéshez: " . $transactionId; + +} catch(Exception $ex) { + print get_class($ex) . ": " . $ex->getMessage(); +} diff --git a/src/NavOnlineInvoice/InvoiceOperations.php b/src/NavOnlineInvoice/InvoiceOperations.php index 5a8dc7e..1f25ff4 100644 --- a/src/NavOnlineInvoice/InvoiceOperations.php +++ b/src/NavOnlineInvoice/InvoiceOperations.php @@ -7,8 +7,10 @@ class InvoiceOperations { const MAX_INVOICE_COUNT = 100; + const COMPRESSION_LEVEL = 1; protected $invoices; + protected $compression; /** * Az automatikusan felismert technicalAnnulment értéke az első hozzáadott számla alapján. @@ -23,10 +25,13 @@ class InvoiceOperations { /** * Számlákat (számla műveleteket) összefogó objektum (collection) készítése + * + * @param boolean $compression gzip tömörítés alkalmazása, részletek: NAV dokumentáció, 1.6.5 Tömörítés és méretkorlát */ - function __construct() { + function __construct($compression = false) { $this->invoices = array(); $this->index = 1; + $this->compression = $compression; } @@ -114,6 +119,11 @@ public function getInvoices() { } + public function isCompressed() { + return $this->compression; + } + + /** * XML objektum konvertálása base64-es szöveggé * @param \SimpleXMLElement $xml @@ -121,6 +131,11 @@ public function getInvoices() { */ protected function convertXml(\SimpleXMLElement $xml) { $xml = $xml->asXML(); + + if ($this->compression) { + $xml = gzencode($xml, self::COMPRESSION_LEVEL); + } + return base64_encode($xml); } @@ -131,10 +146,11 @@ protected function convertXml(\SimpleXMLElement $xml) { * * @param \SimpleXMLElement $xml * @param string $operation + * @param boolean $compression gzip tömörítés alkalmazása, részletek: NAV dokumentáció, 1.6.5 Tömörítés és méretkorlát * @return InvoiceOperations */ - public static function convertFromXml($xml, $operation) { - $invoiceOperations = new self(); + public static function convertFromXml($xml, $operation, $compression = false) { + $invoiceOperations = new self($compression); $invoiceOperations->useDataSchemaValidation(); $invoiceOperations->add($xml, $operation); diff --git a/src/NavOnlineInvoice/ManageInvoiceRequestXml.php b/src/NavOnlineInvoice/ManageInvoiceRequestXml.php index 0cb8d1e..0bb5c20 100644 --- a/src/NavOnlineInvoice/ManageInvoiceRequestXml.php +++ b/src/NavOnlineInvoice/ManageInvoiceRequestXml.php @@ -38,8 +38,7 @@ protected function addToken() { protected function addInvoiceOperations() { $operationsXml = $this->xml->addChild("invoiceOperations"); - // NOTE: the compression is currently not supported - $operationsXml->addChild("compressedContent", false); + $operationsXml->addChild("compressedContent", $this->invoiceOperations->isCompressed()); // Számlák hozzáadása az XML-hez foreach ($this->invoiceOperations->getInvoices() as $invoice) {