domingo, 26 de marzo de 2023
Inventarios - Lotes en Transferencias de Stock, Facturas. Etc. (Registro histórico)
This SqlTransaction has completed; it is no longer usable
lunes, 13 de marzo de 2023
Incorrect sintaxis near the keyword for
Hola!; ¿Qué tal?,
Les traigo ahora un error "incorrect sintaxis near the keyword for" el cual se me presento al utilizar el SAPbobsCOM.Recordset, lo problemático de esto sucede por que en apariencia la consulta estaba bien y me corría perfectamente en SQL Server, investigando supe que este objeto no reconoce la sintaxis tal cual la hacemos para el motor de la BD, en mi caso fue el punto y coma que estaba de màs, ejemplo: oRecordSet.DoQuery("SELECT * from OCRD;");
En conclusión veremos este error cuando algo en nuestra consulta no lo este interpretando de manera correcta el DoQuery, así que cuidado con eso.
¡Saludos!
domingo, 12 de marzo de 2023
Method not found: 'Void SAPConector.DTO.DTOIncomingPayments.set_ObjectType(SAPbobsCOM.BoObjectTypes)'
¿Cómo están?, les traigo el error siguiente que me dio por un rato dolor de cabeza: Method not found: 'Void SAPConector.DTO.DTOIncomingPayments.set_ObjectType(SAPbobsCOM.BoObjectTypes)'.
Este apareció una vez que mi aplicación la pase desde mi ambiente de desarrollo a mi ambiente de pruebas, este error se mostraba en tiempo de ejecución, a la mitad del proceso lo enviaba y no terminaba la tarea.
La solución después de investigar y ver varios portales que no me dieron la respuesta especifica pero si el camino a seguir para resolverlo fue esta:
ANTES Entremos en contexto:
Mi proyecto hace referencia a una dll que ocupa la misma dll que también ocupo en mi proyecto principal en mi caso la de SAP B1 SAPbobsCOM.
1er Error: Los tipos de datos de mi librería cambiaban a Object al hacer referencia a ella desde mi proyecto principal, tipos de datos que comentamos al inicio pertenecen a la dll SAPbobsCOM, de hecho el error muestra un ejemplo: SAPbobsCOM.BoObjectTypes.
esto hacía que cuando llamaba la librería (dll) a mi proyecto principal los tipos de algunos atributos no se mantuvieran en su forma original si no que se convirtieran en tipos object por lo que mi proyecto principal no los reconocía y me marcaba error de compilación.
Solución al 1er error: Coloque en False Embed Interop Types en las propiedades de la referencia de mi proyecto de librería.
Solución al 2do error: De igual manera en que coloque Embed en Interop Types de mi librería, también debí colocarlo en false en mi proyecto principal:
3er. Error: al hacer esto me marcaba el siguiente error al ejecutar mi programa: Retrieving the COM class factory for component with CLSID {632F4591-AA62-4219-8FB6-22BCF5F60100} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) .
Solución al 3er. Error: Debi quitar el check en Prefer 32-bit y tomar la opción de x64 en Platform target, esto por que inicialmente estaba chequeado y el target estaba en Any, cabe mencionar que el servidor donde ejecutaba mi solución era de 64 bits.
jueves, 9 de marzo de 2023
Retrieving the COM class factory for component with CLSID {XXXX} Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
El siguiente error se me presento al pasar del ambiente de desarrollo (donde todo funcionaba correctamente) al ambiente de pruebas: Retrieving the COM class factory for component with CLSID {632F4591-AA62-4219-8FB6-22BCF5F60100} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Después de tanto buscar el error lo solucione quitando el siguiente check del proyecto en Visual Studio, ya que esto hacia que le diera preferencia a 32bits al compilar y donde llevaba mi desarrollo era a un ambiente de 64bits.
Saludos.
martes, 14 de febrero de 2023
La suma de los valores registrados en el campo ImpPagado de los apartados DoctoRelacionado no es menor o igual que el valor del campo Monto
Hola, ¿Cómo han estado?, hoy les traigo la solución al error "La suma de los valores registrados en el campo ImpPagado de los apartados DoctoRelacionado no es menor o igual que el valor del campo Monto", la cual se produce generalmente por el calculo distinto que hace nuestro sistema respecto al calculo que hace el SAT en el monto del pago.
En el caso especifico de SAP B1, hace el calculo del monto total del pago usando 10 decimales, lo que el SAT hace con menos, provocando que los cálculos en ocasiones no cuadre y envíe el error, siendo un dolor constante de cabeza para los desarrolladores como para el cliente.
La buena noticia es que este enero del 2023 se libero la nueva disposición para el llenado del atributo EquivalenciaDR del complemento de pago para que permita hasta 10 decimales, este atributo es con el que se hace el calculo del monto total que tendría que cuadrar con el monto total de SAP B1, aquí les dejo el enlace directamente a la documentación del SAT: Documentación complemento de pago
Entonces teniendo 10 decimales permitidos las cantidades ahora cuadran, así que ya puedes hacer el cambio en tu desarrollo, hazlo y quita por fin este error en el timbrado.
😊Saludos.
lunes, 5 de diciembre de 2022
Formato "yyyy-MM-ddT15:00:00.000Z" en DateTime
Al consumir una API el response me devolvía estatus 200 pero no me devolvía la información que necesitaba, ¿el problema?... el formato de fecha que estaba enviando para filtrar la información, la API solicitaba cumplir con el siguiente formato: "2022-12-05T15:00:00.000Z", la solución fue formatearla de esta manera con el tipo de dato DateTime:
DateTime.Today.AddDays(-1).ToString("yyyy'-'MM'-'ddTHH':'mm':'ss'.00Z'")
Lo subrayado aquí arriba es lo importante, y Vualá!! mi información apareció!.
A continuación dejo la liga para ver más formatos en la documentación de Microsoft: Hours documentation format
¡Saludos!