|
|
|
@ -44,6 +44,8 @@ with this program; if not, write to the Free Software Foundation, Inc., |
|
|
|
{% blocktrans %}Current balance: {{ balance }} €{% endblocktrans %} |
|
|
|
</p> |
|
|
|
{% endif %} |
|
|
|
{% bootstrap_form_errors factureform %} |
|
|
|
{% bootstrap_form_errors discount_form %} |
|
|
|
|
|
|
|
<form class="form" method="post"> |
|
|
|
{% csrf_token %} |
|
|
|
@ -68,8 +70,12 @@ with this program; if not, write to the Free Software Foundation, Inc., |
|
|
|
{% endfor %} |
|
|
|
</div> |
|
|
|
<input class="btn btn-primary btn-block" role="button" value="{% trans "Add an extra article"%}" id="add_one"> |
|
|
|
<h3>{% trans "Discount" %}</h3> |
|
|
|
{% if discount_form %} |
|
|
|
{% bootstrap_form discount_form %} |
|
|
|
{% endif %} |
|
|
|
<p> |
|
|
|
{% blocktrans %}Total price: <span id="total_price">0,00</span> €{% endblocktrans %} |
|
|
|
{% blocktrans %}Total price: <span id="total_price">0,00</span> €{% endblocktrans %} |
|
|
|
</p> |
|
|
|
{% endif %} |
|
|
|
{% bootstrap_button action_name button_type='submit' icon='ok' button_class='btn-success' %} |
|
|
|
@ -78,105 +84,117 @@ with this program; if not, write to the Free Software Foundation, Inc., |
|
|
|
{% if articlesformset or payment_method%} |
|
|
|
<script type="text/javascript"> |
|
|
|
{% if articlesformset %} |
|
|
|
var prices = {}; |
|
|
|
{% for article in articlelist %} |
|
|
|
prices[{{ article.id|escapejs }}] = {{ article.prix }}; |
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
var template = `Article : |
|
|
|
{% bootstrap_form articlesformset.empty_form label_class='sr-only' %} |
|
|
|
|
|
|
|
<button class="btn btn-danger btn-sm" |
|
|
|
id="id_form-__prefix__-article-remove" type="button"> |
|
|
|
<span class="fa fa-times"></span> |
|
|
|
</button>` |
|
|
|
|
|
|
|
function add_article(){ |
|
|
|
// Index start at 0 => new_index = number of items |
|
|
|
var new_index = |
|
|
|
document.getElementsByClassName('product_to_sell').length; |
|
|
|
document.getElementById('id_form-TOTAL_FORMS').value ++; |
|
|
|
var new_article = document.createElement('div'); |
|
|
|
new_article.className = 'product_to_sell form-inline'; |
|
|
|
new_article.innerHTML = template.replace(/__prefix__/g, new_index); |
|
|
|
document.getElementById('form_set').appendChild(new_article); |
|
|
|
add_listenner_for_id(new_index); |
|
|
|
} |
|
|
|
|
|
|
|
function update_price(){ |
|
|
|
var price = 0; |
|
|
|
var product_count = |
|
|
|
document.getElementsByClassName('product_to_sell').length; |
|
|
|
var article, article_price, quantity; |
|
|
|
for (i = 0; i < product_count; ++i){ |
|
|
|
article = document.getElementById( |
|
|
|
var prices = {}; |
|
|
|
{% for article in articlelist %} |
|
|
|
prices[{{ article.id|escapejs }}] = {{ article.prix }}; |
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
var template = `Article : |
|
|
|
{% bootstrap_form articlesformset.empty_form label_class='sr-only' %} |
|
|
|
|
|
|
|
<button class="btn btn-danger btn-sm" |
|
|
|
id="id_form-__prefix__-article-remove" type="button"> |
|
|
|
<span class="fa fa-times"></span> |
|
|
|
</button>` |
|
|
|
|
|
|
|
function add_article(){ |
|
|
|
// Index start at 0 => new_index = number of items |
|
|
|
var new_index = |
|
|
|
document.getElementsByClassName('product_to_sell').length; |
|
|
|
document.getElementById('id_form-TOTAL_FORMS').value ++; |
|
|
|
var new_article = document.createElement('div'); |
|
|
|
new_article.className = 'product_to_sell form-inline'; |
|
|
|
new_article.innerHTML = template.replace(/__prefix__/g, new_index); |
|
|
|
document.getElementById('form_set').appendChild(new_article); |
|
|
|
add_listenner_for_id(new_index); |
|
|
|
} |
|
|
|
|
|
|
|
function update_price(){ |
|
|
|
var price = 0; |
|
|
|
var product_count = |
|
|
|
document.getElementsByClassName('product_to_sell').length; |
|
|
|
var article, article_price, quantity; |
|
|
|
for (i = 0; i < product_count; ++i){ |
|
|
|
article = document.getElementById( |
|
|
|
'id_form-' + i.toString() + '-article').value; |
|
|
|
if (article == '') { |
|
|
|
continue; |
|
|
|
} |
|
|
|
article_price = prices[article]; |
|
|
|
quantity = document.getElementById( |
|
|
|
'id_form-' + i.toString() + '-quantity').value; |
|
|
|
price += article_price * quantity; |
|
|
|
if (article == '') { |
|
|
|
continue; |
|
|
|
} |
|
|
|
document.getElementById('total_price').innerHTML = |
|
|
|
price.toFixed(2).toString().replace('.', ','); |
|
|
|
article_price = prices[article]; |
|
|
|
quantity = document.getElementById( |
|
|
|
'id_form-' + i.toString() + '-quantity').value; |
|
|
|
price += article_price * quantity; |
|
|
|
} |
|
|
|
|
|
|
|
function add_listenner_for_id(i){ |
|
|
|
document.getElementById('id_form-' + i.toString() + '-article') |
|
|
|
.addEventListener("change", update_price, true); |
|
|
|
document.getElementById('id_form-' + i.toString() + '-article') |
|
|
|
.addEventListener("onkeypress", update_price, true); |
|
|
|
document.getElementById('id_form-' + i.toString() + '-quantity') |
|
|
|
.addEventListener("change", update_price, true); |
|
|
|
document.getElementById('id_form-' + i.toString() + '-article-remove') |
|
|
|
.addEventListener("click", function(event) { |
|
|
|
var article = event.target.parentNode; |
|
|
|
article.parentNode.removeChild(article); |
|
|
|
document.getElementById('id_form-TOTAL_FORMS').value --; |
|
|
|
update_price(); |
|
|
|
}) |
|
|
|
{% if discount_form %} |
|
|
|
var relative_discount = document.getElementById('id_is_relative').checked; |
|
|
|
var discount = document.getElementById('id_discount').value; |
|
|
|
if(relative_discount) { |
|
|
|
discount = discount/100 * price; |
|
|
|
} |
|
|
|
|
|
|
|
// Add events manager when DOM is fully loaded |
|
|
|
document.addEventListener("DOMContentLoaded", function() { |
|
|
|
document.getElementById("add_one") |
|
|
|
.addEventListener("click", add_article, true); |
|
|
|
var product_count = |
|
|
|
document.getElementsByClassName('product_to_sell').length; |
|
|
|
for (i = 0; i < product_count; ++i){ |
|
|
|
add_listenner_for_id(i); |
|
|
|
} |
|
|
|
update_price(); |
|
|
|
}); |
|
|
|
price -= discount; |
|
|
|
{% endif %} |
|
|
|
document.getElementById('total_price').innerHTML = |
|
|
|
price.toFixed(2).toString().replace('.', ','); |
|
|
|
} |
|
|
|
|
|
|
|
function add_listenner_for_id(i){ |
|
|
|
document.getElementById('id_form-' + i.toString() + '-article') |
|
|
|
.addEventListener("change", update_price, true); |
|
|
|
document.getElementById('id_form-' + i.toString() + '-article') |
|
|
|
.addEventListener("onkeypress", update_price, true); |
|
|
|
document.getElementById('id_form-' + i.toString() + '-quantity') |
|
|
|
.addEventListener("change", update_price, true); |
|
|
|
document.getElementById('id_form-' + i.toString() + '-article-remove') |
|
|
|
.addEventListener("click", function(event) { |
|
|
|
var article = event.target.parentNode; |
|
|
|
article.parentNode.removeChild(article); |
|
|
|
document.getElementById('id_form-TOTAL_FORMS').value --; |
|
|
|
update_price(); |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
// Add events manager when DOM is fully loaded |
|
|
|
document.addEventListener("DOMContentLoaded", function() { |
|
|
|
document.getElementById("add_one") |
|
|
|
.addEventListener("click", add_article, true); |
|
|
|
var product_count = |
|
|
|
document.getElementsByClassName('product_to_sell').length; |
|
|
|
for (i = 0; i < product_count; ++i){ |
|
|
|
add_listenner_for_id(i); |
|
|
|
} |
|
|
|
document.getElementById('id_discount') |
|
|
|
.addEventListener('change', update_price, true); |
|
|
|
document.getElementById('id_is_relative') |
|
|
|
.addEventListener('click', update_price, true); |
|
|
|
update_price(); |
|
|
|
}); |
|
|
|
{% endif %} |
|
|
|
{% if payment_method.templates %} |
|
|
|
var TEMPLATES = [ |
|
|
|
"", |
|
|
|
{% for t in payment_method.templates %} |
|
|
|
{% if t %} |
|
|
|
`{% bootstrap_form t %}`, |
|
|
|
{% else %} |
|
|
|
"", |
|
|
|
{% endif %} |
|
|
|
{% endfor %} |
|
|
|
]; |
|
|
|
function update_payment_method_form(){ |
|
|
|
var method = document.getElementById('paymentMethodSelect').value; |
|
|
|
if(method==""){ |
|
|
|
method=0; |
|
|
|
} |
|
|
|
else{ |
|
|
|
method = Number(method); |
|
|
|
method += 1; |
|
|
|
} |
|
|
|
console.log(method); |
|
|
|
var html = TEMPLATES[method]; |
|
|
|
|
|
|
|
document.getElementById('paymentMethod').innerHTML = html; |
|
|
|
var TEMPLATES = [ |
|
|
|
"", |
|
|
|
{% for t in payment_method.templates %} |
|
|
|
{% if t %} |
|
|
|
`{% bootstrap_form t %}`, |
|
|
|
{% else %} |
|
|
|
"", |
|
|
|
{% endif %} |
|
|
|
{% endfor %} |
|
|
|
]; |
|
|
|
function update_payment_method_form(){ |
|
|
|
var method = document.getElementById('paymentMethodSelect').value; |
|
|
|
if(method==""){ |
|
|
|
method=0; |
|
|
|
} |
|
|
|
document.getElementById("paymentMethodSelect").addEventListener("change", update_payment_method_form); |
|
|
|
else{ |
|
|
|
method = Number(method); |
|
|
|
method += 1; |
|
|
|
} |
|
|
|
console.log(method); |
|
|
|
var html = TEMPLATES[method]; |
|
|
|
|
|
|
|
document.getElementById('paymentMethod').innerHTML = html; |
|
|
|
} |
|
|
|
document.getElementById("paymentMethodSelect").addEventListener("change", update_payment_method_form); |
|
|
|
{% endif %} |
|
|
|
</script> |
|
|
|
{% endif %} |
|
|
|
|