Error en codigo
-
2012年6月27日 21:14
Buenas tardes colegas, estoy incluyendo codigo para calcular el impuesto de ventas en una cotizacion, tengo tres opciones de impuesto: exento, 13% y 14%, estas opciones las inclui en un campo tipo "combo box" cuando el usuario selecciona el tipo de impuesto, este realiza dicha funcion y me despliega en un campo tipo divisa el resultado.
El problema se me presenta cuando selecciono la opcion para aplicar dicho impuesto, me despliega el siguiente mensaje:
seguido le doy a la opcion "Recalcular" esta me refresca la pagina y me da los montos correctamente calculados por el codigo incluido, lo que necesito es ayuda para quitar este mensaje y me despliegue los resultados en el momento de seleccionar el impuesto a aplicar sin tener que dar click en la opcion "recalcular".
Adjunto el codigo:
function impuesto()
{
var AddressType = Xrm.Page.data.entity.attributes.get("new_tax"); //valor del imp
impuesto = AddressType.getSelectedOption().text;
document.crmForm.all. totalamountlessfreight.Disabled=false;
document.crmForm.all. totaltax.Disabled=false;
var txtimportesinflete = Xrm.Page.getAttribute("totalamountlessfreight").getValue();
if (impuesto=="13 %")
{
var txtresultado = txtimportesinflete * 0.13;
Xrm.Page.getAttribute("new_totaltax").setValue(txtresultado);
}if (impuesto=="14 %")
{
var txtresultado = txtimportesinflete * 0.14;
Xrm.Page.getAttribute("new_totaltax").setValue(txtresultado);
}if (impuesto=="Exento")
{
var txtresultado = txtimportesinflete * 0;
Xrm.Page.getAttribute("new_totaltax").setValue(txtresultado);
}
}//principalCualquier ayuda se los agradezco.
所有回覆
-
2012年6月28日 10:33版主
Hola Cesar1027, el código tiene buena pinta e imagino que en el "Onchange" del campo new_tax, llamas a la funcion "impuesto" no?
lo único que he visto en el código, aunque es posible que haya sido un error en el copy/paste son estas dos lineas:
document.crmForm.all. totalamountlessfreight.Disabled=false;
document.crmForm.all. totaltax.Disabled=false;que despues de ".all" hay un espacio, cuando no deberia haberlo.
Un saludo,
Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com
- 已提議為解答 Demian Adolfo RaschkovanMVP, Moderator 2012年6月28日 10:33
-
2012年6月28日 15:49Hola Demian gracias por la atencion, ya corregi el espacio, pero aun me presenta el mensaje, que hago???? jejejejeje , tambien es correcto la funcion se activa en el evento Onchange del campo new_tax.
-
2012年6月29日 6:45
Hola Cesar,
Yo primero cambiaría el
document.crmForm.all. totalamountlessfreight.Disabled=false;
por
Xrm.Page.ui.controls.get("totalamountlessfreight").setDisabled(false); Xrm.Page.ui.controls.get("totaltax").setDisabled(false);
Luego, para dar con el error más preciso, yo pondría un debugger y me pondría a ver que es lo que hace el código.
http://www.furnemont.eu/2010/06/how-to-series-easily-debug-your-crm-javascript-code-in-ie8/ o simplemente pon un debbugger debajo de function Impuesto.
Saludos
Salu2 Atilin | http://atiliorosas.blogspot.com.es/
- 已標示為解答 Cesar1027 2012年7月11日 17:58
-
2012年7月1日 9:45版主
Hola Cesar, además revisa si en el WebResource donde esta la funcion impuesto() tienes algunas otras funciones, prueba quitar todas y dejar solo esta.
Lo digo porque otra causa del error podría ser que haya algun error de sintaxis en el javascript completo recogido en el WebResource, por ejemplo unas llaves {} o parantesis () no cerrados correctamente, algo así. Estos errores de sintaxis podrían ser la causa de que no encuentre la función.
Prueba estas cosas y nos dices que tal te fue.
suerte!
Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com
- 已提議為解答 Demian Adolfo RaschkovanMVP, Moderator 2012年7月1日 9:45
- 已標示為解答 Cesar1027 2012年7月11日 17:57
-
2012年7月11日 17:57
Gracias Atilio y Demian por la ayuda, muy agradecido, al final tuve que quitar la funcion del evento exchange del campo y ponerlo en el load del formulario solo ahi no me presenta el error, sin embargo voy adjuntar el codigo por si me pueden ayudar a que funcione en el evento exchange del campo "tax", para que el usuario no tenga que dar "recalcular" a la oferta para ver el monto de impuesto, sino visualizarlo en el momento de seleccionarlo en el combo box.
Gracias!
function impuesto_load()
{
var AddressType = Xrm.Page.data.entity.attributes.get("new_tax"); //valor del imp
impuesto = AddressType.getSelectedOption().text;
var id = Xrm.Page.getAttribute("quotenumber").getValue();
if (id==null)
{
document.crmForm.all.new_totaltax.Disabled=false;
//Xrm.Page.getAttribute("totalamountlessfreight").setValue(0);
}
else
{
if (impuesto=="13 %")
{
var txtimportesinflete = Xrm.Page.getAttribute("totalamountlessfreight").getValue();
var txtresultado = txtimportesinflete * 0.13;
Xrm.Page.getAttribute("new_totaltax").setValue(txtresultado);
var txtresultado2 = txtresultado+ txtimportesinflete;
Xrm.Page.getAttribute("new_totalamount").setValue(txtresultado2);
}
else
{
if (impuesto=="14 %")
{
var txtimportesinflete = Xrm.Page.getAttribute("totalamountlessfreight").getValue();
var txtresultado = txtimportesinflete * 0.14;
Xrm.Page.getAttribute("new_totaltax").setValue(txtresultado);
var txtresultado2 = txtresultado+ txtimportesinflete;
Xrm.Page.getAttribute("new_totalamount").setValue(txtresultado2);
}
else
{
if (impuesto=="Exento")
{
var txtimportesinflete = Xrm.Page.getAttribute("totalamountlessfreight").getValue();
var txtresultado = txtimportesinflete * 0;
Xrm.Page.getAttribute("new_totaltax").setValue(txtresultado);
var txtresultado2 = txtresultado+ txtimportesinflete;
Xrm.Page.getAttribute("new_totalamount").setValue(txtresultado2);
}
}//segundo else
}// else principal}//principal
}//principal function