Nieuwe functionaliteiten van "Tools > Kortingen" meegenomen in versie 8.5 laat toe om eenvoudig aankoopprijzen te beheren in functie van het gebruikte depot. Het voorbeeld dat hier gegeven wordt is voor 2 depots. Om geen artikelen te moeten dupliceren om een korting per depot te geven in "Tools > Kortingen > Leveranciers", moeten we de volgende 2 velden toevoegen in de tabel STOCK. Deze 2 velden van het type float: S_DPA1 en S_DPA2.
alter table STOCK add S_DPA1 float not null default 0
alter table STOCK add S_DPA2 float not null default 0
Deze 2 velden worden vervolgens toegevoegd in de artikelfiche, respectievelijk onder de vorm van "Aankoopprijs depot 1" en "Aankoopprijs depot 2".
De 2 volgende triggers zijn toegevoegd in de tabel STOCK. Ze zorgen voor het aanmaken, wijzigen en verwijderen van de desbetreffende records in de tabel BAREMESA.
create trigger TR_STOCK_INS_UPD_DPA
on STOCK
FOR INSERT, UPDATE not for replication
AS
BEGIN
if update(s_dpa1)
begin
declare @id_depot1 char(10)
set @id_depot1 = '0000000001'
update baremesA set prix=inserted.s_dpa1 from inserted
where (baremesA.id_pied='0000000001') and(baremesA.ar_ref = inserted.s_id) and(baremesA.id_depot = @id_depot1)
insert into baremesA (id_pied, id, debut, fin, ar_ref, prix, id_depot)
select '0000000001',right(newid(), 10),'01/01/1900','01/01/2099',inserted.s_id,inserted.s_dpa1,@id_depot1
from inserted
where not exists(select * from baremesA inner join inserted on (baremesA.ar_ref=inserted.s_id) where(baremesA.id_pied = '0000000001') and(baremesA.id_depot = @id_depot1))
end
if update(s_dpa2)
begin
declare @id_depot2 char(10)
set @id_depot2 = '49D2A4ECEB'
update baremesA set prix=inserted.s_dpa2 from inserted
where (baremesA.id_pied='0000000001') and(baremesA.ar_ref = inserted.s_id) and(baremesA.id_depot = @id_depot2)
insert into baremesA (id_pied, id, debut, fin, ar_ref, prix, id_depot)
select '0000000001',right(newid(), 10),'01/01/1900','01/01/2099',inserted.s_id,inserted.s_dpa2,@id_depot2
from inserted
where not exists(select * from baremesA inner join inserted on (baremesA.ar_ref=inserted.s_id) where(baremesA.id_pied = '0000000001') and(baremesA.id_depot = @id_depot2))
end
END
create trigger TR_STOCK_DEL_DPA
on STOCK
FOR DELETE not for replication
AS
BEGIN
delete baremesA from deleted where (baremesA.id_pied='0000000001') and (baremesA.ar_ref=deleted.s_id)
END
Merk op dat deze triggers verwijzen naar de voet baremesA, dat 0000000001 is. Daarom moeten we dus een lijn toevoegen in "Tools > Kortingen > Leveranciers" en ervoor zorgen dat deze lijn ALTIJD op de eerste positie staat. Het is aangeraden om dit handmatig te wijzigen in de kortingen, omdat het volledig geautomatiseerd is door triggers.
Deze triggers zijn opgebouwd voor 2 depots, waarvan de id's '0000000001' en '49D2A4ECEB' zijn. (Aan te passen)