Orden a autorizacion con SDK (DI API)

buenas tardes,

actualmente estoy creando un procedimiento para subir ordenes por medio de DI API a SAP, pero como puedo enviar esas ordenes(Pedidos) que vayan a autorización.

también tengo un problema de que me esta creando 2 veces el mismo documento.

actualmente estoy utilizando este codigo:

    Dim vOrder As SAPbobsCOM.Documents
    vOrder = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders)
    vOrder.CardCode = "CCS-0001"
    vOrder.DocDate = Date.Now
    vOrder.DocDueDate = Date.Now
    vOrder.NumAtCard = "123456"
    vOrder.Comments = "PRUEBA"
    vOrder.DocCurrency = "LPS"
    vOrder.UserFields.Fields.Item("U_Desc").Value = "S"

    vOrder.Lines.ItemCode = "COMB-0010"
    vOrder.Lines.Quantity = "10"
    vOrder.Lines.UnitPrice = "500.00"
    

    vOrder.Add()

    If vOrder.Add() <> 0 Then
        MsgBox("Ocurrio un error " & oCompany.GetLastErrorDescription)
        Exit Sub
    Else
        MsgBox("Se a subido el docuemnto preeliminar con exito " & oCompany.GetNewObjectKey)
    End If

pero estoy insertando un precio menor que el actual deberia ir a autorizacion como consigo eso, aunque ya le puse en un campo definido por el usuario que si requiere autorizacion vOrder.UserFields.Fields.Item(“U_Desc”).Value = “S”

Hola @Oscar_Lara .

  1. Primero trata de debuggear la linea

vOrder.Add()

para ver si esta siendo llamada mas de una vez por distintos eventos.

  1. verifica que en el menu Gestion → Inicializacion del Sistema → Parametrizaciones Generales → Pestaña “Socios de Negocios” se encuentre habilitada la opcion “Activar Procedimientos de Aprobacion en DI”

  1. En DI API no es posible desencadenar procedimientos de aprobación basados ​​en consultas de usuario, porque no es posible obtener el valor definido por el usuario de FMS (búsqueda formateada). Solo puedes desencadenar con las condicines “Siempre” o con las predefinidas por el sistema.

  1. Para activar un autorizacion por la DI API aca un ejemplo:
Documents oDoc = oCompany.GetBusinessObject(BoObjectTypes.oOrders);
                oDoc.CardCode = "C00007";
                oDoc.DocDueDate = DateTime.Now;
                oDoc.Lines.ItemCode = "LM4029SB";
                oDoc.Lines.Quantity = 2;


                oDoc.GetApprovalTemplates();
                if (oDoc.Document_ApprovalRequests.Count > 0 && oDoc.Document_ApprovalRequests.ApprovalTemplatesID > 0)
                {
                    //Your document will fire an approval procedure
                    //If you want to add some remarks to your approval you can do this
                    oDoc.Document_ApprovalRequests.SetCurrentLine(0);
                    oDoc.Document_ApprovalRequests.Remarks = "Add Doc from DI";
                }


                if (oDoc.Add() != 0)
                    MessageBox.Show(oCompany.GetLastErrorDescription());
                else
                    MessageBox.Show(oCompany.GetNewObjectKey());

Saludos.

3 Me gusta

Hola @GabrielGS gracias por el apórte, solo que creo que no me di a entender, por ejemplo en SAP¨cuando el usuario crea un pedido y este lleva un precio menor que el que esta asignado en la lista automaticamente se va a una autorizacion a un usuario profesional y que llega por medio de mensaje una vez el usuario profesional lo aprueba se devuelve el mensaje al usuario inicial y este ya puede crearlo en SAP y hasta en ese momento se guarda en las tablas ORDR y RDR1.

es posible que los pedidos subidos por DI API que vayan con estas alteraciones tambien pasen por este procedimiento?

gracias.

1 me gusta

¿Han probado esta opción?:

Activar procedimiento de aprobación en DI

image

si! y funciona tal como lo menciona @GabrielGS

1 me gusta

¡Perfecto!

Entonces no olvides marcar su respuesta como solución, esto es un gran gesto para agradecer su aportación además que deja una línea marcada para quienes tengan la misma duda.

Saludos.

buenas tardes,
es que esta no es una solución para mi problema o para lo que yo quiero hacer, aun estoy esperando si me ayudan con mi respuesta anterior.

gracias.

En los puntos 3 y 4 de mi respuesta, esta lo que buscas.

Ahora la pregunta es: ¿Que tipo de Autorizacion estan usando actualmente para validar esto?:
“cuando el usuario crea un pedido y este lleva un precio menor que el que esta asignado en la lista automaticamente se va a una autorizacion”

Porque si estan validando el documento por linea (detalle), alli hay una serie de programaciones implicitas, y para poder activar eso por DI-API sera un poco mas complejo.

¿Puedes aclarar como esta hecha dicha autorizacion?.

1 me gusta

buen dia @GabrielGS,

gracias por tomar tu tiempo para apoyar a usuarios como yo.

actualmente nuestra autorizacion es asi>
“cuando el usuario crea un pedido y este lleva un precio menor que el que esta asignado en la lista automaticamente se va a una autorizacion” basados en un campo de usuario asignado al detalle del pedido.

Generando un Pedido:

Autorizacion:

Consulta:

1 me gusta

@GabrielGS Amigo yo estaba haciendo las cosas mal, de primer momento no entendí tu respuesta anterior así que la solución es como me lo habías mencionado anteriormente. y tratare de hacer 2 procedimientos des VB.Net para validar cuando un documento se va a ir a autorización y cuando se guardara directamente…

lo vuelvo a mencionar, eres lo máximo!.

Mil Gracias.

2 Me gusta

@GabrielGS puedo abrir un tema para ver como seria el código para activar una autorización desde la DI API con una condición por consulta de usuario?

gracias.

2 Me gusta

Claro, consulta sin miedo!

1 me gusta

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