Business - CRM
SAP Business One Integração com Sistema de Gerenciamento de Serviços
Neste pequeno artigo nós apresentaremos um exemplo de integração utilizando código C#. O Sistema de Gerenciamento de Serviços utiliza o Microsoft CRM para armazenar as horas de serviços.
por Douglas OyamaNeste pequeno artigo nós apresentaremos um exemplo de integração utilizando código C#. O Sistema de Gerenciamento de Serviços utiliza o Microsoft CRM para armazenar as horas de serviços. A integração inclui o Código do Cliente, Horas Trabalhadas, Preço da Hora, Descrição do Serviço e o Código do Serviço de vários objetos do MS CRM 3.0, como as Atividades, Nome do Usuário, Contas e envia eles para a tabela “temporária” ALBATIMELOG, cujos dados disponíveis serão enviados para o SAP B1. A integração utilizou como base o SAP Business One SDK – Por favor, verifique com o fornecedor do seu SAP B1 para maiores esclarecimentos sobre o processo de integração.
Este caso mostra que você poderá utilizar o SAP Business One como uma solução ERP para companhias de Serviços: Reparo e Manutenção, Organização de Projetos, Consultorias, Comunicação, Telefonia e etc. SAP Business One é multi-moeda e possui integração com SAP my SAP, SAP all-in-one, R/3. Nós conhecemos casos onde o SAP B1 está integrado com sistemas de ERP da Microsoft, como o Microsoft Great Plains Dynamics GP, Oracle eBusiness Suite/Financials – isto é importante para companhias multi-nacionais que possuem filiais no Brasil.
Esta é a tabela de integração. As transações do seu banco de dados legado deverão ser sempre exportadas para esta tabela.
A tela abaixo representa um Pedido de Vendas no SAP Business One. Você pode perceber que o Item é idêntico ao último registro da tabela acima.
Abaixo está o código da aplicação, você deverá criar um projeto C# Console Application no MS Visual Studio.
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Data;
using System.Diagnostics;
using System.Data.SqlClient;
namespace ConsoleApplication2
{
sealed public class OrderApp
{
public static DataTable TableLines; // O datasource do datagrid chamado DataLines.
public static SAPbobsCOM.Documents oOrder; // Objeto Pedido
public static SAPbobsCOM.Documents oInvoice; // Objeto Nota Fiscal
public static SAPbobsCOM.Recordset oRecordSet; // Objeto Recorset
public static SAPbobsCOM.Company oCompany; // Objeto Companhia
// Variáveis de erros
public static string sErrMsg;
public static int lErrCode;
public static int lRetCode;
static string description, itemnumber, accountNumber;
public static void Main()
{
int docNumber=0;
OrderApp.oCompany = new SAPbobsCOM.Company();
OrderApp.oCompany.Server = "localhost"; //Altere para o nome do servidor da sua empresa
OrderApp.oCompany.language = SAPbobsCOM.BoSuppLangs. ln_Portuguese_Br; //Altere para a sua linguagem
OrderApp.oCompany.UseTrusted = true;
OrderApp.oCompany.CompanyDB = "TEST_SAPBO_ALBA_US";
OrderApp.oCompany.UserName = "manager";
OrderApp.oCompany.Password = "manager";
OrderApp.oCompany.Connect();
Console.WriteLine("Company is: "+OrderApp.oCompany.CompanyName);
SqlConnection connection = new SqlConnection();
connection.ConnectionString = "Integrated Security = true;Data Source = CRMSERVER; Initial Catalog = CRMCUSTOMIZATION;";
connection.Open();
SqlCommand command = new SqlCommand();
command.CommandType = System.Data.CommandType.Text;
command.CommandText = "SELECT * FROM ALBATIMELOG";
command.Connection = connection;
SqlDataReader reader = command.ExecuteReader();
while(reader.Read())
{
decimal billableTime, unitPrice, lineTotal;
double bTime, uPrice;
description="";
itemnumber="";
accountNumber="";
Console.WriteLine("Record:");
//Lendo da tabela timelog
accountNumber=reader.GetSqlString(0).ToString();
billableTime=reader.GetSqlDecimal(1).Value;
unitPrice=reader.GetSqlDecimal(2).Value;
lineTotal=reader.GetSqlDecimal(3).Value;
description=reader.GetSqlString(4).ToString();
itemnumber=reader.GetSqlString(5).ToString();
//Adicionar campos
bTime=(double)billableTime;
uPrice=(double)unitPrice;
Console.WriteLine(billableTime);
Console.WriteLine(billableTime.ToString());
Console.WriteLine(unitPrice.ToString());
Console.WriteLine(lineTotal.ToString());
Console.WriteLine(description.ToString());
Console.WriteLine(itemnumber.ToString ());
Console.WriteLine();
//Adicionar Pedidos
OrderApp.oOrder = ( ( SAPbobsCOM.Documents )( OrderApp.oCompany.GetBusinessObject( SAPbobsCOM.BoObjectTypes.oOrders ) ) );
//Configurações do Objeto Pedido
OrderApp.oOrder.CardCode = accountNumber;
OrderApp.oOrder.HandWritten = SAPbobsCOM.BoYesNoEnum.tNO;
SAPbobsCOM.Recordset rs = null;
//Cria o número do próximo Pedido
object sSQL = "SELECT TOP 1 DocNum FROM dbo.ORDR ORDER BY DocNum DESC";
rs = ( ( SAPbobsCOM.Recordset )( OrderApp.oCompany.GetBusinessObject( SAPbobsCOM.BoObjectTypes.BoRecordset ) ) );
rs.DoQuery( System.Convert.ToString( sSQL ) );
while ( !( ( rs.EoF ) ) )
{
docNumber=System.Convert.ToInt32( rs.Fields.Item( 0 ).Value ) + 1;
rs.MoveNext();
}
//Moeda Default
string dfcurrency="";
sSQL = "SELECT MainCurncy FROM dbo.OADM";
rs = ( ( SAPbobsCOM.Recordset )( OrderApp.oCompany.GetBusinessObject( SAPbobsCOM.BoObjectTypes.BoRecordset ) ) );
rs.DoQuery( System.Convert.ToString( sSQL ) );
while ( !( ( rs.EoF ) ) )
{
dfcurrency= System.Convert.ToString(rs.Fields.Item( 0 ).Value);
rs.MoveNext();
}
OrderApp.oOrder.DocNum = docNumber;
OrderApp.oOrder.DocDate = System.DateTime.Today;
OrderApp.oOrder.DocDueDate = System.DateTime.Today.AddDays(30);
OrderApp.oOrder.DocCurrency = dfcurrency;
OrderApp.oOrder.Lines.ItemCode = itemnumber;
OrderApp.oOrder.Lines.ItemDescription = description;
OrderApp.oOrder.Lines.Quantity = bTime;
OrderApp.oOrder.Lines.Price = uPrice;
OrderApp.oOrder.Lines.TaxCode = "00";
OrderApp.oOrder.Lines.LineTotal = uPrice*bTime;
//ATENÇÃO – Você não deverá adicionar a pròxima linha !!!
//OrderApp.oOrder.Lines.Add();
OrderApp.oCompany.GetLastError( out lErrCode, out sErrMsg );
lRetCode = OrderApp.oOrder.Add(); //Tenta adicionar o Pedido no Banco de Dados
if ( lRetCode != 0 )
{
OrderApp.oCompany.GetLastError( out lErrCode, out sErrMsg );
}
}
}
}
}
- CRM...a difícil tarefa de olhar para dentroCRM
- Trabalhando com Relacionamentos N:N no Microsoft Dynamics CRM 4.0CRM
- Adicionando um novo usuário no Microsoft CRM 3.0CRM
- Microsoft Dynamics: GP, AX, NAV, SL, CRM – fusão ou coexistência?CRM
- Customização Microsoft CRM – Programando Email Anexos À AtividadesCRM