Advertisement
Guest User

Untitled

a guest
Oct 2nd, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.28 KB | None | 0 0
  1. Public Class Form1
  2.  
  3. Dim oCompany As New SAPbobsCOM.Company
  4. Dim oRecord As SAPbobsCOM.Recordset
  5.  
  6. Private Sub Conectar()
  7.  
  8. Dim returnCode As Integer
  9.  
  10. oCompany.Server = "VMSAP91"
  11. oCompany.LicenseServer = "VMSAP91:30000"
  12. oCompany.CompanyDB = "SBODEMOES"
  13. oCompany.UserName = "manager"
  14. oCompany.Password = "inforges"
  15.  
  16. oCompany.DbUserName = "sa"
  17. oCompany.DbPassword = "sa"
  18. oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2014
  19.  
  20. returnCode = oCompany.Connect
  21.  
  22. If returnCode <> 0 Then
  23. Dim intError As Integer
  24. Dim strError As String = ""
  25.  
  26. oCompany.GetLastError(intError, strError)
  27.  
  28. MsgBox("Se ha producido un error: " & intError.ToString & "- " & strError)
  29. Else
  30. MsgBox("Conectado a" & oCompany.CompanyName)
  31. Me.Text = Me.Text & ": Conectado"
  32. End If
  33.  
  34. End Sub
  35.  
  36. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
  37. Conectar()
  38. End Sub
  39.  
  40. Private Sub CrearPartner()
  41.  
  42. 'Declarar variable (tipo SAPbobsCOM.BusinessPartners)
  43. Dim nuevoPartner As SAPbobsCOM.BusinessPartners
  44.  
  45. 'Escribir variable (obtener objeto a través de objeto Company)
  46. nuevoPartner = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners)
  47.  
  48. 'Inicializar variables del objeto BusinessPartner con los valores de Card de las cajas de texto
  49. 'y con un tipo predifinido en código de CardType
  50. nuevoPartner.CardCode = edCodigo.Text
  51. nuevoPartner.CardName = edNombre.Text
  52. nuevoPartner.CardType = SAPbobsCOM.BoCardTypes.cCustomer
  53.  
  54. 'Inicializar el field custom
  55. nuevoPartner.UserFields.Fields.Item("U_IFG_CURSO").Value = "Valor de prueba"
  56.  
  57. 'Si se ha creado correctamente (SE LLAMA A LA VEZ QUE SE COMPRUEBA), mostrar mensaje;
  58. 'Si por el contrario el registro ya existe, actualizar su número de teléfono con "1234567" y actualizar el objeto
  59. 'Por último, mostrar el error que se debe haber producido si se ha llegado hasta aquí
  60. If nuevoPartner.Add = 0 Then
  61.  
  62. MsgBox("Se ha creado correctamente")
  63.  
  64. ElseIf nuevoPartner.GetByKey(edCodigo.Text) <> 0 Then
  65.  
  66. MsgBox("El registro ya existe; actualizando teléfono")
  67.  
  68. nuevoPartner.Phone1 = "1234567"
  69. nuevoPartner.Update()
  70.  
  71. Else
  72.  
  73. Dim intError As Integer
  74. Dim strError As String = ""
  75. oCompany.GetLastError(intError, strError)
  76. MsgBox("Se ha producido un error: " & intError.ToString & "- " & strError)
  77.  
  78. End If
  79.  
  80. End Sub
  81.  
  82. '
  83.  
  84. 'Su botón ^
  85. Private Sub botonCrear_Click(sender As Object, e As EventArgs) Handles botonCrear.Click
  86. CrearPartner()
  87. End Sub
  88.  
  89. '
  90.  
  91. 'Obtener datos de la BBDD de acuerdo a la query escrita en la caja de texto
  92. Private Sub ObtenerDatos()
  93.  
  94. 'oRecord se inicializa aquí porque se usa en otro método
  95.  
  96. oRecord = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
  97. oRecord.DoQuery(field_querySQL.Text)
  98.  
  99. End Sub
  100.  
  101. '
  102.  
  103. 'Mostrar los datos obtenidos en el método anterior en las cajas de texto
  104. Private Sub VisualizarDatos()
  105.  
  106. field_queryRes1.Text = oRecord.Fields.Item(0).Value
  107. field_queryRes2.Text = oRecord.Fields.Item(1).Value
  108.  
  109. If oRecord.Fields.Item(0).Value = "" Or oRecord.Fields.Item(0).Value = Nothing Then
  110. MsgBox("OJO: el primer valor obtenido está vacío")
  111. End If
  112.  
  113. End Sub
  114.  
  115. '
  116.  
  117. 'Su botón ^ (dos métodos)
  118. Private Sub runQuery_Click(sender As Object, e As EventArgs) Handles runQuery.Click
  119. ObtenerDatos()
  120. VisualizarDatos()
  121. End Sub
  122.  
  123. '
  124.  
  125. Private Sub queryPrev_Click(sender As Object, e As EventArgs) Handles queryPrev.Click
  126.  
  127. If oRecord.BoF Then
  128. oRecord.MoveLast()
  129. Else
  130. oRecord.MovePrevious()
  131. End If
  132.  
  133. VisualizarDatos()
  134.  
  135. End Sub
  136.  
  137. '
  138.  
  139. Private Sub querySig_Click(sender As Object, e As EventArgs) Handles querySig.Click
  140.  
  141. If oRecord.EoF Then
  142. oRecord.MoveFirst()
  143. Else
  144. oRecord.MoveNext()
  145. End If
  146.  
  147. VisualizarDatos()
  148.  
  149. End Sub
  150.  
  151. '
  152.  
  153. Private Sub CrearPedido()
  154.  
  155. 'Declarar variable de objeto de docuemento GENÉRICO
  156. Dim oDocumento As SAPbobsCOM.Documents
  157.  
  158. 'Inicializar objeto de documento específico (oOrders en este caso; un pedido)
  159. oDocumento = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders)
  160.  
  161. ' Ojo con esto. Primero creamos una Card, y en ella creamos 2 líneas.
  162. ' La primera se sobreentiende; la segunda se crea al ejecutar Add().
  163. ' Las líneas residen en la Card, que se crea ahora:
  164. oDocumento.CardCode = "TEST001"
  165. oDocumento.DocDueDate = Date.Today
  166. oDocumento.Series = 71
  167.  
  168. oDocumento.Lines.ItemCode = "ART 01"
  169. oDocumento.Lines.Quantity = 1
  170. oDocumento.Lines.UnitPrice = 1.5
  171.  
  172. oDocumento.Lines.Add() ' Nueva línea; la inicial se da por sentada
  173.  
  174. oDocumento.Lines.ItemCode = "ART 02"
  175. oDocumento.Lines.Quantity = 2
  176. oDocumento.Lines.UnitPrice = 1.5
  177.  
  178. 'Comprobación de siempre de si se ha añadido correctamente (comprobación + adición juntos).
  179. If oDocumento.Add = 0 Then
  180.  
  181. Dim codPedido As String = ""
  182.  
  183. oCompany.GetNewObjectCode(codPedido) ' obtener código de recién creado
  184.  
  185. MsgBox("Pedido creado correctamente, con código " & codPedido)
  186.  
  187. Else
  188.  
  189. Dim intError As Integer
  190. Dim strError As String = ""
  191. oCompany.GetLastError(intError, strError)
  192. MsgBox("Se ha producido un error al crear el pedido: " & intError.ToString & "- " & strError)
  193.  
  194. End If
  195.  
  196. End Sub
  197.  
  198. '
  199.  
  200. 'Crear pedido y albarán a la vez.
  201. Private Sub CrearPedidoConAlbarán()
  202.  
  203. 'Declarar variable de tipo "documento genérico"
  204. Dim oDocumento As SAPbobsCOM.Documents
  205.  
  206. 'Inicializar objeto de documento específico (oOrders en este caso; un pedido)
  207. oDocumento = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders)
  208.  
  209. ' Ojo con esto. Primero creamos una Card, y en ella creamos 2 líneas.
  210. ' La primera se sobreentiende; la segunda se crea al ejecutar Add().
  211. ' Las líneas residen en la Card, que se crea ahora:
  212. oDocumento.CardCode = "C20000"
  213. oDocumento.DocDueDate = Date.Today
  214. oDocumento.Series = 70
  215.  
  216. oDocumento.Lines.ItemCode = "ARTI 01"
  217. oDocumento.Lines.Quantity = 1
  218. oDocumento.Lines.UnitPrice = 1.5
  219.  
  220. oDocumento.Lines.Add() ' Nueva línea; la inicial se da por sentada
  221.  
  222. oDocumento.Lines.ItemCode = "ARTI 02"
  223. oDocumento.Lines.Quantity = 2
  224. oDocumento.Lines.UnitPrice = 1.5
  225.  
  226. 'Hasta aquí todo igual; pero ahora, si se crea un pedido nuevo correctamente, creamos a la vez su albarán usando sus datos:
  227. If oDocumento.Add = 0 Then
  228.  
  229. 'Obtener código de recién creado
  230. 'Dim numDoc As String = ""
  231. Dim codPedido As String = ""
  232.  
  233. oCompany.GetNewObjectCode(codPedido)
  234.  
  235. MsgBox("Pedido creado correctamente con número: " & codPedido)
  236.  
  237. 'Generar albarán.
  238.  
  239. If oDocumento.GetByKey(codPedido) Then '¿Esta comprobación pa qué?
  240.  
  241. 'Declarar variable de documento genérico.
  242. Dim oAlbaran As SAPbobsCOM.Documents
  243.  
  244. 'Establecer tipo específico de documento (en este caso, oDeliveryNotes; albarán)
  245. oAlbaran = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes)
  246.  
  247. 'Establecer el CardCode del albarán igual que el del pedido recién creado, vinculándolos
  248. oAlbaran.CardCode = oDocumento.CardCode
  249.  
  250. 'Pasar en serie por todas las líneas del pedido recién creado, y meterlas en ese orden en el albarán
  251. For i As Integer = 0 To oDocumento.Lines.Count - 1
  252.  
  253. oDocumento.Lines.SetCurrentLine(i) 'línea actual
  254.  
  255. 'Saltar a la siguiente línea al empezar excepto si es la primera
  256. If i > 0 Then
  257. oAlbaran.Lines.Add()
  258. End If
  259.  
  260. 'Ojo con esto: los tres tipos que deben coincidir para vincular correctamente pedido y albarán.
  261. oAlbaran.Lines.BaseEntry = codPedido
  262. oAlbaran.Lines.BaseType = SAPbobsCOM.BoObjectTypes.oOrders
  263. oAlbaran.Lines.BaseLine = oDocumento.Lines.LineNum
  264.  
  265. 'Si la cantidad (stock) de una línea > 1 (¿por qué no 0?), restar una unidad del mismo en el pedido
  266. If oDocumento.Lines.Quantity > 1 Then
  267. oAlbaran.Lines.Quantity = oDocumento.Lines.Quantity - 1
  268. End If
  269.  
  270. Next
  271.  
  272. 'Comprobación + adición del documento (albarán en este caso) como siempre.
  273. If oAlbaran.Add = 0 Then
  274.  
  275. MsgBox("Albarán creado correctamente.")
  276.  
  277. Else
  278.  
  279. Dim intError As Integer
  280. Dim strError As String = ""
  281. oCompany.GetLastError(intError, strError)
  282. MsgBox("Se ha producido un error al crear el albarán: " & intError.ToString & "- " & strError)
  283.  
  284. End If
  285.  
  286. End If
  287.  
  288. Else '¡esto es del pedido!
  289.  
  290. Dim intError As Integer
  291. Dim strError As String = ""
  292.  
  293. oCompany.GetLastError(intError, strError)
  294.  
  295. MsgBox("Se ha producido un error al crear el pedido: " & intError.ToString & "- " & strError)
  296.  
  297. End If
  298.  
  299. End Sub
  300.  
  301. '
  302.  
  303. 'Su botón ^
  304. Private Sub butt_crearPedido_Click(sender As Object, e As EventArgs) Handles butt_crearPedido.Click
  305. CrearPedidoConAlbarán()
  306. End Sub
  307.  
  308. '
  309.  
  310. 'Crear pedido usando la BBDD
  311. Private Sub CrearPedidoDesdeDB()
  312.  
  313. 'Inicializar un RecordSet. La variable en sí está declarada fuera de scope por algún motivo.
  314. oRecord = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
  315.  
  316. 'Poblar el RecordSet con los resultados de la query especificada.
  317. 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)
  318.  
  319. 'Hasta llegar al final de las entradas obtenidas con la query,
  320. If Not oRecord.EoF Then
  321.  
  322. oRecord.MoveFirst()
  323.  
  324. 'Declarar variable de albarán; como siempre, primero documento genérico, luego se especifica albarán (oDeliveryNotes)
  325. Dim oAlbaran As SAPbobsCOM.Documents
  326. oAlbaran = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes)
  327.  
  328. 'Establecer el CardCode del albarán igual al del campo obtenido con la query SQL, vinculando el albarán al pedido original
  329. oAlbaran.CardCode = oRecord.Fields.Item("CardCode").Value
  330.  
  331. 'Esto es un "contador" de si estamos en la primera línea o ya no ¿por qué no bool?
  332. Dim sPrimeraLinea As String = "sí"
  333.  
  334. While Not oRecord.EoF
  335.  
  336. If sPrimeraLinea = "sí" Then 'esto es igual que antes; solo hacer Add() tras la primera línea
  337.  
  338. sPrimeraLinea = "no"
  339.  
  340. Else
  341.  
  342. oAlbaran.Lines.Add()
  343.  
  344. End If
  345.  
  346. 'Ojo con esto: los tres tipos que deben coincidir para vincular correctamente pedido y albarán.
  347. oAlbaran.Lines.BaseEntry = oRecord.Fields.Item("DocEntry").Value
  348. oAlbaran.Lines.BaseType = SAPbobsCOM.BoObjectTypes.oOrders
  349. oAlbaran.Lines.BaseLine = oRecord.Fields.Item("LineNum").Value
  350.  
  351. 'Finalmente, saltar al siguiente valor de los resultados de la query SQL
  352. oRecord.MoveNext()
  353.  
  354. End While
  355.  
  356. If oAlbaran.Add = 0 Then
  357.  
  358. MsgBox("Albarán creado correctamente con datos de la BBDD.")
  359.  
  360. Else
  361.  
  362. Dim intError As Integer
  363. Dim strError As String = ""
  364. oCompany.GetLastError(intError, strError)
  365. MsgBox("Se ha producido un error al crear el albarán con datos de la BBDD: " & intError.ToString & "- " & strError)
  366.  
  367. End If
  368.  
  369. End If
  370.  
  371. End Sub
  372.  
  373. '
  374.  
  375. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement