Problema al Crear Devolucion en DI API

Tengo un Problema no puedo crear el lote me sale error -2028 mi codigo es este.

SAPbobsCOM.Documents oDoc = Program.oCompany.GetBusinessObject(BoObjectTypes.oReturns);
                    oDoc.CardCode = oRec.Fields.Item("ID_OCRD").Value.ToString();
                    oDoc.DocDate = oRec.Fields.Item("factual").Value;
                    oDoc.TaxDate = oRec.Fields.Item("factual").Value;
                    oDoc.DocDueDate = oRec.Fields.Item("factual").Value;
                    oDoc.FolioNumber = Convert.ToInt32(oRec.Fields.Item("DOCGUIA").Value);
                    oDoc.Indicator = "DV";
                    oDoc.NumAtCard = oRec.Fields.Item("DOCGUIA").Value;
                    oDoc.FolioPrefixString = "DV";
                    oDoc.SalesPersonCode = 196;
                    oDoc.Comments = "MIGRACIO"
                    oDoc.UserFields.Fields.Item("U_EXX_MOTIVTRA").Value = "05";
                    oDoc.UserFields.Fields.Item("U_EXX_TIPOOPER").Value = "24";
                    oDoc.UserFields.Fields.Item("U_ID_DEV_CAL").Value = Id.ToString();
                    oDoc.DocType = BoDocumentTypes.dDocument_Items;
                            oDoc.Lines.ItemCode = oRecDet.Fields.Item("ITEMCODE").Value.ToString();
                            oDoc.Lines.WarehouseCode = WareHouse;
                            oDoc.Lines.UserFields.Fields.Item("U_EXF_Caso").Value = "05"
                            oDoc.Lines.UserFields.Fields.Item("U_EXF_DetCaso").Value = "024"
                           
                                if (oDoc.Lines.BatchNumbers.BatchNumber != string.Empty)
                                {
                                    oDoc.Lines.BatchNumbers.Add();
                                }

                                oDoc.Lines.BatchNumbers.SetCurrentLine(0);
                                oDoc.Lines.BatchNumbers.BatchNumber = "UNICO";
                                oDoc.Lines.BatchNumbers.Quantity = oRecDet.Fields.Item("CANTIDAD").Value;
                                oDoc.Lines.BatchNumbers.Add();

                                      oDoc.Lines.Add();
                            oRecDet.MoveNext();
                        }
                    }

                    lRetCode = oDoc.Add();

                    if (lRetCode != 0)
                    {
                        int temp_int = lErrCode;
                        string temp_string = sErrMsg;
                        Program.oCompany.GetLastError(out temp_int, out temp_string);
                        modelo.actualizaErrorSAPDevolucion(Id, temp_string);
                    }

Todo este ejmplo lo tienes diseccionado a una solo linea de codigo?, nunca tendrás mas lineas?.
Debes hacer el setcurrentline dentro del line de la linea de detalle del documento, con respecto al batch, no recurdo bien pero me parece que debes ponerle el numero unico que tiene en la tabla maestra, hace esas modificaciones y me cuentas que tal.
con el tema del setcurrentline del batch tambien aplica si la misma linea tiene varias lotes vale decir que debes hacer el add cuand tengas mas de una linea y el setcurrentline va incrementando, este se resetea en 0 cuando en el detalle del documento vas agregando mas lineas de productos.

Hola @grofox
Te invitamos a pasar por la sección de #presentaciones, es una política del foro de obligatorio cumplimiento.
En relación a la pregunta cual es la descripción del error?

Andres Ramirez Jaramillo :colombia:

1 me gusta

Hola No entiendo muy bien lo que pasa es que tengo que crear un lote nuevo pero no se agrega me sale ese error que indica que no hay registro pero solo para los que tienen lote sin lote agrega sin problemas

ya lo corriste paso a paso y lo paraste donde te da el error??

Creo te falta oDoc.Lines.Add(), porque tienes un add pero es para el lote, es independiente del agregado de la linea del documento.

saludos

1 me gusta

Mantengo lo que indique antes, favor re leer las veces necesarias ya que hay esta la respuesta.

El batch.lines.add… sobra… laprimera linea va implicita y solo debes rellenarla… el .add es para agregar una segunda linea de lotes… …

Este tema se cerró automáticamente 91 días después de la última publicación. No se permiten nuevas respuestas.