Error en codigo
-
Wednesday, June 27, 2012 9:14 PM
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.
All Replies
-
Thursday, June 28, 2012 10:33 AMModerator
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
- Proposed As Answer by Demian Adolfo RaschkovanMVP, Moderator Thursday, June 28, 2012 10:33 AM
-
Thursday, June 28, 2012 3:49 PMHola 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.
-
Friday, June 29, 2012 6:45 AM
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/
- Marked As Answer by Cesar1027 Wednesday, July 11, 2012 5:58 PM
-
Sunday, July 01, 2012 9:45 AMModerator
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
- Proposed As Answer by Demian Adolfo RaschkovanMVP, Moderator Sunday, July 01, 2012 9:45 AM
- Marked As Answer by Cesar1027 Wednesday, July 11, 2012 5:57 PM
-
Wednesday, July 11, 2012 5:57 PM
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