Giter VIP home page Giter VIP logo

php-abraflexi's People

Contributors

petaak avatar serge-tseiko avatar vitexus avatar vojtasvoboda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

php-abraflexi's Issues

Chyba filtrování s gt

Od 5.12. mi přestalo fungovat filtrování:

$response = $invoices->getColumnsFromFlexiBee($columns, [
        'id' => "gt $lastInvoiceId",
        'storno' => false,
        'limit' => 100,
]);

které pak generuje URL ve tvaru:

/faktura-vydana/?(id%20gt%20%2789587%27and%20storno%20eq%20false)&limit=100

Dle podpory je problém v konstrukci id gt '89587' a správně to má být id gt 89587, což dává smysl a doopravdy při manuální změně v URL to funguje. Nicméně v rámci https://www.flexibee.eu/k/prehled-verzi-flexibee/prehled-verzi-abra-flexi-2023/ jsem zmínku o této změně nedohledal, asi to nebrali jako breaking change :-)

Jako hot fix jsem použil:

$response = $invoices->getColumnsFromFlexiBee($columns, [
        0 => "id gt $lastInvoiceId",
        'storno' => false,
        'limit' => 100,
]);

Ale mělo by to být ošetřeno na úrovni knihovny nejspíš.

FakturaVydana::odpocetZalohy method does not work

After updating from v2.1 to v2.11 the FakturaVydana::odpocetZalohy method does not work properly.

In the 2.1 version you send the eet section as follows:

{
...
         "eetDicPoverujiciho":"",
         "eetFik":"",
         "eetPkp":"",
         "eetBkp":"",
         "eetPokladniZarizeni":"",
         "eetProvozovna":"",
         "eetStavK":"",
         "eetTypK":"",
         "eetDatCasTrzby":"",
...
}

But in the 2.11 version the request is different for the same invoice:

{
...
         "eetDicPoverujiciho":"",
         "eetFik":"",
         "eetPkp":"",
         "eetBkp":"",
         "eetPokladniZarizeni":"",
         "eetProvozovna":0,
         "eetStavK":"",
         "eetTypK":"",
         "eetDatCasTrzby":null,
...
}

The null value of the eetDatCasTrzby property leeds to the following error:

{
   "winstrom":{
      "@version":"1.0",
      "success":"false",
      "stats":{
         "created":"0",
         "updated":"0",
         "deleted":"0",
         "skipped":"0",
         "failed":"1"
      },
      "results":[
         {
            "request-id":"45837",
            "errors":[
               {
                  "message":"Zadaný text 'null' musí být datum [21/05/2316]",
                  "for":"eetDatCasTrzby",
                  "path":"faktura-vydana[id=45837].eetDatCasTrzby",
                  "value":"null",
                  "code":"PROP"
               }
            ]
         }
      ]
   }
}

I think the best way to fix this issue would be to send only the relevant data i.e. the invoice identifier and the 'odpocty-zaloh' section.

Chybí evidence Sklad

Zdar,
chybí evidence Sklad. Má to nějaký důvod, nebo jsem jen něco přehlédl? :-)
Jinak díky APInu - už ji nějakých pár let používáme na zjednodušení přesunu zboží ze skladu. Sice je to jen prachsprostý zlomek využitelnosti API... ale teď při rozšiřování funkčnosti jsem všiml tohoto problému.

Dry-run a sync

Když při testování nastavím dry-run a pro uložení záznamu použiju sync tak funkce vždy vrátí false což podle mě není ideální chování. Navrhuji upravit funkci sync aby brala v potaz jestli je dry-run nastavený nebo ne.

Curl Error (HTTP 0): getaddrinfo() thread failed to start

