Estimados,
Les dejo este codigo en Visual Basic.NET para que puedan cambiar el folio de una factura que por error se le haya asignado, o porque se saltaron algun correlativo, etc.
Este metodo de modificacion usando en DI API de SBO es legal, no como el Update desde SQL.
Para usarlo deben seguir simples pasos.
1) Descargar Visual Basic, puede ser la version EXPRESS, o si ya tienen Visual Studio no lo hagan.
2) Inicien un nuevo proyecto de tipo CONSOLA
3) En la pestaña proyecto --> agregar referencias --> COM --> SAP Business one DI API 8.81 (si tienen 8.8 o 2007 aparecera la version que tengan)
4) Antes de pegar el codigo, ejecuten el proyecto en blanco, luego de eso pegan el siguiente codigo
Module Modificar_folio Sub main() 'Definir variables Dim oCompany As SAPbobsCOM.Company Dim lRetCode, ErrorCode As Long Dim ErrorMessage As String 'Iniciar objeto de la compañia oCompany = New SAPbobsCOM.Company 'Definir datos de la coneccion oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008 //Tipo de BD oCompany.DbUserName = "sa" oCompany.DbPassword = "*****" //Contraseña usuairo SA oCompany.Server = "SERVER" //IP o servidor de SQL oCompany.CompanyDB = "SBODemoCL" //BASE DE DATOS oCompany.UserName = "manager" oCompany.Password = "******" //contraseña usuario manager oCompany.language = SAPbobsCOM.BoSuppLangs.ln_English //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() Dim Retval As Long Dim Document As SAPbobsCOM.Documents Document = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices) If Document.GetByKey(/*DocEntry del documento*/) = True Then Document.FolioNumber = /*Folio que asignaras*/ Document.FolioPrefixString = "/*Prefijo del folio*/" Retval = Document.Update() Else MsgBox("No se encontraron registros") End If Call oCompany.GetLastError(ErrorCode, ErrorMessage) If (lRetCode != 0) Then //cambienlo por el otro operador no es igual MsgBox("Falló la conección: " + Str(ErrorCode) + "," + ErrorMessage) End If If (Retval != 0) Then //cambienlo por el otro operador no es igual MsgBox("Falló la actualización: " + Str(ErrorCode) + "," + ErrorMessage) End If End Sub
End Module
5) Luego solo resta colocar los datos que cambiaremos
If Document.GetByKey(5556) -- DocEntry de la factura
Document.FolioNumber = 445 -- Folio a corregir
Document.FolioPrefixString = "FC" -- Prefijo
Luego ejecutar y listo
Espero les sirva y sea una pequeña introduccion a lo que es el SDK de SBO.
Saludos