Aplicación Web para crear Pedidos en SAP B1

Buenas tardes comunidad,

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

Gracias de antemano! Saludos cordiales.

2 Me gusta

Buenas tardes @l.villarreal y bienvenido.

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.

Saludos Cordiales…

3 Me gusta

Buenas Tardes

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.

Saludos
José Gil

2 Me gusta

Hola, creo que aquí puedes encontrar algo de info, espero que te sirva.

h_tps://archive.sap.com/discussions/thread/3896066

h_tp://sap-business-one.us/sap-business-one-browser-access-installation/

Saludos

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.

Gracias por tu participación activa en el foro.

Saludos.

1 me gusta

@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.

Saludos y exito en tu proyecto!!!

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 :smiley:

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.

Saludos.

1 me gusta

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.

Buen día!! Perdon por demorar en responder…

@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.

Saludos cordiales!

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
3 Me gusta

@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?

Gracias de antemano!

@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.

Gracias de antemano!!

Hola @DavidSDK ,

Una pregunta, tendrás alguna idea de como crear boletas?

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.

Gracias por tu colaboración.

Saludos cordiales.

Tienes razón @saufondez gracias por la aclaración.

Una disculpa por este detalle. Saludos cordiales!

1 me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.