Estoy realizando una aplicación web para que los clientes de la empresa ingresen a un portal y puedan consultar sus facturas pendientes de pago y también generar nuevos pedidos como si de compras en línea se tratara.
El primer punto de hacer la consulta de las facturas ya logré desarrollarlo, sin embargo estoy estancado en la parte de generar un nuevo pedido, ya que no sé cómo avanzar y no encuentro información relacionada en el foro.
¿Me podrían orientar en qué desarrollar o proporcionarme algun ejemplo, página, video, etc acerca de qué debo tener dentro de la página para añadir con éxito el pedido al sistema SAP B1?
Imagino que debo crear una tabla o una lista con todos los campos y filas necesarios, pero no tengo idea de cómo desarrollarlo en un ambiente asp.net
Yo diría que antes de ponerte a programar y buscar mil cosas a lo loco, busques un poco de inforamción sobre la herramienta de B1 Integration Framework (B1if) el cual ya te permite realizar conexiones a SAP como un Web Service y desde ahí crear tus pedidos y demás.
Yo no lo he hecho, pero tengo entendido que ya lo hace con varias páginas de ventas y tiene las caracteristicas que leerás y enviaras para completar un ecomerce o un marketplace como el que quieres hacer.
En todo caso si no te convence y quieres hacerlo directo por programación, en ese caso solo puedo recomendarte que estudies el SDK de SAP B1 y realices el código de programación por ahí, ya que si no creas los pedidos y demás con código SDK perderías el soporte de SAP en caso de que necesites que revisen tu BD para alguna solución.
Opino lo mismo que Ares. En nuestra empresa hemos creado para nosotros mediante SDK una integración con prestashop, ya que ninguna de las que había en el mercado se ajustaba a nuestras necesidades entre B1 SQL y Prestashop. Esta integración descarga los pedidos y mantiene actualizados precios y descuentos de los artículos. Clientes, direcciones etc…
La planificación la hemos realizado entre mi compañero (programador) y yo. Hemos elegido C# y llevamos meses usándolo sin problemas.
Para la descarga de pedidos lo que hacemos es crear dos tablas en SQL donde miramos en la web líneas de los pedidos y los pedidos con sus direcciones, con esas dos tablas y el ejecutable en C# insertamos directamente los pedidos cada minuto en B1.
Amigo @Saul_Lazaro_H, por favor, revisa el siguiente tema:
Trata de respetar las ediciones que los líderes hacen a tu mensaje, creeme que nunca se alterará la idea que intentas transmitir, solo se busca que cumpla con los lineamientos establecidos.
@Ares17000 Muchas gracias por tu orientación, enseguida me pongo a investifar el B1 IF y ver la forma de adaptarlo a la necesidad de la compañía. Hasta ahorita todo lo que he desarrollado me he guiado en los manuales oficiales de SDK, sin embargo, no encuentro ningún ejemplo práctico donde se haga algo parecido a lo que necesito. Seguiré investigando.
@JGil Muchas gracias por tu aporte, no había considerado esa opción de Prestashop, no tienen problema para agregar la información a la DB? Hacen uso del DI API para insertar los datos? Gracias de antemano!
@Saul_Lazaro_H Que tal Saul, muchas gracias por los enlaces, creo que la información discutida en ellos va más relacionada a que el usuario pueda entrar a la interfaz de SAP vía web, sin embargo, lo que requiere la compañía es proveer un portal donde los clientes (no usuarios) puedan colocar nuevos pedidos. De igual manera agradezco tu apoyo.
No, no tenemos problema. Al hacerlo en C# metemos la dll del SAP B1 SDK y ya está. Esta dll entre otras cosas incluye DI API.
El programa ejecutable que lanzamos desde el programador de tareas de windows, lo que hace es conectarse a la base de datos de la compañía vía SDK con uno de los usuarios con licencia. Generas un documento siguiente los comandos del SDK en este caso una orden de venta (pedido de cliente en España) y le agregas las líneas vía SDK con los datos que te has descargado de tu comercio online.
Ten en cuenta que esta inserción de datos pasan también por el transaction con las validaciones que hayas puesto.
Hay que comenzar con algo de formación en SDK para poder hacer esto.
Muchas gracias @JGil voy a revisar el manual SDK para ver cómo tomar las líneas de una tabla y pasarla con el comando correcto a un draft dentro de SAP. Te agradezco mucho el apoyo! Saludos cordiales
Tienes 2 Formas(Hay otras pero estas son las mas accesibles):
De forma elegante, usando Web Services mediante el B1if, es un poco confuso al principio, pero es una herramienta de integracion poderosa y versatil con mucha tela.
De forma mas vikinga , registrando los pedidos web en una BD propia y luego hacer un Programa en el Server SAP que mediante la DI-API, lea cada determinado tiempo los pedidos de la DB web y los inserte de forma correcta en SAP B1 usando las funciones correspondientes.
Buenas tardes @l.villarreal yo creo que la mejor opcion es crear un desarrollo con el SDK, en la empresa donde trabajo, desarrolle uno para los pedidos de la pagina, lo que hay que ver es como sera la comunicacion entre la pagina y el SAP pero no es mucho problema si solo generan Pedidos de Cliente.
Saludos.
@GabrielGS Muchas gracias por tus comentarios, el segundo punto que mencionas me suena factible y creo que lo podría llevar a cabo en menor tiempo, voy a intentar con eso.
Que tal @DavidSDK, efectivamente la intención es que el área de compras de nuestros clientes entren a un portal, inicien su sesión, y hagan un “listado” de su orden de compra, y al final eso se pase como un documento preliminar de un pedido al sistema SAP B1 para que el personal de ventas en nuestra empresa únicamente lo revise y autorice. Tendrás algún ejemplo o algo que pudiera orientarme? Te agradezco de antemano.
Claro. No se cual lenguaje de programacion conozcas pero el siguente ejemplo es en BASIC.
Dim vDraft As SAPbobsCOM.Documents
vDraft = vCmp.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts)
vDraft.CardCode = "Codigo Cliente"
vDraft.DocDate = Fecha
vDraft.DocDueDate = Fecha
vDraft.NumAtCard = "PRUEBA"
vDraft.Comments = "PRUEBA"
vDraft.Lines.ItemCode = "Codigo Item"
vDraft.Lines.Quantity = "10"
vDraft.Lines.UnitPrice = "10.5"
'La linea siguente es muy importante ya que le indicas el tipo de docuemnto preliminar que se va a crear, en este caso puse de ejemplo un Pedido de Cliente
vDraft.DocObjectCode = SAPbobsCOM.BoObjectTypes.oOrders
RetVal = vDraft.Add
If RetVal <> 0 Then
MsgBox("Ocurrio un error " & vCmp.GetLastErrorDescription)
Exit Sub
Else
MsgBox("Se a subido el docuemnto preeliminar con exito " & vCmp.GetNewObjectKey)
End If
@DavidSDK David infinitas gracias por tu ayuda, con ese código que me proporcionaste pude crear un documento preliminar, sólo me quedó una duda…no quisiera abusar de tu amabilidad.
Le estoy agregando una función para que envíe una notificación interna de SAP, y si me aparece el mensaje con el aviso que le personalizo, y cuando pongo los parámetros: MandarMensaje(oCompany.GetNewObjectKey(), PedidoDraft.DocEntry.ToString(), tPedidoSN.Text.ToString());
En DocEntry me arroja un “0”, sabes a qué se debe ésto? No sé si vaya relacionado a que los doc. preliminares requieren darle a “crear” para que se haga la entrada “definitiva”. Pero si intento accesar desde la notificación interna, me redirecciona a otro documento totalmente diferente, te ha pasado ésto?
@l.villarreal Me da gusto haberte ayudado.
Si recuerdo que tuve varios problemas con los docuemntos preliminares y sobre el 0 del docentry que comentas, solo que pues no recuerdo con exactitud cual era, deja desempolvo el antiguo codigo que tengo y te hago saber, lo que si recuerdo es que debes de cerrar los documentos prelominares los cuales ya se realizo el documento, ya que quedan abiertos.
Los documentos preelimnares si guardan la informacion como un documento normal, no creo q sea lo que comentas. Deja lo checo y te aviso, me paso algo parecido, pero no recuerdo que fue.
Para eliminar el documento preeliminar solo tienes que saber su DocEntry para poder eliminarlo
vDraft.GetByKey(3)
RetVal = vDraft.Remove
If RetVal <> 0 Then
MsgBox("Ocurrio un error " & vCmp.GetLastErrorDescription)
Exit Sub
Else
MsgBox("Se ha eliminado correctamente el documento " & vDraft.DocEntry)
End If
Hola que tal @DavidSDK ! Buenas noticias con el proyecto, pude pasar la fase de creación de documento con éxito, tanto versión de escritorio como web funcionan correctamente.
Ahora me topé con un detalle, al enviar via DI API la notificación por medio de la aplicación que desarrollé, sólo logro enviar el número de documento y el cliente, pero no he encontrado la forma de enviar adjunto en el msj el documento recién creado en PDF como lo que genera esta opción:
Sabrás la forma de hacer ésto? Porque busqué en foros y no doy con nada relacionado con eso.
Estimado @I.villareal veo que esta consulta es diferente a la inicial, por lo tanto para mantener el orden en el foro, se te sugiere que marques la respuesta que te soluciono tu solicitud inicial como “solucion”, y los que te ayudaron marcalos como “me gusta”.
Te sugiero que esta pregunta la coloques en un post aparte.