Fråga
Hej!
Jag har en webshop med Accessdatabaskoppling där artiklarnas pris finns i en kolumn [ArtPris] och artikelns momsvärde i en kolumn [ArtMoms]. Eftersom jag skapar PDF-fakturor utifrån Accessdatabasen vill ha ett fält i fakturan där summan av momsvärdet för artiklar med 6% moms hamnar och ett fält för artiklarna med 25% moms. Eftersom det inte framgår i databasen om [ArtMoms] är 25% eller 6% av artikelns pris så måste jag programmera så att den i första hand avgör om det är 25% moms eller 6% moms som gäller för att senare stoppa in fältet i fakturan. Har ni några tips på algoritmer om hur den kan komma fram till detta?
Tacksam all hjälp!
Svar
Hej Poya
För att räkna ut moms kan man använda denna formel, förutsatt att [ArtPris] är exklusive moms
Moms i % = [ArtMoms] / [ArtPris] * 100?
Om du har heltal i databasen så bör du använda denna formel istället,
Moms i % = [ArtMoms] * 100 / [ArtPris]
annars riskerar du att tappa precision, dvs tal efter decimaltecknet försvinner. Skulle det vara så att [ArtPris] är inklusive moms bör du istället använda denna formel,
Moms i % = [ArtMoms] * 100 / ([ArtPris] – [ArtMoms])
Eftersom du riskerar att få tal som inte blir 6 eller 25 kan du införa en toleransnivå. Nedan följer en enklare algoritm för det här,
[pseudo]
moms = [ArtMoms] * 100 / ([ArtPris] – [ArtMoms])
IF (moms > 4) AND (moms < 8)
moms = 6
ELSE IF (moms >= 8)
moms = 25
ELSE
invalid value warn user
[/psuedo]
Dock avråder vi dig från dessa förslag, det finns en bättre lösning som är snyggare och enklare. Genom att lagra momsen som procent istället för kronor så halverar du antalet kolumner som behövs uppdateras om priset ändras. Formeln nedan beräknar slutsumman inkl moms. Någon algoritm för toleransnivåer behövs inte tack vare att man lagrat i procent istället för kronor.
[summainklmoms] = ([ArtPris] * ([ArtMoms] + 100)) / 100
För att snygga till utdatan kan det vara trevligt att avrunda till närmaste tioöring. För att avrunda kan du använda metoden
round(siffra,decimaler)
Som antal decimaler kan du ange 1 och sedan skriva ut nya talet med två decimaler.
Lycka till med webshopen och hoppas det löser sig.