Na našich stránkách lze v sekci věnované zákazníkům najít seznam faktur, které jsme vystavili. Zobrazujeme o nich základní informace, jako je číslo faktury, datum vystavení a také stav úhrady. Výslednou fakturu si lze stáhnout jako PDF soubor.
V následujícím návodu vám ukážeme postup, který vám umožní mít stejnou funkci na svých stránkách.
Výslednou aplikaci si můžete vyzkoušet u nás a nebo si ji stáhnout.
Celé to funguje tak, že se webový server dotáže (s heslem) FlexiBee a vypíše všechny faktury, které jsou vystaveny na konkrétní DIČ. Předpokládáme, že při instalaci zajistíte ověření uživatele, zjištění správného DIČ a také vizuální integraci s Vašimi webovými stránkami.
Na začátku tedy FlexiBee provede dotaz na adresu http://demo.flexibee.eu/c/demo/faktura-vydana/(dic='CZ7002051235').js ve formátu JSON a výsledná data zobrazí v tabulce. Když uživatel projeví zájem o PDF, přečteme data z adresy http://demo.flexibee.eu/c/demo/faktura-vydana/(dic='CZ7002051235' and id=21).js.
Celé tu funguje tak, že webová aplikace funguje jako proxy. Přistupující uživatel tedy nemusí mít účet ve FlexiBee.
Základem je soubor winstrom-rest-api.php:
<?php
/**
* Jednoduchá funkce, která připraví dotaz.
* @param $urlSuffix část URL za identifikátorem firmy.
*/
function wsRequestObject($urlSuffix) {
global $wsHost, $wsFirma, $wsUser, $wsPassword;
require_once "HTTP/Request.php";
$req =& new HTTP_Request();
// Nastavení autorizačních údajů (jméno a heslo)
$req->setBasicAuth($wsUser, $wsPassword);
$req->setURL($wsHost."/c/".$wsFirma.$urlSuffix);
$req->setMethod(GET);
return $req;
}
/**
* Funkce, která provede operaci a vyhodnotí výsledek.
*/
function wsProcess($req) {
$response = $req->sendRequest();
// Následující kód již jen vizualizuje, zda se operace povedla
if (PEAR::isError($response)) {
printf ("Při komunikaci se serverem nastala síťová chyba: %s", $response->getMessage());
return FALSE;
} else {
// HTTP požadavek uspěl:
if ($req->getResponseCode() != 200) {
// Součástí odpovědi je JSON zpráva, která obsahuje důvod selhání
$error = json_decode($req->getResponseBody(), true);
printf ("Při operaci nastala chyba (HTTP %d: %s)",.
$req->getResponseCode(),.
$req->getResponseReason()
);
return FALSE;
} else {
return $req->getResponseBody();
}
}
}
?>
Je také potřeba vytvořit konfigurační soubor config.php:
<?php
// zde je potřeba doplnit konfigurační údaje pro připojení na server
$wsHost = "https://demo.winstrom.eu:5434";
$wsFirma = "demo";
$wsUser = "winstrom";
$wsPassword = "winstrom";
// načtení DIČ firmy z profilu uživatele. Lze také vyměnit za jiné identifikátory (IČ, kód, externí ID, ...)
$dic = "CZ7002051235";
?>
Důležitá je část, která určuje DIČ firmy. Zde předpokládáme integraci s vašimi webovými stránkami, které zajistí identifikaci uživatele a načtení odpovídající firmy.
Nyní již přichází na řadu načtení přehledu faktur index.php:
<?php
include ("config.php");
include ("winstrom-rest-api.php");
$suffix = "/faktura-vydana/(dic=".urlencode($dic).").json?order=datVyst@D&detail=detail";
$req = wsRequestObject($suffix);
$result = wsProcess($req);
if ($result === FALSE) {
die("Nemohu přečíst fakturu ");
}
$result = json_decode($result, true);
header("Content-type: text/html; charset=utf-8");
?>
<html>
<head>
<title>Vystavené faktury</title>
</head>
<body>
<h1>Vystavené faktury</h1>
<?php if (!isset($result) || !isset($result["winstrom"]["faktura-vydana"])) { ?>
<p>Na Vaši firmu nebyla vystavena žádná faktura.</p>
<?php } else { ?>
<table>
<thead>
<tr>
<th>Číslo faktury</th>
<th>Datum faktury</th>
<th>Částka</th>
<th>Stav</th>
</tr>
</thead>
<tbody>
<?php while (list($k, $faktura) = each ($result["winstrom"]["faktura-vydana"])) { ?>
<tr>
<td><a href="pdf.php?id=<?php print($faktura["id"]); ?>"><?php print ($faktura["kod"]); ?></a></td>
<td><?php print wsFormatDate($faktura["datVyst"]); ?></td>
<td style="text-align:right"><?php print wsFormatMoney($faktura["sumCelkem"]); ?> Kč</td>
<td><?php if ($faktura["stavUhrK"] == "") { print "<span style=\"color: red\">Neuhrazeno</span>"; } else { print ("<span style=\"color: green\">".$faktura["stavUhrK@showAs"]." (dne ".wsFormatDate($faktura["datUhr"]).")</span>"); } ?> </td>
</tr>
<?php } ?>
</tbody>
</table>
<?php } ?>
</body>
</html>
Abychom uživateli umožnili zobrazení PDF verze faktury, vytvoříme ještě soubor pdf.php:
<?php
include ("config.php");
include ("winstrom-rest-api.php");
$id = $_GET["id"];
$suffix = "/faktura-vydana/(dic='".urlencode($dic)."'%20and%20id=".((int)$id).").pdf?order=datVyst@D&detail=detail";
$req = wsRequestObject($suffix);
$result = wsProcess($req);
if ($result === FALSE) {
die("Nemohu přečíst fakturu ");
}
// nastavíme spravný Content-Type a pokud možno, otevřeme PDF přímo v prohlížeči
header("Content-Type: application/pdf");
header("Content-Disposition: inline; filename=\"faktura.pdf\" ");
print($result);
?>
To samozřejmě není vše, co můžete s rozhraním FlexiBee REST API dělat. Můžete exportovat fakturu jako ISDOC, zobrazovat ceník, objednávky a mnoho dalšího.
Výslednou aplikaci si můžete vyzkoušet u nás a nebo si ji stáhnout.