Felhasználói eszközök

Eszközök a webhelyen


evir:rendszer:api:szamla_api_felulet

szamla_api_felulet

szamla_api_felulet gépi interface:

r17109 (commitolt)

a kliens egy JSON formátumú adatot küld a szervernek.

A rendszer elvileg elfogadja

  • a Content-type: application/json illetve text/json érkező POST-olt adatot,
  • illetve a „json” névre hallgató form mező adatként is elfogadja,
    • akár GET
    • akár POST metódussal érkezik.

példa egy tartalmilag hiányos, de egyébként helyes json hívásra GET metódus esetén

http://....../cgi-bin/index.cgi?json={"token":".....","dok":"szamla_api_felvesz","muvelet":"0"}

Charset encoding: UTF-8

a JSON adat egy hash, melynek kulcsai az alábbi jelentésekkel bírnak

mező tipus/érték jelentés
API hívás paraméterei
token string a klienst azonosító evir felhasználó tokenje (evir felhasználó jelszavának módosításakor kiíródik)
dok „szamla_api_felvesz” kötelező elem.
button „b_felvesz” kötelező elem.
számlázás paraméterei
szamla_tipus „előleg” vagy „gépi” Normál végszámla esetén a „gépi” tipust kell választani
muvelet: „0”, „M1”, „P1”, „M1P2”, „P1M2”, „P1M0” hogyan jöjjön létre a számla (lásd lentebb)
email_cim string(100) email cím „valami@example.com” formátumban
vevő partner adatai
partner_id szám partner_id
Ha a partner_id ismert, akkor elegendő csak azt megadni. Ha új partnerről van szó, akkor a következő mezők adhatóak meg a partner létrehozásához
partner_tipus: „cég” vagy „személy”
partner_nev: string(90) partner neve
partner_cim_orszag: string(2) ország kétbetűs kódja, (pontosan 2 karakter)
partner_cim_orszag_nev string ország megnevezése. Megegyezik az evir törzsadatai szerinti névvel (maximum 50 karakter)
partner_cim_varos string(40)
partner_cim_cim string(60) közterület neve. nem bontott cím esetén házszám stb. egyben
partner_cim_irszam string(10) irányítószám
partner_adoszam string(30) adószám
számla adatai következnek
arkat string árkategória (ha nincs megadva, akkor a partnerhez rendelt, vagy alapértelmezett árkategória lesz) ebből következik a számla pénzneme is
fizmod string fizetési mód, (beállítás szerinti hatással a teljdat, fizhat mezőkre) ha nincs megadva, alapértelmezett lesz)
teljdat dátum teljesítési dátum (ha nincs megadva, fizetési mód szerint lesz)
fizhat dátum fizetési határidő (ha nincs megadva, fizetési mód szerint lesz)
megjegyzes string Opcionális megjegyzés a számlára
nyelv string a bizonylat nyelve (ha nincs megadva, HU)
tetel_mezok tomb
A következő mezők a tetel_mezok tömbön belül többször is megadható hash adatszerkezete
tetel_tipusa „termék” vagy „szolgáltatás” vagy „előlegszámla” (kötelező)
tetel_bizonylatszam string A felhasználandó előlegszámla száma
előlegszámla esetén a további mezőket nem kell megadni.
tetel_forrasraktar string annak a raktárnak a kódja, ahonnan a terméket eladja. szolgáltatás (és előlegszámla) esetén nem kell megadni
tetel_cikkszam string a termék vagy szolgáltatás cikkszáma
tetel_menny szám az eladott mennyiség (pozitív szám)
tetel_netto szám nettó eladási egységár
tetel_megj string tételhez kapcsolódó megjegyzés szöveg (opcionális)
A következő adatokat akkor kell megadni, ha a szolgáltatás cikkszám még nem szerepel a cikktörzsben. termék esetén nem használható
tetel_cikk_rogzites „” vagy „szolg_fix” vagy „szolg_gen” Hogyan kell a cikkszámot rögzíteni
tetel_cikk_megnevezes string a cikk megnevezése
tetel_cikk_afa string az áfakulcsot azonosító szám vagy szöveg
tetel_cikk_megys string Mennyiségi egység
tetel_cikk_unit szám legkisebb mennyiség
  • token, dok, button, muvelet: mindig kötelező megadni
  • vagy meg kell adnia a partner_id adatot, de ekkor ne adja meg a többi partner adatot
  • vagy meg kell adni az összes többi partner adatot, de ekkor a partner_id adatot ne adja meg.
    • Név és cím pontos egyezés esetén, a létező partnerrel dolgozik, ha nem találja, új partnert rögzít és azzal dolgozik.
  • tetel_mezok: legalább egy tételt meg kell adni.
  • email_cim: Akkor és csak akkor kell megadni, ha ki kell küldeni számlát/másolatot/értesítést emailben. azaz a muvelet tartalmaz egy 'M' betűt is.

