Avatar billede ibka Novice
17. august 2004 - 13:15 Der er 20 kommentarer og
1 løsning

Moms udregning

Hej Eksperten's bruger
Kan ikke få min momsindtastning til at falde på plads.

Vil gerne have at når jeg indtaster i mit felt excl. moms (price) at beløbet incl. moms overføres til feltet incl. moms (price2). Har prøvet nogle af de løsninger som der har været skrevet om, men får nogle fejl.

Momsberegningen skulle gerne virke begge veje.

Sådan ser mine linier ud i dag.

                              <tr>
                                <td width="148" align="right" height="35"><b><font size="2" face="Arial" color="#00FFFF">
                                Price Incl Moms</font></b></td>
                                <td width="380" height="35">
                                  <!--webbot bot="Validation" s-data-type="Number" s-number-separators=",." b-value-required="TRUE" --><input type="text" name="price2" size="8"></font></td>                              </tr>
                              <tr>
                                <td width="148" align="right" height="35"><b><font size="2" face="Arial" color="#00FFFF">Price
                                Excl Moms&nbsp;</font></b> </td>
                                <td width="380" height="35"><font color="#FFFFFF">
                                <!--webbot bot="Validation" s-data-type="Number" s-number-separators=",." b-value-required="TRUE" --><input type="text" name="price" size="8"></font></td>
                              </tr>

De giver vel sig selv, når man kommer med sådan et spørgsmål at men er meget grøn, så jeg skal nok have det skåret ud i pap
Avatar billede eagleeye Praktikant
17. august 2004 - 13:26 #1
Hvis du har et beløb uden moms og vil finde beløbtet med moms til kan du gange med 1,25

Hvis du har et beløn med moms og vil finde beløbet uden moms kan du gange med 0,8


Hvis det skal ske uden at reloade siden skal du lave det i javascript.
Avatar billede ibka Novice
17. august 2004 - 13:31 #2
OK, det er så nok hvordan javascript skal se ud, jeg har problemet med, så hvis der er en som kan skrive den, vil det være kanon
Avatar billede tubber Juniormester
17. august 2004 - 15:30 #3
Lige en kommentar til eagleeye, så kan man det han skriver men skal det gøres korekt så skal man gøre følgende:

Beløb uden moms hvor det skal ligges til : beløb + 25% moms = beløb + ((beløb/100)*25)

Beløb med moms hvor den skal trækkes ud : beløb - 25% moms = beløb + ((beløb/125)*25)

Grunden til man bør sætte det ind korekt er hvis momsen bliver ændret til f.eks. 24 så bliver det dælme træls at ændre koden......
Avatar billede ibka Novice
17. august 2004 - 16:25 #4
Hej Tubber, kan du fortælle mig hvor jeg skal sætte din kode ind
Avatar billede eagleeye Praktikant
17. august 2004 - 16:37 #5
tubber >> hvis momsen rettes kommer du til at rette lige så meget som ved mit.
Avatar billede eagleeye Praktikant
17. august 2004 - 16:51 #6
ibka >> Har du en form tag, så skal du give formen et navn hvis den ikke har det nu <form name="fnavn" ....>

Så kan koden være som sådan her. Her incl. en form:

<html>
<body>
<SCRIPT LANGUAGE="javascript">
function addmoms(tal) {
if (parseInt(tal)!=NaN)
  document.fnavn.price2.value = tal*1.25;
}

function removemoms(tal) {
if (parseInt(tal)!=NaN)
  document.fnavn.price.value = tal*0.8; // gange med (1-25/125)
}
</SCRIPT>
<form name="fnavn" >
<table>
                              <tr>
                                <td width="148" align="right" height="35"><b><font size="2" face="Arial" color="#00FFFF">
                                Price Incl Moms</font></b></td>
                                <td width="380" height="35">
                                  <!--webbot bot="Validation" s-data-type="Number" s-number-separators=",." b-value-required="TRUE" --><input type="text" name="price2" size="8" onchange="removemoms(this.value);"></font></td>                              </tr>
                              <tr>
                                <td width="148" align="right" height="35"><b><font size="2" face="Arial" color="#00FFFF">Price
                                Excl Moms&nbsp;</font></b> </td>
                                <td width="380" height="35"><font color="#FFFFFF">
                                <!--webbot bot="Validation" s-data-type="Number" s-number-separators=",." b-value-required="TRUE" --><input type="text" name="price" size="8" onchange="addmoms(this.value);"></font></td>
                              </tr>
