Un saludo a todos, estoy desarrollando una interfaz para realizar solicitudes de salida de almacén con el SDK de SAP B1. Todo se genera sin tema y muestro una alerta en la bandeja de mensajes cuando se crea el preliminar, el tema con el que m estoy atorando es en mostrar un link
en el mensaje para que el usuario autorizador abra el documento y lo autorice y genere en firme este es mi código no se en que me estoy equivocando a la hora de hacer que se muestre el link a la pantalla de autorización, gracias:
public static void EnviarMensajeSAP(string asunto, string textoMensaje, int docEntry)
{
try
{
// Inicializar el servicio de mensajes de SAP B1
SAPbobsCOM.MessagesService mensajesService =
(SAPbobsCOM.MessagesService)oCompany.GetCompanyService().GetBusinessService(SAPbobsCOM.ServiceTypes.MessagesService);
// Crear una instancia de mensaje
SAPbobsCOM.Message mensajeNuevo =
(SAPbobsCOM.Message)mensajesService.GetDataInterface(SAPbobsCOM.MessagesServiceDataInterfaces.msdiMessage);
// Configurar el asunto y texto del mensaje
mensajeNuevo.Subject = asunto;
mensajeNuevo.Text = $"{textoMensaje}\n\nDocumento de salida de almacén: {docEntry}";
// Añadir el destinatario
SAPbobsCOM.RecipientCollection recipients = mensajeNuevo.RecipientCollection;
recipients.Add();
recipients.Item(0).SendInternal = SAPbobsCOM.BoYesNoEnum.tYES; //IMPORTANTE es la que realiza el el envio del mesaje al Cliente SAP
recipients.Item(0).UserCode = "USER3"; // Asegúrate de que userID es el código exacto en SAP B1
// Añadir el enlace al documento con el tipo correcto
SAPbobsCOM.MessageDataColumns columnasDatos = mensajeNuevo.MessageDataColumns;
// Configurar la columna para ObjectType (60 es el código para salidas de almacén)
SAPbobsCOM.MessageDataColumn columnaTipoDocumento = columnasDatos.Add();
columnaTipoDocumento.ColumnName = "Clase de documento";
SAPbobsCOM.MessageDataLines filasTipoDocumento = columnaTipoDocumento.MessageDataLines;
SAPbobsCOM.MessageDataLine filaTipoDocumento = filasTipoDocumento.Add();
filaTipoDocumento.Object = "60";
filaTipoDocumento.Value = "60"; // Código de documento para Salida de Almacén
// Configurar la columna para ObjectKey con el número de documento
SAPbobsCOM.MessageDataColumn columnaDocumento = columnasDatos.Add();
columnaDocumento.ColumnName = "N° documento preliminar";
SAPbobsCOM.MessageDataLines filasDatos = columnaDocumento.MessageDataLines;
SAPbobsCOM.MessageDataLine filaDocumento = filasDatos.Add();
filaDocumento.ObjectKey = docEntry.ToString();
filaDocumento.Value = docEntry.ToString();
// Agregar una breve demora
System.Threading.Thread.Sleep(2000);
// Enviar el mensaje a la bandeja de entrada de SAP B1 del usuario
mensajesService.SendMessage(mensajeNuevo);
SBOApplication.StatusBar.SetText("Mensaje enviado al usuario con ID: USER3",
SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
}
catch (Exception ex)
{
SBOApplication.StatusBar.SetText("Error al enviar mensaje: " + ex.Message,
SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
}
}
Como menciono hasta aquí todo bien el mensaje se envía y se muestra en la bandeja del usuario indicado, solo es el link al documento el que no se muestra.
Gracias.