OpenAPI adresas pateikiamas čia: RIVILE ERP_API(Swagger UI)
Kodo pavyzdys
Užduotis: Suformuoti pardavimų sąskaitos sukūrimą ir registravimą, naudojant POST užklausą į Rivile REST API.
Su viena užklausa galima sukurti dokumentą su eilutėmis, kai eilučių kiekis yra <= 100. Jei norite sukurti dokumentą su > 100 eilučių, rekomenduojame pirma sukurti dokumentą ir vėliau atskiromis užklausomis kurti dokumento eilutes.
Naudojant suformuotą pavyzdį naudoti savo API raktą ( <Jūsų_API_Raktas>
).
LOCAL loHttp, lcUrl, lcJsonData, lcResponse, lcApiKey
* Rivile Public REST API URL
lcUrl = "https://erp.rivile.cloud/public-api/v1/sale-invoices"
* API rakto tokenas. Jį sukurti ir pasiimti galite iš Rivile ERP sistemos.
lcApiKey = "<Jūsų_API_Raktas>"
* Sukuriame pardavimų sąskaitos duomenų JSON formatą (rankiniu būdu JSON struktūra)
lcJsonData = '{'+;
'"clientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",'+;
'"clientName": "Rivilė, UAB",'+;
'"documentNo": "ERP-002365",'+;
'"isTaxIncluded": false,'+;
'"currencyCode": "EUR",'+;
'"notes": "Sąskaita iš elektroninės parduotuvės",'+;
'"lines": ['+;
'{'+;
'"itemCode": "SM-S928BZYHEUB",'+;
'"itemName": "Samsung Galaxy S21 Ultra",'+;
'"uomAltCode": "VNT",'+;
'"qtyAlt": 1,'+;
'"price": 1000.00,'+;
'"departmentCode": "SAND1"'+;
'}'+;
']'+;
'}'
* Sukuriame MSXML2.ServerXMLHTTP objektą
loHttp = CREATEOBJECT("MSXML2.ServerXMLHTTP.6.0")
TRY
* Atidarome HTTP ryšį (POST metodas)
loHttp.Open("POST", lcUrl, .F.)
* Nustatome HTTP antraštes
loHttp.SetRequestHeader("Content-Type", "application/json")
loHttp.SetRequestHeader("X-SessionToken", lcApiKey)
* Siunčiame POST užklausą su JSON duomenimis
loHttp.Send(lcJsonData)
* Patikriname atsakymo būseną
IF loHttp.Status = 200
lcResponse = loHttp.ResponseText
? "Atsakymas: ", lcResponse
ELSE
? "Klaida: ", loHttp.Status, loHttp.StatusText
ENDIF
CATCH TO loException
? "Įvyko klaida: ", loException.Message
ENDTRY
Galimas duomenų filtravimas, kuris leidžia sujungti kelis filtrus juos jungiant loginę funkciją AND
.
Filtravimui galimi naudoti operatoriai:
CONTAINS
: Tikrina, ar laukas turi nurodytą tekstą.NOT_CONTAINS
: Tikrina, ar laukas neturi nurodyto teksto.EQUAL
: Tikrina, ar laukas yra lygus nurodytam tekstui, skaičiui arba loginei reikšmei.NOT_EQUAL
: Tikrina, ar laukas nėra lygus nurodytam tekstui arba skaičiui.GREATER_THAN
: Tikrina, ar laukas yra didesnis nei nurodytas skaičius.STARTS_WITH
: Tikrina, ar laukas prasideda nurodytu tekstu.ENDS_WITH
: Tikrina, ar laukas baigiasi nurodytu tekstu.Pavyzdys:
Užduotis: Vykdyti filtravimą klientų, kurių pavadinime yra fragmentas "Demo" ir jie yra aktyvūs.
API filtrų sąlyga:
[
{ "operation": "CONTAINS", "name": "name", "value": "Demo" } ,
{ "operation": "EQUAL", "name": "active", "value": true }
]
Vykdant užklausą filtro reikšmę reikia užkoduoti (Encode).
API filtro rezultatas:
GET {{baseUrl}}/v1/clients?size=30&page=0&filter=%7B%22operation%22%3A%22CONTAINS%22%2C%22name%22%3A%22name%22%2C%22value%22%3A%22Demo%22%7D%2C%7B%22operation%22%3A%22EQUAL%22%2C%22name%22%3A%22active%22%2C%22value%22%3Atrue%7D
Kodas, skirtas sukurti filtrą ir suformuoti GET užklausą:
LOCAL lcFilters, lcUrlEncodedFilter, lcBaseUrl, lcQueryParams, lcFullUrl
* JSON filtro sąlygų konvertavimas į eilutę
lcFilters = '[{"operation":"CONTAINS","name":"name","value":"Demo"},' + ;
'{"operation":"EQUAL","name":"active","value":true}]'
* Filtro eilutės konvertavimas į URL formatą
lcUrlEncodedFilter = URLEncode(lcFilters)
* Filtro apjungimas su puslapiavimo parametrais
lcQueryParams = "?size=30&page=0&filter=" + lcUrlEncodedFilter
* Pilnos GET užklausos sukonstravimas
lcBaseUrl = "https://erp.rivile.cloud/public-api/v1/clients"
lcFullUrl = lcBaseUrl + lcQueryParams
? lcFullUrl
* Funkcija URL kodavimui
FUNCTION URLEncode(tcString)
LOCAL lcResult
lcResult = ""
FOR i = 1 TO LEN(tcString)
lcChar = SUBSTR(tcString, i, 1)
IF ISALPHA(lcChar) OR ISDIGIT(lcChar)
lcResult = lcResult + lcChar
ELSE
lcResult = lcResult + "%" + TRANSFORM(ASC(lcChar), "@0")
ENDIF
ENDFOR
RETURN lcResult
ENDFUNC
Užklausose įrašų skaičius negali viršyti 100 !