Skip to content

PHP Based Library for easy interaction with czech accounting system Flexibee.

License

Notifications You must be signed in to change notification settings

blahasoft/FlexiPeeHP

 
 

Repository files navigation

FlexiPeeHP

FlexiPeeHP Logo

PHP Based Library for easy interaction with Czech accounting system FlexiBee.

CZ: PHP Knihovna pro snadnou práci s českým ekonomickým systémem FlexiBee

Source Code Latest Version Software License Build Status Code Coverage Docker pulls Total Downloads Latest stable

SensioLabsInsight

Poděkování

Vznik této knihovny by nebyl možný bez laskavé podpory společnosti Spoje.Net, která hradila vývoj řešení pro propojení LMS / FlexiBee a importu skladu. 👍

Spoje.Net

U společnosti Spoje.Net, je možné si objednat komerční podporu pro integraci knihovny do vašich projektů. K dispozici jsou tyto neveřejné funkce:

  • Příjmání a zpracování WebHooks
  • Konverze a import dat z SQL databáze
  • Obousměrná synchronizace s externím systém
  • Párování dokladů dle specifického symbolu

Dále chci poděkovat technické podpoře společnosti ABRA Flexi s.r.o. za jejich svatou trpělivost při reakcích na mé ne vždy bystré otázky a bugreporty.

Instalace

composer require spoje.net/flexipeehp

Konfigurace

Konfigurace se provádí nastavením následujících konstant:

    /*
    * URL Flexibee API
    */
    define('FLEXIBEE_URL', 'https://flexibee-dev.spoje.net:5434');
    /*
    * Uživatel FlexiBee API
    */
    define('FLEXIBEE_LOGIN', 'apiuser');
    /*
    * Heslo FlexiBee API
    */
    define('FLEXIBEE_PASSWORD', 'apipass');
    /*
     * Společnost v FlexiBee
    */
    define('FLEXIBEE_COMPANY', 'test_s_r_o_');

nebo je možné přihlašovací údaje zadávat při vytváření instance třídy.

    $invoicer = new \FlexiPeeHP\FakturaVydana(null,[
                'company' => 'Firma_s_r_o_',
                'url' => 'https://flexibee.firma.cz/',
                'user' => 'rest',
                'password' => '-dj3x21xaA_'
            ]);

Tento způsob nastavení má vyšší prioritu než výše uvedené definovaní konstant.

Jak to celé funguje ?

Ústřední komponentou celé knihovny je Třída FlexiBeeRO, která je schopna pomocí PHP rozšíření curl komunikovat s REST Api FlexiBee.

Z ní jsou pak odvozeny třídy pro jednotlivé evidence, obsahující metody pro často používané operace, například "Zaplať" v případě přijatých faktur.

Nová odvozená třída vzniká tak že jméno třídy je název evidence avšak bez pomlček. Ty jsou ve jméně nahrazeny velkým písmenem.

    function evidenceToClass($evidence)
    {
        return str_replace(' ', '', ucwords(str_replace('-', ' ', $evidence)));
    }

Tzn. Pokud chceme odvodit novou třídu pro evidenci "Měrné jednotky" bude vypadat takto:

    <?php
    /**
     * @link https://demo.flexibee.eu/c/demo/merna-jednotka/properties Vlastnosti evidence
     */
    class MernaJednotka extends /FlexiPeeHP/FlexiBee
    {
        /**
         * Evidence užitá objektem.
         *
         * @var string
         */
        public $evidence = 'merna-jednotka';
    }

A poté je již snadné si vypsat měrné jednotky na 2 řádky:

    $jednotky = new MernaJednotka();
    print_r( $jednotky->getAllFromFlexiBee() );

Pokud chceme aby nově vytvořená třída uměla do flexibee i zapisovat, je třeba jí odvodit od předka FlexiBeeRW.

Více příkladů použití je možné najít v samostatném projektu

Struktura Evidencí, Akcí a vztahů

V některých případech je dobré znát jaké můžeme provádět akce, či jáká je struktura evidence. Tyto informace je možno získat voláním https://demo.flexibee.eu/c/demo/*/properties.json respektive https://demo.flexibee.eu/c/demo/*/actions.json avšak jedná se o relativně časově náročné operace. Jelikož se struktura evidencí a Akce či vztahy mezi evidencemi FlexiBee často nemění FlexiPeeHP disponuje mechanizmem který umožní pracovat s těmito údaji bez nutnosti dotazovat se na ně serveru.

Struktura je uložena ve třídě Structure (Actions,Relations) která obsahuje staticky definované pole obsahující informace které by jinak bylo nutné získat z FlexiBee.

Položku v seznamu evidencí https://demo.flexibee.eu/c/demo/evidence-list je pak možné kdykoliv snadno ukázat:

    echo \FlexiPeeHP\Structure::$evidence['faktura-vydana'];

Sturktury jednotlivých evidencí jsou pak uloženy ve statických proměnných. Jejich jméno se řídí stejnými pravidly jako jsou pro vytváření jména nové třídy jen s tím rozdílem, že první písmeno je malé. Tzn.:

    lcfirst(\FlexiPeeHP\FlexiBeeRO::evidenceToClassName($evidence))

V případě potřeby je možné tyto třídy pak možné vygenerovat s aktuálním obsahem následujícím příkazem:

cd tools/ 
./update_all.sh

Operace trvá několik minut. Zobrazit průběh můžeme takto:

tail -f /var/log/syslog | grep  FlexiPeeHPtest

Ladicí režim

Pokud v objektech FlexiPeeHP nastavíte $this->debug na true, budou se před odesláním dat do FlexiBee provedeny dodatečné testy. Kontrolují se tyto možné chyby:

  • Existuje vkládané políčko definované pro evidenci ?
  • Je vkládané políčko Pouze pro čtení ?
  • Pokud je vkládané políčko vazbou, je i polem ?

V ladícím režimu se také ukládají do složky /tmp všechny požadavky na flexibee a jejich odpovědi

Knihovna obsahuje mechanizmus pro odesílání zaznamenaných chyb při běhu FlexiBee vývojářům:

Pokud FlexiBee vrátí Internal Server Error 500, je odeslán vývojářům email obsahující chybovou zprávu.

V případě že je použito FlexiBee běžící na stejném serveru a je možné číst chybové logy je z nich vypreparován patřičný fragment a i ten je přidán do těla mailu.

Email obsahuje také dodatečné informace o licenci a povolených modulech.

Jako přílohy jsou také připojeny soubory obsahující tělo dotazu na server, tělo jeho odpovědi a soubor obsahující informace o curl.

Během života objektu se chyby evidují a odesílá se pouze první každého druhu.

Testování

PHPUnit testy se nachází ve složce testing. Pokud chcete testovat proti jinému serveru než je oficální http://demo.flexibee.eu/ , je třeba změnit nastavení v souboru bootstrap.php.

Obsah proměnné $testServer určuje která z předvolených nastavení budou použita. A samozřejmě si můžete nadefinovat i vlastní. Jako příklad je zde uveden testovací server spoje.net.

Pro testování vytvořte prosím nejprve testovací firmu TESTING s.r.o. a nastavte přístupové údaje uživatele s oprávněním používat REST API. (Což je uživatel administrátora zadaný při instalaci FlexiBee.)

Upozornění: testování proti firmě s množstvím faktur a připojenou bankou může trvat nějakou dobu, jelikož se testuje i zavolání automatického párování dokladů.

Ukázka

Ve složce Examples jsou tyto ukázky použití:

Soubor Popis
AttachmentSaveToFile.php uložení přílohy do souboru
AttachmentUpload.php nahrání přílohy
AuthentizeContact.php autentizace kontaktu
BatchOperation.php Použití filtru při dávkových operacích
CreateLabel.php práce se štítky
DownloadInvoicePDF.php stažení PDF faktury
Error404.php práce s neexistujícími záznamy
FindOverdueInvoices.php najdi faktury po splatnosti
GetRecordWithRelation.php Získání záznamu včetně dat z podevidence
InvoiceLockUnlock.php Zamykání a odemykání záznamu
InvoiceCopy.php vytvoření daňového dokladu ze zálohy
NajdiDanovyDokladKzalohovemu.php dohledání dokladu
NewInvoice.php Nová faktura se splatností vypsaná jako json
ObjectChaining.php Řetězení objektů pro více operací v jenom pořadavku
ReadAddressColumns.php vrať konkrétní sloupečky
sendInvoiceByMail.php odeslání faktury mailem
SendReminders.php odeslání upomínek
SetContactAuth.php nastavení autentizace
TestConnection.php kontrola spojení

Příkladem využití knihovny v aplikaci je nástroj Flexplorer

Docker

docker pull vitexsoftware/flexipeehp

Debian/Ubuntu

Pro Linux jsou k dispozici .deb balíčky. Prosím použijte repo:

wget -O - http://v.s.cz/info@vitexsoftware.cz.gpg.key|sudo apt-key add -
echo deb http://v.s.cz/ stable main > /etc/apt/sources.list.d/ease.list
aptitude update
aptitude install flexipeehp

V tomto případě je potřeba do souboru composer.json vaší aplikace přidat:

    "require": {
        "flexipeehp": "*",
        "ease-framework": "*"
    },
    "repositories": [
        {
            "type": "path",
            "url": "/usr/share/php/FlexiPeeHP",
            "options": {
                "symlink": true
            }
        },
        {
            "type": "path",
            "url": "/usr/share/php/Ease",
            "options": {
                "symlink": true
            }
        }
    ]

Takže při instalaci závislostí bude vypadat nějak takto:

Loading composer repositories with package information
Installing dependencies from lock file
  - Installing ease-framework (1.1.3.3)
    Symlinked from /usr/share/php/Ease

  - Installing flexipeehp (0.2.1)
    Symlinked from /usr/share/php/FlexiPeeHP

A aktualizaci bude možné dělat globálně pro celý systém prostřednictvím apt-get.

Generujeme také balíček flexipeehp-doc, obsahující vývojářskou dokumentaci generovanou pomcí programu ApiGen. Dokumnentace je online k nahlédnutí na adrese http://flexibee-dev.spoje.net/flexipeehp/

Testování:

 cd /usr/share/doc/FlexiPeeHP/
 composer install
 php -f flexibeeping.php

Debian Test

Sestavení

Debianí balíček vytvoříme spuštěním debian/deb-package.sh

Obraz pro Docker:

docker build -t vitexsoftware/flexipeehp

FlexiBee knihovny pro další jazky:

Statistiky práce na projektu WakaTime

About

PHP Based Library for easy interaction with czech accounting system Flexibee.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 99.5%
  • Other 0.5%