Buenas tardes.
Estoy intentando ingresar una factura de proveedores con pago, pero me indica que no he registrado los medios de pago adjunto el código para que me puedan apoyar, gracias.
Try
Dim facturaCLIENTE As SAPbobsCOM.Documents
facturaCLIENTE = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPurchaseInvoices)
facturaCLIENTE.CardCode = frm_registro.txt_ruc.Text
facturaCLIENTE.Series = 4573
facturaCLIENTE.DocDate = frm_registro.dtp_contable.Text
facturaCLIENTE.DocDueDate = frm_registro.dtp_contable.Text
facturaCLIENTE.TaxDate = frm_registro.dtp_documento.Text
facturaCLIENTE.SalesPersonCode = frm_registro.txt_encargado.Text
facturaCLIENTE.DocumentsOwner = frm_registro.txt_titular.Text
facturaCLIENTE.Comments = frm_registro.txt_comentario.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_DIM1").Value = frm_registro.txt_unegocio.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_DIM2").Value = frm_registro.txt_costo.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_DIM3").Value = frm_registro.txt_proyecto.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_DIM4").Value = frm_registro.txt_sproyecto.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_MDTD").Value = frm_registro.txt_tdocumento.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_MDSD").Value = frm_registro.txt_sdocumento.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_MDCD").Value = frm_registro.txt_ndocumento.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_TCOMPRA").Value = "ER"
facturaCLIENTE.UserFields.Fields.Item("U_SYP_CODERCC").Value = frm_registro.txt_rendicion.Text
facturaCLIENTE.UserFields.Fields.Item("U_SYP_BIESRVADQ").Value = frm_registro.txt_bservicio.Text
facturaCLIENTE.DocType = BoDocumentTypes.dDocument_Service
'Linea de Rendicion
facturaCLIENTE.Lines.UserFields.Fields.Item("U_SYP_TIPOSERV").Value = frm_registro.txt_gasto.Text
facturaCLIENTE.Lines.ItemDescription = "COMBUSTIBLE Y LUBRICANTES"
facturaCLIENTE.Lines.AccountCode = "659906"
facturaCLIENTE.Lines.CostingCode = frm_registro.txt_unegocio.Text
facturaCLIENTE.Lines.CostingCode2 = frm_registro.txt_costo.Text
facturaCLIENTE.Lines.CostingCode3 = frm_registro.txt_proyecto.Text
facturaCLIENTE.Lines.CostingCode4 = frm_registro.txt_sproyecto.Text
Dim ppre As Double = frm_registro.txt_total.Text
Dim padi As Double = frm_registro.txt_adicional.Text
Dim ptig As String = frm_registro.txt_tigv.Text
If ptig = "IGV" Then
If padi > 0 Then
facturaCLIENTE.Lines.LineTotal = (ppre - padi) / 1.18
facturaCLIENTE.Lines.TaxCode = ptig
Else
facturaCLIENTE.Lines.LineTotal = ppre / 1.18
facturaCLIENTE.Lines.TaxCode = ptig
End If
Else
If padi > 0 Then
facturaCLIENTE.Lines.LineTotal = (ppre - padi)
facturaCLIENTE.Lines.TaxCode = ptig
Else
facturaCLIENTE.Lines.LineTotal = ppre
facturaCLIENTE.Lines.TaxCode = ptig
End If
End If
facturaCLIENTE.Lines.Add()
facturaCLIENTE.Add()
'Pago de Factura
Dim sNewObjCode As String = ""
Dim tmpKey As String = oCompany.GetNewObjectCode(sNewObjCode)
MsgBox(tmpKey)
Dim oPay As SAPbobsCOM.Payments
oPay = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oIncomingPayments)
oPay.CardCode = frm_registro.txt_ruc.Text
'oPay.Invoices.DocEntry = tmpKey
oPay.Invoices.InvoiceType = BoRcptInvTypes.it_PurchaseInvoice
oPay.CashAccount = "101101"
oPay.CashSum = frm_registro.txt_total.Text
Dim resultado = oPay.Add()
If resultado <> 0 Then
Dim errNumero As Integer = 0
Dim errMensaje As String = ""
oCompany.GetLastError(errNumero, errMensaje)
If oCompany.InTransaction = True Then
oCompany.EndTransaction(BoWfTransOpt.wf_RollBack)
End If
Throw New Exception("Ha ocurrido el siguiente error, al intentar crear la Factura de Proveedor, revise por favor ...\n\n" + errMensaje)
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "General", MessageBoxButtons.OK, MessageBoxIcon.Warning)
If oCompany.InTransaction = True Then
oCompany.EndTransaction(BoWfTransOpt.wf_RollBack)
End If
If oCompany.Connected Then
oCompany.Disconnect()
End If
End Try
End Sub
esta parte de tu código esta mal, estas colocando un tipo de factura de compras.
Usa algo asi:
pagoRECIBIDO.Invoices.InvoiceType = BoRcptInvTypes.it_Invoice;
pagoRECIBIDO.Invoices.DocEntry = Int32.Parse(DocEntry_ultimaFacturaAdicionada);
Saludos,
1 me gusta
Gracias por responder, pero cuando uso esta sentencia me indica que esta vacio o nulo, estoy usando Visual Basic, si me puedes orientar te lo agradeceré
corregiste el InvoiceType?
Si, pero al jalar el documento con
Dim tmpKey As String = oCompany.GetNewObjectCode(sNewObjCode)
me indica que esta vacio o nulo
Me refiero a esta parte que es posterior:
Invoices.InvoiceType = BoRcptInvTypes.it_Invoice;
Gracias por tu aporte, pero aun me sigue saliendo error. Adjunto el codigo modificado para que me des pistas por favor.
facturaCLIENTE.Add()
'Pago de Factura
'
'
Dim oPay As SAPbobsCOM.Payments
oPay = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oIncomingPayments)
oPay.CardCode = frm_registro.txt_ruc.Text
oPay.Invoices.InvoiceType = BoRcptInvTypes.it_Invoice
Dim sNewObjCode As String = ""
Dim tmpKey As String = oCompany.GetNewObjectCode(sNewObjCode)
MsgBox(tmpKey)
oPay.Invoices.DocEntry = Int32.Parse(tmpKey)
oPay.CashAccount = "101101"
oPay.CashSum = frm_registro.txt_total.Text
Dim resultado = oPay.Add()
If resultado <> 0 Then
Dim errNumero As Integer = 0
Dim errMensaje As String = ""
oCompany.GetLastError(errNumero, errMensaje)
If oCompany.InTransaction = True Then
oCompany.EndTransaction(BoWfTransOpt.wf_RollBack)
End If
Throw New Exception("Ha ocurrido el siguiente error, al intentar crear la Factura de Proveedor: " & Chr("10") & Chr("13") & errMensaje)
End If
Gracias de antemano
puedes pasar el error que te sale.
Adjunto la imagen del error
Hiciste debug, en que linea especificamente te sale el error?
El error sale en la línea donde obtengo el GetNewObjectCode
Dim tmpKey As String = oCompany.GetNewObjectCode(sNewObjCode)
'MsgBox(tmpKey)
oPay.Invoices.DocEntry = Int32.Parse(tmpKey) (Aqui salta el error)
Intenta no pasar a una variable, el docentry recuperado:
oPay.Invoices.DocEntry = oCompany.GetNewObjectCode()
Saludos,
Acabo de hacer la prueba pero en la misma linea me ha salido el siguiente error.
ponele el parametro que tenia.
Cuando agrego el parámetro me sale el otro error que indica “El valor no puede ser nulo. Nombre del parámetro: String”
Intenta solo poniendo esto:
Dim DocEntry as String =""
DocEntry = oCompany.GetNewObjectKey
Ojo: No lleva parentesis
Estimado, ya hice lo que me indicaste pero me sale el siguiente error
La cadena de entrada no tiene el formato correcto
Mi código es
Dim DocEntry As String
DocEntry = oCompany.GetNewObjectKey
oPay.Invoices.DocEntry = Int32.Parse(DocEntry)
Cuando lo visualizo con un MsgBox me sale que el DocEntry esta vacio
esa linea ponlo inmediatamente despues del ADD de la factura.
1 me gusta
Gracias por responder. Efectivamente lo estoy colocando posterior al add de la factura. Pero lo que tengo una duda es que en el mismo SAP antes de grabar siempre me pide el medio de pago y luego de llenar esa información recien graba, no hay un objeto temporal donde grabo la información? y cuando realizo el Add de la factura recien graba el DocEntry?.
Adjunto parte del codigo del registro de pago
facturaPROV.Lines.Add()
facturaPROV.Add()
'Pago de Factura
Dim oPay As SAPbobsCOM.Payments
oPay = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oIncomingPayments)
oPay.CardCode = frm_registro.txt_ruc.Text
oPay.Invoices.InvoiceType = BoRcptInvTypes.it_PurchaseInvoice
Dim DocEntry As String
DocEntry = oCompany.GetNewObjectKey()
oPay.Invoices.DocEntry = Int32.Parse(DocEntry)
oPay.CashAccount = "101101"
oPay.CashSum = frm_registro.txt_total.Text
oPay.DocDate = DateTime.Now
oPay.DueDate = DateTime.Now
oPay.TaxDate = DateTime.Now
oPay.VatDate = DateTime.Now
oPay.Remarks = "Concepto del pago"
oPay.JournalRemarks = "Concepto de la póliza del pago"
oPay.Invoices.SumApplied = frm_registro.txt_total.Text
oPay.UserFields.Fields.Item("U_SYP_REF2").Value = "1911000123"
oPay.UserFields.Fields.Item("U_SYP_MPPG").Value = "001"
oPay.UserFields.Fields.Item("U_SYP_TPOOPER").Value = "01"
oPay.UserFields.Fields.Item("U_SYP_IDFLUJO").Value = "7"
Dim resultado = oPay.Add()
Gracias de antemano por tu pronta respuesta
cuando te digo inmediatamente después del ADD de la factura es porque el oCompany aun sigue con ese objeto. Tu lo tienes después de asignarle el objeto PAGO y por eso no te manda ningún valor porque aun no has generado el PAGO.