Skip to content

Commit

Permalink
Add gzip compression feature to manageInvoice operation
Browse files Browse the repository at this point in the history
By default it's disabled, see examples/manageInvoice_compressed.php and the following capture in the NAV documentation: 1.6.5 Tömörítés és méretkorlát
  • Loading branch information
pzs committed Oct 5, 2020
1 parent 9aef02f commit 8d05fad
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 6 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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()`
Expand Down
24 changes: 24 additions & 0 deletions examples/manageInvoice_compressed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

include("config.php");


try {
$config = new NavOnlineInvoice\Config($apiUrl, $userData, $softwareData);
$reporter = new NavOnlineInvoice\Reporter($config);

$compression = true;
$invoices = new NavOnlineInvoice\InvoiceOperations($compression);

// Maximum 100db számla küldhető be egyszerre
$invoices->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();
}
22 changes: 19 additions & 3 deletions src/NavOnlineInvoice/InvoiceOperations.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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;
}


Expand Down Expand Up @@ -114,13 +119,23 @@ public function getInvoices() {
}


public function isCompressed() {
return $this->compression;
}


/**
* XML objektum konvertálása base64-es szöveggé
* @param \SimpleXMLElement $xml
* @return string
*/
protected function convertXml(\SimpleXMLElement $xml) {
$xml = $xml->asXML();

if ($this->compression) {
$xml = gzencode($xml, self::COMPRESSION_LEVEL);
}

return base64_encode($xml);
}

Expand All @@ -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);
Expand Down
3 changes: 1 addition & 2 deletions src/NavOnlineInvoice/ManageInvoiceRequestXml.php
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 8d05fad

Please sign in to comment.