![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
En unos días segun me ha indicado Seccion_31 en un privado, subirá el codigo completo funcionando a la perfección en todas sus opciones. No ha podido antes por motivos personales.
Verdaderamente creo que es un tio increible y que muchos le tenemos mucho que agradecer. Gracias Seccion_31, muchos no tendremos sufiente vida para agradecertelo.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
|
#2
|
||||
|
||||
|
Buenas a todos y sobre todo, muchas gracias seccion_31 por este aportazo.
Entiendo que para probar esta demo, es necesario tener un certificado digital instalado en el equipo donde se va a probar, ya que me da un error al realizar un envío: Código:
Error al realizar el envío; (ESOAPHTTPException)-Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml") |
|
#3
|
||||
|
||||
|
Cita:
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
|
#4
|
|||
|
|||
|
Hola a todos y muchas gracias a seccion_31 por el aporte
He adaptado el código para ejecutarlo como un servicio. Funciona perfectamente si ejecuto el exe directamente, pero a la que lo intento ejecutar como servicio me da el mismo error: Código:
(ESOAPHTTPException)-Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml" ¿Sabéis si hay que hacer algo más con el certificado para que funcione en un servicio? Gracias y un saludo |
|
#5
|
||||
|
||||
|
Cita:
en HTTPRIO1HTTPWebNode1BeforePost Estás usando CAPICOM_CURRENT_USER_STORE y debes usar CAPICOM_LOCAL_MACHINE_STORE. Pero cuando tengas el certificado instalado a nivel de máquina no a nivel de usuario. Espero te sirva
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
|
#6
|
||||
|
||||
|
buenos dias !
Ya tengo disponible una version mas que funcional del componente y servidor de mensajes para D7. Incluyo la version compilada y codigo fuente del servidor en B10. Lamentablemente no he podido estar por aqui antes, por motivos personales, pero ahora procurare estar mas atento. especialmente esta semana por si alguien quiere implementarlo. Lo he tenido que subir a mi google drive porque github no me deja. https://drive.google.com/file/d/1fKx...usp=drive_link Aquí no hay milagros, se usa D7 para componer el envío, pero finalmente se transmite atraves de una aplicacion en B10, lo que si es cierto es que mucho mas manejable desde D7. Se arranca el servidor de mensajes y después de esto, podéis ejecutar la demo (que sube una hoja excel), o empezar desarrollar vuestra aplicacion. La parte mas imporante es un record que guarda la factura(s), la factura a enviar y la anterior (si existe). El servidor de mensajes se intenta hacer cargo de componer el resto. Actualmente soporta, facturas, y tickets, y su rectificacion. Ademas se ofrece el control del almacen de certificados, validacion del nif, y el cotejo con la AEAT de los registros enviados. La cuestión es que hay que probarlo y pulirlo. En teoria es posible utilizarlo con versiones mas alla de D7, directamente sin servidor. Queda ofrecido aqui como una demostracion, bajo la TOTAL responsabilidad de quien lo utilice. Saludos cordiales y mucha suerte. |
|
#7
|
||||
|
||||
|
Cita:
Lo estudiaré en profundidad, pero tiene muy buena pinta. En un principio pensé en hacerme un ejecutable o un servicio completo que fuese mirando en la BD cada X segundos si hay alguna factura nueva a enviar, pero con el tema de generar el QR para los tickets, algo de envío directo con un componente se hace más práctico. |
|
#8
|
||||
|
||||
|
Cita:
http://terawiki.clubdelphi.com/Otros...27_01_2025.rar
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#9
|
|||
|
|||
|
Cita:
Voy a intentar compilar tanto la versión D7 como la "moderna" a ver si puedo compilar sin problemas y a partir de ahí empezar a adaptarlo a mi programa. ¿No has podido hacer la parte del envío utilizando D7 y por eso has optado a hacerlo con versiones más modernas?. Yo en su momento, conseguí hacer pruebas de envío, pero el problema lo tenía con el TLS de windows 7. Si el mismo ejecutable lo lanzaba desde un Windows 10 si que parecía funcionar... Un saludo. |
|
#10
|
|||
|
|||
|
Cita:
Muchas gracias ramherfer!!!! |
|
#11
|
||||
|
||||
|
buenos dias !
encantado ramherfer que el componente haya cumplido las expectativas, gracias por tu reconocimiento. Todavía espero que habrá que corregir alguna cosa, me extrañaria mucho que estuviera muy bien. (de hecho acabo de ver un error, porque ahora siempre envia a pre-produccion, asi que en unos dias subire otra version) (abajo pongo lo que hay que corregir, hoy asi rapido pero habrá alguna mejora mas). ontisoft, la primera demo la puedes descartar, era una prueba temprana. la segunda demo es la buena. En el programa que envia desde Excel, no olvidéis seleccionar un certificado del almacén valido e indicar vuestros datos en la pestaña Datos Sistema Informático. Para los que quieran usar el componente sin D7, desde versiones B10 en adelante, pueden hacerlo directamente usando las funciones del servidor. No lo he probado, pero debería funcionar sin mas Para ello, hay que hacer un uses tal que así: uses uTiposVerifactu, uVerifactuFuncs; Aumentar el stack size maximo a: 9048576 Project -> options->linker Tendremos las siguientes funciones disponibles: Os recomiendo que mireis la llamada a esas funciones desde la unidad de componente para D7 a modo de consulta. en la unidad: uTVerifactu.pas Código:
function inicio_sesion( var crearSesion:TVeriFactuInicio ):integer; stdcall; // con sesion: function anadeFactura(sesion:integer; var factura:TRegistroFacturas):integer; stdcall; procedure envio(sesion:integer; var resultadoEnvio:TResultadoEnvio); stdcall; function cierreSesion(sesion:integer; cierre:TCierreSesion):boolean; function resetSesion(sesion:integer; cierre:TCierreSesion):boolean; function consultar(sesion:integer; var resultado:TConsultaResultado):boolean; // sin sesion: procedure validarNIF(var nifvalidador:TValidadorNif); // auxiliares procedure clear_factura(afactura:TRegistroFactura); procedure clear_sesion(sesion:integer); // Certificados procedure GetCertificados(var certificados:TCertificados); procedure GetAliasCertificado(var certificados:TAliasCert); function BUSCAR_CERTIFICADO_SERIAL(Nombre_Certificado: String): string; Correccion para permitir el envio a otra url Unidad uTVeriFactu Reemplazar esta funcion, por este codigo: Código:
//
// crear una sesion
//
function TVerifactu.inicio:boolean;
var
inicioVeriFactu : TVeriFactuInicio;
filemap,filehandle : longint;
begin
checkAutoRun;
serverHandle := FindWindow(nil, pchar(serverName) );
if IsWindow( serverHandle ) then
begin
inicioVeriFactu.simular:=simular;
inicioVeriFactu.emisor:=emisor;
inicioVeriFactu.sistemaInformatico:=sistemaInformatico;
inicioVeriFactu.nombreCertificado:=Certificado;
inicioVeriFactu.passwordCertificado:=passwordCertificado;
inicioVeriFactu.SaveXmlEnvio:=fSave;
inicioVeriFactu.SaveXMLResultado:=fResp;
inicioVeriFactu.incidencia:=false;
inicioVeriFactu.resultadoSesion:=-1;
if fEndPoint<>'' then
inicioVeriFactu.direccion_envio:=fEndPoint
else
inicioVeriFactu.direccion_envio:='https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP';
filemap:=saveNewFileMappingData(@inicioVeriFactu, sizeof(inicioVeriFactu), filehandle);
SENDMESSAGE( serverHandle, WM_VERIFACTU_INICIO, 0, filemap );
loadFileMappingData(@inicioVeriFactu, sizeof(inicioVeriFactu), filemap);
closeFileMappingData(filehandle);
if inicioVeriFactu.resultadoSesion<>0 then
begin
sesion:=inicioVeriFactu.resultadoSesion;
result:=true;
end
else
begin
result:=false;
end;
end
else
result:=false;
end;
Última edición por seccion_31 fecha: 01-02-2025 a las 08:56:13. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Verifactu o por requerimiento (no-verifactu) ¿decisión del usuario? | Maska10 | Temas legales | 2 | 07-12-2024 12:34:47 |
| Demo de una applicación para una estación de enfermera con RAD Studio | AgustinOrtu | La Taberna | 1 | 21-07-2015 17:41:35 |
| Demo Delphi, EMail | Caral | Internet | 1 | 19-12-2006 00:37:56 |
| Demo de delphi 2005 | mazinger | Varios | 2 | 18-12-2004 09:23:09 |
| El Rave que viene con Delphi es una Demo? | apicito | Impresión | 0 | 04-06-2003 11:33:36 |
|