Ciao, ragazzi. Non so se il titolo è chiaro (non credo ;-))
Mi spiego. In una pagina in cui permetto al cliente di modificare gli ordini ricevuti, devo aggiornare non solo i tota con e senza IVA realtivi al singolo prodotto, ma anche i totali dell'ordine nel suo complesso. Il primo problema è risolto con una chiamata Ajax.Updater (uso Prototype). Per il problema del totale dell'ordine, nella chiamata all'Ajax Updater ho inserito una chiamata ad un'altra funzione che recupera i nuovi valori dei prezzi e li somma. Se il cliente ha un ordine di 2 calzini da 10.00 euro e 1 paio di guanti da 20,00 euro e l'ordine diventa di 4 calzini, la funziona recupera il nuovo valore del totale senza iva (cioè 40,00) e lo somma al valore dei guanti (20,00 euro), dandomi così il totale complessivo di euro 60,00.
Solo che il tutto funziona solo se nella funzione di aggiornamento del totaledell'ordine inserisco un alert che in sostanzxa dà il tempo di aggiornare il valore del prezzo.
Posto il codice. Con questo script aggiorno il valore del totale dei guanti:
Con il codice seguente aggiorno il totale ordine senza iva:Codice PHP:function updateTotSI(numrow, newvalue, multiplier){
var updater = new Ajax.Updater( 'totSI'+numrow, 'scripts/sls_priceFinder.php?op=edit&arg=totSI&multiplying='+newvalue+
'&multiplier='+multiplier);
updateTotOrd();
}
Come vedete il primo alert non è commentato , il secondo sì. se inverto la cosa commentando il primo alert e attivando il secondo, il risultato è che lo script non funziona e il valore restituito è uguale a quello di partenza. In pratica, lo script non vede il nuovo valore dell'ordine dei calzini ma quello vecchio e quindi mi restituisce il valore totale dell'ordine senza modifiche.Codice PHP:function updateTotOrd(){
alert('function updateOrd(NEW) called');
var cols = $$('td.totSI');
var sumSI=0.00;
cols.each(function(element){
var newvalue = element.innerHTML;
sumSI = parseFloat(sumSI) + parseFloat(newvalue);
})
// alert(sumSI.toFixed(2));
document.getElementById('totOrd').innerHTML = sumSI.toFixed(2);
}
Come posso fare?
Vi prego: non so quante volte ho postato sui vari forum e non ho mai ricevuto uno straccio di risposta (non prima che io mi stufassi di controllare, almeno :-)). Aiutoooo!!!
Grazie!

Ciao, ragazzi. Non so se il titolo è chiaro (non credo ;-))
Rispondi quotando