Adaugare TVA
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
adrian_ady
- Mesaje: 80
Adaugare TVA
Salut,
cum se adauga functia de calcul TVA la codul urmator?
Cod: Selectaţi tot
function update_total() {
var total = 0;
$('.price').each(function(i){
price = $(this).html().replace(" Lei","");
if (!isNaN(price)) total += Number(price);
});
total = roundNumber(total,2);
$('#subtotal').html(total+" Lei");
$('#total').html(total+" Lei");
update_balance();
}
function update_balance() {
var due = $("#total").html().replace(" Lei","") - $("#paid").val().replace(" Lei","");
due = roundNumber(due,2);
$('.due').html(due+" Lei");
}
function update_price() {
var row = $(this).parents('.item-row');
var price = row.find('.cost').val().replace(" Lei","") * row.find('.qty').val();
price = roundNumber(price,2);
isNaN(price) ? row.find('.price').html("N/A") : row.find('.price').html(price+" Lei");
update_total();
}
function bind() {
$(".cost").blur(update_price);
$(".qty").blur(update_price);
}
MarPlo
Mesaje: 4343
Salut
Ca sa obtii valoarea TVA, se inmulteste pretul sau total cu procentul de TVA. De exemplu, 24% inseamna sa inmultesti cu 0.24.
Pe cod e asa:
Cod: Selectaţi tot
var tva = 0.24; // TVA 24%
function update_total() {
var total = 0;
$('.price').each(function(i){
price = $(this).html().replace(" Lei","");
if (!isNaN(price)) total += Number(price);
});
total *= tva; // se aplica TVA-ul
total = roundNumber(total,2);
$('#subtotal').html(total+" Lei");
$('#total').html(total+" Lei");
update_balance();
}
adrian_ady
Mesaje: 80
Am facut schimbarile, rezultatul nu e chiar ok, am facut doua imagini ca sa vezi. TVA-ul il iau din db->setari.
Cod: Selectaţi tot
<table class="table_factura" id="items">
<tr>
<th>Produs</th>
<th>Descriere</th>
<th>Pret unitar</th>
<th>Cantitate</th>
<th>Total rand</th>
</tr>
<tr class="item-row">
<td class="item-name"><div class="delete-wpr"><textarea class="textarea_factura" placeholder=" Denumire produs "></textarea></div></td>
<td class="description"><textarea class="textarea_factura" placeholder=" Descriere produs "></textarea></td>
<td><textarea class="textarea_factura cost"></textarea></td>
<td><textarea class="textarea_factura qty"></textarea></td>
<td><span class="price"></span></td>
</tr>
<tr id="hiderow">
<td colspan="5"><a id="addrow" href="javascript:;" title="Add a row"> <i class="fa fa-plus-square-o"></i></a></td>
</tr>
<tr>
<td colspan="2" class="blank"> </td>
<td colspan="2" class="total-line">Subtotal</td>
<td class="total-value"><div id="subtotal"></div></td>
</tr>
<tr>
<td colspan="2" class="blank"> </td>
<td colspan="2" class="total-line">+ TVA <?=$tva?></td>
<td class="total-value"><div id="tva"></div></td>
</tr>
<tr>
<td colspan="2" class="blank"> </td>
<td colspan="2" class="total-line">Total</td>
<td class="total-value"><div id="total"></div></td>
</tr>
<tr>
<td colspan="2" class="blank"> </td>
<td colspan="2" class="total-line">- Avans platit</td>
<td class="total-value"><textarea class="textarea_factura" id="paid"></textarea></td>
</tr>
<tr>
<td colspan="2" class="blank"> </td>
<td colspan="2" class="total-line balance"><b>Total de plata</b></td>
<td class="total-value balance"><div class="due"></div></td>
</tr>
</table>

Codul
Cod: Selectaţi tot
var tva = 0.24; // TVA 24%
function update_total() {
var total = 0;
$('.price').each(function(i){
price = $(this).html().replace(" Lei","");
if (!isNaN(price)) total += Number(price);
});
total *= tva; // se aplica TVA-ul
total = roundNumber(total,2);
$('#subtotal').html(total+" Lei");
$('#total').html(total+" Lei");
$('#tva').html(total+" Lei");
update_balance();
}
function update_subtotal() {
var subtotal = $("#tva").html().replace(" Lei","") + $("#total").html().replace(" Lei","");
subtotal = roundNumber(subtotal,2);
$('.subtotal').html(subtotal+" Lei");
}
function update_balance() {
var due = $("#total").html().replace(" Lei","") - $("#paid").val().replace(" Lei","") + $("#subtotal").html().replace(" Lei","");
due = roundNumber(due,2);
$('.due').html(due+" Lei");
}
function update_price() {
var row = $(this).parents('.item-row');
var price = row.find('.cost').val().replace(" Lei","") * row.find('.qty').val();
price = roundNumber(price,2);
isNaN(price) ? row.find('.price').html("N/A") : row.find('.price').html(price+" Lei");
update_total();
}
function bind() {
$(".cost").blur(update_price);
$(".qty").blur(update_price);
$(".tva").blur(update_price);
}
MarPlo
Mesaje: 4343
Nu stiu exact unde trebuie aplicat tva-ul in codul tau. Eu doar iti arat cum obtii si incluzi tva-ul in pretul total, in rest aplica-l in codul tau unde stii ca trebuie adaugat.
Deci, in loc de aceste linii de cod:
Cod: Selectaţi tot
total *= tva; // se aplica TVA-ul
total = roundNumber(total,2);
$('#subtotal').html(total+" Lei");
$('#total').html(total+" Lei");
$('#tva').html(total+" Lei");
Foloseste pe acestea:
Cod: Selectaţi tot
var tva_val = total * tva; // obtine valoarea tva-ului
$('#tva').html(tva_val +" Lei"); // adauga tva in html
$('#subtotal').html(total+" Lei"); // in html totalul fara tva
total = roundNumber(total + tva_val, 2); // adauga TVA la total, si se rotunjeste numarul
$('#total').html(total+" Lei"); // in html totalul cu tva inclus
adrian_ady
Mesaje: 80
Multumesc, este foaaaaaarte bine!
Ar mai fi ceva care credeam ca pot sa rezolv insa... iata ca nu. Exista mici neconcordante cu zecimalele, arat in poza.

MarPlo
Mesaje: 4343
Aplica roundNumber() ca sa rotunjesti numarul la cate zecimale vrei.
Adica:
adrian_ady
Mesaje: 80
Ies toate in afara de Total: total = roundNumber(total + tva_val, 2);
Semnul plus adauga una langa alta cele doua valori, nu le aduna. Ex: 1+3 = 13 in loc de 1+3 = 4
Cod: Selectaţi tot
function update_total() {
var total = 0;
$('.price').each(function(i){
price = $(this).html().replace(" Lei","");
if (!isNaN(price)) total += Number(price);
});
var tva_val = total * tva; // obtine valoarea tva-ului
tva_val = roundNumber(tva_val,2);
$('#tva').html(tva_val+" Lei"); // adauga tva in html
var subtotal = total;
subtotal = roundNumber(subtotal,2);
$('#subtotal').html(subtotal+" Lei"); // in html totalul fara tva
total = roundNumber(total + tva_val, 2);
$('#total').html(total+" Lei"); // in html totalul cu tva inclus
update_balance();
}
MarPlo
Mesaje: 4343
Posibil ca unul din acele numere e preluat ca sir, de aceea semnul "+" are rol de concatenare (unire).
Asa ar trebui sa mearga:
adrian_ady
Mesaje: 80
Merge brici. Cum ne(ma) mai suporti pe aici asa fraieri?