There is some problem with curl and closing its open filedescriptors :(

PHP Warning:  include(/usr/share/php/AbraFlexi/Exception.php): Failed to open stream: Too many open files in /var/lib/composer/discomp2abraflexi/composer/ClassLoader.php on line 576
PHP Stack trace:
PHP   1. {main}() /usr/share/discomp2abraflexi/discomp2abraflexi.php:0
PHP   2. SpojeNet\\Discomp\\Importer->freshItems() /usr/share/discomp2abraflexi/discomp2abraflexi.php:34
PHP   3. SpojeNet\\Discomp\\Importer->prepareCategories($categoriesRaw = [0 => \'Druhy > Počítače > PC komponenty > Paměti > DDR4 > 4GB\', 1 => \'Vyrobci - WEB > TRANSCEND > Počítače > PC komponenty > Paměti > DDR4 > 4GB\']) /usr/share/discomp2abraflexi/Discomp/Importer.php:284
PHP   4. SpojeNet\\Discomp\\Importer->categoryBranch($nodes = [0 => \'Discomp\', 1 => \'Vyrobci - WEB\', 2 => \'TRANSCEND\', 3 => \'Počítače\', 4 => \'PC komponenty\', 5 => \'Paměti\', 6 => \'DDR4\', 7 => \'4GB\']) /usr/share/discomp2abraflexi/Discomp/Importer.php:543
PHP   5. SpojeNet\\Discomp\\Importer->createBranchNode($node = \'Discomp\', $level = 0, $parent = \'\', $kod = \'39797b8d0f122a4f69bd1d29c202b691\') /usr/share/discomp2abraflexi/Discomp/Importer.php:559
PHP   6. AbraFlexi\\RO->__construct($init = \'code:39797B8D0F122A4F69BD1D29C202B6\', $options = [\'ignore404\' => TRUE]) /usr/share/discomp2abraflexi/Discomp/Importer.php:582
PHP   7. AbraFlexi\\RO->processInit($init = \'code:39797B8D0F122A4F69BD1D29C202B6\') /usr/share/php/AbraFlexi/RO.php:438
PHP   8. AbraFlexi\\RO->loadFromAbraFlexi($id = \'code:39797B8D0F122A4F69BD1D29C202B6\') /usr/share/php/AbraFlexi/RO.php:635
PHP   9. AbraFlexi\\RO->getFlexiData($suffix = \'https://server:5434/c/company/strom/code:39797B8D0F122A4F69BD1D29C202B6\', $conditions = \'\') /usr/share/php/AbraFlexi/RO.php:1558
PHP  10. AbraFlexi\\RO->performRequest($urlSuffix = \'https://server:5434/c/company/strom/code:39797B8D0F122A4F69BD1D29C202B6\', $method = \'GET\', $format = *uninitialized*) /usr/share/php/AbraFlexi/RO.php:1522
PHP  11. AbraFlexi\\RO->doCurlRequest($url = \'https://server:5434/c/company/strom/code:39797B8D0F122A4F69BD1D29C202B6\', $method = \'GET\', $format = NULL) /usr/share/php/AbraFlexi/RO.php:997
PHP  12. Composer\\Autoload\\ClassLoader->loadClass($class = \'AbraFlexi\\\\Exception\') /usr/share/php/AbraFlexi/RO.php:1302
PHP  13. Composer\\Autoload\\{closure:/var/lib/composer/discomp2abraflexi/composer/ClassLoader.php:575-577}($file = \'/var/lib/composer/discomp2abraflexi/composer/../deb/abraflexi/Exception.php\') /var/lib/composer/discomp2abraflexi/composer/ClassLoader.php:427

https://github.com/Spoje-NET/discomp2abraflexi

Pull down bank statements hang on plaintext response

`
"/usr/bin/php" "/home/vitex/Projects/EASE/abraflexi-matcher/src/StahniBanku.php"
10/12/21 23:49:30 •AbraFlexi\Banka‣ ⚙ StahniBanku PHP v7.4.24 EasePHP Framework v0.5 ServerURL https://[email protected]:5434/c/vitex_software/banka library v2.6 (AbraFlexi 2021.7.6)
10/12/21 23:49:31 •AbraFlexi\Banka‣ ⚙ Download online bank statements
10/12/21 23:51:07 •Ease\Molecule‣ ☠ AbraFlexi\Banka: JSON Decoder: Syntax error
PHP Fatal error: Uncaught AbraFlexi\Exception: AbraFlexi\Banka: JSON Decoder: Syntax error in /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/RO.php:1072
Stack trace:
#0 /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/RO.php(966): AbraFlexi\RO->rawJsonToArray('Soubor 2021-10-...')
#1 /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/RO.php(950): AbraFlexi\RO->rawResponseToArray('Soubor 2021-10-...', 'json')
#2 /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/Banka.php(43): AbraFlexi\RO->performRequest('nacteni-vypisu-...', 'PUT', 'txt')
#3 /home/vitex/Projects/EASE/abraflexi-matcher/src/StahniBanku.php(21): AbraFlexi\Banka->stahnoutVypisyOnline()
#4 {main}
thrown in /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/RO.php on line 1072

Fatal error: Uncaught AbraFlexi\Exception: AbraFlexi\Banka: JSON Decoder: Syntax error in /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/RO.php on line 1072

AbraFlexi\Exception: AbraFlexi\Banka: JSON Decoder: Syntax error in /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/RO.php on line 1072

Call Stack:
0.1177 400880 1. {main}() /home/vitex/Projects/EASE/abraflexi-matcher/src/StahniBanku.php:0
9.8523 1817880 2. AbraFlexi\Banka->stahnoutVypisyOnline() /home/vitex/Projects/EASE/abraflexi-matcher/src/StahniBanku.php:21
9.8523 1817880 3. AbraFlexi\Banka->performRequest($urlSuffix = 'nacteni-vypisu-online.json', $method = 'PUT', $format = 'txt') /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/Banka.php:43
16.9741 2037608 4. AbraFlexi\Banka->rawResponseToArray($responseRaw = 'Soubor 2021-10-12 214932_2601221676-2010_CZK.gpc\n Výpis 0 pro účet 0000000 - Načítání proběhlo úspěšně. The loaded statement does not contain any item. Počet položek 0\n\nSoubor 2021-10-12 214932_CZ.gpc\n Výpis 0 pro účet 000000 - Načítání proběhlo úspěšně. The loaded statement does not contain any item. Počet položek 0\n\n', $format = 'json') /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/RO.php:950
105.2005 2037608 5. AbraFlexi\Banka->rawJsonToArray($rawJson = 'Soubor 2021-10-12 60104.gpc\n Výpis 0 pro účet 000000-2601221676 - Načítání proběhlo úspěšně. The loaded statement does not contain any item. Počet položek 0\n\nSoubor 2021-10-12 214932.gpc\n Výpis 0 pro účet 000000-2800677051 - Načítání proběhlo úspěšně. The loaded statement does not contain any item. Počet položek 0\n\n') /home/vitex/Projects/EASE/abraflexi-matcher/vendor/spojenet/flexibee/src/AbraFlexi/RO.php:966
`

Metoda performRequest z urlSuffix null zlyha

Pokusal som sa vykonat akciu nad fakturov $invoice->performAction('storno','int')

Akcia zlyha pretože AbraFlexi\RO::performRequest() požaduje string, ale metoda AbraFlexi\RW::performAction ju vola z null

U seba som to vyriesil tým že som null prepísal na prázdny string. Niesom si istý či ide o korektné riešenie.

Různé chybky

Chybějící return (je tam, ale vrací jen pokud je splněna podmínka)
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/FakturaVydana.php#L198

Chybějící return volá rodiče, ale nic nevrací (případně odebrat z annotace)
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L2804

Předává parametr, ale metoda žádný nechce
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/Stitky.php#L50
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/Stitky.php#L25

Vyžaduje parametry 2 dostává 3
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L2766

Zbytečný switch, vrací true uplně vždy
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L731

Překlad textu výjimky podrtzítkovou funkcí?

Stačí jen $options, toto co tam je nyní, je dostupné až od PHP 7.2
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RW.php#L76

Parent vrací void!
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RW.php#L76
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/Report.php#L53

Prázdný IF
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/Adresar.php#L103

Chybějící 'break;'
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L631
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L1137
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L1149
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L1712
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L1714

Nahradit NULL za "", neboť metoda vyžaduje string a není to typově kompatibilní
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L1625
https://github.com/Spoje-NET/php-abraflexi/blob/2.0/src/AbraFlexi/RO.php#L2106

Fatal error: Uncaught Error: get_class() expects parameter 1 to be object, null given in /vendor/spojenet/flexibee/src/AbraFlexi/RO.php on line 2793

Když zavolám kód

$changes = new Changes( null, $this->get_options() );
return $changes->enable();

a z API se vrátí chyba (v mém případě viz níže):

<?xml version="1.0" ?>

<winstrom version="1.0">
  <success>false</success>
  <message>ERROR: could not obtain lock on relation "aadresar"
  Kde: SQL statement "LOCK TABLE aadresar IN ACCESS EXCLUSIVE MODE NOWAIT"
PL/pgSQL funkce create_or_drop_ucto_changes_triggers(boolean) řádek 4 na SQL příkaz
SQL statement "SELECT create_or_drop_ucto_changes_triggers(true)"
PL/pgSQL funkce create_or_drop_changes_triggers(boolean) řádek 4 na PERFORM</message>
</winstrom>

dostanu Fatal error Fatal error: Uncaught Error: get_class() expects parameter 1 to be object, null given in /vendor/spojenet/flexibee/src/AbraFlexi/RO.php on line 2793

Inicializace vydané faktury s autoload = false

Dobrý den,

v případě, že se inicializuje faktura s autoload false, končí to chybou.

$inv = new FakturaVydana(531, ['autoload'=>false]);
File: .../spojenet/flexibee/src/AbraFlexi/RO.php:628

TypeError
preg_match() expects parameter 2 to be string, int given

ID faktury (integer) neprojde podmínkami v processInit když je autoload nastavený na false.

Podmínka v RO.php:628 by imho měla kontrolovat, jestli je $init string.

Do not report subitems as unknown columns

05/05/21 01:56:34 •Toggl2AbraFlexi\Importer‣  ⚙ Unknown response field polozkyFaktury@faktura-vydana. (Please update library or static definitions)
05/10/21 22:33:11 •AbraFlexi\Processor\Plugins\Adresar‣  ⚙ Unknown response field kontakty@adresar. (Please update library or static definitions)
05/10/21 22:33:11 •AbraFlexi\Processor\Plugins\Adresar‣  ⚙ Unknown response field mistaUrceni@adresar. (Please update library or static definitions)

Missing virtual column definitons

Oct  8 11:21:02 hermes WHProcessor: ` SpojeNet\System\whplugins\FakturaVydana` @@ Unknown response field external-ids@faktura-vydana. (Please update library or static definitions) 
Oct  8 11:21:02 hermes WHProcessor: ` SpojeNet\System\whplugins\FakturaVydana` @@ Unknown response field typDoklBan@faktura-vydana. (Please update library or static definitions) 
Oct  8 11:21:02 hermes WHProcessor: ` SpojeNet\System\whplugins\FakturaVydana` @@ Unknown response field polozkyFaktury@faktura-vydana. (Please update library or static definitions) 

Unparsed error

01/17/2024 10:17:2 💀 ❲AbraFlexi StahniBanku⦒AbraFlexi\\Banka❳ Unparsed error: {\"winstrom\":{\"@version\":\"1.0\",\"success\":\"false\",\"stats\":{\"created\":\"0\",\"updated\":\"0\",\"deleted\":\"0\",\"skipped\":\"1\",\"failed\":\"1\"},\"results\":[{\"code\":\"Výpis 0 pro účet 2900886213/2010 -  Počet položek 0\",\"errors\":[{\"message\":\"Během stahování výpisu pro účet EURO FIO (2900886213/2010) došlo k chybě.\\nNedodržujete minimální interval 30 sekund mezi dotazy na daný token (bez ohledu na typ formátu).\"}]},{\"code\":\"Výpis 0 pro účet 2800061687 -  Počet položek 0\",\"infos\":[{\"message\":\"Načítání proběhlo úspěšně. Načtený výpis neobsahuje žádnou položku.\"}]}]}}01/17/2024 10:17:2 💀 ❲AbraFlexi StahniBanku⦒AbraFlexi\\RO::parseResponse:124❳ AbraFlexi\\Banka: Problem PHP Fatal error:  Uncaught AbraFlexi\\Exception: AbraFlexi\\Banka: Problem  in /usr/share/php/AbraFlexi/RO.php:1234
Stack trace:
#0 /usr/share/php/AbraFlexi/RW.php(124): AbraFlexi\\RO->parseResponse()
#1 /usr/share/php/AbraFlexi/RO.php(1001): AbraFlexi\\RW->parseResponse()
#2 /usr/share/php/AbraFlexi/Banka.php(55): AbraFlexi\\RO->performRequest()
#3 /usr/lib/abraflexi-matcher/StahniBanku.php(22): AbraFlexi\\Banka->stahnoutVypisyOnline()
#4 {main}
  thrown in /usr/share/php/AbraFlexi/RO.php on line 1234
{
  "winstrom": {
    "@version": "1.0",
    "success": "false",
    "stats": {
      "created": "0",
      "updated": "0",
      "deleted": "0",
      "skipped": "1",
      "failed": "1"
    },
    "results": [
      {
        "code": "Výpis 0 pro účet 2900886213/2010 -  Počet položek 0",
        "errors": [
          {
            "message": "Během stahování výpisu pro účet EURO FIO (2900886213/2010) došlo k chybě.\nNedodržujete minimální interval 30 sekund mezi dotazy na daný token (bez ohledu na typ formátu)."
          }
        ]
      },
      {
        "code": "Výpis 0 pro účet 2800061687 -  Počet položek 0",
        "infos": [
          {
            "message": "Načítání proběhlo úspěšně. Načtený výpis neobsahuje žádnou položku."
          }
        ]
      }
    ]
  }
}

Call to undefined function AbraFlexi\_()

Hello

After calling function ObjednavkaPrijata i got this error

$config = [
  'company' => 'firma',
  'url' => 'http://192.168.100.16:5434',
  'user' => 'test',
  'password' => '',
];
$init = 'code:OBP0002/2021';
$order = new ObjednavkaPrijata($init, $config);

Call to undefined function AbraFlexi\_()

image

spojenet/flexibee : 2.4
php: 8.0

Thanks

Undefined index in error parsing

In the commit: 7df25e9 you've changed the keys used to parse the error messages.
Original key: $responseDecoded['results'][0]['errors']
New key: $responseDecoded['results'][0]['result']

The new key does not correspond with the real response structure so I'm getting the folowing error:
ErrorException: Undefined index: result in /var/www/html/vendor/spojenet/flexibee/src/FlexiPeeHP/FlexiBeeRO.php:1081

Is it an intentional change or a mistake?

Označení usera při konfiguraci

Ahoj, díky moc za knihovnu, která nám brutálně usnadňuje práci.

Malý dotaz nebo podnět:
v nastavení konfigurace pomocí konstant je user označován jako ABRAFLEXI_LOGIN, ale při nastavení proměnných rovnou pomocí instance třídy je označený jako user. Je tato drobná odlišnost úmysl?

Zobrazování chyb

if (isset($faktura->getStatusMessages()['error'])) echo $faktura->getStatusMessages()['error'][0];

Ušetřilo by mě 2h....
Do příští knihovny se prosím naučte používat:
try ... catch exception

Jinak děkuji za sdílení knihovny a za podstatně lepší examples než v té minulé. ❤🙏

v2 - Production ready

Dobrý den,
v první řadě moc díky za práci na knihovně! Rád bych se zeptal, jestli je v2 vhodá pro použití na produkci - chystám se psát novou integraci na Flexibee, a rád bych už využil novou verzi.

Díky!

Problém se zpracováním datumů.

Dobrý den, pokud udělám jednoduchou operaci:

$inv = new FakturaVydana($invoiceId);
$inv->takeData(["stavMailK" => "stavMail.odeslano"]);
$inv->sync();

Dostávám chybovou hlášku:

'message' => 'Zadaný text 'null' musí být datum'
'for' => 'eetDatCasTrzby'
'path' => 'faktura-vydana[id=539].eetDatCasTrzby'
'value' => 'null'
'code' => 'PROP'

Přitom se s tím údajem vůbec nepracuje. Asi by bylo dobré v entitě faktury kontrolovat textový "null" u datumu a případně opravdu nastavit na null?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.