Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Class Form1
- Dim oCompany As New SAPbobsCOM.Company
- Dim oRecord As SAPbobsCOM.Recordset
- Private Sub Conectar()
- Dim returnCode As Integer
- oCompany.Server = "VMSAP91"
- oCompany.LicenseServer = "VMSAP91:30000"
- oCompany.CompanyDB = "SBODEMOES"
- oCompany.UserName = "manager"
- oCompany.Password = "inforges"
- oCompany.DbUserName = "sa"
- oCompany.DbPassword = "sa"
- oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2014
- returnCode = oCompany.Connect
- If returnCode <> 0 Then
- Dim intError As Integer
- Dim strError As String = ""
- oCompany.GetLastError(intError, strError)
- MsgBox("Se ha producido un error: " & intError.ToString & "- " & strError)
- Else
- MsgBox("Conectado a" & oCompany.CompanyName)
- Me.Text = Me.Text & ": Conectado"
- End If
- End Sub
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
- Conectar()
- End Sub
- Private Sub CrearPartner()
- 'Declarar variable (tipo SAPbobsCOM.BusinessPartners)
- Dim nuevoPartner As SAPbobsCOM.BusinessPartners
- 'Escribir variable (obtener objeto a través de objeto Company)
- nuevoPartner = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners)
- 'Inicializar variables del objeto BusinessPartner con los valores de Card de las cajas de texto
- 'y con un tipo predifinido en código de CardType
- nuevoPartner.CardCode = edCodigo.Text
- nuevoPartner.CardName = edNombre.Text
- nuevoPartner.CardType = SAPbobsCOM.BoCardTypes.cCustomer
- 'Inicializar el field custom
- nuevoPartner.UserFields.Fields.Item("U_IFG_CURSO").Value = "Valor de prueba"
- 'Si se ha creado correctamente (SE LLAMA A LA VEZ QUE SE COMPRUEBA), mostrar mensaje;
- 'Si por el contrario el registro ya existe, actualizar su número de teléfono con "1234567" y actualizar el objeto
- 'Por último, mostrar el error que se debe haber producido si se ha llegado hasta aquí
- If nuevoPartner.Add = 0 Then
- MsgBox("Se ha creado correctamente")
- ElseIf nuevoPartner.GetByKey(edCodigo.Text) <> 0 Then
- MsgBox("El registro ya existe; actualizando teléfono")
- nuevoPartner.Phone1 = "1234567"
- nuevoPartner.Update()
- Else
- Dim intError As Integer
- Dim strError As String = ""
- oCompany.GetLastError(intError, strError)
- MsgBox("Se ha producido un error: " & intError.ToString & "- " & strError)
- End If
- End Sub
- '
- 'Su botón ^
- Private Sub botonCrear_Click(sender As Object, e As EventArgs) Handles botonCrear.Click
- CrearPartner()
- End Sub
- '
- 'Obtener datos de la BBDD de acuerdo a la query escrita en la caja de texto
- Private Sub ObtenerDatos()
- 'oRecord se inicializa aquí porque se usa en otro método
- oRecord = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
- oRecord.DoQuery(field_querySQL.Text)
- End Sub
- '
- 'Mostrar los datos obtenidos en el método anterior en las cajas de texto
- Private Sub VisualizarDatos()
- field_queryRes1.Text = oRecord.Fields.Item(0).Value
- field_queryRes2.Text = oRecord.Fields.Item(1).Value
- If oRecord.Fields.Item(0).Value = "" Or oRecord.Fields.Item(0).Value = Nothing Then
- MsgBox("OJO: el primer valor obtenido está vacío")
- End If
- End Sub
- '
- 'Su botón ^ (dos métodos)
- Private Sub runQuery_Click(sender As Object, e As EventArgs) Handles runQuery.Click
- ObtenerDatos()
- VisualizarDatos()
- End Sub
- '
- Private Sub queryPrev_Click(sender As Object, e As EventArgs) Handles queryPrev.Click
- If oRecord.BoF Then
- oRecord.MoveLast()
- Else
- oRecord.MovePrevious()
- End If
- VisualizarDatos()
- End Sub
- '
- Private Sub querySig_Click(sender As Object, e As EventArgs) Handles querySig.Click
- If oRecord.EoF Then
- oRecord.MoveFirst()
- Else
- oRecord.MoveNext()
- End If
- VisualizarDatos()
- End Sub
- '
- Private Sub CrearPedido()
- 'Declarar variable de objeto de docuemento GENÉRICO
- Dim oDocumento As SAPbobsCOM.Documents
- 'Inicializar objeto de documento específico (oOrders en este caso; un pedido)
- oDocumento = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders)
- ' Ojo con esto. Primero creamos una Card, y en ella creamos 2 líneas.
- ' La primera se sobreentiende; la segunda se crea al ejecutar Add().
- ' Las líneas residen en la Card, que se crea ahora:
- oDocumento.CardCode = "TEST001"
- oDocumento.DocDueDate = Date.Today
- oDocumento.Series = 71
- oDocumento.Lines.ItemCode = "ART 01"
- oDocumento.Lines.Quantity = 1
- oDocumento.Lines.UnitPrice = 1.5
- oDocumento.Lines.Add() ' Nueva línea; la inicial se da por sentada
- oDocumento.Lines.ItemCode = "ART 02"
- oDocumento.Lines.Quantity = 2
- oDocumento.Lines.UnitPrice = 1.5
- 'Comprobación de siempre de si se ha añadido correctamente (comprobación + adición juntos).
- If oDocumento.Add = 0 Then
- Dim codPedido As String = ""
- oCompany.GetNewObjectCode(codPedido) ' obtener código de recién creado
- MsgBox("Pedido creado correctamente, con código " & codPedido)
- Else
- Dim intError As Integer
- Dim strError As String = ""
- oCompany.GetLastError(intError, strError)
- MsgBox("Se ha producido un error al crear el pedido: " & intError.ToString & "- " & strError)
- End If
- End Sub
- '
- 'Crear pedido y albarán a la vez.
- Private Sub CrearPedidoConAlbarán()
- 'Declarar variable de tipo "documento genérico"
- Dim oDocumento As SAPbobsCOM.Documents
- 'Inicializar objeto de documento específico (oOrders en este caso; un pedido)
- oDocumento = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders)
- ' Ojo con esto. Primero creamos una Card, y en ella creamos 2 líneas.
- ' La primera se sobreentiende; la segunda se crea al ejecutar Add().
- ' Las líneas residen en la Card, que se crea ahora:
- oDocumento.CardCode = "C20000"
- oDocumento.DocDueDate = Date.Today
- oDocumento.Series = 70
- oDocumento.Lines.ItemCode = "ARTI 01"
- oDocumento.Lines.Quantity = 1
- oDocumento.Lines.UnitPrice = 1.5
- oDocumento.Lines.Add() ' Nueva línea; la inicial se da por sentada
- oDocumento.Lines.ItemCode = "ARTI 02"
- oDocumento.Lines.Quantity = 2
- oDocumento.Lines.UnitPrice = 1.5
- 'Hasta aquí todo igual; pero ahora, si se crea un pedido nuevo correctamente, creamos a la vez su albarán usando sus datos:
- If oDocumento.Add = 0 Then
- 'Obtener código de recién creado
- 'Dim numDoc As String = ""
- Dim codPedido As String = ""
- oCompany.GetNewObjectCode(codPedido)
- MsgBox("Pedido creado correctamente con número: " & codPedido)
- 'Generar albarán.
- If oDocumento.GetByKey(codPedido) Then '¿Esta comprobación pa qué?
- 'Declarar variable de documento genérico.
- Dim oAlbaran As SAPbobsCOM.Documents
- 'Establecer tipo específico de documento (en este caso, oDeliveryNotes; albarán)
- oAlbaran = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes)
- 'Establecer el CardCode del albarán igual que el del pedido recién creado, vinculándolos
- oAlbaran.CardCode = oDocumento.CardCode
- 'Pasar en serie por todas las líneas del pedido recién creado, y meterlas en ese orden en el albarán
- For i As Integer = 0 To oDocumento.Lines.Count - 1
- oDocumento.Lines.SetCurrentLine(i) 'línea actual
- 'Saltar a la siguiente línea al empezar excepto si es la primera
- If i > 0 Then
- oAlbaran.Lines.Add()
- End If
- 'Ojo con esto: los tres tipos que deben coincidir para vincular correctamente pedido y albarán.
- oAlbaran.Lines.BaseEntry = codPedido
- oAlbaran.Lines.BaseType = SAPbobsCOM.BoObjectTypes.oOrders
- oAlbaran.Lines.BaseLine = oDocumento.Lines.LineNum
- 'Si la cantidad (stock) de una línea > 1 (¿por qué no 0?), restar una unidad del mismo en el pedido
- If oDocumento.Lines.Quantity > 1 Then
- oAlbaran.Lines.Quantity = oDocumento.Lines.Quantity - 1
- End If
- Next
- 'Comprobación + adición del documento (albarán en este caso) como siempre.
- If oAlbaran.Add = 0 Then
- MsgBox("Albarán creado correctamente.")
- Else
- Dim intError As Integer
- Dim strError As String = ""
- oCompany.GetLastError(intError, strError)
- MsgBox("Se ha producido un error al crear el albarán: " & intError.ToString & "- " & strError)
- End If
- End If
- Else '¡esto es del pedido!
- Dim intError As Integer
- Dim strError As String = ""
- oCompany.GetLastError(intError, strError)
- MsgBox("Se ha producido un error al crear el pedido: " & intError.ToString & "- " & strError)
- End If
- End Sub
- '
- 'Su botón ^
- Private Sub butt_crearPedido_Click(sender As Object, e As EventArgs) Handles butt_crearPedido.Click
- CrearPedidoConAlbarán()
- End Sub
- '
- 'Crear pedido usando la BBDD
- Private Sub CrearPedidoDesdeDB()
- 'Inicializar un RecordSet. La variable en sí está declarada fuera de scope por algún motivo.
- oRecord = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
- 'Poblar el RecordSet con los resultados de la query especificada.
- oRecord.DoQuery("SELECT A.DocEntry, a.CardCode, b.LineNum, b.ItemCode, b.Quantity FROM ORDR A INNER JOIN RDR1 B ON A.DocEntry = B.DocEntry WHERE DocNum = " & numPedido.Text)
- 'Hasta llegar al final de las entradas obtenidas con la query,
- If Not oRecord.EoF Then
- oRecord.MoveFirst()
- 'Declarar variable de albarán; como siempre, primero documento genérico, luego se especifica albarán (oDeliveryNotes)
- Dim oAlbaran As SAPbobsCOM.Documents
- oAlbaran = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes)
- 'Establecer el CardCode del albarán igual al del campo obtenido con la query SQL, vinculando el albarán al pedido original
- oAlbaran.CardCode = oRecord.Fields.Item("CardCode").Value
- 'Esto es un "contador" de si estamos en la primera línea o ya no ¿por qué no bool?
- Dim sPrimeraLinea As String = "sí"
- While Not oRecord.EoF
- If sPrimeraLinea = "sí" Then 'esto es igual que antes; solo hacer Add() tras la primera línea
- sPrimeraLinea = "no"
- Else
- oAlbaran.Lines.Add()
- End If
- 'Ojo con esto: los tres tipos que deben coincidir para vincular correctamente pedido y albarán.
- oAlbaran.Lines.BaseEntry = oRecord.Fields.Item("DocEntry").Value
- oAlbaran.Lines.BaseType = SAPbobsCOM.BoObjectTypes.oOrders
- oAlbaran.Lines.BaseLine = oRecord.Fields.Item("LineNum").Value
- 'Finalmente, saltar al siguiente valor de los resultados de la query SQL
- oRecord.MoveNext()
- End While
- If oAlbaran.Add = 0 Then
- MsgBox("Albarán creado correctamente con datos de la BBDD.")
- Else
- Dim intError As Integer
- Dim strError As String = ""
- oCompany.GetLastError(intError, strError)
- MsgBox("Se ha producido un error al crear el albarán con datos de la BBDD: " & intError.ToString & "- " & strError)
- End If
- End If
- End Sub
- '
- End Class
Add Comment
Please, Sign In to add comment