Customização usando Visual Studio 2010 (C #) - Plug-In
Customização usando Visual Studio 2010 (C #) - Plug-In
E insira o seguinte código:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System.Data.SqlClient;
namespace CadCliente
{
public class PluginCliente : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
// Pega contexto em execução
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
if (context.MessageName.ToUpper() == "CREATE")
{
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Captura a entidade
Entity targetEntity = (Entity)context.InputParameters["Target"];
if (targetEntity.LogicalName.ToUpper() == "ACCOUNT")
{
// Captura o serviço
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
// String de conexão SQL do banco de dados ERP
string conexao = "Data Source=WIN-4EF7UMIGTTO;Initial Catalog=ERP;Integrated Security=SSPI";
string sql = "Insert into ERP_Cliente (codcliente,nome,endereco,bairro,cidade,estado,cep,telefone) values (@codcliente, @nome, @endereco, @bairro, @cidade, @estado, @cep, @telefone)";
SqlConnection con = new SqlConnection(conexao);
SqlCommand comando = new SqlCommand(sql, con);
comando.Parameters.Add(new SqlParameter("@codcliente", targetEntity["jd_codigo"].ToString()));
comando.Parameters.Add(new SqlParameter("@nome", targetEntity["name"].ToString()));
comando.Parameters.Add(new SqlParameter("@endereco", targetEntity["address1_name"].ToString()));
comando.Parameters.Add(new SqlParameter("@bairro", targetEntity["address1_line1"].ToString()));
comando.Parameters.Add(new SqlParameter("@cidade", targetEntity["address1_city"].ToString()));
comando.Parameters.Add(new SqlParameter("@estado", targetEntity["address1_stateorprovince"].ToString()));
comando.Parameters.Add(new SqlParameter("@cep", targetEntity["address1_postalcode"].ToString()));
comando.Parameters.Add(new SqlParameter("@telefone", targetEntity["telephone1"].ToString()));
try
{
con.Open();
comando.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
return;
}
}
else
{
return;
}
}
else
{
return;
}
}
else if (context.MessageName.ToUpper() == "UPDATE")
{
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Captura a entidade.
Entity targetEntity = (Entity)context.InputParameters["Target"];
if (targetEntity.LogicalName.ToUpper() == "ACCOUNT")
{
// Captura o serviço
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
// Id do registro atual
Guid id = (Guid)targetEntity["accountid"];
// captura dados da entidade
Entity entidade = service.Retrieve("account", id, new ColumnSet(true));
// String de conexão SQL do banco de dados ERP
// WIN-4EF7UMIGTTO = Nome da máquina/servidor pode ser substituido por "." (ponto).
string conexao = "Data Source=WIN-4EF7UMIGTTO;Initial Catalog=ERP;Integrated Security=SSPI";
string sql = @"Update ERP_Cliente Set nome = @nome , endereco = @endereco, bairro = @bairro,cidade = @cidade, estado = @estado, cep = @cep,
telefone = @telefone Where codcliente = @codcliente" ;
SqlConnection con = new SqlConnection(conexao);
SqlCommand comando = new SqlCommand(sql, con);
comando.Parameters.Add(new SqlParameter("@codcliente", entidade["jd_codigo"].ToString()));
comando.Parameters.Add(new SqlParameter("@nome", entidade["name"].ToString()));
comando.Parameters.Add(new SqlParameter("@endereco", entidade["address1_name"].ToString()));
comando.Parameters.Add(new SqlParameter("@bairro", entidade["address1_line1"].ToString()));
comando.Parameters.Add(new SqlParameter("@cidade", entidade["address1_city"].ToString()));
comando.Parameters.Add(new SqlParameter("@estado", entidade["address1_stateorprovince"].ToString()));
comando.Parameters.Add(new SqlParameter("@cep", entidade["address1_postalcode"].ToString()));
comando.Parameters.Add(new SqlParameter("@telefone", entidade["telephone1"].ToString()));
try
{
con.Open();
comando.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
return;
}
}
}
}
}
}
}
Compile e tire todos os erros que podem ter aparecido.
Nas próximas postagem iremos registrar o plugin, e como debugar.
No post 07. Customização usando Visual Studio 2010 (C#) e 08. Customização usando Visual Studio 2010 (C#) - Download SDK, iniciamos o estudo de customização usando o VS 2010. Hoje iremos desenvolver o plug-in para cadastrar os dados do Dynamics CRM para o ERP do cliente.
Inicie o Visual Studio 2010, e abra um novo projeto adicionando um class library.
Dê o nome de CadCliente, e selecione o local onde será gravado os arquivos do seu projeto e clique em OK.
Precisamos assinar o projeto da seguinte forma:
E insira o seguinte código:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System.Data.SqlClient;
namespace CadCliente
{
public class PluginCliente : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
// Pega contexto em execução
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
if (context.MessageName.ToUpper() == "CREATE")
{
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Captura a entidade
Entity targetEntity = (Entity)context.InputParameters["Target"];
if (targetEntity.LogicalName.ToUpper() == "ACCOUNT")
{
// Captura o serviço
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
// String de conexão SQL do banco de dados ERP
string conexao = "Data Source=WIN-4EF7UMIGTTO;Initial Catalog=ERP;Integrated Security=SSPI";
string sql = "Insert into ERP_Cliente (codcliente,nome,endereco,bairro,cidade,estado,cep,telefone) values (@codcliente, @nome, @endereco, @bairro, @cidade, @estado, @cep, @telefone)";
SqlConnection con = new SqlConnection(conexao);
SqlCommand comando = new SqlCommand(sql, con);
comando.Parameters.Add(new SqlParameter("@codcliente", targetEntity["jd_codigo"].ToString()));
comando.Parameters.Add(new SqlParameter("@nome", targetEntity["name"].ToString()));
comando.Parameters.Add(new SqlParameter("@endereco", targetEntity["address1_name"].ToString()));
comando.Parameters.Add(new SqlParameter("@bairro", targetEntity["address1_line1"].ToString()));
comando.Parameters.Add(new SqlParameter("@cidade", targetEntity["address1_city"].ToString()));
comando.Parameters.Add(new SqlParameter("@estado", targetEntity["address1_stateorprovince"].ToString()));
comando.Parameters.Add(new SqlParameter("@cep", targetEntity["address1_postalcode"].ToString()));
comando.Parameters.Add(new SqlParameter("@telefone", targetEntity["telephone1"].ToString()));
try
{
con.Open();
comando.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
return;
}
}
else
{
return;
}
}
else
{
return;
}
}
else if (context.MessageName.ToUpper() == "UPDATE")
{
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Captura a entidade.
Entity targetEntity = (Entity)context.InputParameters["Target"];
if (targetEntity.LogicalName.ToUpper() == "ACCOUNT")
{
// Captura o serviço
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
// Id do registro atual
Guid id = (Guid)targetEntity["accountid"];
// captura dados da entidade
Entity entidade = service.Retrieve("account", id, new ColumnSet(true));
// String de conexão SQL do banco de dados ERP
// WIN-4EF7UMIGTTO = Nome da máquina/servidor pode ser substituido por "." (ponto).
string conexao = "Data Source=WIN-4EF7UMIGTTO;Initial Catalog=ERP;Integrated Security=SSPI";
string sql = @"Update ERP_Cliente Set nome = @nome , endereco = @endereco, bairro = @bairro,cidade = @cidade, estado = @estado, cep = @cep,
telefone = @telefone Where codcliente = @codcliente" ;
SqlConnection con = new SqlConnection(conexao);
SqlCommand comando = new SqlCommand(sql, con);
comando.Parameters.Add(new SqlParameter("@codcliente", entidade["jd_codigo"].ToString()));
comando.Parameters.Add(new SqlParameter("@nome", entidade["name"].ToString()));
comando.Parameters.Add(new SqlParameter("@endereco", entidade["address1_name"].ToString()));
comando.Parameters.Add(new SqlParameter("@bairro", entidade["address1_line1"].ToString()));
comando.Parameters.Add(new SqlParameter("@cidade", entidade["address1_city"].ToString()));
comando.Parameters.Add(new SqlParameter("@estado", entidade["address1_stateorprovince"].ToString()));
comando.Parameters.Add(new SqlParameter("@cep", entidade["address1_postalcode"].ToString()));
comando.Parameters.Add(new SqlParameter("@telefone", entidade["telephone1"].ToString()));
try
{
con.Open();
comando.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
return;
}
}
}
}
}
}
}
Compile e tire todos os erros que podem ter aparecido.
Nas próximas postagem iremos registrar o plugin, e como debugar.
Seja o primeiro a comentar 0 comentários
Postar um comentário