segunda-feira, 21 de novembro de 2011

Customização usando Visual Studio 2010 (C #) - Plug-In

Customização usando Visual Studio 2010 (C #) - Plug-In

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:

Cique com botão direito do mouse em properties, e clique com Open.

Check Sign the Assembly and clique em Signing e em New

No campo (key file name), informe CadCliente e clique em Ok




Adicione no projeto um novo item do tipo Class com o nome de PluginCliente.cs


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

Arquivo do blog

Números de Visitas

  

TOPO