Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En el último post vimos como hacer algunas excepciones en las reglas de negocio en nuestro
sistema mediante el store SBO_SP_TransactionNotification. Ahora bien las cosas que
podríamos hacer mediante SQL suenan un poco escasas. Ahora supongamos que quisiéramos
enviar un correo a nuestros clientes cuando capturemos una entrega de mercancía, para
informarle que su pedido a sido liberado y hacer esto solo usando el
SBO_SP_TransactionNotification.
Y el método que vamos a usar para hacer esto es usando CLR de Visual Studio,
ayudándonos con el DI API de SAP Business One. A continuación nos vamos a ir directo a
nuestro Visual Studio y crearemos un nuevo proyecto en C#. En mi caso el proyecto tiene el
nombre SimpleDeliveryNotification después de esto vamos agregar la referencia al DI API de
SAP Business One. En este ejemplo yo use el DI API del 8.8. Ahora bien crearemos nuestro CLR
para SQL. De la siguiente manera:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SAPbobsCOM;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
namespace SimpleDeliveryNotification
Msg = "";
oComp.CompanyDB = "";
oComp.Server = "SAPBO";
oComp.UseTrusted = true;
oComp.DbServerType = BoDataServerTypes.dst_MSSQL2008;
oComp.UserName = "manager";
oComp.Password = "asdqwe";
if (oComp.Connect() != 0)
return;
oMsg =
(SAPbobsCOM.Messages)oComp.GetBusinessObject(BoObjectTypes.oMessages);
oMsg.Recipients.Add();
oMsg.Recipients.SetCurrentLine(0);
oMsg.Recipients.SendEmail = BoYesNoEnum.tYES;
oMsg.Recipients.EmailAddress = (string)Email;
oMsg.Recipients.UserType = BoMsgRcpTypes.rt_RandomUser;
oMsg.Recipients.UserCode = @"1";
if (oMsg.Add() != 0)
return;
finally
oMsg = null;
oComp.Disconnect();
oComp = null;
Ahora bien después de tener este código generamos nuestro DLL y lo vamos a colocar en
una carpeta que nos sea de fácil acceso, recuerden ahí que copiar la DLL y el DLL del DI API
("Interop.SAPbobsCOM.dll") Una vez que hicimos esto vamos a configurar nuestro servidor
SQL para que acepte nuestro CLR. Y lo haremos de la siguiente manera:
go
reconfigure
go
go
Después de habilitar la opción de CLR en nuestro SQL vamos por creación de nuestro
assembly y el store procedure que hará el llamado de nuestra función.
'C:\CLR\SimpleDeliveryNotification.dll'
Go
@Email nvarchar(100),
@OrderNumber nvarchar(100),
Go
Una vez que llegamos a este punto hemos casi finalizado, nuestro siguiente paso seria
probarlo y esto lo podemos hacer de la siguiente manera dentro de nuestro SQL probandolo
de la siguiente manera
print @msg
Ahora bien una vez que ya llegamos a este punto solo falta modificar nuestro
SBO_SP_TransactionNotification y lo vamos hacer agregando el siguiente código.
begin
begin
if ISNULL(@msg,'') != ''
begin
set @error = -1
end
end
end