En
este ejemplo vamos a utilizar el método sdata
de la API de Cliente de CRM, con el
que a través de un script de cliente haremos una consulta sobre la base de
datos para obtener el valor de un registro.
En
este ejemplo en concreto lo que queremos es obtener el coste y el margen en una
línea de un pedido.
En nuestro
caso hemos añadido un nuevo campo dentro de la tabla de tarifas (Pricing) que hemos llamado “pric_coste”.
Este campo lo actualizamos mediante procesos de sincronización contra nuestro
ERP.
En
la tabla QuoteItems hemos añadido
los campos “quit_coste” y “quit_margen”
para insertar en la línea del pedido tanto el coste como el margen del producto
seleccionado en esa línea del pedido.
En
la pantalla QuoteItemsSummary hemos
añadido los campos de Coste y Margen, indicando que están en sólo lectura y
griseados para que el usuario vea claramente que no son modificables. Para ello
hemos añadido el siguiente script dentro del contenido personalizado de la
pantalla.
crm.ready(function () {
$("#quit_coste").attr('readonly', true);
$("#quit_margen").attr('readonly', true);
$("#quit_quotedpricetotal").attr('readonly', true);
crm.fields("quit_coste").background("#DDDDDD");
crm.fields("quit_margen").background("#DDDDDD");
crm.fields("quit_quotedpricetotal").background("#DDDDDD");
…
});
|
En
el momento que se carga la pantalla también capturaremos el valor del producto
seleccionado, y mediante el método sdata, accederemos a la tabla de precios
(pricing) filtrando por el producto seleccionado.
En
definitiva lo que hace el objeto sdata es ejecutar la siguiente url:
http://192.168.1.36/sdata/crmj/sagecrm/-/pricing?where=pric_productid eq ‘4’
http://192.168.1.36/sdata/crmj/sagecrm/-/pricing?where=pric_productid eq ‘4’
Si
el método sdata devuelve algún valor satisfactoriamente, lo que hacemos es
obtener el primer registstro de la consulta devuelta, y escribimos el valor del
coste dentro del campo “quit_coste”
crm.ready(function () {
…
var
ProductID = $("#quit_productid").val()
var
successProduct = function (crmRecord) {
coste =
GlobalRules.FormatImporteESP(crmRecord[0].pric_coste)
$("#quit_coste").val(coste)
}
crm.sdata({
entity: "pricing",
where: "pric_productid
eq '" + ProductID + "'",
success: successProduct
});
…
});
|
Finalmente,
lo único que hacemos es controlar que si se cambia la cantidad o el precio de
venta del producto se obtenga el margen y el precio total. Y escribimos los
valores dentro de los campos correspondientes.
<script>
function ObtenerTotal(Scantidad,
Simporte)
{
Scantidad=GlobalRules.FormatImporteENG(Scantidad)
Simporte=GlobalRules.FormatImporteENG(Simporte)
Stotal=Scantidad
* Simporte
Stotal=Stotal.toFixed(2)
Stotal=GlobalRules.FormatImporteESP(Stotal)
return Stotal
}
crm.ready(function () {
...
$("#quit_quantity").change(function (event) {
var cantidad=$("#quit_quantity").val()
var importe=$("#quit_quotedprice").val()
total=ObtenerTotal(cantidad,
importe)
$("#quit_quotedpricetotal").val(total)
$("#quit_quantity").val(GlobalRules.FormatImporteESP(cantidad))
var coste=$("#quit_coste").val()
totalCoste=ObtenerTotal(cantidad,
coste)
total=GlobalRules.FormatImporteENG(total)
totalCoste=GlobalRules.FormatImporteENG(totalCoste)
totalmargen=total-totalCoste
totalmargen=totalmargen.toFixed(2)
$("#quit_margen").val(GlobalRules.FormatImporteESP(totalmargen))
});
$("#quit_quotedprice").change(function (event) {
var cantidad=$("#quit_quantity").val()
var importe=$("#quit_quotedprice").val()
total=ObtenerTotal(cantidad,
importe)
$("#quit_quotedpricetotal").val(total)
$("#quit_quotedprice").val(GlobalRules.FormatImporteESP(importe))
var coste=$("#quit_coste").val()
totalCoste=ObtenerTotal(cantidad,
coste)
total=GlobalRules.FormatImporteENG(total)
totalCoste=GlobalRules.FormatImporteENG(totalCoste)
totalmargen=total-totalCoste
totalmargen=totalmargen.toFixed(2)
$("#quit_margen").val(GlobalRules.FormatImporteESP(totalmargen))
});
});
</script>
|
No hay comentarios:
Publicar un comentario