muvelet: lehetséges értékei

  • „0” Az elkészült számla nem nyomtatódik ki. A nem nyomtatott számlák listájába kerül (sorszámát már megkapta) output: json
  • „P1” A számlat kinyomtatja, output: pdf
  • „M1” A számlát elküldi emailben, output: json
  • „M1P2” A számlát elküldi emailben, számlamásolatot kinyomtatja, output: pdf
  • „P1M2” A számlát kinyomtatja, a másolatot elküldi emailben, output: pdf
  • „P1M0” A számlát kinyomtatja, a számláról értesítőt küld emailben, output: pdf

Ezen értékek NEM MINDEN ESETBEN adhatóak meg. A megadható értékek a beállítások függvényében változnak, az alábbi táblázat szerint. Rosszul megadott esetben vagy hibaüzenet, vagy a beállítások szerinti működés történik.

muvelet email_ertesito modul installálva van Első példány emailben PDF csatolmány
0 mindegy mindegy mindegy
P1 mindegy mindegy mindegy
M1,M1P2 igen igen igen
P1M2 igen nem igen
P1M0 igen mindegy nem

nyelv: opcionális. A bizonylat ezen a nyelven fog létrejönni (ha ez engedélyezve van a konfigurációban)

  • „HU” magyar (default)
  • „EN” angol
  • „HU,EN” magyar-angol kétnyelvű

arkat: opcionális. A „Törzsadatok/Cikkszámok/Árkategóriák/Árkategória-lista” menüből elérhető lista „Kategória” oszlopából választható érték, de csak ha a „Tipus”=„értékesítési”. Így lehet konkrétan a számla pénznemét is meghatározni. Az árkategóriának pénznemen felüli jelentősége akkor van, ha a tételeknél nem ad meg „tetel_netto” egységárat, hanem az árkézpzés szabályai szerint (pl. árkategóriához tartozó) áron fog számlázni.

fizmod: opcionális. A „Törzsadatok/Pénzügyi/Fizetési módok” menüben elérhető fizetési módok közül, a „Fizetési mód neve” oszlop értékei közül választhat azon feltételekkel, hogy: „Számlázáskor használható”. Az esetleges „Készpénzes” jelölésű fizetési módhoz ha kapcsolódik pénztárbizonylat készítés, az ezen az interface-en keresztül nem érhető el, ezért ilyen fizetési módok használata a rendszer jelen változatában kerülendő.

fizhat, teljdat: dátum mező formátuma „YYYY-MM-DD” (aka ÉÉÉV-HÓ-NP) értéküket befolyásolhatja a fizetési módnál lévő beállítások, de használható vagy létrehozható olyan fizetési mód ami nem befolyásolja.


pelda JSON adat

{
        "token":"gnfdkjgjnkjnfdshjfdk",
        "dok":"szamla_api_felvesz",
        "button":"b_felvesz",
        "szamla_tipus":"gépi",
        "nyelv":"HU",
        "muvelet":"0",

        "tetel_mezok":[
                {
                        "tetel_netto":2430,
                        "tetel_megj":"XXL kék",
                        "tetel_tipusa":"termék",
                        "tetel_cikkszam":"c2",
                        "tetel_menny":3,
                        "tetel_forrasraktar":"r1"
                }
        ],
        "partner_id":4,
        "megjegyzes":"Példa számla",
        "arkat":"ar1",
        "fizmod":"átutalás",
        
}

Visszatérési értékek:

Bizonyos esetekben egy JSON válaszüzenet készül. Sikeres számla rögzítés esetén, nyomtatás nélkül a lentihez hasonló.

Amire számítani lehet, hogy a lenti struktúrában a „message” listában ha az uzenethez tartozó „level” értéke „SysInfo” akkor ott a „message” üzenet „szamlaszam=SZ2015000110” formában az egyelőség jel után a létrehozott bizonylat (számla) számát fogja tartalmazni. Ha ilyen üzenet nincs, akkor feltételezhető, hogy nem jött létre a bizonylat.

[
   {
      "choice":{
        // nem dokumentált feature adatai
      },
      "framename":"main",
      "message":[
         {
            "level":"Info",
            "time":"2015.10.30 21:59:38.67",
            "message":"Számla rögzítve"
         },
         {
            "level":"SysInfo",
            "time":"2015.10.30 21:59:38.67",
            "message":"szamlaszam=SZ2015000110"
         },
      ],
      "szamlaszam":"2015000110",
      "status":"OK",
      "result":null
   }
]

Egy példa hibaüzenet formátuma:

