// Un NameSpace se define para el código a ejecutar
// Como práctica recomendada, siempre debe definir un NameSpace único para sus bibliotecas
// Para nuestro caso el NameSpace es la entidad Producto de la propuesta
var ProductoPropuesta = ProductoPropuesta || {};
(function () {
// Defina algunas variables globales
var myUniqueId = "_myUniqueId"; // Define un ID para notificar
var currentUserName = Xrm.Utility.getGlobalContext().userSettings.userName; // get current user name
var message = currentUserName + ": Your JavaScript code in action!";
//Get Objects
if(formContext.ui.getFormType() == 1) //Form = Create --- Especifique true para mostrar el control; false para ocultarlo.
{
message = currentUserName + ": esta generando una nueva propuesta."
}
else if(formContext.ui.getFormType() == 2)//Form = Update
{
message = currentUserName + ": Proceso de modificar."
}
this.formOnLoad = function (executionContext) {
var formContext = executionContext.getFormContext();
// Display the form level notification as an INFO
formContext.ui.setFormNotification(message, "INFO", myUniqueId);
// Wait for 3 seconds before clearing the notification
ProductoPropuesta.setTimeout(function () { formContext.ui.clearFormNotification(myUniqueId); }, 3000);
this.CambiarEtiqueta(executionContext);
this.Importe(executionContext);
this.CalculoDescuento(executionContext);
}
this.attributeOnChange = function (executionContext) {
var formContext = executionContext.getFormContext();
// Automatically set some column values if the account name contains "Contoso"
var accountName = formContext.getAttribute("name").getValue();
if (accountName.toLowerCase().search("contoso") != -1) {
formContext.getAttribute("telephone1").setValue("425-555-0100");
formContext.getAttribute("description").setValue("Website URL, Phone and Description set using custom script.");
}
}
this.formOnSave = function (executionContext) {
// Display an alert dialog
//Xrm.Navigation.openAlertDialog({ text: "Record saved." });
agrupaSegmentacion(executionContext);
this.Importe(executionContext);
}
this.CambiarEtiqueta = function (executionContext) {
var formContext = executionContext.getFormContext();
var ProductoNombre = formContext.getAttribute("productid");
var entity = formContext.data.entity.getEntityName();
if (ProductoNombre != null && ProductoNombre.getValue() != null) {
var ProductoNombreValor = ProductoNombre.getValue()[0].name;
if (ProductoNombreValor != null)
{
if(entity == "opportunityproduct")
{
if (ProductoNombreValor.indexOf('CPM') != -1)
formContext.ui.controls.get("sing_cantidad").setLabel("Impresiones");
if (ProductoNombreValor.indexOf('CPC') != -1)
formContext.ui.controls.get("sing_cantidad").setLabel("Clicks");
if (ProductoNombreValor.indexOf('CPV') != -1)
formContext.ui.controls.get("sing_cantidad").setLabel("Views");
}
else if(entity == "salesorderdetail")
{
if (ProductoNombreValor.indexOf('CPM') != -1)
formContext.ui.controls.get("quantity").setLabel("Impresiones");
if (ProductoNombreValor.indexOf('CPC') != -1)
formContext.ui.controls.get("quantity").setLabel("Clicks");
if (ProductoNombreValor.indexOf('CPV') != -1)
formContext.ui.controls.get("quantity").setLabel("Views");
}
}
}
}
this.Importe = function (executionContext)
{
var formContext = executionContext.getFormContext();
var ProductoNombre = formContext.getAttribute("productid");
var CantidadCPM = formContext.getAttribute("sing_cantidad");
var CantidadCPMValor = CantidadCPM.getValue();
var Cantidad = formContext.getAttribute("quantity");
var CantidadValor = Cantidad.getValue();
var ValorVisible = 0;
if (ProductoNombre != null && ProductoNombre.getValue() != null) {
var ProductoNombreValor = ProductoNombre.getValue()[0].name;
if (ProductoNombreValor != null) {
if (ProductoNombreValor.indexOf('CPM') != -1) {
ValorVisible = CantidadCPMValor / 1000;
Cantidad.setValue(ValorVisible);
}
else {
ValorVisible = CantidadCPMValor
Cantidad.setValue(ValorVisible);
}
}
}
}
this.CalculoDescuento = function(executionContext){
var formContext = executionContext.getFormContext();
var Descuento = formContext.getAttribute("sing_descuento");
//var PrecioUnidadBruto = formContext.getAttribute("sing_precioporunidadbruto");
//var PrecioUnidadBrutoValor = PrecioUnidadBruto.getValue();
var PrecioUnidad = formContext.getAttribute("priceperunit");
var PrecioUnidadValor = PrecioUnidad.getValue();
var TipoVenta = formContext.getAttribute("sing_tipodeventa");
var TipoVentaValor = TipoVenta.getValue();
var Valor = null;
//********************************************************************************* */
var productoLookup = formContext.getAttribute('productid').getValue();
var PrecioUnidadBrutoValor = 0;
if(productoLookup != null)
{debugger;
var producto = productoLookup[0].id.slice(1, -1);
Xrm.WebApi.online.retrieveRecord("product", ""+producto+"", "?$select=price").then(
function success(result) {
PrecioUnidadBrutoValor = result["price"];
debugger;
if(PrecioUnidadBrutoValor!=null)
{
formContext.getAttribute("sing_precioporunidadbruto").setValue(PrecioUnidadBrutoValor);
if (TipoVentaValor == 321130000)
{
formContext.getControl("sing_descuento").setVisible(true);
if (PrecioUnidadValor == PrecioUnidadBrutoValor) {
Valor = 0;
Descuento.setValue(Valor);
}
else {
Valor = 100 - ((PrecioUnidadValor / PrecioUnidadBrutoValor) * 100);
Descuento.setValue(Valor);
}
}
else
{
formContext.getControl("sing_descuento").setVisible(false);
}
}
else
alert("El producto seleccionado no tiene establecido un Precio Bruto. Asigne un precio bruto y repita la operación");
},
function(error) {
Xrm.Utility.alertDialog("Consola: " + error.message);
}
);
}
}
this.Guardar = function (executionContext)
{debugger;
var formContext = executionContext.getFormContext();
var CantidadCPM = formContext.getAttribute("sing_cantidad");
var lookupUnidad = new Array();
lookupUnidad[0] = new Object();
lookupUnidad[0].id = "{666edea5-78ff-4212-9670-8bac118b865f}";
lookupUnidad[0].name = "Unidad principal";
lookupUnidad[0].entityType = "uom";
formContext.getAttribute("uomid").setValue(lookupUnidad);
CantidadCPM.setValue(1);
formContext.data.save();
}
}).call(ProductoPropuesta);