Skip to Content

Entrada de mercancias DI API

Buenas Tardes.

Tengo un problema, en la compañía que trabajo estoy desarrollado una interfaz mediante DI API, lo que debe hacer es, mediante un pedido realizar las entradas de mercancías, el problema radica al querer dar el ingreso de la entrada el error que manda es el siguiente.

Este documento no puede añadirse porque se ha actualizado la fila del documento base. Vuelva a copiar el documento de su documento base.


Soy nuevo en esto, les adjunto el código.


<strong>int orderNumber = 13994; //Orden de Compra


            SAPbobsCOM.Recordset rs = null,rs2=null,rsDetalleIngreso=null;
            Documents oFactura = null;
            errMsg = string.Empty;
            bool Encontrado = false;
                rs = ocompany.GetBusinessObject(BoObjectTypes.BoRecordset);
                rs.DoQuery(string.Format("EXEC U_LineNumOCExportacion @DocNum='{0}'", orderNumber));
            
            if(rs.RecordCount>0)
            { 
                System.Data.DataTable TblOc = DetalleOCExportacion.ExtraeDetalleOc(orderNumber);
                rsDetalleIngreso = ocompany.GetBusinessObject(BoObjectTypes.BoRecordset);
                rsDetalleIngreso.DoQuery(string.Format("EXEC U_BuscaDIExportacion @Documento='{0}'", orderNumber));


                //ENTRADA DE MERCANCIAS
                errMsg = string.Empty;
            if (oEntrada == null)
                oEntrada = ocompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPurchaseDeliveryNotes);
            int detalle=0;
            string DocumentoIngreso;


                int Filas=0, UltimaFila;
            //CABECERO
            if (rsDetalleIngreso.RecordCount>0)
            {
                    rsDetalleIngreso.MoveFirst();
                    UltimaFila = rsDetalleIngreso.RecordCount;
              
                    DocumentoIngreso = rsDetalleIngreso.Fields.Item("IdDocumentoIngreso").Value; //DocumentoIngreso
                    oEntrada.CardCode = rsDetalleIngreso.Fields.Item("IdOrigen").Value; // ORIGEN


                    while (!rsDetalleIngreso.EoF)
                    {


                      


                        //DETALLE


                        oEntrada.Lines.BaseType = (int)SAPbobsCOM.BoObjectTypes.oPurchaseOrders;


                        oEntrada.Lines.BaseEntry = orderNumber; //the number of base order


                        string fechaCad = ((DateTime)rsDetalleIngreso.Fields.Item("FechaCaducidad").Value).ToString("yyyy-MM-dd");


                        rs2 = ocompany.GetBusinessObject(BoObjectTypes.BoRecordset);
                        //Carga de RecordSet con Lotes y claves
                        rs2.DoQuery(string.Format("SELECT T0.[ItemCode], T0.[DistNumber], T0.[ExpDate] FROM OBTN T0 WHERE T0.[ItemCode] ='{0}' AND T0.[DistNumber]='{1}'", rsDetalleIngreso.Fields.Item("IdProducto").Value, rsDetalleIngreso.Fields.Item("LoteProveedor").Value));


                        oEntrada.Lines.ItemCode = rsDetalleIngreso.Fields.Item("IdProducto").Value;//Clave
                        oEntrada.Lines.BatchNumbers.BatchNumber = rsDetalleIngreso.Fields.Item("LoteProveedor").Value;//Lote


                        if (rs2.RecordCount>0)
                        {
                            rs2.MoveFirst();
                            while (!rs2.EoF)
                            {
                                if (rsDetalleIngreso.Fields.Item("IdProducto").Value == rs2.Fields.Item("ItemCode").Value && rsDetalleIngreso.Fields.Item("LoteProveedor").Value == rs2.Fields.Item("DistNumber").Value)
                                    Encontrado = true;
                                rs2.MoveNext();
                            }


                            if(Encontrado==false)
                            {
                                oEntrada.Lines.BatchNumbers.ExpiryDate = Convert.ToDateTime(fechaCad);//Fecha Caducidad


                            }
                            else
                                Encontrado = false;
                        }
                        else
                        {
                            oEntrada.Lines.BatchNumbers.ExpiryDate = Convert.ToDateTime(fechaCad);//Fecha Caducidad
                        }


                        if (rsDetalleIngreso.Fields.Item("LoteFabricante").Value != string.Empty)
                        {
                            if (rsDetalleIngreso.Fields.Item("LoteFabricante").Value != "")
                                oEntrada.Lines.BarCode = rsDetalleIngreso.Fields.Item("LoteFabricante").Value; // Sku
                        }




                        oEntrada.Lines.BatchNumbers.Quantity = Convert.ToInt32(rsDetalleIngreso.Fields.Item("CANTIDADADUANA").Value); //Cantidad
                        oEntrada.Lines.BaseLine = rsDetalleIngreso.Fields.Item("LineNum").Value ; //BaseLine
                        oEntrada.Lines.WarehouseCode = rsDetalleIngreso.Fields.Item("ALM").Value; //Almacén


                        Filas++;
                     


                        if (Filas < UltimaFila)
                            oEntrada.Lines.BatchNumbers.Add();


                        if (Filas<UltimaFila)
                    oEntrada.Lines.Add();


                        rsDetalleIngreso.MoveNext();
                    }
                
                
                oEntrada.DocDueDate = DateTime.Now;


                    int Entrada = oEntrada.Add();


                if (Entrada != 0)
                {
                    int errCode = ocompany.GetLastErrorCode();
                    errMsg = ocompany.GetLastErrorDescription();
                    return false;
                }
                else
                {
                    errMsg = "PurchaseDelivery [" + ocompany.GetNewObjectKey() + "] created!";
                    DetalleOCExportacion.ActualizaInterfaz(DocumentoIngreso);
                }
            }
<br></strong>
Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

0 Answers