Referencias necessárias:

RM.Eai.TotvsMessage.IService

RM.Eai.TotvsMessage.Adapter


1 - Criar a classe referente ao adapter de envio.

Exemplo:



/// <summary>
 /// Adapter Envio de Projeto
 /// </summary>
 [AdapterAttr("PROJECT", "2.000", TransactionDescription = "Project")]
 public class Project_Send_2000 : AdapterWebServiceBase
 {
 /// <summary>
 /// 
 /// </summary>
 protected override void DoInitializeAdapter()
 {
 this.AdapterName = "PROJECT";
 this.TableName = "MPRJ";
 base.DoInitializeAdapter();
 }
/// <summary>
 /// 
 /// </summary>
 /// <param name="parms"></param>
 /// <returns></returns>
 protected override EAITransformMessageResult DoTransformMessage(EAITransformMessageParam parms)
 {
 EAITransformMessageResult result = new EAITransformMessageResult(null, null);
Project_Model_V2_BusinessContent businessContentObj = new Project_Model_V2_BusinessContent();
DataSet dsMPrj = ((DataSet)parms.ObjOriginal);
DataTable dtProject = dsMPrj.Tables["MPRJ"];
 DataTable dtMPeriodo = dsMPrj.Tables["MPERIODO"];
if (dtProject.Rows.Count != 1)
 throw new Exception(Properties.Resources.sPrjValidacaoSendProject);
DataRow rowProject = dtProject.Rows[0];
 
 businessContentObj.CompanyId = RMSConvert.ToString(rowProject["CODCOLIGADA"]);
 businessContentObj.BranchId = RMSConvert.ToString(rowProject["CODFILIAL"]);
 businessContentObj.CompanyInternalId = RMSConvert.ToString(rowProject["COMPANYINTERNALID"]);
 businessContentObj.InternalId = RMSConvert.ToString(rowProject["INTERNALID"]);
 businessContentObj.Code = RMSConvert.ToString(rowProject["CODPRJ"]);
 businessContentObj.Description = RMSConvert.ToString(rowProject["DESCRICAO"]);
if (rowProject["CODCCUSTO"] != DBNull.Value)
 businessContentObj.CostCenterCode = RMSConvert.ToString(rowProject["CODCCUSTO"]);
DataTable dtMprjStatusLog = dsMPrj.Tables["MPRJSTATUSLOG"];
if (dtMprjStatusLog.Rows.Count > 0)
 {
 DataRow rowDtStatusLog = dtMprjStatusLog.Rows[0];
 businessContentObj.RegisterDate = RMSConvert.ToDateTime(rowDtStatusLog["DATAMUDANCA"]);
 businessContentObj.StatusProject = RMSConvert.ToInt32(rowProject["POSICAO"]);
 }
 if (dtMPeriodo.Rows.Count > 0)
 {
 DataRow rowMPeriodo = dtMPeriodo.Rows[0];
 if (rowMPeriodo["DTINICIO"] != DBNull.Value)
 businessContentObj.BeginDate = RMSConvert.ToDateTime(rowMPeriodo["DTINICIO"]);
 if (rowMPeriodo["DTFIM"] != DBNull.Value)
 businessContentObj.FinalDate = RMSConvert.ToDateTime(rowMPeriodo["DTFIM"]);
 }
 
 return base.DoTransformMessage(parms);
 }
/// <summary>
 /// 
 /// </summary>
 /// <returns></returns>
 protected override List<InfoTableDePara> DoGetInfoTableDePara()
 {
 List<InfoTableDePara> tablesDePara = new List<InfoTableDePara>();
 InfoTableDePara table = new InfoTableDePara("MPRJ", "PROJECT");
 table.DescriptionName = "Projeto";
InfoColumnDePara column = new InfoColumnDePara(EAIConsts.ctINTERNALID, "CODCOLIGADA|IDPRJ", "MPRJ");
 column.ForeignKeyDePara = false;
 column.ColumnCaptionCode = "CODPRJ";
 column.ColumnCaption = Properties.Resources.sPrjCodPrj;
 table.ColumnsName.Add(column);
column = new InfoColumnDePara("CompanyInternalId", "CODCOLIGADA|CODFILIAL", "GFILIAL");
 column.ForeignKeyDePara = true;
 column.ColumnCaptionCode = "CODCOLIGADA";
 column.ColumnCaption = Properties.Resources.SPrjEmpProjeto;
 table.ColumnsName.Add(column);
column = new InfoColumnDePara("CostCenterInternalId", "CODCOLIGADA|CODCCUSTO", "GCCUSTO");
 column.ForeignKeyDePara = true;
 column.ColumnCaptionCode = "CODCCUSTO";
 column.ColumnCaption = Properties.Resources.SPrjCCustoProjeto;
 table.ColumnsName.Add(column);
tablesDePara.Add(table);
return tablesDePara;
 }
}



Dica gerar a classe a partir do XML: