![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#81
|
||||
|
||||
Hay algunas cosas que me gustaria comentar
1) Alguien ha conseguido hacer funcionar el httprio desde una DLL ? si fuera asi, y tuviera el codigo, lo cambiaria a funcionamiento por DLL que me parece mas elegante. 2) ¿Alguien ha probado el componente, indicando en vez del nombre del certificado el nombre de un archivo.pfx y en passwordCertificado su contraseña? Saludos ! |
#82
|
||||
|
||||
Cita:
Cita:
https://drive.google.com/file/d/17qT...ew?usp=sharing Voy a revisar mi código a ver si veo algo raro comparandolo con la demo y si no veo nada haré lo propio con el del servidor.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
#83
|
||||
|
||||
Cita:
Cita:
Cita:
la reemplazo por: Cita:
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. Última edición por ramherfer fecha: 02-02-2025 a las 12:35:21. |
#84
|
||||
|
||||
ramherfer
Creo que estas suministrando la fecha en el record factura.actual.fechaFactura con el formato 01-01-2025 cuando deberías simplemente cargar la fecha tal cual 01/01/2025 cuando se envía la función altafactura_F1_F2_R4_R5_verifactu realiza la conversión. Ya me lo confirmaras. Saludos ! |
#85
|
||||
|
||||
¿Qué problema te da exactamente?
|
#86
|
||||
|
||||
en la DLL error de proteccion general. justo al llamar la funcion de enviar. El mismo codigo en un ejecutable sin problemas.
googleando en algunos sitios lei que no se podia, pero siempre hay que asegurarse. |
#87
|
||||
|
||||
Cita:
Ok, corrijo la modificación y realizada.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
#88
|
|||
|
|||
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. |
#89
|
||||
|
||||
Cita:
Lo dicho, si alguien sabe como hacer funcionar la llamada SOAP desde una DLL y que no de error general que me avise. Y me gustaria que alguien probara a usar un archivo PFX en lugar de usar el certificado desde el almacen. Saludos y gracias ! |
#90
|
||||
|
||||
He encontrado un pequeño error en la aplicación servidora.
Si intentas cotejar una factura simple (que por ende no tiene ni cliente ni NIF) arroja una excepción en las líneas:
Se puede solucionar con un try - except, pero creo que así es mucho mejor:
Saludos |
#91
|
||||
|
||||
gracias DarkDudae
voy a incoporar la corrección y en un tiempo, quizas dos semanas publicare una nueva version. ¿tenemos alguna sugerencia para seguir mejorando el componente? Voy a retirar el campo "situacion", porque creo que no se usa, y asi libero espacio de la pila. Corregire las fechas cuando entreguen la fecha de emision con - en lugar de / Hay un indicador que se llama incidencia, que se puede activar manual, o automaticamente, cuando la fecha de alguna factura es diferente a la del dia. Habra otro indicador que se llamara primerRegistro si se detecta primer registro en el envio -->Ambos indicadores, deberian poder ser consultados antes del envio. (Es una lastima no poder encapsularlo en una DLL, mejoraría mucho) Habria que probar el certificado pfx Y hay que añadir mas casos a la generación de la facturación, en especial la de exentos de iva. ¿hay alguien por aqui que domine el tema? Saludos ! |
#92
|
|||
|
|||
Cita:
El código del certificado para archivo pfx funciona perfectamente tanto para .pfx como para .p12. Lo he probado en un servicio de windows que estoy haciendo en delphi 10.2. Muchas gracias por el aporte! Saludos, |
#93
|
||||
|
||||
hola Quim Herrera !
¿estas seguro que funciona? ahora mirando la funcion:
Yo creo que esto fallara:
Deberia ser:
He añadido la extension .P12 para reconocer el archivo ¿puedes confirmarlo por fa? Slds ! Última edición por Neftali [Germán.Estévez] fecha: 05-02-2025 a las 12:39:55. Razón: añadir TAGs al mensaje |
#94
|
|||
|
|||
Cita:
Exacto, hay que cambiar por y ya funciona. Saludos, Última edición por Neftali [Germán.Estévez] fecha: 05-02-2025 a las 12:44:53. |
#95
|
||||
|
||||
Cuida que: hay que hacer algun cambio mas en la funcion consultar (para que reconoca el PFX), y en los "ifs" para que soporten las dos extensiones.
Ya lo he modificado, perfecto. gracias ! |
#96
|
||||
|
||||
Estoy probando el certificado por fichero y contraseña asignandole el path del archivo del archivo de certificdado a la variable VerifactuD7.Certificado y la contraseña en VerifactuD7.passwordCertificado.
No se si es lo correcto, pero me da un error al cotejar. He realizado la corrección PFX := TFile.ReadAllBytes('ArchivoDelCertificado.PFX' ); por PFX := TFile.ReadAllBytes( cert ); en el servidor antes de hacer la prueba. Un saludo!
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
#97
|
||||
|
||||
ramherfer
sustituye esta funcion: uVerifactuFuncs y recompila el servidor B10 Código:
function consultar(sesion:integer; var resultado:TConsultaResultado):boolean; var consulta : ConsultaFactuSistemaFacturacion; // Objeto a enviar res : RespuestaConsultaFactuSistemaFacturacionType; // Respuesta tras el envio HTTPRIO1 : THTTPRIO; j : integer; direccion_envio, estado : string; eventos : TEventosHttpPrio; eventosWebNode: TEventosWebNode; begin consulta:=ConsultaFactuSistemaFacturacion.Create; consulta.Cabecera:=CabeceraConsultaSf.Create; consulta.Cabecera.ObligadoEmision:=ObligadoEmisionConsultaType.Create; consulta.Cabecera.ObligadoEmision.NombreRazon:=sesiones[sesion].inicio.emisor.NombreRazonEmisor; consulta.Cabecera.ObligadoEmision.NIF:=sesiones[sesion].inicio.emisor.nifEmisor; consulta.FiltroConsulta:=LRFiltroRegFacturacionType.Create; consulta.FiltroConsulta.PeriodoImputacion:=PeriodoImputacionType.Create; consulta.FiltroConsulta.PeriodoImputacion.Ejercicio:=resultado.Cabecera.ejercicio; consulta.FiltroConsulta.PeriodoImputacion.Periodo:=veriFactuPeriodo( resultado.Cabecera.periodo ); if resultado.Cabecera.NumSerieFactura='' then begin consulta.FiltroConsulta.FechaExpedicionFactura.RangoFechaExpedicion.Desde:=verifactuFecha(datetoStr(resultado.Cabecera.dfecha)); consulta.FiltroConsulta.FechaExpedicionFactura.RangoFechaExpedicion.Hasta:=verifactuFecha(datetoStr(resultado.Cabecera.hfecha)); end else begin consulta.FiltroConsulta.NumSerieFactura:=resultado.Cabecera.NumSerieFactura; end; eventos:=TEventosHttpPrio.Create; eventos.fileNameBefore :=sesiones[sesion].saveXMLenvio; eventos.fileNameAfter :=sesiones[sesion].saveXMLResult; eventosWebNode:=TEventosWebNode.Create; eventosWebNode.sesion:=sesion; HTTPRIO1:=THTTPRIO.create(nil); HTTPRIO1.onBeforeExecute:=eventos.BeforeExecute; HTTPRIO1.onAfterExecute :=eventos.AfterExecute; // Cargar certificado del disco if ( pos('.PFX',uppercase(sesiones[sesion].inicio.nombreCertificado))<>0) or ( pos('.P12',uppercase(sesiones[sesion].inicio.nombreCertificado))<>0) then HTTPRIO1.HTTPWebNode.onBeforePost:=eventosWebNode.WebNodeBeforePost; // --> envío pre-produccion: 'https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP'; try // Cargar certificado del almacen if ( pos('.PFX',uppercase(sesiones[sesion].inicio.nombreCertificado))=0) and ( pos('.P12',uppercase(sesiones[sesion].inicio.nombreCertificado))=0) then HTTPRIO1.HTTPWebNode.ClientCertificate.SerialNum := Buscar_Certificado_SERIAL( sesiones[sesion].inicio.nombreCertificado ); // coloca el certificado direccion_envio :=sesiones[sesion].inicio.direccion_envio; res:= RespuestaConsultaFactuSistemaFacturacionType.Create; res:= GetsfPortTypeVerifactu( false, direccion_envio , HTTPRIO1 ).ConsultaFactuSistemaFacturacion( consulta ); // Enviarlo ! // resultado del envio: resultado.ConDatos:=(res.ResultadoConsulta=ResultadoConsultaType.ConDatos); resultado.error :=false; resultado.errorDes:=''; procesarConsulta(res,resultado ); except on E:Exception do begin resultado.ConDatos:=false; resultado.error:=true; resultado.errorDes:=Format('(%s)-%s',[E.ClassName, E.Message]); result:=false; exit; end; // Finalmente: // HTTPRIO1.free; //<- no puede ser destruido con NIL como constructor //eventos.Free; end; result:=true; end; |
#98
|
||||
|
||||
Voy a incorporarle el tema de las facturas exentas
Con lo que ya hay programado, para el desglose del IVA necesito saber el texto de las diferentes leyes, para al menos ajustar la clave de exencion automatica para las de exportacion UE, fuera de UE, y canarias correctamente. E1 Exenta por el artículo 20 E2 Exenta por el artículo 21 (canarias, y fuera la UE) E3 Exenta por el artículo 22 E4 Exenta por los artículos 23 y 24 E5 Exenta por el artículo 25 (exportacion a la UE) E6 Exenta por otros Me gustaria saber un pequeño texto resumen de los articulos. A ver si alguien me puede aclarar este tema x favor. Slds ! |
#99
|
||||
|
||||
Cita:
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
#100
|
||||
|
||||
ya tengo implementado por decir algo las facturas exentas, añadiendo un campo al desglose de iva, con el identificador de la exencion, pero ...
hasta aqui llegamos, porque no me aclaro con el valor ClaveRegimen (mis conocimientos fiscales son muy limitados) Si no estoy equivocado: Si la exencion es la E2 ClaveRegimen va a 02. exportacion ¿pero siempre debe tomar ese valor? ¿la E2 solo se usa para exportacion fuera de la UE? (o canarias) Si la exencion es la E5 ClaveRegimen va a 01. factura UE ¿pero siempre debe tomar ese valor? ¿la E5 solo se usa para facturas UE? Con E6 (otra) puede ir a ClaveRegimen 01, pero ¿se puede calcular ClaveRegimen segun el valor de la exencion? ¿ E1 E3 E4 ? Y aqui me paro hasta ver x favor, quien nos puede aclarar este tema. Saludos ! |
![]() |
|
|
![]() |
||||
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 |
![]() |
|