Fråga: Där det står "Moms 6%" eller "Moms 12%"; ska det vara;
1. Momssumman för alla artiklar med denna procentsats moms?
2. Summan av artiklarna med denna procentsats moms?
29 svar · 641 visningar · startad av Asa
Håller på med en shop och priset står som exkl moms i databasen. Finns även ett fält där momsen står för varje produkt. Står i heltal. Är det 6 % moms står det som 6 i databasen.
tabellen produkter:
produkt, moms, pris
tabellen kundvagn:
antal, pris, moms
Vill nu i kundvagnen lista alla produkter som man lagt iden och under det skall pris av produkerna stå. Efter det skall momsen stå. Ex så här:
------------------------
PRODUKT - ANTAL - PRIS
------------------------
produkten(6% moms) - 1 - 1200
produkten(12% moms) - 1 - 1800
produkten(25% moms) - 1 - 750
produkten(6% moms) - 1 - 2200
produkten(12% moms) - 1 - 400
produkten(25% moms) - 1 - 100
------------------------
Summa: xxx
Moms 6%: xxx
Moms 12%: xxxx
Moms 25%: xxx
Inkl moms: xxx
Hur gör man detta på ett bra sätt? Vill oxå ha in så att man kan få rabatt på hela orderna på exkl moms priset. Ex man får 10 % rabatt. Hur göra detta?
Hoppas nån förstår hur jag menar.. Access databas använder jag.
Fråga: Där det står "Moms 6%" eller "Moms 12%"; ska det vara;
1. Momssumman för alla artiklar med denna procentsats moms?
2. Summan av artiklarna med denna procentsats moms?
Om nu svaret är alternativ 1, så skulle nog min lösning se ut ungefär såhär, typ (Nu kan alla SQL-gurus piska mig, då det antagligen går att få det direkt ur en SQL-sats ;));
<%
dim dic, rsprod, dSum, dMomsSum, key
set dic = server.createobject("scripting.dictionary")
dic.comparemode = 1
set rs = GetYourArticlesHere()
dSum = 0
while not rsprod.eof
'det du vill skriva ut om din artikel
response.write rsprod("artikel") & "<br>"
'beräkning
if not dic.exists(rsprod("moms")) then dic.add rsprod("moms"), 0
dic(rsprod("moms")) = CDbl(dic(rsprod("moms"))) + (CDbl((rsprod("pris")*rsprod("antal")) * (1+(rsprod("moms")/100))))
dSum = dSum + (CDbl(rsprod("pris")*rsprod("antal")) * (1+(rsprod("moms")/100)))
rsprod.movenext
wend
'skriv ut summor
response.write "Summa: " & dSum & "<br>"
for each key in dic.keys
dMomsSum = dMomsSum + CDbl(key)
response.write "Moms " & key & "%: " & dic(key) & "<br>"
next
response.write "Summa moms: " & dMomsSum & "<br>"
set rsprod = nothing
set dic = nothing
%>
Kanske inte är den mest läsbara koden, tyvärr. :l
Alternativ 1 är det som skall stå. Momssumman för varje produkt. Skall testa din kod och återkommer.
Asa skrev:
Alternativ 1 är det som skall stå. Momssumman för varje produkt. Skall testa din kod och återkommer.
Momssumman för varje produkt? Borde det inte bli "totala summan av momsen för alla produkter med X% moms"?
Får detta felmess:
error '80020009'
Undantag inträffade.
/test.asp, line 30
På denna:
dMomsSum = dMomsSum + CDbl(key)
OveRRidE skrev:
Momssumman för varje produkt? Borde det inte bli "totala summan av momsen för alla produkter med X% moms"?
Joo.. så skall det vara. Skrev fel bara.
Ingen skillnad :/
Skriver den inte ut något? Är felet på exakt samma rad?
Felet är samma men nu på denna: response.write key & "<br>"
<%
Session("session_kundID") = 1
dim dic, rsprod, dSum, dMomsSum, key
set dic = server.createobject("scripting.dictionary")
dic.comparemode = 1
set rsprod = Conn.Execute("SELECT produkt,pris,moms,antal FROM shop_asp_temp WHERE sID=" & Session("session_kundID"))
dSum = 0
while not rsprod.eof
'det du vill skriva ut om din artikel
response.write rsprod("produkt") & " / " & rsprod("pris") & "kr / " & rsprod("antal") & "st<br>"
'beräkning
if not dic.exists(rsprod("moms")) then dic.add rsprod("moms"), 0
dic(rsprod("moms")) = CDbl(dic(rsprod("moms"))) + (CDbl((rsprod("pris")*rsprod("antal")) * (1+(rsprod("moms")/100))))
dSum = dSum + (CDbl(rsprod("pris")*rsprod("antal")) * (1+(rsprod("moms")/100)))
rsprod.movenext
wend
'skriv ut summor
response.write "Summa: " & dSum & "<br>"
for each key in dic.keys
response.write key & "<br>"
response.flush
dMomsSum = dMomsSum + CDbl(key)
response.write "Moms " & key & "%: " & dic(key) & "<br>"
next
response.write "Summa moms: " & dMomsSum & "<br>"
set rsprod = nothing
set dic = nothing
%>
Innan "For each...", skriv
response.write "c: " & dic.count
/red. Ah, nej vänta! Jag vet vad det beror på. Dictionary's med nycklar namngivna på det sätt som jag gjort (inte som definitiv eller typkonverterad sträng), kan bugga ur på det där sättet.
Byt ut motsvarande rader mot dessa:
'beräkning
if not dic.exists("m" & rsprod("moms")) then dic.add "m" & rsprod("moms"), 0
dic("m" & rsprod("moms")) = CDbl(dic("m" & rsprod("moms"))) + (CDbl((rsprod("pris")*rsprod("antal")) * (1+(rsprod("moms")/100))))
Nu skriver den ut c: 1 innan felmesset kommer.
Summan i uträkningen som står innan momserna kommer skall vara utan moms. alltså plussa bara ihop produkternas summor.
Sen en If sats ifall rabatt finns skall den räkna på ett sätt och finns det ej skall den räkna på annat sätt.
Observera min redigering av mitt förra inlägg.
Nu måste jag tyvärr gå och lägga mig. Återkommer imorgon om jag har tid. Lycka till! :)
/red. Jag kom på att det kan ställa till det lite ifall du har momssummor på produkterna som är decimal tal. Det innebär att nycklarna i Dictionary't innehåller specialtecken (komma), vilket jag inte tror är tillåtet. En replace borde ordna det dock.
Körningsfel i Microsoft VBScript error '800a000d'
Inkompatibla typer: 'CDbl'
/test.asp, line 33
Denna rad:
dMomsSum = dMomsSum + CDbl(key)
Nu skriver den ut utan problem fast momserna blev fel. Skriver ut så här:
Produkt med 25 % moms / 2360kr / 1st
Produkt med 12 % moms / 2360kr / 1st
Produkt med 6 % moms / 2360kr / 1st
Produkt utan moms / 2360kr / 1st
Summa: 10454,8
Moms 25%: 2950
Moms 12%: 2643,2
Moms 6%: 2501,6
Moms 0%: 2360
Summa moms: 43
Summa skall vara alla produkternas pris tillsammans. Exkl moms. Alltså bara att räkna ihop dem.
Moms 25% skall vara momsen på de produkter som har momssats 25%. Alltså i detta fall skall momsen vara 0.25 * 2360 ??
Moms 12% skall vara momsen på de produkter som har momssats 12%. Alltså i detta fall skall momsen vara 0.12 * 2360 ??
Moms 6% skall vara momsen på de produkter som har momssats 3%. Alltså i detta fall skall momsen vara 0.06 * 2360 ??
Moms 0% skall vara momsen på de produkter som har momssats 0%. Alltså i detta fall skall momsen vara 0 ??
Sen summa moms totalt räknar man bara ihop de summor de olika momssatserna ger.
Sen Total summa inkl moms skall oxå finnas med.
Har jag helt fel när jag tänker så?
Totalsumman inklusive moms, blev uppenbarligen rätt. Frågan är alltså var 43 kom från. Sedan har du adderat priset till de olika momsposterna. Men så hade du kanske tänkt dig det?