Soms is het gebruik van samengestelde artikelen (BOM, productie, etc.) te veel van het goede in Exact Online en wil je alleen voor elk artikel een merkgebonden prijs inclusief montage presenteren. Hierbij is de montageprijs gelijk aan het merkspecifieke uurtarief maal de artikelspecifieke uurprijs.
Het volgende Invantive SQL script genereert een lijst van eenvoudige samengestelde artikelen per merk:
--
-- Per merk het uurtarief, het achtervoegsel achter de oorspronkelijke
-- artikelcode en de artikelgroep waar de samengestelde artikelen
-- in moeten landen.
--
create or replace table merken@inmemorystorage
as
select 'brand1' brand
, 105 hour_tariff
, 'b1' postfix
, 'B1-DUMMY' itemgroupcode
union all
select 'brand2' brand
, 130 hour_tariff
, 'b2' postfix
, 'B2-DUMMY' itemgroupcode
--
-- Het aantal minuten per artikel voor de montagetijd, zoals
-- vastgelegd in Exact Online met een numeriek extra veld op het artikel.
-- In dit voorbeeld wordt extra veld #2 gebruikt.
--
create or replace table itemextrafieldvalues@inmemorystorage
as
select efd.*
from systemdivisions sdn
join itemextrafields(sdn.code, null, sdn.created) efd
on efd.number = 2
--
-- De nieuwe artikelen bestaande uit:
-- - Afgeleide artikelcode
-- - Omschrijving
-- - Nieuwe verkoopprijs.
--
create or replace table itemsnew@inmemorystorage
as
select itm.code || mrk.postfix codenew
, itm.description
, mrk.itemgroupcode itemgroupcode
, sim.Price + round(efd2.value / 60 * mrk.hour_tariff, 2) price_combined
from exactonlinerest..itemsbulk itm
join merken@inmemorystorage mrk
join itemextrafieldvalues@inmemorystorage efd2
on efd2.division = itm.division
and efd2.itemid = itm.id
join salesitemprices sim
on sim.division = itm.division
and sysdateutc >= sim.startdate
and sysdateutc <= coalesce(sim.enddate, sysdateutc)
and sim.item = itm.id
--
-- Gebruik als bron alle artikelen behalve de artikelgroepen gebruikt
-- voor afgeleide artikelen.
--
where itm.itemgroupcode not in (select itemgroupcode from merken@inmemorystorage)
--
-- Schrijf de nieuwe artikelen weg naar een spreadsheet.
--
select *
from itemsnew@inmemorystorage
order
by codenew
local export results as "${system:userdocumentsdirectory}\items-new.xlsx" format xlsx
Indien nodig kunnen direct na de prijsbepaling de artikelen in Exact Online geladen worden via UploadXMLTopics
of synchronize
.