Skip to content

Commit

Permalink
Enhance queryInvoiceData() method: decode and return invoice data XML…
Browse files Browse the repository at this point in the history
… if the second argument is true
  • Loading branch information
pzs committed Oct 5, 2020
1 parent 8d05fad commit 2fcd66f
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 5 deletions.
20 changes: 18 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,19 +209,35 @@ try {

### Számla lekérdezése (`queryInvoiceData`)

Számla lekérdezése számlaszám alapján, mely kiállító és vevő oldalról is használható.
Számla lekérdezése számlaszám alapján, mely kiállító és vevő oldalról is használható. Második paraméterben `true`-t átadva a metódus a dekódolt számla XML-t adja vissza `invoiceDataResult` helyett.

```php
try {
$invoiceNumberQuery = [
"invoiceNumber" => "T20190001",
"invoiceDirection" => "OUTBOUND",
];

// Lekérdezés
$invoiceDataResult = $reporter->queryInvoiceData($invoiceNumberQuery);

print "Query results XML elem:\n";
var_dump($invoiceDataResult);

// Számla kézi dekódolása
$invoice = NavOnlineInvoice\InvoiceOperations::convertToXml($invoiceDataResult->invoiceData, $invoiceDataResult->compressedContentIndicator);

// Számla:
var_dump($invoice);

// *** VAGY ***

// Lekérdezés és számla automatikus dekódolása
$invoice = $reporter->queryInvoiceData($invoiceNumberQuery, true); // 2. paraméter jelzi az automatikus dekódolást

// Számla:
var_dump($invoice);

} catch(Exception $ex) {
print get_class($ex) . ": " . $ex->getMessage();
}
Expand Down Expand Up @@ -389,7 +405,7 @@ Ezen az osztályon érhetjük el a NAV interfészén biztosított szolgáltatás
- `__construct(Config $config)`
- `manageInvoice($invoiceOperationsOrXml [, $operation])`: A számla beküldésére szolgáló operáció. Visszatérési értékként a `transactionId`-t adja vissza string-ként. Paraméterben a beküldendő számla XML-t kell átadni, illetve a hozzá tartozó műveletet (ManageInvocieOperationType): CREATE, MODIFY, STORNO. Átadható egyszerre több számla is, ilyenkor első paraméterben InvoiceOperations példányt kell átadni (második paraméternek nincs szerepe ilyenkor).
- `manageAnnulment($invoiceOperationsOrXml)`: Technikai érvénytelenítés beküldésére szolgáló operáció. Paraméterben a technikai érvénytelenítést leíró XML-t, vagy egy InvoiceOperations példányt kell átadni. Utóbbi esetben az InvoiceOperations példány több XML-t is tartalmazhat. A metódus visszaadja a transactionId-t, mellyel lekérdezhető a tranzakció eredménye.
- `queryInvoiceData($invoiceNumberQuery)`: Számla lekérdezése számlaszám alapján, mely kiállító és vevő oldalról is használható. Paraméterben az invoiceNumberQuery-nek megfelelően összeállított lekérdezési adatokat kell átadni (`SimpleXMLElement` példány). Visszatérési értéke a visszakapott XML `invoiceDataResult` része (`SimpleXMLElement` példány)
- `queryInvoiceData($invoiceNumberQuery [, $returnDecodedInvoiceData = false])`: Számla lekérdezése számlaszám alapján, mely kiállító és vevő oldalról is használható. Paraméterben az invoiceNumberQuery-nek megfelelően összeállított lekérdezési adatokat kell átadni (`SimpleXMLElement` példány). Visszatérési értéke a visszakapott XML `invoiceDataResult` része (`SimpleXMLElement` példány), vagy a számla XML, ha 2. paraméterben `true`-t adtunk át.
- `queryInvoiceDigest($invoiceQueryParams, $page = 1, $direction = "OUTBOUND")`: Lekérdező operáció, mely kiállító és vevő oldalról is használható. Paraméterben az invoiceQueryParams-nak megfelelően összeállított lekérdezési adatokat kell átadni (SimpleXMLElement), az oldalszámot és a keresés irányát (OUTBOUND, INBOUND). A válasz XML invoiceDigestResult része.
- `queryTransactionStatus(string $transactionId [, $returnOriginalRequest = false])`: A számla adatszolgáltatás feldolgozás aktuális állapotának és eredményének lekérdezésére szolgáló operáció
- `queryTransactionList($insDate [, $page = 1])`: A kérésben megadott időintervallumban, a technikai felhasználóhoz tartozó adószámhoz beküldött számlaadat-szolgáltatások listázására szolgál
Expand Down
18 changes: 18 additions & 0 deletions examples/queryInvoiceData.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,29 @@
"invoiceNumber" => "T20190001",
"invoiceDirection" => "OUTBOUND",
];


// Lekérdezés
$invoiceDataResult = $reporter->queryInvoiceData($invoiceNumberQuery);

print "Query results XML elem:\n";
var_dump($invoiceDataResult);

// Számla kézi dekódolása
$invoice = NavOnlineInvoice\InvoiceOperations::convertToXml($invoiceDataResult->invoiceData, $invoiceDataResult->compressedContentIndicator);

// Számla:
var_dump($invoice);

// *** VAGY ***

// Lekérdezés és számla automatikus dekódolása
$invoice = $reporter->queryInvoiceData($invoiceNumberQuery, true); // 2. paraméter jelzi az automatikus dekódolást

// Számla:
var_dump($invoice);


} catch(Exception $ex) {
print get_class($ex) . ": " . $ex->getMessage();
}
20 changes: 20 additions & 0 deletions src/NavOnlineInvoice/InvoiceOperations.php
Original file line number Diff line number Diff line change
Expand Up @@ -158,4 +158,24 @@ public static function convertFromXml($xml, $operation, $compression = false) {
return $invoiceOperations;
}


/**
* Számla dekódolása (base64 és opcionálisan gzip)
*
* @param string $base64data
* @param boolean $isCompressed
* @return \SimpleXMLElement
*/
public static function convertToXml($base64data, $isCompressed = false) {
$isCompressed = ($isCompressed === true or (string)$isCompressed === 'true');

$data = base64_decode($base64data);

if ($isCompressed) {
$data = gzdecode($data);
}

return simplexml_load_string($data);
}

}
17 changes: 14 additions & 3 deletions src/NavOnlineInvoice/Reporter.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,13 +103,24 @@ public function manageInvoice($invoiceOperationsOrXml, $operation = "CREATE") {
* oldaláról is használható. Az operáció a megadott számlaszám teljes adattartalmát adja vissza a válaszban.
*
* @param array $invoiceNumberQuery Az invoiceNumberQuery-nek megfelelően összeállított lekérdezési adatok
* @return \SimpleXMLElement $invoiceDataResultXml A válasz XML invoiceDataResult része
* @param boolean [$returnDecodedInvoiceData = false] invoiceDataResult helyett a dekódolt számla XML-t adja vissza a metódus
* @return \SimpleXMLElement $invoiceDataResultXml A válasz XML invoiceDataResult része vagy a dekódolt számla XML
*/
public function queryInvoiceData($invoiceNumberQuery) {
public function queryInvoiceData($invoiceNumberQuery, $returnDecodedInvoiceData = false) {
$requestXml = new QueryInvoiceDataRequestXml($this->config, $invoiceNumberQuery);
$responseXml = $this->connector->post("/queryInvoiceData", $requestXml);

return $responseXml->invoiceDataResult;
$result = $responseXml->invoiceDataResult;

if ($returnDecodedInvoiceData) {
if (empty($result->invoiceData)) {
return null;
}
$isCompressed = $result->compressedContentIndicator;
return InvoiceOperations::convertToXml($result->invoiceData, $isCompressed);
}

return $result;
}


Expand Down

0 comments on commit 2fcd66f

Please sign in to comment.