Projekto kontekstas: atstovų supažindinimas su automatizavimu ir pritaikymu; organizacija ir formatas — Tema 1 · Įvadas ir planas.
Susiję: trigeriai, įmonės apimtis, eilės ir auditas — rivile-erp-automatizavimo-konceptas.html. Pritaikymo sritys (UI, duomenys, ataskaitos ir kt.) — rivile-erp-customization-konceptas.html.
Interaktyvi viešojo API specifikacija: https://erp.rivile.cloud/public-api/swagger-ui/index.html
Oficialus gidas (LT, API raktas, limitai, Postman): rivile-erp-guide-api.html.
Pilna OpenAPI schema (failas): rivile-erp-public-api.openapi.json · santrauka ir autentifikacija — rivile-erp-public-api-overview.html · atnaujinimas su X-SessionToken — fetch-public-openapi.sh.
GraphQL: serverio schema (apžvalga, callAutomation, SessionType, saga) — rivile-erp-graphql-overview.html.
Žemiau šiame faile — automatizavimo scenarijų (JavaScript) funkcijos ir pagalbinės API; išorinė integracija per HTTP dažnai remiasi Swagger aprašu.
| Lygis | Sintaksė |
|---|---|
| Bendras | logMessage("{message}") |
| ERROR | log.error("{message}") |
| WARN | log.warn("{message}") |
| INFO | log.info("{message}") |
| DEBUG | log.debug("{message}") |
| TRACE | log.trace("{message}") |
output objekte:
output = {
// ...
executionStatus: "WARNING" // optional, default: "SUCCESS"
// Galimos reikšmės: SUCCESS, WARNING, CANCELED
};
Tiesiogiai vykdymo metu:
await setDocumentsCount({integer});
Arba per užbaigimo output:
output = {
// ...
documentsCount: 1 // integer, optional
};
Kiek sekundžių liko iki aktyvaus sesijos / prieigos žetono galiojimo pabaigos:
const remainingSeconds = await getRemainingSessionTime();
const response = await callErpAutomation(
"childAutomation",
{ param1: "param1", param2: true, param3: 3.14 }
);
Atsakymo struktūra:
status: SUCCESS | FAILED | CANCELED — užbaigimo būsenadata: Object arba String — automatizavimo atsakasinvokeGamaIntegrator(types[, filters][, integrationParameters])
Leidžiami tipai: DEPARTMENT, UOM, PRODUCT_GROUP, CLIENT, PRODUCT, TARE, INVENTORY_STOCK, RECEIPT.
CLIENT, PRODUCT, TARE, INVENTORY_STOCK gali būti perduoti su papildomu filtravimu (objektai su items).
Pavyzdžiai:
await invokeGamaIntegrator([
"DEPARTMENT", "UOM", "PRODUCT_GROUP", "CLIENT", "PRODUCT",
"TARE", "INVENTORY_STOCK", "RECEIPT"
]);
await invokeGamaIntegrator([{ type: "CLIENT", items: [123, 456, 789] }]);
await invokeGamaIntegrator([{ type: "PRODUCT", items: ["A1", "B2", "C3"] }]);
Taikoma tik: CLIENT, PRODUCT, TARE, INVENTORY_STOCK.
Laukai objekte:
| Laukas | Aprašymas |
|---|---|
type |
privaloma — duomenų tipas |
lastDateTime |
paskutinio atnaujinimo laikas; jei nenurodytas — iš SS-GAMA-INTEGRATOR |
where |
filtro sąlyga (string) |
fromPage |
pradinis puslapis (int) |
updateLastDateTime |
default true — ar atnaujinti sinchronizacijos žymą SS-GAMA-INTEGRATOR |
{ trimBarcode: Boolean } // default: false
UI srautas (asinchroninis eksportas / ataskaita su užduotimi, Artemis, Data Mobility, failas): rivile-erp-data-export-async.html.
await getDataExportSchemas();
Atsakas: masyvas objektų su id, code, name, neprivaloma: filters, required, groupBy.
await fetchExportData("reportTypeId", {
filters: Object,
dataSelection: Array[String], // neprivaloma — laukų keliai
groupBy: String // neprivaloma
});
Atsakas:
{
status: "SUCCESS" | "ERROR",
data: {
"{entityTypeName}": [ /* ... */ ]
}
}
Trumpi pavyzdžiai: PRODUCT su filtru type: "SERVICE", LEDGER_ACCOUNT, PAYABLE_RECEIVABLES su datomis, tipais, klientais, valiutomis ir groupBy: "CLIENT".
[
{
"blockType": "FILEUPLOAD",
"meta": {
"fieldName": "fileName",
"accept": ".xlsx,.json,.csv,.xml"
}
}
]
const fileDataResponse = await fetchData(undefined, {
url: initial.fileName.publicLink,
method: "GET",
raw: Boolean // false, jei content-type application/**; default: true
});
// fileDataResponse: { body, headers, code }
const fileId = "ac7b21e8-2b0f-4f46-8889-c11615e42d1b";
let publicLink = await rql(`SELECT * FROM getPublicLink WITH id = ${fileId}`);
output = {
message: "Sugeneruotas PublicLink failui",
publicLink
};
Grąžinamos funkcijos, kurios priima neprivalomą konfigūraciją:
getERPUrl(options) — ERPgetPOSUrl(options) — POSgetEmployeePortalUrl(options) — darbuotojų portalas| Parametras | Tipas | Default | Aprašymas |
|---|---|---|---|
path |
string | null | Kelias po baziniu URL |
includeOrgCode |
boolean | false | Organizacijos kodas kelyje |
includeCompanyId |
boolean | false | ?c=... |
queryParams |
object | {} | Papildomi query parametrai |
dataParser)| Formatas | Funkcija / naudojimas |
|---|---|
| JSON | JSON.parse(fileDataResponse.body) |
| CSV | dataParser.csvToJson(body, { valuesSeparator, rowsSeparator, firstRowHeaders }) |
| XML | await dataParser.xmlToJson(body) |
| Excel | await dataParser.excelToJson(body) arba excelSheetToJson(body, sheetIndex, headersRow) |
| Base64 | toBase64 / fromBase64; dvejetainiams: base64ToBuffer, bufferToBase64 |
fileService.uploadFile(fileContent, fileName, options)Svarbiausi laukai: fileType (ATTACHMENT | IMAGE), tags, association (companyId, entityTypeId, refId, refName, clientId, clientCode, clientName), isTemporary, generatePublicLink.
Atsakas turi tarp kitų: id, internalLink, publicLink, associations, ir kt.
Pavyzdžiai: tekstas, JSON.stringify į .json, CSVBuilder į .csv, XLSX (išplėstas dokumentacijoje).
const fileBinary = await fileService.getFileBinaryByLink(fileUrl);
// arba
const fileBinary = await fileService.getInternalFileBinaryById(fileId);
const fileContent = fileBinary.toString("UTF-8");
parsePhoneNumber(phoneNumber, defaultCountry?) // → PhoneNumber | undefined
Nuoroda: libphonenumber-js
await mutate(`prepareAndSendEmailTemplate`, {
request: {
companyId, // UUID, privaloma
templateCode, // privaloma, jei nėra templateId
templateId, // privaloma, jei nėra templateCode
placeId, // neprivaloma
fromEmail, // neprivaloma
initialData: {}
}
});
reportingService.prepareReportData({ templateId | templateCode, initialData }) → duomenų objektasreportingService.generateReport({ ... }) → { buffer, fileName, contentType }Pastaba: naudojant generateReport, prepareReportData kviečiama automatiškai.
const generatedWordBuffer = await fillWordTemplate(fileBuffer, sourceData?);
Tipinis srautas: getInternalFileBinaryById(templateId) → fillWordTemplate → uploadFile.
Klasifikatoriaus tipo laukui nustatyti ribojimus, pvz.: { "treeCode": "XX-CLASS" }.
lastDateTime formatas: ISO su laiko juosta (pvz. žiemos laikas LT).Tempalte ir pan.) — kode naudoti tikrus pavadinimus.