
DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
Cancelacion VB6 con ECODEX
-
- Mensajes: 91
- Registrado: Jue Oct 27, 2011 3:36 pm
Re: Cancelacion VB6 con ECODEX
Ok antes que todo gracias por tomarse un tiempo para leer esto y tratar de ayudarme.. ahora no quise publicar antes si no hasta estar seguro y hacer varias pruebas y estos son los resultados:
Cuando mando llamar la función de esta manera:
If CANCELARCFDext("C:\CancelarECODEX.INI", error, errorext) <> 0
MsgBox ("ERROR!! " + error + " " + errorext)
Me genera el siguiente mensaje de error (que ya es ganancia antes me decía que era correcto)
"No se puede encontrar el punto de entrada de la DLL cancelarCFDext en (ruta)" -donde ruta es la ruta donde se encuentra la DLL
y si uso la funcion GetErrorExt el equipo se sigue colgando
Alguna idea
Cuando mando llamar la función de esta manera:
If CANCELARCFDext("C:\CancelarECODEX.INI", error, errorext) <> 0
MsgBox ("ERROR!! " + error + " " + errorext)
Me genera el siguiente mensaje de error (que ya es ganancia antes me decía que era correcto)
"No se puede encontrar el punto de entrada de la DLL cancelarCFDext en (ruta)" -donde ruta es la ruta donde se encuentra la DLL
y si uso la funcion GetErrorExt el equipo se sigue colgando
Alguna idea
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Cancelacion VB6 con ECODEX
El error de "no se pudo encontrar el punto ....." es equivalente a "no se encontro la funcion CancelarCFDExt en la dll" y si no la encuentra es porque no estas accesando la DLL actualizada
Mi recomendacion es que borres TOOOODAS las CFDLib.dll que tengas en tu PC (buscalo con el buscador de windows) y despues descargues nuevamente la libreria y copies la dll en su lugar
Mi recomendacion es que borres TOOOODAS las CFDLib.dll que tengas en tu PC (buscalo con el buscador de windows) y despues descargues nuevamente la libreria y copies la dll en su lugar
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 91
- Registrado: Jue Oct 27, 2011 3:36 pm
Re: Cancelacion VB6 con ECODEX
gracias por tu respuesta...DADO escribió:El error de "no se pudo encontrar el punto ....." es equivalente a "no se encontro la funcion CancelarCFDExt en la dll" y si no la encuentra es porque no estas accesando la DLL actualizada
Mi recomendacion es que borres TOOOODAS las CFDLib.dll que tengas en tu PC (buscalo con el buscador de windows) y despues descargues nuevamente la libreria y copies la dll en su lugar
ya elimine todas las copias y actualice la libreria pero el error es el mismo algun otro consejo?
-
- Mensajes: 205
- Registrado: Sab Nov 03, 2012 11:48 am
Re: Cancelacion VB6 con ECODEX
MOGG
¿Que Windows estás usando donde compilas?
¿VB6 con que SP?
¿Utilizas carpetas con nombres largos (mas de 8 caracteres)?
¿las librerias del CFDLib y las del OpenSSL las tienes en donde está el ejecutable, o en System32 - SYSWOW64?
¿las trataste de registrar con regsvr32?
Yo estoy utilizando las funciones antiguas de la librería, pero sin poner en la memoria de la computadora, ni en los msgbox, la descripción de la cadena o el sello para no tener problemas de volcados de memoria que te bloquean sobre todo en Vista, W7 y W8, simplemente dejo que la librería grabe el XML y luego extraigo la información que requiero de ahí.
Las librerias del OpenSSL te dan problemas cuando manejas carpetas o directorios con mas de 8 caracteres e incluso hasta en carpetas de red.
En fin, son demasiadas preguntas para poder saber por donde está el error.
¿Que Windows estás usando donde compilas?
¿VB6 con que SP?
¿Utilizas carpetas con nombres largos (mas de 8 caracteres)?
¿las librerias del CFDLib y las del OpenSSL las tienes en donde está el ejecutable, o en System32 - SYSWOW64?
¿las trataste de registrar con regsvr32?
Yo estoy utilizando las funciones antiguas de la librería, pero sin poner en la memoria de la computadora, ni en los msgbox, la descripción de la cadena o el sello para no tener problemas de volcados de memoria que te bloquean sobre todo en Vista, W7 y W8, simplemente dejo que la librería grabe el XML y luego extraigo la información que requiero de ahí.
Las librerias del OpenSSL te dan problemas cuando manejas carpetas o directorios con mas de 8 caracteres e incluso hasta en carpetas de red.
En fin, son demasiadas preguntas para poder saber por donde está el error.
-
- Mensajes: 91
- Registrado: Jue Oct 27, 2011 3:36 pm
Re: Cancelacion VB6 con ECODEX
Gracias por tu respuesta y perdon por la demora de la mia...Edcoram escribió:MOGG
¿Que Windows estás usando donde compilas?
¿VB6 con que SP?
¿Utilizas carpetas con nombres largos (mas de 8 caracteres)?
¿las librerias del CFDLib y las del OpenSSL las tienes en donde está el ejecutable, o en System32 - SYSWOW64?
¿las trataste de registrar con regsvr32?
Yo estoy utilizando las funciones antiguas de la librería, pero sin poner en la memoria de la computadora, ni en los msgbox, la descripción de la cadena o el sello para no tener problemas de volcados de memoria que te bloquean sobre todo en Vista, W7 y W8, simplemente dejo que la librería grabe el XML y luego extraigo la información que requiero de ahí.
Las librerias del OpenSSL te dan problemas cuando manejas carpetas o directorios con mas de 8 caracteres e incluso hasta en carpetas de red.
En fin, son demasiadas preguntas para poder saber por donde está el error.
Ok con respecto a tus preguntas:
Utilizo tanto windows XP y windows 7 al compilar
Vb6 sin services pack
Nop las carpetas son cortas como \ventas\facturas
la libreria la tengo dentro de otra carpeta que uso \ventas\PKI y open SSL deje de usarlo directamente y ahora utilizo la libreria
Si intente registrar la libreria pero No es posible registrarlas ya que marca un error
-
- Mensajes: 205
- Registrado: Sab Nov 03, 2012 11:48 am
Re: Cancelacion VB6 con ECODEX
Te recomiendo que instales el SP6 ya que te corrige algunos errores con las DLL’s.
“ERROR: Se produce un interbloqueo en el proceso multiproceso si utiliza instrucciones Declare para las API en los archivos .ocx o .dll de ActiveX en Visual Basic”
“El fondo de un control ActiveX de Visual Basic puede no procesarse correctamente en un contenedor que no sea de Visual Basic”
Lo puedes bajar de la página de Microsoft.
No se como instalaste el VB6 en Windows 7, pero me quiero imaginar que lo instalaste como dice en varias páginas buscando en San Google, donde copias todos los archivos de instalación en el disco duro, renombras algunos archivos, etc. y luego no se puede instalar el SP6.
En este enlace, puedes descargar un instalador para el Visual Studio 6 llamado VS6Installer1.2 que a mi me ha funcionado en todos los Windows después del XP, o sea, Vista, 7 y 8 de 32 y 64 bits.
http://nuke.vbcorner.net/Articles/VB60/ ... fault.aspx
Pierde unos minutos viendo el video completo de cómo instalar el VS ya que tienes que deshabilitar algunas opciones que vienen por default, así como cambiar el modo de video cuando usas el VB. El instalador te permite instalar también el SP6 y la ayuda de MSDN.
http://www.youtube.com/watch?v=BPGSXTgvFNU
Ojala que con esto puedas resolver tu problema.
“ERROR: Se produce un interbloqueo en el proceso multiproceso si utiliza instrucciones Declare para las API en los archivos .ocx o .dll de ActiveX en Visual Basic”
“El fondo de un control ActiveX de Visual Basic puede no procesarse correctamente en un contenedor que no sea de Visual Basic”
Lo puedes bajar de la página de Microsoft.
No se como instalaste el VB6 en Windows 7, pero me quiero imaginar que lo instalaste como dice en varias páginas buscando en San Google, donde copias todos los archivos de instalación en el disco duro, renombras algunos archivos, etc. y luego no se puede instalar el SP6.
En este enlace, puedes descargar un instalador para el Visual Studio 6 llamado VS6Installer1.2 que a mi me ha funcionado en todos los Windows después del XP, o sea, Vista, 7 y 8 de 32 y 64 bits.
http://nuke.vbcorner.net/Articles/VB60/ ... fault.aspx
Pierde unos minutos viendo el video completo de cómo instalar el VS ya que tienes que deshabilitar algunas opciones que vienen por default, así como cambiar el modo de video cuando usas el VB. El instalador te permite instalar también el SP6 y la ayuda de MSDN.
http://www.youtube.com/watch?v=BPGSXTgvFNU
Ojala que con esto puedas resolver tu problema.
-
- Mensajes: 91
- Registrado: Jue Oct 27, 2011 3:36 pm
Re: Cancelacion VB6 con ECODEX
Agradezco tu ayuda. aplicare esta corrección y les estaré informando,, con respecto al instalador pues tengo una imagen de el VB solo la ejecuto e instalo sin problemas... a excepcion de los 64BitsEdcoram escribió:Te recomiendo que instales el SP6 ya que te corrige algunos errores con las DLL’s.
“ERROR: Se produce un interbloqueo en el proceso multiproceso si utiliza instrucciones Declare para las API en los archivos .ocx o .dll de ActiveX en Visual Basic”
“El fondo de un control ActiveX de Visual Basic puede no procesarse correctamente en un contenedor que no sea de Visual Basic”
Lo puedes bajar de la página de Microsoft.
No se como instalaste el VB6 en Windows 7, pero me quiero imaginar que lo instalaste como dice en varias páginas buscando en San Google, donde copias todos los archivos de instalación en el disco duro, renombras algunos archivos, etc. y luego no se puede instalar el SP6.
En este enlace, puedes descargar un instalador para el Visual Studio 6 llamado VS6Installer1.2 que a mi me ha funcionado en todos los Windows después del XP, o sea, Vista, 7 y 8 de 32 y 64 bits.
http://nuke.vbcorner.net/Articles/VB60/ ... fault.aspx
Pierde unos minutos viendo el video completo de cómo instalar el VS ya que tienes que deshabilitar algunas opciones que vienen por default, así como cambiar el modo de video cuando usas el VB. El instalador te permite instalar también el SP6 y la ayuda de MSDN.
http://www.youtube.com/watch?v=BPGSXTgvFNU
Ojala que con esto puedas resolver tu problema.
-
- Mensajes: 91
- Registrado: Jue Oct 27, 2011 3:36 pm
Re: Cancelacion VB6 con ECODEX
Buen dia... despues de mucho tiempo de abandonar esta funcion ya que me dedique a otros proyectos, acudo nuevamente a DADO y a EDCORAM que son los que me han estando apoyando en cuanto a este problema.... Visual Basic actualizado con Service PAck intentado compilar en otro equipo distintos sistemas operativos.. .un error como resultado.. "ERROR!! No se ha encontrado el archivo C:.....\CFDLib.dll" (si lo se verifique al menos unas 5 veces que existiera el archivo y fuera el actualizado) entonces procedi a actualizar las 3 librerias (cfdlib,libeay32,ssleay32) en la carpeta de system32 realizo una nueva prueba y obtengo el error con el cual me habia quedado atorado "No se puede encontrar el punto de entrada de la DLL cancelarCFDext en (ruta)" -donde ruta es la ruta donde se encuentra la DLL
Espero que con esta referencia puedan apoyarme con solucion... si gustan puedo darles acceso a alguna de las maquinas para que puedan descartar alguna falla de mi parte
Gracias y hasta luego
Espero que con esta referencia puedan apoyarme con solucion... si gustan puedo darles acceso a alguna de las maquinas para que puedan descartar alguna falla de mi parte
Gracias y hasta luego
-
- Mensajes: 205
- Registrado: Sab Nov 03, 2012 11:48 am
Re: Cancelacion VB6 con ECODEX
De hecho, yo no usé las funciones nuevas para crear xml, timbrar, cancelar etc. ya que deje de mostrar en los msgbox la cadena y el sello digital, dejé que se generará el XML y después lo leo y saco la información de ahí viéndolo en un treeview (por aauí en el foro está el código de cómo lo hago)
En un módulo general hago lo siguiente:
Option Explicit
'PARA GENERAR EL XML DEL CFDI
Public Declare Function PruebaClaveDeLlavePrivada Lib "C:\FacECFDI\CFDLib.dll" (ByVal LlavePrivada As String, ByVal ClaveLlavePrivada As String) As Boolean
Public Declare Function GeneraCFD Lib "C:\FacECFDI\CFDLib.dll" (ByVal IniFileName As String, ByVal ClaveLlavePrivada As String) As Byte
Public Declare Function TimbrarCFD Lib "C:\FacECFDI\CFDLib.dll" (ByVal IniFileName As String) As Byte
Public Declare Function CancelarCFD Lib "C:\FacECFDI\CFDLib.dll" (ByVal IniFileName As String) As Byte
Public Declare Function GetError Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function GetErrorExt Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function CadenaOriginal Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function SelloDigital Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function CFDLibVersion Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function ConsultaSaldo Lib "C:\FacECFDI\CFDLib.dll" (ByVal QueRFC As String) As Byte
'FIN PARA GENERAR EL XML DEL CFDI
“C:\FacECFDI” es donde tengo el ejecutable, máximo 8 caracteres para evitarme problemas y ahí tengo las librerías CFDLib, del OpenSSL (libeay32,ssleay32) y del CBBQR
En el Form de la factura, tengo un botón para CANCELAR la factura, donde después de preguntar varias veces si desean cancelarla genero el archivo INI:
NomArchCanc = UbicaBDat & "Facturas\" & "Folio" & UCase(Me.SerieFolio) & "CANC.ini" 'nombre del archivo para cancelar como w:\Datos\A1CANC.ini
CheW = FreeFile
Open NomArchCanc For Output As #CheW
'Datos en el INI
Print #CheW, "[Parametros]" & vbCrLf;
Print #CheW, "XMLDestino=" & UbicaBDat & "Facturas\" & "Folio" & UCase(Me.SerieFolio) & "CANC.xml" & vbCrLf; ‘Este renglón se podría eliminar ya que nunca se genera un XML de cancelación, aunque nunca me ha afectado.
Print #CheW, "PAC=ECODEX" & vbCrLf;
Print #CheW, "" & vbCrLf;
Print #CheW, "[ECODEX]" & vbCrLf;
Print #CheW, "Servicio=" & MemServ & vbCrLf;
Print #CheW, "RFC=" & RfcE & vbCrLf;
Print #CheW, "TransaccionID=" & Format(IdTrans, "###########0") & vbCrLf;
Print #CheW, "UUID=" & Trim(Me.UUID) & vbCrLf;
Print #CheW, "" & vbCrLf; ‘Si no pongo al final del ini esto, al hacer pruebas si me daba error
Close #CheW
(CheW, UbicaBDat, Me.SerieFolio, MemServ, RfcE, IdTrans, Me.UUID son variables en memoria o textbox a veces ocultos en el form)
Y luego simplemente cancelo el CFDI o lo elimino si se arrepienten ‘antes de’.
'Pregunta por ultima vez
If MsgBox("Oprime [Ok] para cancelar el Folio o" _
& vbCrLf & "[Cancelar] para evitar el proceso de cancelación", vbOKCancel) = vbCancel Then
Kill NomArchCanc
MsgBox "¡NO se canceló el Folio actual!", vbInformation
Exit Sub
End If
‘cancela el CFDI con la librería
If CancelarCFD(NomArchCanc) <> 0 Then
MsgBox "Hubo un error " & GetError & vbCrLf & GetErrorExt & vbCrLf & _
"NO Se CANCELÓ el CFDI", vbCritical, "Error al tratar de Cancelar el CFDI"
Exit Sub
End If
MsgBox "Se CANCELÓ el CFDI", vbInformation, "O.K."
Me.CancSN = 1 ' un checkbox oculto en el form para saber si esta cancelado
GuardaCFDICanc ‘guardo en la base de datos que está cancelado este CFDI
Me.Cancelar.Enabled = False ‘oculto el botón para cancelar
Me.EstaCanc.Visible = True ‘ muestro en el Form que está cancelado.
Espero que te sirva, yo hasta el momento no he tenido problemas usando la librería de esta manera.
.
En un módulo general hago lo siguiente:
Option Explicit
'PARA GENERAR EL XML DEL CFDI
Public Declare Function PruebaClaveDeLlavePrivada Lib "C:\FacECFDI\CFDLib.dll" (ByVal LlavePrivada As String, ByVal ClaveLlavePrivada As String) As Boolean
Public Declare Function GeneraCFD Lib "C:\FacECFDI\CFDLib.dll" (ByVal IniFileName As String, ByVal ClaveLlavePrivada As String) As Byte
Public Declare Function TimbrarCFD Lib "C:\FacECFDI\CFDLib.dll" (ByVal IniFileName As String) As Byte
Public Declare Function CancelarCFD Lib "C:\FacECFDI\CFDLib.dll" (ByVal IniFileName As String) As Byte
Public Declare Function GetError Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function GetErrorExt Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function CadenaOriginal Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function SelloDigital Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function CFDLibVersion Lib "C:\FacECFDI\CFDLib.dll" () As String
Public Declare Function ConsultaSaldo Lib "C:\FacECFDI\CFDLib.dll" (ByVal QueRFC As String) As Byte
'FIN PARA GENERAR EL XML DEL CFDI
“C:\FacECFDI” es donde tengo el ejecutable, máximo 8 caracteres para evitarme problemas y ahí tengo las librerías CFDLib, del OpenSSL (libeay32,ssleay32) y del CBBQR
En el Form de la factura, tengo un botón para CANCELAR la factura, donde después de preguntar varias veces si desean cancelarla genero el archivo INI:
NomArchCanc = UbicaBDat & "Facturas\" & "Folio" & UCase(Me.SerieFolio) & "CANC.ini" 'nombre del archivo para cancelar como w:\Datos\A1CANC.ini
CheW = FreeFile
Open NomArchCanc For Output As #CheW
'Datos en el INI
Print #CheW, "[Parametros]" & vbCrLf;
Print #CheW, "XMLDestino=" & UbicaBDat & "Facturas\" & "Folio" & UCase(Me.SerieFolio) & "CANC.xml" & vbCrLf; ‘Este renglón se podría eliminar ya que nunca se genera un XML de cancelación, aunque nunca me ha afectado.
Print #CheW, "PAC=ECODEX" & vbCrLf;
Print #CheW, "" & vbCrLf;
Print #CheW, "[ECODEX]" & vbCrLf;
Print #CheW, "Servicio=" & MemServ & vbCrLf;
Print #CheW, "RFC=" & RfcE & vbCrLf;
Print #CheW, "TransaccionID=" & Format(IdTrans, "###########0") & vbCrLf;
Print #CheW, "UUID=" & Trim(Me.UUID) & vbCrLf;
Print #CheW, "" & vbCrLf; ‘Si no pongo al final del ini esto, al hacer pruebas si me daba error
Close #CheW
(CheW, UbicaBDat, Me.SerieFolio, MemServ, RfcE, IdTrans, Me.UUID son variables en memoria o textbox a veces ocultos en el form)
Y luego simplemente cancelo el CFDI o lo elimino si se arrepienten ‘antes de’.
'Pregunta por ultima vez
If MsgBox("Oprime [Ok] para cancelar el Folio o" _
& vbCrLf & "[Cancelar] para evitar el proceso de cancelación", vbOKCancel) = vbCancel Then
Kill NomArchCanc
MsgBox "¡NO se canceló el Folio actual!", vbInformation
Exit Sub
End If
‘cancela el CFDI con la librería
If CancelarCFD(NomArchCanc) <> 0 Then
MsgBox "Hubo un error " & GetError & vbCrLf & GetErrorExt & vbCrLf & _
"NO Se CANCELÓ el CFDI", vbCritical, "Error al tratar de Cancelar el CFDI"
Exit Sub
End If
MsgBox "Se CANCELÓ el CFDI", vbInformation, "O.K."
Me.CancSN = 1 ' un checkbox oculto en el form para saber si esta cancelado
GuardaCFDICanc ‘guardo en la base de datos que está cancelado este CFDI
Me.Cancelar.Enabled = False ‘oculto el botón para cancelar
Me.EstaCanc.Visible = True ‘ muestro en el Form que está cancelado.
Espero que te sirva, yo hasta el momento no he tenido problemas usando la librería de esta manera.
.
-
- Mensajes: 91
- Registrado: Jue Oct 27, 2011 3:36 pm
Re: Cancelacion VB6 con ECODEX
DADO buen dia,
Dando seguimiento a la funcion cancelarCFD. pues lo hice de distintas formas incluyendo la que edcoram me hizo favor de mostrar y el resultado el mismo la aplicacion se cuelga al mandar llamar la funcion, hace tiempo tuve problemas con el timbrado y se colgaba al mandar llamar las funciones de cadena timbrado etc... use el nuevo ejemplo que incluiste con las funciones EXT y funcionaron correctamente... crees que pudieras revisar la funcion de cancelaCFD y agregar la nueva funcion de cancelaCFDEXT como lo hiciste con las otras para tratar de dar solucion a el problema? actualmente se realiza la cancelacion directa con el SAT pero la carga de trabajo ha aumentado y me gustaria poder hechar andar esa funcion te agredeciaria que lo tomes en cuenta Gracias y Hasta luego
Dando seguimiento a la funcion cancelarCFD. pues lo hice de distintas formas incluyendo la que edcoram me hizo favor de mostrar y el resultado el mismo la aplicacion se cuelga al mandar llamar la funcion, hace tiempo tuve problemas con el timbrado y se colgaba al mandar llamar las funciones de cadena timbrado etc... use el nuevo ejemplo que incluiste con las funciones EXT y funcionaron correctamente... crees que pudieras revisar la funcion de cancelaCFD y agregar la nueva funcion de cancelaCFDEXT como lo hiciste con las otras para tratar de dar solucion a el problema? actualmente se realiza la cancelacion directa con el SAT pero la carga de trabajo ha aumentado y me gustaria poder hechar andar esa funcion te agredeciaria que lo tomes en cuenta Gracias y Hasta luego