Orden a autorizacion con SDK (DI API)

sdk
Etiquetas: #<Tag:0x00007fb8dc0b0940>

#1

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”


#2

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

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.


#4

¿Han probado esta opción?:

Activar procedimiento de aprobación en DI

image


#5

si! y funciona tal como lo menciona @GabrielGS


#6

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


#7

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.


#8

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


#9

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:


#10

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


#11

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


#12

Claro, consulta sin miedo!


#13

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