</table>
</form>                             
</body>
</html>
Avatar billede ibka Novice
17. august 2004 - 17:10 #7
eagleeye, takker, prøver at sætte formlen ind i min formular og om jeg kan få det til at virke - kommer tilbage
Avatar billede ibka Novice
17. august 2004 - 17:11 #8
de linier jeg har tilføjet mit sprøgsmål en kun en lille del af hele siden
Avatar billede eagleeye Praktikant
17. august 2004 - 17:14 #9
ok :)

Du skal give formen et navn lige nu er javascript koden lavet til form hra navnet "fnavn" som vist.

Du skal rette de to linje linje med input feltet, den føste "prive2":

<!--webbot bot="Validation" s-data-type="Number" s-number-separators=",." b-value-required="TRUE" --><input type="text" name="price2" size="8"></font></td>                              </tr>

til denne:

<!--webbot bot="Validation" s-data-type="Number" s-number-separators=",." b-value-required="TRUE" --><input type="text" name="price2" size="8" onchange="removemoms(this.value);"></font></td>                              </tr>


Price skal rettes fra:
<!--webbot bot="Validation" s-data-type="Number" s-number-separators=",." b-value-required="TRUE" --><input type="text" name="price" size="8"></font></td>

til dette:
<!--webbot bot="Validation" s-data-type="Number" s-number-separators=",." b-value-required="TRUE" --><input type="text" name="price" size="8" onchange="addmoms(this.value);"></font></td>


Så kopier du dette ind et sted i filen et. oppe imellem <head> og </head>
<SCRIPT LANGUAGE="javascript">
function addmoms(tal) {
if (parseInt(tal)!=NaN)
  document.fnavn.price2.value = tal*1.25;
}

function removemoms(tal) {
if (parseInt(tal)!=NaN)
  document.fnavn.price.value = tal*0.8; // gange med (1-25/125)
}
</SCRIPT>
Avatar billede tubber Juniormester
18. august 2004 - 02:40 #10
jo det er vist egenligt rigtigt nok eagle, dog ville jeg stadig skrive det med den korekte udregning, for bliver den lavet om til f.eks. 24% bliver det et sjovt tal man skal dividere og gange med gør det ikke ?

og desuden vil det være nemmere at overskue hvis en anden skulle overtage koden? eller er det bare mig hehe

Men som sagt så vil dit virke :)
Avatar billede ibka Novice
18. august 2004 - 17:21 #11
eagleeye, så fik jeg det endelig til at virke - næsten
Når jeg taster ind i feltet incl. moms kr. 100 bliver der overføt til feltet uden moms kr. 80 - det ok. Men når jeg taster ind i feltet uden moms bliver der ikke overført noget til feltet incl. moms. Er det noget du fixer :-))
Avatar billede eagleeye Praktikant
18. august 2004 - 17:23 #12
Hvis man vil ligge X antal procent til et tal ganger med med 1.X som kommer af (1+X/100), så det kan næsten ikke være lettere :) Om man skal skrive 1,25 eller 1,24 er mener jeg ikke er så beværligt.

Hvis man vil trække X antal procent fra ganger man med (1-X/(100+X)). Det rigtig at med 25% giver det tal 0,8 og med 24% giver det et grimt tal. Så ja man kan nok med fordel skrive formlen for det.

Skal det være helt let at rette kan man lave en variable som indeholder momsen så det kun et sted man retter :)  Men tror vi på momsen falder?
Avatar billede tubber Juniormester
18. august 2004 - 17:23 #13
næææ men så kan den stige til 26% hehehe
Avatar billede eagleeye Praktikant
18. august 2004 - 17:32 #14
ibka >> hvordan set input feltet ud ?
Avatar billede eagleeye Praktikant
18. august 2004 - 17:35 #15
Det skal se sådan her ud men en onchange:

