Voilà j'utilise pour la première fois le javascript dans une de mes applications, pensant que c'est une bonne solution pour ce que je souhaite faire. En effet, le but de l'opération est d'afficher un article choisi par l'utilisateur avec le PU, le TTC, une quantité par défaut de 1 et le total. l'utilisateur doit pouvoir modifier la quantité, le PUHT et le PU TTC s'il le souhaite. Mon problème concerne certaines données qui ne s'actualisent pas en temps réel, et d'autres oui (je ne sais pas si je suis très clair là
Le code pour comprendre un peu mieux :
<script language="javascript"><!--
var tva;
function doRound(x, places) {
return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);
}
function getTaxRate() {
var tax_rates = new Array();
tax_rates["2"] = 19.6;
return tax_rates["2"];
}
function updateGross(tva) {
var grossValue = document.forms["insert_product"].products_price.value;
if (tva > 0) {
grossValue = grossValue * ((tva / 100) + 1);
}
document.forms["insert_product"].products_price_gross.value = doRound(grossValue, 2);
}
function updateNet(tva) {
var netValue = document.forms["insert_product"].products_price_gross.value;
if (tva > 0) {
netValue = netValue / ((tva / 100) + 1);
}
document.forms["insert_product"].products_price.value = doRound(netValue, 2);
}
function updateTotal() {
var quantityValue = document.forms["insert_product"].quantite.value;
var netValue = document.forms["insert_product"].products_price_gross.value;
var totalValue = netValue * quantityValue;
document.forms["insert_product"].total_ttc.value = doRound(totalValue, 2);
}
//--></script>
<?php
if(isset($_POST['ok_new_article']))
{
$product_num = isset($_POST['product_num'])?trim($_POST['product_num']):"";
$sql_list_article = "SELECT * FROM " . $tblpref . "article WHERE num = " . $product_num;
$result_list_article = mysql_query($sql_list_article) or die('Erreur SQL !<br>'.$sql_list_article.'<br>'.mysql_error());
while ( $data = mysql_fetch_array( $result_list_article))
{
$ref_new_product = $data['ref'];
$article_new_product = $data['article'];
$taux_tva_new_product = $data['taux_tva'];
$prix_ht_new_product = $data['prix_htva'];
// affichage du formulaire pour modifier les prix et remises du produit à ajouter au devis
?>
<table class="formulaire">
<form name="insert_product" method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
<tr>
<td class="form_libelle">ref</td>
<td class="form_libelle">libelle</td>
<td class="form_libelle">Qté</td>
<td class="form_libelle">Rem. (%)</td>
<td class="form_libelle">PU HT</td>
<td class="form_libelle">PU TTC</td>
<td class="form_libelle">Total TTC</td>
</tr>
<tr>
<td class="form_field"><?php echo $ref_new_product; ?></td>
<td class="form_field"><?php echo $article_new_product; ?></td>
<td class="form_field"><input type="text" value="1" name="quantite" size="3" onKeyUp="updateTotal(<?php echo $taux_tva_new_product; ?>)"></td>
<td class="form_field"><input type="text" name="remise" size="3"></td>
<td class="form_field"><input type="text" value="<?php echo $prix_ht_new_product; ?>" name="products_price" onKeyUp="updateGross(<?php echo $taux_tva_new_product; ?>)"></td>
<td class="form_field"><input type="text" name="products_price_gross" onKeyUp="updateNet()"></td>
<td class="form_field"><input type="text" name="total_ttc"></td>
</tr>
<tr>
<td class="submit" colspan="2"><input type="submit" name="ok_add_article" value="Ok"></td>
</tr>
</table></form>
<?php
}
}
}
Si je modifie mon PU TTC, le HT se met bien à jour, mais si je modifie ma quantité, le PU TTC ne s'actualise pas automatiquement.De même, et là c'est plus gênant, quand j'affiche la page, mon PU HT s'affiche bien (puisqu'il vient de la base de donnée) mais j'aimerais que le PU TTC soit affiché aussi par défaut ainsi que le Total TTC. Bref, il serait bien que tous les champs soient déjà remplis (à l'exception de remise), tous les champs doivent donc être calculés, mis à part le PU HT qui lui est déjà stocké quelque part.
Si vous avez besoin d'explications, surtout n'hésitez pas !
Merci à vous d'avance pour vos conseils.
Bonne soirée,
JM