Inquiridor
CRM 2011 - Desativar campo Desconto

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
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
-
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
- Sugerido como Resposta Azevedo PedroMVP domingo, 29 de outubro de 2017 11:46