Skip to Content

ERROR al generar documento preliminar

Hola buenas tardes.

Me encuentro desarrollando un programa que realiza X cantidad de documentos preliminares mas especifico "Entrada de Mercaderia" pero al momento de probar el codigo me encuentro con el error al momento de consultar los DRAFT (documento preliminar) en la base de datos me doy cuenta que el primero se genera sin problema con los respectivos articulos pero el segundo y tercero me se crea con todos los articulos de las distintas entradas sin que exista relacion entre ellas. Llevo dias tratando de solucionar el problema pensando que seria un problema de codigo, pero ya he hecho todo sin tener exito, adjuntare un trozo de codigo en el cual se realiza la creacion de la entrada de mercaderia.

 if (connection.Connect() == 0)
                {
                    Console.WriteLine("Successfully connected to " + connection.GetCompany().CompanyName + "!");
                    SAPbobsCOM.Documents oPurchaseDeliveryNotes = (SAPbobsCOM.Documents)connection.GetCompany().GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts);
                    oPurchaseDeliveryNotes.DocObjectCode = SAPbobsCOM.BoObjectTypes.oPurchaseDeliveryNotes;
                    while (mostrar.MoveNext())
                    {
                        Receipt.Clear();
                        poDetail PD = (poDetail)mostrar.Current;
                        Receipt.Add(PD._EXTERNRECEIPTKEY);
                        Receipt.Add(PD._TYPE);
                        ArrayList COC = new ArrayList();
                        System.Collections.IEnumerator mostrador = nSAP.getOC(Receipt[0].ToString()).GetEnumerator();
                        while (mostrador.MoveNext())
                        {
                            COC.Clear();
                            cabeceraOC cabOC = (cabeceraOC)mostrador.Current;
                            COC.Add(cabOC._CardCode);
                            COC.Add(cabOC._U_OPEDIDO);
                            COC.Add(cabOC._DocEntry);


                            oPurchaseDeliveryNotes.CardCode = cabOC._CardCode;
                            oPurchaseDeliveryNotes.CardName = cabOC._CardName;
                            ////oPurchaseDeliveryNotes.DiscountPercent = Convert.ToDouble(cabec._DiscPrcnt);
                            oPurchaseDeliveryNotes.DocCurrency = cabOC._DocCur;
                            oPurchaseDeliveryNotes.DocDate = cabOC._DocDate;
                            oPurchaseDeliveryNotes.DocDueDate = cabOC._DocDueDate;
                            oPurchaseDeliveryNotes.DocRate = Convert.ToDouble(cabOC._DocRate.ToString());
                            oPurchaseDeliveryNotes.TaxDate = cabOC._TaxDate;
                            ////oPurchaseDeliveryNotes.DocTotal = Convert.ToDouble(cabec._DocTotal.ToString());
                            oPurchaseDeliveryNotes.SalesPersonCode = cabOC._SlpCode;
                            oPurchaseDeliveryNotes.UserFields.Fields.Item("U_NIMPORT").Value = cabOC._U_NIMPORT;
                            oPurchaseDeliveryNotes.UserFields.Fields.Item("U_RETENIDO").Value = cabOC._U_RETENIDO;
                            oPurchaseDeliveryNotes.UserFields.Fields.Item("U_OPEDIDO").Value = cabOC._U_OPEDIDO;
                            oPurchaseDeliveryNotes.UserFields.Fields.Item("U_CLUCP").Value = cabOC._U_CLUCP;
                            oPurchaseDeliveryNotes.Comments = cabOC._Comments;


                            var obtenerDetalleINT = nINT.obtenerDetalleINT(Receipt[0].ToString());
                            ArrayList Veri = new ArrayList();
                            System.Collections.IEnumerator obtener = obtenerDetalleINT.GetEnumerator();
                            while (obtener.MoveNext())
                            {
                                Veri.Clear();
                                AsnVerificado AV = (AsnVerificado)obtener.Current;
                                Veri.Add(AV._QTY);
                                Veri.Add(AV._SKU);
                                ArrayList DOC = new ArrayList();
                                var obtenerDetalleOC = nSAP.getOCDetalle(cabOC._DocEntry, AV._SKU);
                                System.Collections.IEnumerator OBT = obtenerDetalleOC.GetEnumerator();
                                while (OBT.MoveNext())
                                {
                                    DOC.Clear();
                                    detalleOC detOC = (detalleOC)OBT.Current;
                                    DOC.Add(detOC._itemCode);
                                    DOC.Add(detOC._Price);
                                    String[] rat = cabOC._DocRate.Split(',');
                                    String[] dsct = detOC._DiscPrcnt.Split(',');




                                    oPurchaseDeliveryNotes.Lines.ItemCode = detOC._itemCode;
                                    oPurchaseDeliveryNotes.Lines.Currency = detOC._Currency;
                                    //oPurchaseDeliveryNotes.Lines.UnitPrice = Convert.ToDouble(DOC[1].ToString());
                                    oPurchaseDeliveryNotes.Lines.DiscountPercent = Convert.ToDouble(dsct[0]);
                                    oPurchaseDeliveryNotes.Lines.Price = Convert.ToDouble(detOC._Price2.ToString());
                                    oPurchaseDeliveryNotes.Lines.Quantity = Convert.ToDouble(detOC._Quantity);
                                    oPurchaseDeliveryNotes.Lines.UserFields.Fields.Item("U_CODORIGINART").Value = detOC._U_CODORIGINART;
                                    oPurchaseDeliveryNotes.Lines.Rate = Convert.ToDouble(cabOC._DocRate);
                                    oPurchaseDeliveryNotes.Lines.TaxCode = detOC._TaxCode;
                                    oPurchaseDeliveryNotes.Lines.WarehouseCode = detOC._WhsCode;
                                    oPurchaseDeliveryNotes.Lines.UserFields.Fields.Item("U_CBL").Value = Convert.ToDouble(AV._QTY);
                                    oPurchaseDeliveryNotes.Lines.UserFields.Fields.Item("U_NEMBARQ").Value = detOC._U_NEMBARQ;
                                    oPurchaseDeliveryNotes.Lines.Add();
                                }
                            }
                            int AddDraftPurchaseDeliveryNotes = oPurchaseDeliveryNotes.Add();
                            if (AddDraftPurchaseDeliveryNotes != 0)
                            {
                                Console.WriteLine(connection.GetCompany().GetLastErrorDescription());
                            }
                            else if (AddDraftPurchaseDeliveryNotes == 0)
                            {
                                Console.WriteLine("Documento creado exitosamente! ");
                                Console.WriteLine("CREADO DRAFT PARA " + Receipt[0]);
                                nINT.actualizarFLAG(Receipt[0].ToString());
                                nSAP.actualizarOPOR(Receipt[0].ToString());
                            }
                            Console.WriteLine("***---------------------------------------***");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("Error " + connection.GetErrorCode() + ": " + connection.GetErrorMessage());
                }
                connection.GetCompany().Disconnect();

Al momento de consultar en la base de datos se observa el siguiente resultado adjunto imagen.

Desde ya muchas gracias.

Saludos

captura.png (25.9 kB)
Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

1 Answer

  • Apr 30 at 04:48 PM

    Ya encontre la solucion.

    Add comment
    10|10000 characters needed characters exceeded