Usuario
Numeración automatica

Pregunta
-
Buenas tardes, nosotros teníamos implementado el siguiente desarrollo para numeracion automatica en oportunidades, pero con la actualización q12 de microsoft, dejo de funcionar, alguien podria ayudarme a actualizarlo, o si conocen alguna otra forma de generar la numeración automática por código?
function ProxNumSec() {
var x;
var v_cant_car_nro;
var v_maxnro_opp;
var v_maxnro_ofe;
var v_proxnro;
var v_proxnro_str;
var Resp;
var xml;
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
var DOM = new ActiveXObject("Msxml2.DOMDocument");
var v_IdRegion;
v_cant_car_nro = 5; // Cantidad de caracteres del número devuelto. Ej: 5 => 00001
// Obtener el último número de oportunidad.
xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<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\">" +
GenerateAuthenticationHeader() +
" <soap:Body>" +
" <RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
" <query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query'" +
" xsi:type='q1:QueryExpression'>" +
" <q1:EntityName>opportunity</q1:EntityName>" +
" <q1:ColumnSet xsi:type='q1:ColumnSet'>" +
" <q1:Attributes>" +
" <q1:Attribute>flow_sequencenumber</q1:Attribute>" +
" </q1:Attributes>" +
" </q1:ColumnSet>" +
" <q1:Distinct>false</q1:Distinct>" +
" </query>" +
" </RetrieveMultiple>" +
" </soap:Body>" +
"</soap:Envelope>";
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
DOM.loadXML(xmlHttpRequest.responseText);
Resp = DOM.getElementsByTagName("q1:flow_sequencenumber");
v_maxnro_opp = 0;
for (x = 0; x < Resp.length; x++) {
if (CDbl(Resp(x).firstChild.nodeValue) > v_maxnro_opp)
v_maxnro_opp = CDbl(Resp(x).firstChild.nodeValue);
}
// Obtener el último número de oferta.
xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<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\">" +
GenerateAuthenticationHeader() +
" <soap:Body>" +
" <RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
" <query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query'" +
" xsi:type='q1:QueryExpression'>" +
" <q1:EntityName>quote</q1:EntityName>" +
" <q1:ColumnSet xsi:type='q1:ColumnSet'>" +
" <q1:Attributes>" +
" <q1:Attribute>flow_sequencenumber</q1:Attribute>" +
" </q1:Attributes>" +
" </q1:ColumnSet>" +
" <q1:Distinct>false</q1:Distinct>" +
" </query>" +
" </RetrieveMultiple>" +
" </soap:Body>" +
"</soap:Envelope>";
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
DOM.loadXML(xmlHttpRequest.responseText);
Resp = DOM.getElementsByTagName("q1:flow_sequencenumber");
v_maxnro_ofe = 0;
for (x = 0; x < Resp.length; x++) {
if (CDbl(Resp(x).firstChild.nodeValue) > v_maxnro_ofe)
v_maxnro_ofe = CDbl(Resp(x).firstChild.nodeValue);
}
if (v_maxnro_opp >= v_maxnro_ofe)
v_proxnro = v_maxnro_opp + 1;
else
v_proxnro = v_maxnro_ofe + 1;
if ((v_proxnro.toString()).length < v_cant_car_nro) {
v_proxnro_str = ReplicateStr('0', v_cant_car_nro) + v_proxnro.toString();
v_proxnro_str = v_proxnro_str.substr(v_proxnro_str.length - v_cant_car_nro, v_cant_car_nro);
}
else
v_proxnro_str = v_proxnro.toString();
return v_proxnro_str;
}
Todas las respuestas
-
hola, para ver el código que deberías modificar, revisa tu código con el "Microsoft Dynamics CRM 2011 Custom Code Validation Tool" (http://www.microsoft.com/en-us/download/details.aspx?id=30151).
Como consejo, utiliza para todo jQuery.
Por otro lado, te aconsejo hacer la autonumeracion no por JavaScript, sino por un plugin, ya que si tienes dos usuarios creando el mismo registro a la vez, te creará registros con numero duplicado.
Tienes un buen ejemplo en CodePlex: http://crm2011autonumber.codeplex.com/
un saludo,
Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"
- Propuesto como respuesta Atilio miércoles, 30 de enero de 2013 8:24
-
-
Hola Mlp24,
revisa este artículo que explica paso a paso como montarlo a ver si has seguido correctamente todos los pasos:
No he encontrado si esto funciona con el UR12, pero sino revísalo en un CRM que no tenga el rollup 12.
un saludo
Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"
-
-
Hola Mlp24, creo que lo mejor es que depures el JavaScript.
tienes un ejemplo aquí: http://social.technet.microsoft.com/wiki/contents/articles/3256.how-to-debug-jscript-in-microsoft-dynamics-crm-2011.aspx
ten en cuenta que este código debe funcionar en Firefox y en chrome también (UR12 soporta estos navegadores).
Lee también este artículo acerca del JavaScript con Rollup 12: http://msdn.microsoft.com/en-us/library/hh771584.aspx en especial el apartado "Do Not Create Unnecessary Dependencies on JavaScript Libraries"
un saludo
Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"
- Propuesto como respuesta Demian Adolfo RaschkovanMVP, Moderator lunes, 18 de febrero de 2013 8:43