Wolt API integracija leidžia siųsti kainų (items update) ir prekių likučių (inventory update) informaciją.
Siuntimo metu fiksuojami paskutiniai duomenys, o vėliau perduodami tik atnaujinimai, t. y. naujos kainos ir tik tos pozicijos, kurių likučiai pasikeitė.
Duomenys paimami naudojant Rivile Gama formules (Servisas → Kortelės → Formulės), todėl integracijos nereikia keisti keičiant konfigūraciją.
Standartinės formulės importuojamos pirmą kartą paleidus integraciją. Vienas iš parametrų yra formulės kodas.
WOLT_USER
.WOLT1
, kurioje patikslinamas asortimento, kainos parinkimo ir likučių algoritmasPirmą kartą paleidus wolt_api()
, susikuria reikalingi parametrai ir šabloninė formulė.
Paleidimui gali būti naudojamas papildomas klavišas:
m.wolt = wolt_api() && parametrų objektas
m.wolt.formule = "WOLT1"
m.wolt.field_kodas = "sku"
m.wolt.init() && Items + Inventory update
* m.wolt.init(1) && Items update - tik kainų siuntimas
* m.wolt.init(2) && Inventory update - tik likučių siuntimas
Task Scheduler vartotojo sisteminio INIT'o pavyzdys:
public wolt
m.wolt = wolt_api() && parametrų objektas
m.wolt.formule = "WOLT1"
m.wolt.field_kodas = "sku"
m.wolt.debug = .t.
m.wolt.hide_log = .t.
Task Scheduler action: .F. .F. 1 VARDAS slaptažodis XXF m.wolt.init()
Šabloninė formulė WOLT1 - "Wolt - kainos iš sutarties":
&& prekių asortimentas ir kainos pardavimo sutartyse
&& kainos vienodos visiems Wolt padaliniams
&& visuomet nuskaitoma visų pozicijų kainos ir kiekiai, o bus siunčiami tik pasikeitimai
&& kaina prieš nuolaidą vedama lauke N52_KAINA3
&& Wolt kliento kodas Rivilėje
private kodas_ks
m.kodas_ks = "WOLT"
&& prekei identifikuoti Wolt sistemoje naudojamas kodas
&& matavimo vienetas nesiunčiamas, todėl kodas turi būti unikalus
local kodo_laukas
m.kodo_laukas = "n37_bar_kodas" && "n37_bar_kodas", "kodas_ps", arba "n87_kodas"
&& Venue ID pirmame papildomame padalinio lauke
=f_select("select n07_kodas_is as kodas_is, dbo.pap(l11_laukas, 1, 1) as venue_id " + ;
"from n07_imon inner join l11_pap1 on l11_kodas_nr = 'ISN07' and n07_kodas_is = l11_kodas1 where dbo.pap(l11_laukas, 1, 1) <> ''", "padaliniai")
&& Venue ID padalinio fakso lauke
*!* =f_select("select n07_kodas_is as kodas_is, n07_fax as venue_id from n07_imon where n07_fax <> ''", "padaliniai")
&& sritis rezultato išsaugojimui
*!* create cursor wolt (venue_id c(30), kodas c(30), kaina n(12, 4), kaina_pries_nuol n(12, 4), kiekis n(12, 3), isjungta n(1))
&& asortimentas ir kainos iš sutarčių
=f_select("select " + iif(m.kodo_laukas = "kodas_ps", "n52_kodas", m.kodo_laukas) + " as kodas, " + ;
"n52_kaina as kaina, n52_kaina3 as kaina_pries_nuol, cast(0 as numeric(12, 3)) as kiekis, cast(0 as numeric(1)) as ijungta " + ;
"from (select n52_kodas, n52_kodas_us2, n52_kaina, n52_kaina3, " + ;
"row_number() over (partition by n52_kodas, n52_kodas_us2 order by n51_prioritetas, n52_prioritetas) as num_row " + ;
"from n51_suth inner join n52_sutd on n51_kodas_kt = n52_kodas_kt " + ;
"where n51_tipas = 2 and n52_rusis = 1 and n52_poz_kaina = 1 and n52_kodas_us2 <> '' and n52_kaina <> 0 and n51_kodas_ks=?m.kodas_ks " + ;
"and n51_viskas = 0 and (n51_poz_date = 0 or convert(char(10), getdate(), 102) between n51_beg_date and n51_end_date) " + ;
"and n52_viskas = 0 and (n52_poz_date = 0 or convert(char(10), getdate(), 102) between n52_beg_date and n52_end_date)) scr " + ;
"inner join n37_pmat on n52_kodas = n37_kodas_ps and n52_kodas_us2 = n37_kodas_us " + ;
"left join n87_tpre on n87_kodas_ks = ?m.kodas_ks and n52_kodas = n87_kodas_ps and n52_kodas_us2 = n87_kodas_us " + ;
"where num_row = 1", "wolt_sut")
insert into wolt select nvl(venue_id, ""), nvl(kodas, ""), nvl(kaina, 0), nvl(kaina_pries_nuol, 0), 0, 0 from wolt_sut, padaliniai
&& kiekiai padaliniuose
=f_select("select " + iif(m.kodo_laukas = "kodas_ps", "i17_kodas_ps", m.kodo_laukas) + " as kodas, " + ;
"i17_kodas_is, sum(i17_kiekis - i17_atiduota - i17_rezervas) / n37_koefici as kk " + ;
"from i17_vpro inner join n37_pmat on i17_kodas_ps=n37_kodas_ps and i17_kodas_us_a=n37_kodas_us " + ;
"left join n87_tpre on n87_kodas_ks = ?m.kodas_ks and i17_kodas_ps = n87_kodas_ps and i17_kodas_us_a = n87_kodas_us " + ;
"group by " + iif(m.kodo_laukas = "kodas_ps", "", m.kodo_laukas + ", ") + "i17_kodas_is, i17_kodas_ps, i17_kodas_us, n37_koefici", "wolt_kiekiai")
update wolt set kiekis = kk from wolt_kiekiai inner join padaliniai on i17_kodas_is = kodas_is ;
where wolt.venue_id = padaliniai.venue_id and wolt.kodas = wolt_kiekiai.kodas
&& išjungiamos prekės neturinčios likučio arba kainos
update wolt set isjungta = 1 where kiekis <= 0 or kaina <= 0
=bal_kadr_close("padaliniai", "wolt_sut", "wolt_kiekiai") && uždaromos sritys
Kitokia šabloninė formulė WOLT2 - "Wolt - padalinių kainos":
&& padalinių prekių kainos (I33)
&& prekių asortimentas pagal likučius padaliniuose
&& visuomet nuskaitoma visų pozicijų kainos ir kiekiai, o bus siunčiami tik pasikeitimai
&& Wolt kliento kodas Rivilėje
private kodas_ks
m.kodas_ks = "WOLT"
&& prekei identifikuoti Wolt sistemoje naudojamas kodas
&& matavimo vienetas nesiunčiamas, todėl kodas turi būti unikalus
local kodo_laukas
m.kodo_laukas = "n37_bar_kodas" && "n37_bar_kodas", "kodas_ps", arba "n87_kodas"
&& Venue ID
local venue_id
m.venue_id = "dbo.pap(l11_laukas, 1, 1)" && pirmame papildomame padalinio lauke
*!* m.venue_id = "n07_fax" && padalinio fakso lauke
=f_select("select n07_kodas_is as kodas_is, dbo.pap(l11_laukas, 1, 1) as venue_id " + ;
"from n07_imon inner join l11_pap1 on l11_kodas_nr = 'ISN07' and n07_kodas_is = l11_kodas1 where dbo.pap(l11_laukas, 1, 1) <> ''", "padaliniai")
&& Venue ID padalinio fakso lauke
*!* =f_select("select n07_kodas_is as kodas_is, n07_fax as venue_id from n07_imon where n07_fax <> ''", "padaliniai")
&& sritis rezultato išsaugojimui
*!* create cursor wolt (venue_id c(30), kodas c(30), kaina n(12, 4), kaina_pries_nuol n(12, 4), kiekis n(12, 3), isjungta n(1))
&& asortimentas ir kiekiai iš likučių + padalinio kainos
=f_select("select " + m.venue_id + " as venue_id, " + iif(m.kodo_laukas = "kodas_ps", "i17_kodas_ps", m.kodo_laukas) + " as kodas, " + ;
"max(isnull(i33_kaina, 0)) as kaina, cast(0 as numeric(12, 4)) as kaina_pries_nuol, " + ;
"sum(i17_kiekis - i17_atiduota - i17_rezervas) / n37_koefici as kiekis, cast(0 as numeric(1)) as isjungta "+ ;
"from i17_vpro inner join n37_pmat on i17_kodas_ps=n37_kodas_ps and i17_kodas_us_a=n37_kodas_us " + ;
"left join n87_tpre on n87_kodas_ks = ?m.kodas_ks and i17_kodas_ps = n87_kodas_ps and i17_kodas_us_a = n87_kodas_us " + ;
"left join i33_pkai on i17_kodas_ps = i33_kodas_ps and i17_kodas_is = i33_kodas_is and i17_kodas_us_a = i33_kodas_us " + ;
"inner join n07_imon on i17_kodas_is = n07_kodas_is " + ;
"left join l11_pap1 on l11_kodas_nr = 'ISN07' and n07_kodas_is = l11_kodas1 " + ;
"where isnull(" + m.venue_id + ", '') <> '' " + ;
"group by " + m.venue_id + ", " + iif(m.kodo_laukas = "kodas_ps", "", m.kodo_laukas + ", ") + ;
"i17_kodas_is, i17_kodas_ps, i17_kodas_us, n37_koefici", "wolt_i33")
insert into wolt select nvl(venue_id, ""), nvl(kodas, ""), nvl(kaina, 0), nvl(kaina_pries_nuol, 0), nvl(kiekis, 0), nvl(isjungta, 0) from wolt_i33
&& išjungiamos prekės neturinčios likučio arba kainos
update wolt set isjungta = 1 where kiekis <= 0 or kaina <= 0
=bal_kadr_close("wolt_i33") && uždaromos sritys