Sync API Items: vervallen voorraadkolom `stock`

Zoals uitgelegd in Verzoek finetunen incremental tabellen Exact Online worden niet alle velden uit de Sync API’s van Exact Online verwerkt in de Invantive SQL tabellen Sync* en *Incremental*.

Met ingang van de release 20.1.396 zal de voorraad van een artikel zoals vastgelegd kolom stock vervallen in de tabellen SyncItems en ItemsIncremental.

Bij onderstaande controle bleek dat de voorraad een afgeleid gegeven is en niet op de artikelen vastgelegd lijkt te zijn.

Aansluiting Sync Items API en Bulk Items

De volgende query geeft voor een artikel de voorraad aan zoals opgehaald via ItemsIncremental en ItemsBulk (ItemsIncremental is een afgeleide tabel van SyncItems):

select 'ItemsIncremental', code, stock, modified, sysdate
from   ExactOnlineREST.Incremental.ItemsIncremental@eol
where  code = '...'
union all
select 'ItemsBulk', code, stock, modified, sysdate
from   ExactOnlineREST.Logistics.ItemsBulk@eol
where  code = '...'

De gerapporteerde voorraad is afwijkend tussen beiden, via de Sync API komt een voorraad van 145 terug en via bulk 16:

Er is een verschil van 129 minder artikelen in voorraad dan ItemsIncremental meldt.

Het artikel is voor het laatst gemuteerd op 5 april 2021. Kijken we naar de relevante voorraadtransacties op dit artikel sinds 5 april:

select type
,      date
,      quantity
from   transactionlines@eol
where  itemcode = '...'
and    date >= to_date('20210405', 'YYYYMMDD')
and    type in (120 /* Fulfillment. */ , 195 /* Stock count. */)
and    quantity is not null

Dan geeft dat een totaal netto uitgifte van 129 stuks:

Dit leidt tot de conclusie dat het artikel in de artikelentabel niet bijgewerkt wordt bij een uitgifte en het veld stock in de Sync API’s niet thuishoort. Dientengevolge is dit veld verwijderd.

Even lang verhaal kort: wat is de beste manier om nu alsnog de stock van de artikelen op te halen?

Terugschakelen naar ItemsBulk of toch ItemsIncremental en dan allerlei berekeningen erop loslaten?

Als aantal artikelen laag is (paar duizend): ItemsBulk of als maar voor paar artikelen nodig: punt-query op Items.

Als hogere aantallen: dan of zelf berekenen via TransactionLinesIncremental, of via StockPositions of toch maar ItemsBulk.