none
Error en codigo RRS feed

  • Pregunta

  • 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);
    }
    }//principal

     Cualquier ayuda se los agradezco.

    miércoles, 27 de junio de 2012 21:14

Respuestas

  • 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/

    • Marcado como respuesta Cesar1027 miércoles, 11 de julio de 2012 17:58
    viernes, 29 de junio de 2012 6: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

    domingo, 1 de julio de 2012 9:45
    Moderador

Todas las respuestas

  • 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

    jueves, 28 de junio de 2012 10:33
    Moderador
  • Hola 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. 
    jueves, 28 de junio de 2012 15:49
  • 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/

    • Marcado como respuesta Cesar1027 miércoles, 11 de julio de 2012 17:58
    viernes, 29 de junio de 2012 6: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

    domingo, 1 de julio de 2012 9:45
    Moderador
  • 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

    miércoles, 11 de julio de 2012 17:57