![]() |
![]() |
| 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
|
||||
|
||||
|
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 |
|
#2
|
|||
|
|||
|
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. |
|
#3
|
||||
|
||||
|
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 ! |
|
#4
|
||||
|
||||
|
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. |
|
#5
|
||||
|
||||
|
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;
|
|
#6
|
||||
|
||||
|
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 ! |
|
#7
|
||||
|
||||
|
Cita:
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
|
#8
|
||||
|
||||
|
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 ! |
|
#9
|
||||
|
||||
|
Buenos días ¡¡
Gracias a tod@s y sobretodo a Seccion31 por las aportaciones y por el enorme esfuerzo. De verdad que me dais la vida. ![]() Cita:
Código:
HTTPRIO1.HTTPWebNode.onBeforePost:=eventosWebNode.WebNodeBeforePost; y no la puedo recompilar (no se como corregir el error). Podría alguien enviar el fichero VerifactuD7.bpl y dcp recompilados con la nueva funcion (o si algún moderador pudiera subirla al área de descarga )? P.D. Las aplicaciones las tengo en Delphi 7, y el componente VerifactuD7 lo había compilado en Delphi12 perfectamente, el fallo me da ahora al cambiar la función "consultar". Muchas gracias¡¡
__________________
Inieeeesssstademiviiiiidaaaaa. |
|
#10
|
||||
|
||||
|
Perdonad¡¡¡
Pero creo que me he liado un "POCO". La corrección de la función consultar es del servidor de envíos (ese no lo había compilado antes en Delphi 12, lo utilice tal cual lo había descargado). O sea, que lo que necesitaría para poder seguir es el servidor (msgVerifactu.exe) con la corrección hecha. Gracias y mil disculpas de nuevo.
__________________
Inieeeesssstademiviiiiidaaaaa. |
![]() |
| 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 |
|