on 02-05-2015 2:29 PM
Hola buenas,
He desarrollado una aplicación TPV para vender productos (libros) en Stands en ferias donde no suelen tener conexión a internet,...
La aplicación (Stands TPV) mediante lector de código de barras o por teclado lee los artículos y genera los tickets de compras, devoluciones, cierres de caja diarios, informes...
La finalidad de esta aplicación es que cuando se cierra una feria, esta, genera una serie de plantillas con todo lo necesario para subirlo a SAP por Data Transfer (DTW)..., estas ferías cada vez son más comunes y pierdo mucho tiempo validando los procesos y subiendo por DTW la facturación de las ferias.
Mi propósito es mediante otra aplicación vb.net utilizando SapBobcom.dll que simule una subida de boletas, notas de crédito, pagos,...
Esto ya lo tengo mas o menos encaminado pero tengo la necesidad de hacer una simulación previa antes de hacer la subida y si falla algo que no suba nada de nada... tal como lo hace la simulación por DTW.
Mi duda es alguien si sabe como hacer esta simulación previa a la subida de documentos (facturas) y en el caso que falle algo, que no se actualice nada. Mi idea inicial era hacer Listas y poner una list.add() para que lo suba todo o nada pero desconozco el proceso y si es posible..
Sería algo como hacer un rollback en un proceso de sql server o un método de simulación mediante sapbobscom.dll o sabéis si es posible enlazarlo todo en lista y hacer una ret = lista.add() por ejemplo?
Espero haberme explicado!!
Adjunto un código simple de subida de una factura (esto lo tengo más elaborado para que cargue de las plantillas generadas pero tengo que ir uno a uno...) :
'Definir variables
Dim oCompany As New SAPbobsCOM.Company
Dim lRetCode, ErrorCode As Long
Dim ErrorMessage As String
Dim folio, nextfolio As String
Dim Retval As Long
Dim oDoc As SAPbobsCOM.Documents
Dim DocLines As SAPbobsCOM.Document_Lines
Try
'Iniciar objeto de la compañia
'oCompany = New SAPbobsCOM.Company
'Definir datos de la coneccion
oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2005 'Tipo de BD
oCompany.DbUserName = "sa"
oCompany.DbPassword = "********" 'Contraseña usuairo SA
oCompany.Server = "SERV" 'IP o servidor de SQL
oCompany.CompanyDB = "VVPeru_STDJOR" 'BASE DE DATOS
oCompany.UserName = "manager"
oCompany.Password = "*****" 'contraseña usuario manager
oCompany.language = SAPbobsCOM.BoSuppLangs.ln_Spanish_La 'lenguaje de SQL, si esta en español usa SAPbobsCOM.BoSuppLangs.ln_Spanish
oCompany.UseTrusted = False
'Conectar a la base de SAP B1
lRetCode = oCompany.Connect()
If lRetCode = 0 Then
'Document = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices)
oDoc = oCompany.GetBusinessObject(BoObjectTypes.oInvoices)
oDoc.CardCode = "J00984"
oDoc.DocDate = Today
oDoc.DocDueDate = Today
oDoc.CardCode = 24
oDoc.Series = 107
oDoc.Lines.ItemCode = "000119"
oDoc.Lines.Quantity = 1
oDoc.Lines.SalesPersonCode = 24
oDoc.Lines.WarehouseCode = "03"
If oDoc.Add <> 0 Then
MsgBox("Error " + oCompany.GetLastErrorDescription())
Else
MsgBox("Good")
Dim newCode As String = oCompany.GetNewObjectKey()
MsgBox(newCode)
End If
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Mucahs gracias y saludos!!
Jorge
Iepppp! He encontrado una solición mediante el método oCompany.StartTransaction()
Aquí os paso mi código para el que le pueda interesar!
Try
'Iniciar objeto de la compañia
'oCompany = New SAPbobsCOM.Company
'Definir datos de la coneccion
oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2005 'Tipo de BD
oCompany.DbUserName = "sa"
oCompany.DbPassword = "********" 'Contraseña usuairo SA
oCompany.Server = "SERV" 'IP o servidor de SQL
oCompany.CompanyDB = "VVPeru_STDJOR" 'BASE DE DATOS
oCompany.UserName = "manager"
oCompany.Password = "*******" 'contraseña usuario manager
oCompany.language = SAPbobsCOM.BoSuppLangs.ln_Spanish_La 'lenguaje de SQL, si esta en español usa SAPbobsCOM.BoSuppLangs.ln_Spanish
oCompany.UseTrusted = False
'Conectar a la base de SAP B1
lRetCode = oCompany.Connect()
If lRetCode = 0 Then
oCompany.StartTransaction()
'Document = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices)
oDoc = oCompany.GetBusinessObject(BoObjectTypes.oInvoices)
oDoc.CardCode = "J00984"
oDoc.FolioPrefixString = "12"
oDoc.FolioNumber = "58950"
oDoc.NumAtCard = "12-020-58950"
oDoc.DocDate = Today
oDoc.DocDueDate = Today
oDoc.TaxDate = Today
oDoc.Series = 107
oDoc.DocumentSubType = BoDocumentSubType.bod_Bill
'oDoc.Series = "12-020"
oDoc.Comments = "Prueba subida Boleta : 6 - app UtilsSAPBobsCOM - " & oDoc.NumAtCard
oDoc.SalesPersonCode = 24
oDoc.DocType = BoDocumentTypes.dDocument_Items
oDoc.Lines.ItemCode = "000119"
oDoc.Lines.Quantity = 1
oDoc.Lines.WarehouseCode = "03"
oDoc.Lines.UnitPrice = 29
oDoc.Lines.WTLiable = BoYesNoEnum.tNO
oDoc.Lines.SalesPersonCode = 24
oDoc.Lines.Add()
oDoc.Lines.ItemCode = "000132"
oDoc.Lines.Quantity = 1
oDoc.Lines.WarehouseCode = "03"
oDoc.Lines.UnitPrice = 25
oDoc.Lines.WTLiable = BoYesNoEnum.tNO
oDoc.Lines.SalesPersonCode = 24
oDoc.Lines.Add()
oDoc.Lines.ItemCode = "000133"
oDoc.Lines.Quantity = 5
oDoc.Lines.WarehouseCode = "03"
oDoc.Lines.UnitPrice = 32
oDoc.Lines.WTLiable = BoYesNoEnum.tNO
oDoc.Lines.SalesPersonCode = 24
'oDoc.Lines.Add()
ret = validaDocAdd(oCompany, oDoc)
If ret Then
oDoc.CardCode = "C00984"
oDoc.FolioPrefixString = "12"
oDoc.FolioNumber = "58951"
oDoc.NumAtCard = "12-020-58951"
oDoc.DocDate = Today
oDoc.DocDueDate = Today
oDoc.TaxDate = Today
oDoc.Series = 107
oDoc.DocumentSubType = BoDocumentSubType.bod_Bill
'oDoc.Series = "12-020"
oDoc.Comments = "Prueba subida Boleta : 7 - app UtilsSAPBobsCOM - " & oDoc.NumAtCard
oDoc.SalesPersonCode = 24
oDoc.DocType = BoDocumentTypes.dDocument_Items
oDoc.Lines.ItemCode = "000119"
oDoc.Lines.Quantity = 1
oDoc.Lines.WarehouseCode = "03"
oDoc.Lines.UnitPrice = 29
oDoc.Lines.WTLiable = BoYesNoEnum.tNO
oDoc.Lines.SalesPersonCode = 24
oDoc.Lines.Add()
ret = validaDocAdd(oCompany, oDoc)
End If
'Si todo es ok palante sinó to patrás!!!
If ret Then
oCompany.EndTransaction(BoWfTransOpt.wf_Commit)
Else
'oCompany.EndTransaction(BoWfTransOpt.wf_RollBack) 'Lanza una exception ya que no se ha hecho ningún commit!
oCompany.Disconnect()
End If
Else
ret = False
End If
Catch ex As Exception
'oCompany.EndTransaction(BoWfTransOpt.wf_RollBack)
MsgBox("Error odoc.Add Catch.Exception : " & ex.ToString)
End Try
-----
Function validaDocAdd(ByRef oCompany, ByRef oDoc) As Boolean
Dim ret As Boolean
Try
If oDoc.Add <> 0 Then
ret = False
MsgBox("Error " + oCompany.GetLastErrorDescription())
Else
MsgBox("Good")
ret = True
Dim newCode As String = oCompany.GetNewObjectKey()
MsgBox(newCode)
End If
Catch ex As Exception
ret = False
End Try
Return ret
End Function
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
99 | |
11 | |
10 | |
6 | |
5 | |
5 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.