none
CRM 2011 - Desativar campo Desconto RRS feed

  • Pergunta

  • Boa tarde Pessoal,

    Estou realizando um trabalho de alçada de descontos (CRM 2011 OnPremiss - Rollup 18), no qual preciso desativar o campo "Desconto Manual" do Produto da Cotação.

    Alguns produtos não são permitidos aplicar descontos, dessa forma, personalizei a entidade Produtos adicionando um campo chamado "Permitir Desconto" Sim ou Não.

    Quando o usuário acessar o produto da Cotação e adicionar um produto que o campo Permitir Desconto for igual a NÃO, o campo "Desconto Manual" do Produto da Cotação deve ser atualizado para valor zero e ficar inativo, impedindo que o usuário possa atualizar, adicionar um valor...

    Podem me dar um help?

    Desde já agradeço a ajuda!!!

    Abs.


    Marcelo Mekaru


    • Editado Mekaru terça-feira, 10 de outubro de 2017 15:43
    sexta-feira, 6 de outubro de 2017 16:32

Todas as Respostas

  • function PermitirDesconto_onload() {
    
        //alert('carregou');
    
        var CRM_FORM_TYPE_CREATE = 1;
        var CRM_FORM_TYPE_UPDATE = 2;
        var CRM_FORM_TYPE_READONLY = 3;
        var CRM_FORM_TYPE_DISABLED = 4;
    
        if (crmForm.FormType == CRM_FORM_TYPE_CREATE) {
            PermitirDesconto();
            //crmForm.all.manualdiscountamount.value = "Concedido."
            //crmForm.all.manualdiscountamount.attachEvent("onkeydown", SomenteNumero);
            //DesabilitaSalvar(true);
        }
        else {
    
            var lookupItem = crmForm.all.productid.DataValue == null;
    
                  alert(lookupItem);
    
            if (lookupItem != null) {
    
                var produtoID = lookupItem[0].id;
    
                       alert(PermitirDesconto(produtoID));
    
                if (PermitirDescontoConsulta(produtoID) == 1) {
                    crmForm.SetFieldReqLevel('manualdiscountamount', 0);
    
                    crmForm.all.manualdiscountamount.value = "";
                    crmForm.all.manualdiscountamount.Disabled = true;
                    crmForm.all.manualdiscountamount.ForceSubmit = true;
                }
                else {
                    crmForm.all.manualdiscountamount.attachEvent("onkeydown", SomenteNumero);
                    crmForm.SetFieldReqLevel('manualdiscountamount', 1);
                }
            }
        }
    
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    
        function PermitirDescontoConsulta(produtoID) {
    
            var retorno = 0;
    
            var fetchXml = '<fetch count="1" version="1.0" output-format="xml-platform" mapping="logical">';
            fetchXml += '<entity name="product">';
            fetchXml += '<attribute name="new_permitir_desconto" />';
            fetchXml += '<filter>';
            fetchXml += '<condition attribute="productid" operator="eq" value="' + produtoID + '" />';
            fetchXml += '</filter>';
            fetchXml += '</entity>';
            fetchXml += '</fetch>';
    
            var Xml = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
            Xml += GenerateAuthenticationHeader()
            Xml += "<soap:Body>";
            Xml += "<Fetch xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">";
            Xml += "<fetchXml>";
            Xml += _HtmlEncode(fetchXml);
            Xml += "</fetchXml>";
            Xml += "</Fetch>";
            Xml += "</soap:Body>";
            Xml += "</soap:Envelope>";
    
            var XmlHttp = CreateXmlHttp();
            XmlHttp.open("POST", '/MSCRMservices/2007/crmservice.asmx', false);
            XmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
            XmlHttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
            XmlHttp.send(Xml);
    
            var resultDoc = loadXmlDocument(XmlHttp.responseXML.text);
    
            var resultnames = resultDoc.selectNodes("//new_permitir_desconto");
    
            if (resultnames.length == 1) {
                retorno = resultnames[0].text;
            }
            return retorno;
        }
    }

    Pessoal, cheguei ao código em questão, porém sem sucesso.

    Obrigado pela ajuda!


    Marcelo Mekaru

    terça-feira, 24 de outubro de 2017 16:30
  • Boas Marcelo,

    Não testei o código acima mas está a fazer o que é suposto, através do FetchXML e do SOAP request, consegues obter o valor do new_permitir_desconto? O que vejo é que estás a usar a API de Javascript antiga e que no rollup 18 do CRM 2011 já não é suportado. Tens que usar o Xrm.Page:

    Xrm.Page.ui.getFormType();
    
    var value = Xrm.Page.getAttribute("name").getValue();
    Xrm.Page.getAttribute("name").setValue("new name");
    
    Xrm.Page.getAttribute("name").setRequiredLevel("required");
    Xrm.Page.getControl("name").setDisabled(true);
    Xrm.Page.getAttribute("name").setSubmitMode("always");
    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Dynamics Crm Specialist 4.0\2011\2013\2015\2016 and CRM Online

    domingo, 29 de outubro de 2017 11:45