Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> obliczanie ceny z vatem i ilością towaru
!*!
post 21.06.2010, 07:51:48
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Starałem się napisać samemu funkcję która obliczy cenę brutto z podanej ceny netto, vatu i ilości sztuk:

[JAVASCRIPT] pobierz, plaintext
  1. function obliczznetto(e) {
  2.  
  3. //pobranie po id ilosci sztuk
  4. var ilosc = document.getElementById('ilosc'+e).value;
  5. //sprawdzenie czy ilosc to liczba oraz musi byc minimum ustawiona na 1
  6. if (isNaN(ilosc) || (ilosc == 0)) {document.getElementById('ilosc'+e).value = '1'}
  7.  
  8. //pobranie po id pola netto
  9. var netto = document.getElementById('netto'+e).value;
  10.  
  11. //pobranie po id pola vat
  12. var vat = document.getElementById('vat'+e).value;
  13.  
  14. //zamiana przecinka na kropkę
  15. var cena = netto.replace(',', '.')
  16.  
  17. //w razie problemów (nie jest liczbą lub mniejsze od 0) skasowanie zawartości i ustawienie kursora w odpowiednim polu
  18. if (isNaN(cena) || (cena < 0)) {
  19. document.getElementById('netto'+e).value = ''
  20. alert('wpisz cenę netto')
  21. document.getElementById('netto'+e).focus()
  22. }
  23. else {
  24. cena=cena * ilosc + vat;
  25.  
  26. document.getElementById('brutto'+e).value = cena;
  27. }
  28.  
  29. /*alert(cena*ilosc)*/
  30. }
[JAVASCRIPT] pobierz, plaintext


  1. <form name="form" id="form" action="" method="post">
  2. Ilosc tego szajsu: <input type="text" id="ilosc1" name="ilosc1" onkeyup="obliczznetto('1')" value="1"/><br />
  3.  
  4. Cena netto: <input type="text" id="netto1" name="netto1" onkeyup="obliczznetto('1')" value=""/><br />
  5.  
  6. Stawka VAT: <select id="vat1" name="vat1" size="0" ><option value="22">22%</option><option value="7">7%</option><option value="3">3%</option></select><br />
  7.  
  8. Kwota vat: <input type="text" id="kwotavat1" name="kwotavat1" value="" /><br />
  9.  
  10. Cena brutto: <input type="text" id="brutto1" name="brutto1" value="" readonly="readonly" />
  11. </form>


Jednak nie wiem, jak uzyskać cenę brutto z groszami, dwa miejsca po przecinku... na forum znalazłem taki kod:

[JAVASCRIPT] pobierz, plaintext
  1. cena = new String(Math.round(cena * 100 * (1 + vat)))
  2. var dlugosc = cena.length
  3.  
  4. switch (dlugosc) {
  5. case 1:
  6. cena = '0,0' + cena
  7. break
  8. case 2:
  9. cena = '0,' + cena
  10. break
  11. default:
  12. cena = cena.substring(0, dlugosc - 2) + ',' + cena.substring(dlugosc - 2)
  13. }
[JAVASCRIPT] pobierz, plaintext


Jednak po jego zastosowaniu cena jest nieprawidłowa.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
skowron-line
post 21.06.2010, 08:18:03
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


toFixed(2) wstawi Ci 2 miejsca po przecinku.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
!*!
post 21.06.2010, 09:07:24
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Dzięki za naprowadzenie, zrobiłem coś takiego:

[JAVASCRIPT] pobierz, plaintext
  1. function obliczznetto(e) {
  2.  
  3. //pobranie po id ilosci sztuk
  4. var ilosc = document.getElementById('ilosc'+e).value;
  5. //sprawdzenie czy ilosc to liczba oraz musi byc minimum ustawiona na 1
  6. if (isNaN(ilosc) || (ilosc == 0)) {document.getElementById('ilosc'+e).value = '1'}
  7.  
  8. //pobranie po id pola netto
  9. var netto = document.getElementById('netto'+e).value;
  10.  
  11. //pobranie po id pola vat
  12. var vat = document.getElementById('vat'+e).value;
  13.  
  14. if(vat == 0.22) {var vat = 0.22}
  15. if(vat == 0.07) {var vat = 0.07}
  16. if(vat == 0.03) {var vat = 0.03}
  17.  
  18. //zamiana przecinka na kropkę
  19. var cena = netto.replace(',', '.')
  20.  
  21. //w razie problemów (nie jest liczbą lub mniejsze od 0) skasowanie zawartości i ustawienie kursora w odpowiednim polu
  22. if (isNaN(cena) || (cena < 0)) {
  23. document.getElementById('netto'+e).value = ''
  24. alert('wpisz cenę netto')
  25. document.getElementById('netto'+e).focus()
  26. }
  27. else {
  28. dodajilosc = cena * ilosc;
  29. dodajvat = dodajilosc * (1+ vat)
  30. cenabrutto = new Number(dodajvat);
  31. var cenabrutto = cenabrutto.toFixed(2)
  32.  
  33.  
  34.  
  35. document.getElementById('brutto'+e).value = cenabrutto;
  36. }
  37.  
  38. /*alert(cena*ilosc)*/
  39. }
[JAVASCRIPT] pobierz, plaintext


I działa bez problemu, jednak nie rozumiem dlaczego w "dodajvat" nie łapie wartości inputa i trzeba użyć instrukcji warunkowych. Natomiast wpisanie ręcznie (1+0.22) działa ... I jak teraz z tego obliczyć kwotę vat?

Ten post edytował !*! 21.06.2010, 09:14:26


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
skowron-line
post 21.06.2010, 09:23:55
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Z inputa zawsze idą stringi a do działań matematycznych używa się float i int.
parseFloat() i parseInt() będą tu pomocne.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.06.2025 - 14:46