Untitled
unknown
plain_text
2 years ago
7.7 kB
10
Indexable
var AccountRibbon = window.AccountRibbon || {};
(function () {
// #region bottone che crea un contact a partire dall'email
this.CreaContactEnable = function(formContext) {
// debugger
var email = formContext.getAttribute("emailaddress1").getValue();
if (email != null ) {
return true;
}
return false;
}
this.CreaContactCommand = function(formContext) {
debugger
var alertStrings = { confirmButtonLabel: "Si", text: "Sei sicuro di voler procedere con l'operazione?", title: "Attenzione" };
var alertOptions = { height: 120, width: 260 };
Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then(
function (success) {
console.log("Alert dialog closed");
Xrm.Utility.showProgressIndicator("Elaborazione in corso...");
var accountId = formContext.data.entity.getId();
var execute_yod_CreaContact_Request = {
// Parameters
Target: { "@odata.type": "Microsoft.Dynamics.CRM.account", accountid: accountId }, // mscrm.crmbaseentity
getMetadata: function () {
return {
boundParameter: null,
parameterTypes: {
Target: { typeName: "mscrm.crmbaseentity", structuralProperty: 5 }
},
operationType: 0, operationName: "yod_CreaContact"
};
}
};
Xrm.WebApi.execute(execute_yod_CreaContact_Request).then(
function success(response) {
if (response.ok) {
formContext.getAttribute("yod_creacontatto").setValue(false); // L'ho messo qui perche essendo la webapi.request asincrona se mettevo questa riga di codice su accountform creacontatto l'avrebbe settata a false senza aspettare che venga eseguito creacontatto ma mettendola qui nel success , sono sicuro che funzionera
alert("Creazione del contatto avvenuta con successo!");
Xrm.Utility.closeProgressIndicator();t
console.log("Success");
}
}
).catch(function (error) {
Xrm.Utility.closeProgressIndicator();
console.log(error.message);
});
},
function (error) {
console.log(error.message);
}
);
}
// #endregion
}).call(AccountRibbon)
using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Principal;
namespace TRIAL1.ACTION
{
public class CreaContact : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
try
{
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is EntityReference)
{
tracingService.Trace($"inizio ");
EntityReference accountRef = (EntityReference)context.InputParameters["Target"];
tracingService.Trace($"inizio retrieve");
Entity account = service.Retrieve(accountRef.LogicalName, accountRef.Id, new ColumnSet("name", "telephone1", "fax", "address1_line1","address1_line2","address1_line3","address1_city","address1_stateorprovince","address1_postalcode","address1_country","address1_shippingmethodcode","address1_freighttermscode"));
tracingService.Trace($"fine retreive");
string nomeAccount = account.GetAttributeValue<string>("name");
string[] nameSurname = Utility.DivideInTwoWords(nomeAccount);
string nome = nameSurname[0];
string cognome = nameSurname[1];
string email = account.GetAttributeValue<string>("emailaddress1");
string telefono = account.GetAttributeValue<string>("telephone1");
string fax = account.GetAttributeValue<string>("fax");
string indirizzo_ln1 = account.GetAttributeValue<string>("address1_line1");
string indirizzo_ln2 = account.GetAttributeValue<string>("address1_line2");
string indirizzo_ln3 = account.GetAttributeValue<string>("address1_line3");
string citta = account.GetAttributeValue<string>("address1_city");
string provincia = account.GetAttributeValue<string>("address1_stateorprovince");
string cap = account.GetAttributeValue<string>("address1_postalcode");
string paese = account.GetAttributeValue<string>("address1_country");
OptionSetValue shipMethod = account.GetAttributeValue<OptionSetValue>("address1_shippingmethodcode");
OptionSetValue freighttrmcode = account.GetAttributeValue<OptionSetValue>("address1_freighttermscode");
tracingService.Trace($"fine getattribute");
Entity contact = new Entity("contact");
contact.Attributes.Add("parentcustomerid", new EntityReference("account", account.Id));
contact.Attributes.Add("firstname", nome);
contact.Attributes.Add("lastname", cognome);
contact.Attributes.Add("telephone1", telefono);
contact.Attributes.Add("emailaddress1", email);
contact.Attributes.Add("fax", fax);
contact.Attributes.Add("address1_line1", indirizzo_ln1);
contact.Attributes.Add("address1_line2", indirizzo_ln2);
contact.Attributes.Add("address1_line3", indirizzo_ln3);
contact.Attributes.Add("address1_city", citta);
contact.Attributes.Add("address1_stateorprovince", provincia);
contact.Attributes.Add("address1_postalcode", cap);
contact.Attributes.Add("address1_country", paese);
contact.Attributes.Add("address1_shippingmethodcode", shipMethod);
contact.Attributes.Add("address1_freighttermscode", freighttrmcode);
Guid contactid = service.Create(contact);
tracingService.Trace($"inizio postimage");
account.Attributes.Add("primarycontactid", new EntityReference("contact", contactid));
service.Update(account);
}
}
catch (Exception ex)
{
throw new InvalidPluginExecutionException($"Errore CreaContact : {ex.Message}");
}
}
}
}
Editor is loading...
Leave a Comment