AsaMedlem sedan dec. 20011 860 inlägg 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.
OveRRidEMedlem sedan feb. 200112 078 inlägg 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?
OveRRidEMedlem sedan feb. 200112 078 inlägg 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
AsaMedlem sedan dec. 20011 860 inlägg Alternativ 1 är det som skall stå. Momssumman för varje produkt. Skall testa din kod och återkommer.
OveRRidEMedlem sedan feb. 200112 078 inlägg
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"?
AsaMedlem sedan dec. 20011 860 inlägg Får detta felmess:
error '80020009'
Undantag inträffade.
/test.asp, line 30
På denna:
dMomsSum = dMomsSum + CDbl(key)
AsaMedlem sedan dec. 20011 860 inlägg
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.
OveRRidEMedlem sedan feb. 200112 078 inlägg Sätt en
response.write key & "<br>"
response.flush
före den raden. Vad ger det?
OveRRidEMedlem sedan feb. 200112 078 inlägg Skriver den inte ut något? Är felet på exakt samma rad?
AsaMedlem sedan dec. 20011 860 inlägg 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
%>
OveRRidEMedlem sedan feb. 200112 078 inlägg 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))))
AsaMedlem sedan dec. 20011 860 inlägg Nu skriver den ut c: 1 innan felmesset kommer.
AsaMedlem sedan dec. 20011 860 inlägg 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.
OveRRidEMedlem sedan feb. 200112 078 inlägg 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.
AsaMedlem sedan dec. 20011 860 inlägg Körningsfel i Microsoft VBScript error '800a000d'
Inkompatibla typer: 'CDbl'
/test.asp, line 33
Denna rad:
dMomsSum = dMomsSum + CDbl(key)
OveRRidEMedlem sedan feb. 200112 078 inlägg Okej, en sista.
dMomsSum = dMomsSum + CDbl(mid(key,2,len(key))
AsaMedlem sedan dec. 20011 860 inlägg 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
AsaMedlem sedan dec. 20011 860 inlägg 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å?
UlfTMedlem sedan maj 20018 027 inlägg 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?