<input type="text" name="price" size="8" onchange="addmoms(this.value);">

Det muligt du lige skal bruge tab eller vælge et andet felt før den regner det ud.
Avatar billede ibka Novice
18. august 2004 - 17:48 #16
Tjekker lige.
Har lige set at jeg har lidt problemer med tusind skilletegn, det gør den ikke rigtigt, har indtil nu kun prøvet med at taste 100 ind
Avatar billede ibka Novice
18. august 2004 - 18:08 #17
Linien står rigtigt som den er her: <input type="text" name="price" size="8" onchange="addmoms(this.value);">

Hvis jeg i feltet incl. moms taster 25001 så får jeg i excl. moms 20000.800000000003, det noget rod. hvis jeg taster ind incl. moms 25.000,50 så får jeg i excl. moms NaN
Avatar billede eagleeye Praktikant
18. august 2004 - 18:27 #18
punktum svare til komma. Så det svare til 20000,80000000000
hvis du vil bruge DK komma og de skal runde af til 2 decimalte skal der noget mere til.
Avatar billede ibka Novice
18. august 2004 - 23:56 #19
eagleeye, jeg ked af det, men jeg kan jo ikke bruge formlen uden at den skriver dansk. Når jeg tester på den orginale side uden moms rettelser, så acceptere den danske DK komma og 2 decimaler. Den udregner moms begge veje når jeg bruger tab stop og kun tab stop, men det også ok når man ved det. Men det lidt af et problem når den ikke kan regne med DK komma og 2 decimaler.
Avatar billede eagleeye Praktikant
18. august 2004 - 23:58 #20
Ok så prøv at udskifte disse linjer:

<SCRIPT LANGUAGE="javascript">
function addmoms(tal) {
if (parseInt(tal)!=NaN)
  document.fnavn.price2.value = tal*1.25;
}

function removemoms(tal) {
if (parseInt(tal)!=NaN)
  document.fnavn.price.value = tal*0.8; // gange med (1-25/125)
}
</SCRIPT>


Med dette:


<SCRIPT LANGUAGE="javascript">
function addmoms(tal) {
var str = tal.toString();
str = bytKommaPunktum(str)
if (parseInt(str)!=NaN)
  document.fnavn.price2.value = bytKommaPunktum(round_decimals(str*1.25,2));
}

function removemoms(tal) {
var str = tal.toString();
str = bytKommaPunktum(str)
if (parseInt(str)!=NaN)
  document.fnavn.price.value = bytKommaPunktum(round_decimals(str*0.8,2)); // gange med (1-25/125)
}

function bytKommaPunktum(str) {
str = str.replace('.', 'A') ;
str = str.replace(',', '.') ;
str = str.replace('A', ',') ;
return str;
}

function round_decimals(original_number, decimals) {
    var result1 = original_number * Math.pow(10, decimals)
    var result2 = Math.round(result1)
    var result3 = result2 / Math.pow(10, decimals)
    return pad_with_zeros(result3, decimals)
}

function pad_with_zeros(rounded_value, decimal_places) {
    var value_string = rounded_value.toString()
    var decimal_location = value_string.indexOf(".")
    if (decimal_location == -1) {
        decimal_part_length = 0
        value_string += decimal_places > 0 ? "." : ""
    } else {
        decimal_part_length = value_string.length - decimal_location - 1
    }
    var pad_total = decimal_places - decimal_part_length
    if (pad_total > 0) {
        for (var counter = 1; counter <= pad_total; counter++)
            value_string += "0"
        }
    return value_string
}
</SCRIPT>
Avatar billede ibka Novice
19. august 2004 - 10:18 #21
eagleeye det virker perfekt, har et par andre ting som skal tilrettes, må nok hellere oprette dem som freelance job. Hvis det er noget du er interesseret i må du gerne sende en mail på sten(g)tdcadsl.dk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester