Table of Contents
|
Povezavo med spletno trgovino in MK se lahko izvede na naslednje načine :
Za vse metode je značilno :
- opr_code : koda rezultata. Če je 0, potem je OK. Vse ostalo so napake,
- opr_code_app : koda aplikacijske napake, če do nje pride,
- opr_desc : tehnični opis napake v primeru sestemske napake,
- opr_desc_app : določene napake so aplikacijske in v tem primeru se izpiše enako sporočilo o napaki, kot se izpiše v MetaKocka aplikaciji.
- opr_time_ms : čas izvajanja zahtevka na strežniku v milisekundah
Sistemske napake :
opr_code | opr_desc | Opis oz. vzrok |
---|---|---|
0 | / | Operacija je bila uspešno izvedena. |
1 | Unknown internal server error | Neznana napaka na strežniku |
2 | Paramether ‘X’ is required paramether ; Paramether ‘X’ is in wrong form | Nekaj je narobe s vhodnim parametrov. Lahko, da je obvezen, podana vrednost predolga ali napačne oblike, itd |
3 | Invalid value for secret_key and company_id | |
4 | IP address ‘192.1.1.1’ is not allowed for company_id = 23 | |
5 | Quote exceeds | Preveliko število zahtevkov v določenem obdobju. Glej 'Omejitev števila klicev'. |
6 | Application error | Napaka in opis napake se nahaja v parametru 'opr_code_app' in 'opr_desc_app' |
Običajen odgovor v primeru napake :
{ "opr_code":"2", "opr_desc":"artikel eshop_001", "opr_time_ms":"8" }
Opis : Dodajanje novih artiklov. Če že obstaja artikel z enako count_code in code (to v praksi pomeni enaki artikel), dobimo napako. Ob uspešnem dodajanju dobimo tudi interno oznako artikla.
URL : https://main.metakocka.si/rest/eshop/v1/json/product_add
{ "secret_key":"my_secreat_key", "company_id":"16", "count_code":"eshop_001", "code":"eshop_001_sif", "name":"artikel eshop_001", "name_desc": "artikel eshop_001 - daljsi opis", "unit":"kos", "service":"false", "sales":"true", "purchasing":"false", "height":"12.23", "depth":"4.12", "weight":"6.3", }
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
count_code | NE | Id. Artikla | char, 30 | Edinstvena oznaka artikla v spletni trgovini (recimo ID sekvence v podatkovni bazi). Največ dolžine 30 znakov. Za podjetje mora biti nujno unique. Če ni, bo MK dodala dodatno številko (primer : '1000' -> '10001'). Če parameter ni podan, potem mora biti v MK nastavljeno avtomatično številčenje prodajnih artiklov |
code | DA | Šifra | char, 20 | Običajno je to šifra artikla, ki jo določi proizvajalec. Največ 20 znakov. |
name | DA | Naziv artikla | char, 200 | Poljubni naziv artikla |
name_desc | NE | Dodatni opis | char, 700 | Dodatni poljubni opis artikla |
unit | DA | EM 1 | šifrant | Primer vrednosti : kol, m2, par, ura, itd |
Service | NE | Storitev | bool | Če je prazna vrednost, potem je to enako kot 'false'. |
Sales | NE | Prodajni | bool | Če je prazna vrednost, potem je to enako kot 'false'. |
Purchasing | NE | Nabavni | bool | Če je prazna vrednost, potem je to enako kot 'false'. |
height | NE | Višina | decimal | / |
width | NE | Širina | decimal | / |
depth | NE | Globina | decimal | / |
weight | NE | Teža | decimal | / |
{ "opr_code":"0", "opr_time_ms":"33", "mk_id":"1600001744", "count_code":"eshop_002" }
Atribut | Vedno prisoten? | Tip / max dolžina | Opis |
---|---|---|---|
mk_id | DA | Int, 18 | ID artikla v MK. Uporabno za naslednje klice kot edinstveni identifikator. |
count_code | DA | char, 20 | Ponovitev poslanega count_code oz. spremenjeni, če v MK že obstaja. |
(product_add_json.php)
require_once("Pest.php"); $url = 'https://main.metakocka.si/rest/eshop/v1/json/product_add'; $company_id = '16'; $secret_key = 'my_secret_key'; $requestJSON = array ( 'secret_key'=>$secret_key, 'company_id'=>$company_id, 'count_code'=>'eshop_001', 'code'=>'eshop_001_sif', 'name'=>'artikel eshop_001', 'name_desc'=>'artikel eshop_001 - daljsi opis', 'unit'=>'kos', 'service'=>'false', 'sales'=>'true', 'purchasing'=>'false', 'height'=>'12.23', 'depth'=>'4.12', 'weight'=>'6.3' ); echo '<html><body>'; echo '<b>URL</b> : '.$url.'<br/>'; echo '<b>POST data</b> : '.json_encode($requestJSON).'<br/>'; echo '<hr/>'; echo '<b>Request start...</b><br/>'; $pest = new Pest($url); $thing = $pest->post('', 'application/json', json_encode($requestJSON)); echo '<b>Respond : </b>'.$thing; echo '</body></html>';
Opis : izvedba popravkov podatkov na artiklu. V primeru konflikta s pravili za zagotavljanje konsistentnosti podatkov, metoda vrne ustrezno napako.
URL : https://main.metakocka.si/rest/eshop/v1/json/product_update
{ "secret_key":"my_secreat_key", "company_id":"16", "count_code":"eshop_001", "code":"eshop_001_sif", "name":"artikel eshop_001", "name_desc": "artikel eshop_001 - daljsi opis", "unit":"kos", "service":"false", "sales":"true", "purchasing":"false", "height":"12.23", "depth":"4.12", "weight":"6.3", }
Opombe :
Opis : brisanje obstoječega artikla. V primeru konflikta s pravili za zagotavljanje konsistentnosti, se vrne ustrezna napaka.
URL : https://main.metakocka.si/rest/eshop/v1/json/product_delete
{ "secret_key":"my_secret_key", "company_id":"16", "count_code":"eshop_003" }
Opombe :
Opis : izpis vseh artiklov s pripadajočimi podatki in stanjem zaloge na skladišču
URL : https://main.metakocka.si/rest/eshop/v1/json/product_list
{ "secret_key":"my_secret_key", "company_id":"16", "sales":"true", "return_warehause_stock":"true" }
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
sales | NE | Artikel -> Prodajni | bool | Artikel mora biti prodajni |
purchase | NE | Artikel -> Nabavni | bool | Artikel mora biti nabavni |
service | NE | Artikel -> Storitev | bool | Artikel mora biti storitev |
work | NE | Artikel -> Delo | bool | Artikel mora biti delo |
return_warehause_stock | NE | / | bool | ali vrnemo tudi podatke o zalogi. Če je parameter nastavljen, potem v odgovoru za vsak artikel dobimo vrednost "amount". Tudi če artikla nikoli ni bilo na skladišču, bo atribut prisoten s vrednostjo 0 |
offset | NE | / | int | Odmik od prvega zapisa po seznamu zapisov. Če ni nastavljen je vrednost 0. Glej opombe. |
limit | NE | / | int | Število vrnjenih zapisov. Če ni nastavljen ali je nastavljen več kot 1000, je vrednost 0. Glej opombe |
Opombe za zahtevek:
{ "opr_code":"0", "opr_time_ms":"11762", "sales":"true", "return_warehause_stock":"true", "limit":"2", "offset":"0", "product_list_count":"2", "product_list":[ { "company_id":"0", "mk_id":"1600000027", "code":"prod sifra 1", "name":"naziv sifra 1", "unit":"kos", "service":"false", "sales":"true", "purchasing":"true", "height":"1", "width":"2", "depth":"3", "weight":"4", "amount":"-2000" }, { "company_id":"0", "mk_id":"1600000028", "code":"pod sifra 2", "name":"pod naziv 2", "unit":"dan", "service":"false", "sales":"true", "purchasing":"false", "amount":"-10" } ] }
Opombe za odgovor:
Opis : dodajanje novega prodajnega računa, pri katerem se avtomatično identificira obstoječega partnerja ali doda novega. Na podoben način se tudi identificirajo artikli ali dodajo novi. Za materialne artikle se samodejno generira dobavnica. Lahko se tudi doda oznaka, da je račun plačan preko banke ali blagajne.
URL : https://main.metakocka.si/rest/eshop/v1/json/put_sales_bill
{ "secret_key":"my_secret", "company_id":"16", "foreign" : "true", "count_code":"eshop001", "bill_date":"12.03.2011", "payment_date":"12.03.2011", "location_of_service":"Komenda", "warehouse":"glavno skladisce", "buyer_order":"narocilo 123", "partner":{ "business_entity":"true", "taxpayer":"true", "foreign_county":"false", "tax_id_number":"SI10040073", "customer":"eshop 1", "street":"Slovenska cesta 100", "post_number":"1000", "place":"Ljubljana", "country":"Slovenia", "partner_contact": { "name": "Rok Doltar", "phone": "05 320 24 88", "fax": "05 320 24 84", "gsm": "071 333 444", "email": "test@test.co.uk" }, "partner_delivery_address": { "street": "Ljubljanska 25", "post_number": "1001", "city": "Ljubljana", "country": "Slovenija" } }, "mark_paid":[ { "payment_type":"Transakcijski račun", "date":"12.03.2011" } ], "product_list":[ { "count_code":"2", "amount":"10", "price":"11", "discount":"12", "tax":"085" }, { "code":"eshop_artikel_1", "amount":"20", "price_with_tax":"21", "discount":"22", "tax":"200" }, { "count_code":"eshop_artikel_2", "code":"eshop_artikel_2", "name":"eshop_artikel_2", "name_desc":"eshop_artikel_2 opis", "unit":"kom", "service":"false", "sales":"true", "purchasing":"false", "amount":"30", "price":"31", "discount":"32", "tax":"000" } ] }
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
count_code | DA | Id. Računa | char, 30 | Edinstvena oznaka računa v spletni trgovini (recimo ID sekvence v podatkovni bazi). Največ dolžine 30 znakov. Za podrobnosti glej 'Številčenje računov / ponudb' |
foreign | NE | Ali je tuji račun | Boolean | Če parameter ni podan ali nima vrednost 'true', potem je to domači račun |
bill_date | DA | Datum računa | date | |
payment_date | DA | Rok plačila | date | |
location_of_service | NE | Kraj opravljene storitve | char,50 | Če parameter ni podan, se prebere iz Nastavitev podjetja ('Kraj za opravljeno storitev'). Če tudi tam ni nastavljen, je odgovor napaka |
warehouse | NE | Ime skladišča | char,50 | Glej poglavje 'Izdelava dobavnice' |
buyer_order | NE | Naročilo kupca | char,50 | / |
partner | DA | Kupec | / | Glej poglavje 'Postopek identifikacije partnerja in naslova' |
mark_paid | NE | / | / | Glej poglavje 'Označba plačila' |
product_list | NE | / | / | Glej poglavje 'Postopek identifikacije artikla' |
partner_contact | NE | Kontakt partnerja | Object | Vsebina se zapiše kot dodatni kontakt partnerja |
partner_delivery_address | NE | Naslov partnerja / Dostava na računu | Object | Vsebina se zapiše kot dodatni naslov partnerja in označi na računu kot naslov za dostavo |
Opombe :
require_once("Pest.php"); $url = 'https://main.metakocka.si/rest/eshop/v1/json/put_sales_bill'; $company_id = '16'; $secret_key = 'my_secret'; $requestJSON = array ( 'secret_key'=>$secret_key, 'company_id'=>$company_id, 'count_code'=>'eshop_003', 'bill_date'=>'12.03.2011', 'payment_date'=>'12.03.2011', 'location_of_service'=>'Komenda', 'partner'=>array( 'business_entity'=>'true', 'taxpayer'=>'true', 'foreign_county'=>'false', 'tax_id_number'=>'SI10040073', 'customer'=>'eshop 1', 'street'=>'Slovenska cesta 100', 'post_number'=>'1000', 'place'=>'Ljubljana', 'country'=>'Slovenia' ), 'mark_paid'=>array( array( 'payment_type'=>'Transakcijski račun', 'date'=>'25.03.2011' ) ), 'product_list'=>array( array( 'count_code'=>'2', 'amount'=>'10', 'price'=>'11', 'discount'=>'12', 'tax'=>'085' ), array( 'code'=>'eshop_artikel_1', 'amount'=>'20', 'price'=>'21', 'discount'=>'22', 'tax'=>'200' ), array( 'count_code'=>'eshop_artikel_2', 'code'=>'eshop_artikel_2', 'name'=>'eshop_artikel_2', 'name_desc'=>'eshop_artikel_2 opis', 'unit'=>'kom', 'service'=>'false', 'sales'=>'true', 'purchasing'=>'false', 'amount'=>'30', 'price'=>'31', 'discount'=>'32', 'tax'=>'000' ) ) ); echo '<html><body>'; echo '<b>URL</b> : '.$url.'<br/>'; echo '<b>POST data</b> : '.json_encode($requestJSON).'<br/>'; echo '<hr/>'; echo '<b>Request start...</b><br/>'; $pest = new Pest($url); $thing = $pest->post('', 'application/json', json_encode($requestJSON)); echo '<b>Respond : </b>'.$thing; echo '</body></html>';
Opis : dodajanje nove ponudbe, pri kateri se samodejno prepozna obstoječega partnerja ali doda novega. Na podoben način se tudi prepozna artikle ali dodajo novi. Lahko se tudi doda oznaka, da je ponudba plačan preko banke ali blagajne.
URL : https://main.metakocka.si/rest/eshop/v1/json/put_sales_offer
{ "secret_key":"test", "company_id":"16", "count_code":"eshop_offer_1", "date":"08.05.2011", "validity":"30", "advance_payment_percent":"10", "partner":{ "business_entity":"true", "taxpayer":"true", "foreign_county":"false", "tax_id_number":"SI10040073", "customer":"eshop 1", "street":"Slovenska cesta 100", "post_number":"1000", "place":"Ljubljana", "country":"Slovenia" }, "mark_paid":[ { "payment_type":"Transakcijski račun", "date":"08.05.2011" } ], "product_list":[ { "count_code":"2", "amount":"10", "price":"11", "discount":"12", "tax":"085" }, { "code":"eshop_artikel_1", "amount":"20", "price":"21", "discount":"22", "tax":"200" }, { "count_code":"eshop_artikel_2", "code":"eshop_artikel_2", "name":"eshop_artikel_2", "name_desc":"eshop_artikel_2 opis", "unit":"kom", "service":"false", "sales":"true", "purchasing":"false", "amount":"30", "price":"31", "discount":"32", "tax":"000" } ] }
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
count_code | DA | Id. Ponudbe | char, 30 | Edinstvena oznaka ponudbe v MetaKocka (recimo ID sekvence v podatkovni bazi). Za podrobnosti glej 'Številčenje računov / ponudb' |
date | DA | Datum | date | Datum ponudbe |
validity | NE | Veljavnost ponudbe | int, pozitiven | Veljavnost ponudbe. Če parameter ni podan, se samodejno nastavi vrednost 30 dni |
advance_payment_percent | NE | Predplačilo v odstotkih | double med 0-100 | Glej spodaj |
advance_payment_amount | NE | Predplačilo v vrednosti | pozitivna cena | Lahko je podan samo en parameter 'advance_payment' - 'percent' ali 'amount' |
partner | DA | Kupec | / | Glej poglavje 'Postopek identifikacije partnerja in naslova' |
mark_paid | NE | / | / | Glej poglavje 'Označba plačila' |
product_list | NE | / | / | Glej poglavje 'Postopek identifikacije artikla' |
Opombe :
require_once("Pest.php"); $url = 'https://main.metakocka.si/rest/eshop/v1/json/put_sales_offer'; $company_id = '16'; $secret_key = 'my_secret'; $requestJSON = array ( 'secret_key'=>$secret_key, 'company_id'=>$company_id, 'count_code'=>'eshop_offer_001', 'date'=>'8.5.2011', 'partner'=>array( 'business_entity'=>'true', 'taxpayer'=>'true', 'foreign_county'=>'false', 'tax_id_number'=>'SI10040073', 'customer'=>'eshop 1', 'street'=>'Slovenska cesta 100', 'post_number'=>'1000', 'place'=>'Ljubljana', 'country'=>'Slovenia' ), 'mark_paid'=>array( array( 'payment_type=>'Transakcijski račun', 'date'=>'8.5.2011' ) ), 'product_list'=>array( array( 'count_code'=>'2', 'amount'=>'10', 'price'=>'11', 'discount'=>'12', 'tax'=>'085' ), array( 'code'=>'eshop_artikel_1', 'amount'=>'20', 'price'=>'21', 'discount'=>'22', 'tax'=>'200' ), array( 'count_code'=>'eshop_artikel_2', 'code'=>'eshop_artikel_2', 'name'=>'eshop_artikel_2', 'name_desc'=>'eshop_artikel_2 opis', 'unit'=>'kom', 'service'=>'false', 'sales'=>'true', 'purchasing'=>'false', 'amount'=>'30', 'price'=>'31', 'discount'=>'32', 'tax'=>'000' ) ) ); echo '<html><body>'; echo '<b>URL</b> : '.$url.'<br/>'; echo '<b>POST data</b> : '.json_encode($requestJSON).'<br/>'; echo '<hr/>'; echo '<b>Request start...</b><br/>'; $pest = new Pest($url); $thing = $pest->post('', 'application/json', json_encode($requestJSON)); echo '<b>Respond : </b>'.$thing; echo '</body></html>'; ?>
Opis : izdelava PDF dokumenta računa oz. ponudbe. Enako, kot če bi v MK izbral tiskanje računa oz. ponudbe in izbral prevzeti izpis.
URL : https://main.metakocka.si/rest/eshop/v1/pdf/report_bill ali https://main.metakocka.si/rest/eshop/v1/pdf/report_offer
{ "secret_key":"test", "company_id":"16", "count_code":"PRD_110_PRD1", "hide_code":"false", "country":"si", "locale":"sl" }
require_once("Pest.php"); $url = 'https://main.metakocka.si/rest/eshop/v1/pdf/report_bill'; $company_id = '16'; $secret_key = 'my_key'; $requestJSON = array ( 'secret_key'=>$secret_key, 'company_id'=>$company_id, 'count_code'=>'PRD_543_PRD', 'hide_code'=>'false' ); echo '<html><body>'; echo '<b>URL</b> : '.$url.'<br/>'; echo '<b>POST data</b> : '.json_encode($requestJSON).'<br/>'; echo '<hr/>'; echo '<b>Request start...</b><br/>'; $pest = new Pest($url); $thing = $pest->post('', 'application/json', json_encode($requestJSON)); // write respond into file $fileName = '/Users/mk_eshop/output.pdf'; $fh = fopen($fileName, 'w'); fwrite($fh, $thing); fclose($fh); echo '<b>Write output into : '.$fileName.'</b><br/>'; echo '</body></html>';
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
mk_id | NE | id zapisa računa oz. ponudbe | Int, 18 | Vrednost dobimo v parametru mk_id kot odgovor klica put_sales_offer oz. pot_sales_bill |
count_code | NE | Id. Računa oz. Id ponudbe | char, 30 | Ko izvedemo dodajanje novega računa ali ponudbe preko put_sales_bill oz. put_sales_offer klica, nam le ta vedno vrne parameter 'mk_count_code'. |
hide_code | NE | Pri poročilih - Izpiši šifro artikla | bool | Če je vrednost 'true', potem na poročilu ne prikažemo šifre artikla. V ostalih primerih pa se prikaže. |
country | NE | Pri poročilih - jezik | String | Nastavimo jezik izhodnega dokumente. Pri tem moramo paziti, da imata country in locale prave nabore vrednost. Možne kombinacije so naslednje (Country-Locale): si-sl, us-en, at-de |
locale | NE | Pri poročilih - jezik | String | Glej spodaj razlago za country |
Odgovor klica je v dveh oblikah :
{ "opr_code":"6", "opr_code_app":"201", "opr_time_ms":"0", "opr_desc_app":"Cannot find offer with count_code = PRD_110_PRD1" }
MetaKocka poizkuša na podlagi podanih podatkov prepoznati obstoječega partnerja. Postopek je naslednji :
Naslov se določi po naslednjem postopku :
V primeru, da partnerja po zgornjih kriterijih ne najdemo, dodamo novega partnerja. Za novega partnerja so na voljo naslednja polja :
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
business_entity | NE | fizična oseba | bool | če atribut ni podan, potem se v MK označi kot pravna oseba. Če je podan, pa se ustrezno negira fizično osebo |
taxpayer | NE | davčni zavezanec | bool | če atribut ni podan, potem se v MK označi, da ni davčni zavezanec |
foreign_county | NE | tujina | bool | pri podjetjih iz tujine se ne preverja pravilne oblike davčne številke |
tax_id_number | DA | id.Davčna št. | char,30 | če je podjetje iz Slovenije (foreign_county != 'true'), potem se preverja pravilno obliko številke |
customer | DA | naziv kupca | char,100 | / |
street | DA (*) | ulica in hišna številke | char,50 | Obvezen samo v primeru pravne osebe. Če ni podana ulica, potem se ne zapiše tudi ostali podatki (poštna številka, pošta, država) |
post_number | NE | poštna številka | char,20 | / |
place | NE | kraj | char,35 | / |
country | NE | država | char,šifrant | vpisana vrednost se primerja glede na vrednosti v MK šifrantu. Mora biti enaka imenu v šifrantu (case insensitive). Lahko je slovensko ime (npr. 'Nemčija'), angleško ime (npr. 'Germany') ali dvočrkovna oznaka (npr. 'DE') |
partner_contact | NE | kontakt partnerja | Object | Objekt predstavlja kontakt, ki se zapiše pod partnerja. |
partner_delivery_address | NE | dodatni naslov za dostavo | Object | Objekt predstavlja dodatni naslov, ki se zapiše pod partnerja in v primeru dodajanja računa še pod naslov za dostavo na računu |
Atributi objekta "partner_contact":
Če partner v Metakocki že obstaja, se za "partner_contact" izvede naslednji postopek:
Atributi objekta "partner_delivery_address":
Če partner v Metakocki že obstaja, se za "partner_delivery_address" izvede naslednji postopek:
MetaKocka poizkuša na podlagi podanih podatkov identificirati obstoječi artikel. Postopek je naslednji :
V primeru, da artikla po zgornjih kriterijih ne najdemo, dodamo novi artikel. Za novi artikel so na voljo naslednja polja :
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
mk_id | NE | (ni viden) | Int, 18 | ID artikla v MK. Uporabno za naslednje klice kot edinstveni identifikator. |
count_code | NE | Id. Artikla | char, 30 | Edinstvena oznaka artikla v spletni trgovini (recimo ID sekvence v podatkovni bazi). Za podjetje mora biti nujno edinstveni. Če ni, bo MK dodala dodatno številko (primer : '1000' -> '10001'). Opozorilo : count_code se lahko ponovi, če imam dva artikla, kjer je eden samo prodajni in drugi samo nabavni. |
code | NE | Šifra | char, 20 | Običajno je to šifra artikla, ki jo določi proizvajalec. |
name | NE | Naziv artikla | char, 200 | Poljubni naziv artikla |
name_desc | NE | Dodatni opis | char, 700 | Dodatni poljubni opis artikla. Se zapiše samo v primeru prvega dodajanja artikla v bazo artiklov v polje 'Dodatni opis' |
bill_desc / offer_desc | NE | Podrobnejši opis vrstice | char, 700 | Ko v MK na račun / ponudbo dodamo artikle iz šifranta, lahko vsakemu dodamo še dodatni opis ('knofca' na koncu vrstice). Le ta se potem izpiše na računu / ponudbi pod samim artiklom |
unit | NE | EM 1 | šifrant | Primer vrednosti : kol, m2, par, ura, itd |
service | NE | Storitev | bool | Če je prazna vrednost, potem je to enako kot 'false'. |
sales | NE | Prodajni | bool | Če je prazna vrednost, potem je to enako kot 'false'. |
purchasing | NE | Nabavni | bool | Če je prazna vrednost, potem je to enako kot 'false'. |
Vsak dodani artikel mora vsebovati še podatke, ki so vezane na račun / ponudbo :
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
amount | DA | Količina | decimal | |
price | DA | Cena | oblika SLO cen | Oblika SLO cen je recimo "1200,12" ali "1.200,12" ali "1200.12". Priporočamo uporabo "1200.12" |
price_with_tax | NE | Cena z DDV | oblika SLO cen | Podan mora biti natančno eden izmed podatkov "price" ali "price_with_tax". |
discount | NE | Popust | decimal 0-100 | |
tax | DA | Davek | glej opomba | Vrednosti : 000, 085, 095, 200, 220, N85, N95, N20, N22 |
Primer 1 : identifikacija artikla preko 'count_code' :
{ "count_code":"2", "amount":"10", "price":"11", "discount":"12", "tax":"085" }
Primer 2 : vstavljanje novega artikla :
{ "count_code":"eshop_artikel_2", "code":"eshop_artikel_2", "name":"eshop_artikel_2", "name_desc":"eshop_artikel_2 opis", "unit":"kom", "service":"false", "sales":"true", "purchasing":"false", "amount":"30", "price":"31", "discount":"32", "tax":"000" }
Številčenje računov in ponudb je mogoče implementirati na dva načina :
Za vsak tip dokumenta (tudi prodajnih račun / ponudbo) je v MetaKocka mogoče nastaviti pravila samodejnega številčenja. V tem primeru se bo ob klicu storitev izbrala naslednja številka računa / ponudbe.
V tem primeru uporabniku ni potrebno paziti na pravo številčenje in le te lahko izdajamo preko nakupov v spletni trgovini ali neposredno iz MetaKocke.
Izvedba : ob klicu ne smemo podati parametra "count_code". V odgovoru bomo dobili številko računa / ponudbe v parametru count_code. V primeru, da bo podan parameter "count_code", se bo le ta uporabil. Na ta način lahko obidemo obstoječi način številčenja.
V primeru že uveljavljenega načina številčenja v spletni trgovni, lahko le ta posreduje številko direktno v MetaKocko. Pri tem je potrebno paziti na to, da se številke ne bodo podvojile (v tem primeru pride do napake pri klicu storitve). Na ta način lahko implementiramo ločeno številčenje za račune / ponudbe iz spletne trgovine in tiste, ki jih direktno izdajamo iz MetaKocke.
Izvedba : ob klicu moramo podati parameter "count_code".
V primeru, da na račun dodamo artikel, ki ni označen kot storitev (to pomeni, da je materialni artikel), je potrebno izdelati dobavnico. Izdelava je mogoča na naslednje načine :
na skladišču"
{ "secret_key":"test", ......... "warehouse":"skladisce1", "partner":{ ......... }
V primeru, da je podamo napačno ime skladišča, dobimo napako oblike :
{ "opr_code":"2", "opr_desc":"Warehouse with name 'oznaka1X' does not exist.","opr_time_ms":"102" }
V primeru, da zgornje dva pogoja nista izpolnjena, se samodejno izbere glavno skladišče. V MetaKocka mora uporabnik vedno imeti ena skladišče, ki je glavno.
Ko se izdela dobavnica, se tudi na skladišču odpiše materialno zalogo. MK prevzeto ne dovoli negativno količino. Možne rešitve :
V primeru, da pri uvozu pride do napake zaradi negativnega stanja artikla, je napaka naslednje oblike :
{ "opr_code":"6", "opr_desc":"Artikel 'Kolo' ima na skladišču 'Glavno skladišče' negativnost količino z vrednostjo -1", "opr_time_ms":"383" }
V primeru uspešnega sprejetja zahtevka dobimo odgovor naslednje oblike :
{ "opr_code":"0", "opr_time_ms":"33", "mk_id":"1600001744", "count_code":"eshop_002" }
Atribut | Vedno prisoten? | Tip / max dolžina | Opis |
---|---|---|---|
mk_id | DA | Int, 18 | ID računa / ponudbe v MK. Uporabno za naslednje klice kot edinstveni identifikator. |
count_code | DA | char, 20 | Ponovitev poslanega 'count_code' ali na novo generirana 'Št. ponudbe' / 'Št. računa' |
Na posameznih dokumentih (računi, ponudbe, naročilnice) je mogoče označiti, da je bil le ta že plačan preko izbrane vrste plačila. Pomen posameznih atributov :
Atribut | Vedno prisoten? | Tip / max dolžina | Opis |
---|---|---|---|
payment_type | DA | String | V MK je to 'Vrsta plačila', ki ga uporabnik lahko nastavi v dinamičnem šifrantu. Privzeto so vedno na voljo vrednosti 'Transakcijski račun' in 'Blagajna'. Te vrednosti uporabnik ne more spremeniti ali zbrisati. Lahko pa doda dodatne - Moneta, kreditna kartica, Paypal … |
date | DA | date | Datum, ko je bilo plačilo izvedeno |
mark_prepaid | NE | bool | Če ima vrednost 'true', potem je to avansni priliv. V nasprotnem primeru ('false' ali NULL) pa plačilo obravnavamo kot običjano plačilo |
amount | / | oblika SLO cen | V kolikor imamo samo eno plačilo, tega podatka ni potrebno navesti, ker bo prevzel vrednost celotnega računa. To pomeni, da bo celotni račun označen kot plačan. Če pa sta podani dve ali več transakcij za plačilo, potem je atribut nujno potrebno podati |
Primer : celotni račun označimo kot plačan preko Transakcijskega računa
"mark_paid":[ { "payment_type":"Transakcijski račun", "date":"25.03.2011", } ]
Primer : 10 EUR je bilo plačanih preko gotovine
"mark_paid":[ { "payment_type":"Gotovina", "date":"25.03.2011", "amount":"10.00" } ]
Primer : 200 EUR je bilo plačanih kot predplačilo preko Transakcijskega računa, ostalih 800 EUR pa dan pozneje preko Monete
"mark_paid":[ { "payment_type":"Transakcijski račun", "date":"25.03.2011", "mark_prepaid":"true", "amount" : "200" }, { "payment_type":"Moneta", "date":"26.03.2011", "amount" : "800" } ],
Potne stroške v MK dodamo na naslednji način :
{ "code":"potni_stroski", "amount":"1", "price":"10", "discount":"0", "tax":"020" }
Na podobni način lahko naredimo artikel 'skupni_popust' in ga uporabimo za nek fiksni popust na celotni račun.
Pri kuponih pa je implementacija malenkostno drugačna. Primer : uporabnik je za nakup vnovčil še kupon za 10 EUR. Potrebno je narediti naslednje :
{ "code":"kupon_za_popust", "amount":"-1", "price":"10", "discount":"0", "tax":"000" }
Opis : preveri, če je podani artikel na zalogi in vrne skupno zalogo ter zalogo po posameznih skladiščih.
URL : https://main.metakocka.si/rest/eshop/v1/json/check_inventories
{ "secret_key":"test", "company_id":"16", "code":"skatla_d1" }
Atribut | Obvezen? | V MK | Tip / max dolžina | Opomba |
---|---|---|---|---|
count_code | NE | Id. artikla | char, 30 | Edinstvena oznaka artikla. Mora biti podan ta parameter ali code |
code | NE | Šifra | char,20 | Šifra artikla. Mora biti podan ta parameter ali count_code |
{ "opr_code":"0", "opr_time_ms":"33", "count_code":"PRD_542_PRD", "code":"skatla", "unit":"kos", "all_amount":"20", warehouse_amount:[ { "warehouse_mark":"skladisce1", "amount":"10" }, { "warehouse_mark":"skladisce2", "amount":"20" } ] }
Atribut | ~ V MK | Tip / max dolžina | Opomba |
---|---|---|---|
count_code | Id. artikla | char, 30 | podatki o vhodnem artiklu |
code | Šifra | char, 20 | podatki o vhodnem artiklu |
unit | Enota mere 1 | char, 10 | podatki o vhodnem artiklu |
all_amount | / | double as string | seštevel zalog iz vseh skladišč. 0, če ni nobene zaloge |
warehouse_amount | / | array | seznam zalog po posameznih skladiščih |
warehouse_mark | Oznaka | String,10 | Oznaka skladišča |
amount | / | double as string | vrednost zaloge na tem skladišču |
Predvidene napake :
opr_code | opr_desc | Opis oz. vzrok |
---|---|---|
20 | Paramether 'count_code' is too long. Max length : 30. Value length : X | / |
30 | Paramether 'code' is too long. Max length : 20. Value length : X | / |
40 | Parameter 'count_code' or 'code' must be set | Vsaj eden od teh parametrov mora biti podan, da lahko identificiramo artikel |
50 | Product with count_code = 'A1' or code = 'A1' do not exist. | Najprej se izvede iskanje po count_code in zatem po code. Če po obeh ne najdemo artikla, vrnemo to napako |
Varnost prenešenih podatkov je zagotovljena na naslednji način :
MetaKocka ne podpira 100% uptime (recimo v času nadgradnje), zato mora spletna trgovina podpirati primere, da storitve na strani MetaKocke niso dosegljive. Možni scenariji :
MetaKocka ima implementirane določene omejitev število klicev, da zaradi napačne ali zlonamerne uporabe ne pride do preobremenitve backend sistema. Kvota se nastavi na dovolj veliko vrednost, da ne bi smelo prihajati do težav pri običajni uporabi.
Vsak klic se obravnava kot ena transakcija. Kar pomeni, da se v celoti izvede uspešno oz. se v primeru napak ne zapišejo nobene spremembe v MetaKocka.
V primeru potreb so za prihodnost planirani naslednji klici: