U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Beheer van verschillende aankoopprijzen in functie van het depot

0000002331     -      22-08-2016

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 N(15,5) - float: S_DPA1 en S_DPA2. 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)