Tartalomjegyzék
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