A „message” struktúrája megegyezik a sikeres esettel. Azonban a „level” kulcs értékei sokfélék lehetnek.

  • Hibának tekintett üzenetek: Fatal, Error
  • Figyelmeztető üzenetek: Warning, Notice
  • Tájékoztató üzenetek: Info, SysInfo

Hibás esetekben:

  • a „result” kulcs alatt megjelenő adatszerkezetben a „name” kulcs alatt várható
  • az „error” vagy „Kernel error” hibaüzenetről tájékoztató bejegyzés.
  • A „result” … „info” … „errormessage” alatt pedig az a hibaüzenet, amit a rendszer visszaad.
[
   {
      "choice":{
        // nem dokumentált
      },
      "framename":"main",
      "message":[
         {
            "level":"Fatal",
            "time":"2020.02.30 22:11:52.31",
            "message":"Rendszerhiba: myexception (user): váratlan hibaüzenet  at ../include/dok/szamla/szamla_api_felulet.pm line 1 captured by kernel"
         }
      ],
      "result":[
         {
            "info":{
               "errormessage":null
            },
            "name":"error"
         }
      ]
   }
]

Egyéb eredmények lehetnek ezenkívül még:

  • nem 200 OK HTTP status: elég ritka, igyekezzük elkerülni.
  • Content-type: application/x-pdf: szándékos működés eredménye. amikor a 'muvelet' mező 'P' betűt tartalmaz
  • más Content-type: váratlan hibák esetén (pl: text/html)

Még nem létező szolgáltatás rögzítése az API-n keresztül

r14791 (commited; WIP)

Lehetőség van arra, hogy olyan szolgáltatás kerüljön az API-n keresztül kiszámlázásra, amelynek az adatai még nem szerepelnek a cikktörzsben. Ekkor a számlázandó tétel adatai között meg kell adni azokat a kötelező adatokat is, amelyek egyébként a cikktörzsből érkeznének. Az adatokat a tétel adatai között kell megadni.

  tetel_cikk_rogzites: "szolg_fix" vagy "szolg_gen" a rögzítés módja szerint
  tetel_cikk_megnevezes: A szolgáltatás megnevezése
  tetel_cikk_afa: A szolgáltatáshoz tartozó áfa
  tetel_cikk_megys: A szolgáltatás mennyiségi egysége (pl. darab, óra)
  tetel_cikk_unit: A legkisebb egység, aminek a többszöröse a mennyiség lehet. (általában pl 1)

A szolgáltatás rögzítéséhez ezenkívül felhasználja a tetel_cikkszam mezőt is, ami egyébként is kötelezően megadandó a számla készítéséhez.

A mezők értelmezése

  • tetel_cikk_rogzites:
    • üres, vagy nincs megadva: Nem rögzít szolgáltatást.
    • „szolg_fix”: Ha nem létezik a cikkszám, akkor ezzel a cikkszámmal rögzíteni fogja
    • „szolg_gen”: Ha nem létezik a cikkszám, akkor levágja a végéről a számot, és egy új cikkszámot generál, aminek a végén lévő szám eggyel nagyobb a legutolsó ilyen kezdetű és számmal végződő cikkszámnál. Ez csak akkor működik, ha a beállításokban be van kapcsolva a „Következő cikkszám generálása”
  • tetel_cikk_megnevezes: Ez a szolgáltatás megnevezése, a szöveg rákerül a bizonylatra
  • tetel_cikk_afa: Az áfa mező lehetséges értékeinek illeszkedniük kell az ÁFA törzsadatban található értékekhez a következő módon
    • Ha áfakulcs tartozik hozzá, akkor az ott található számot kell megadni. pl. 27% áfa esetén „27.00”
    • Ha nem tartozik hozzá áfakulcs, akkor az „Adómentességi megjelölés” mező értékét kell pontosan megadni.
  • tetel_cikk_megys: Ez a mennyiségi egység, pl. darab, óra
  • tetel_cikk_unit: Ez a legkisebb mennyiségi egység. Ez leggyakrabban „1” szokott lenni.

Példa adat a tetel_mezok értékére.

        ...
        "tetel_mezok":[
                {
                        "tetel_netto":10000,
                        "tetel_megj":"Kiszállással együtt",
                        "tetel_tipusa":"szolgáltatás",
                        "tetel_cikkszam":"c5",
                        "tetel_menny":2,
                        "tetel_cikk_rogzites":"szolg_fix",
                        "tetel_cikk_megnevezes","Karbantartás
                        "tetel_cikk_afa":"27.00",
                        "tetel_cikk_megys":"óra",
                        "tetel_cikk_unit":1,
                }
        ],
        ...

PLANS:

  • megjegyzes_template kezelés
evir/rendszer/api/szamla_api_felulet.txt · Utolsó módosítás: 2020/06/26 11:07 szerkesztette: era