![]() |
![]() |
| 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
|
|||
|
|||
|
Cita:
debido a que cambia si lo dejo en va bien pero en la linea internetsetoption recibo el mismo error que al principio, "codigo error 6" |
|
#2
|
||||
|
||||
|
Cita:
el codigo que carga el certificado esta correcto pero no se transmite el password a la DLL y en la DLL el array de sesiones se comprueba al llegar a la zona de carga del certificado de forma erronea. creo que corrigiendo esto: en el componente: Código:
function TVerifactu.validNIF(nif, nombre:string; var resultado, nombreRes:string):boolean;
var
valida_nif: TValidadorNIF;
j:integer;
begin
checkAutoRun;
result:=false;
valida_nif.nombreCertificado:=Certificado;
valida_nif.passwordCerficado:=passwordCertificado;
valida_nif.nifvalidar :=nif;
valida_nif.nombre :=nombre;
valida_nif.resultado :='';
valida_Nif.error :=true;
validarNIF( valida_nif );
if valida_Nif.error then
begin
resultado:='';
nombreRes:='';
result:=false;
exit;
end;
resultado:=valida_Nif.resultado;
nombreRes:=valida_Nif.resultadoN;
result:=true;
end;
y esto en la DLL: Código:
procedure TEventosWebNode.WebNodeBeforePost(const HTTPReqResp: THTTPReqResp;
Data: Pointer);
var
pStore: HCERTSTORE;
pCert: PCERT_CONTEXT;
DataBlob: CRYPT_BIT_BLOB;
PFX: TBytes;
pass,cert:string;
begin
if sesion=-1 then // viene de un validador de nif
begin
pass:=nifValidatorPass;
cert:=nifValidator;
end
else // viene de un objeto verifactu
begin
pass:=sesiones[sesion].inicio.passwordCertificado;
cert:=sesiones[sesion].inicio.nombreCertificado;
end;
if (pos('.PFX',uppercase(cert))=0) and
(pos('.P12',uppercase(cert))=0) then exit;
cargaCertificado(data, cert, pass);
end;
ya deberia funcionar, a mi me funciona. A principios de la semana que viene publicare una nueva version corregida. Pero ya esta solucionado. slds |
|
#3
|
||||
|
||||
|
Buenas tardes.
Si se le factura a un cliente con recargo de equivalencia no se si está asignando la clave de régimen 01 (Operación de Régimen General). Creo que en este caso debería de asignar la clave de regimen 18 (Recargo de equivalencia). Por favor corregirme si me equivoco.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
|
#4
|
||||
|
||||
|
Cita:
En uveriFactuFuncs. La variable Condatos en la consulta se quedaba siempre a false, al menos en la version que yo tengo. Si os ocurre esto, cambiar esta funcion asi: 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:=FechaExpedicionConsultaType.Create;
if resultado.Cabecera.dfecha=resultado.Cabecera.hfecha then
begin
consulta.FiltroConsulta.FechaExpedicionFactura.FechaExpedicionFactura:=verifactuFecha(datetostr(resultado.Cabecera.dfecha));
end else
begin
consulta.FiltroConsulta.FechaExpedicionFactura.RangoFechaExpedicion:=RangoFechaExpedicionType.Create;
consulta.FiltroConsulta.FechaExpedicionFactura.RangoFechaExpedicion.Desde:=verifactuFecha(datetoStr(resultado.Cabecera.dfecha));
consulta.FiltroConsulta.FechaExpedicionFactura.RangoFechaExpedicion.Hasta:=verifactuFecha(datetoStr(resultado.Cabecera.hfecha));
end;
end
else
begin
consulta.FiltroConsulta.NumSerieFactura:=resultado.Cabecera.NumSerieFactura;
end;
If resultado.Cabecera.filtroSIF then
Begin
//Vamos a establecer un filtro por sistema informático (opcional)
consulta.FiltroConsulta.SistemaInformatico:=SistemaInformaticoType.Create;
consulta.FiltroConsulta.SistemaInformatico.NombreRazon := sesiones[sesion].inicio.sistemaInformatico.razonSocial;
consulta.FiltroConsulta.SistemaInformatico.NIF := sesiones[sesion].inicio.sistemaInformatico.nif;
consulta.FiltroConsulta.SistemaInformatico.NombreSistemaInformatico := sesiones[sesion].inicio.sistemaInformatico.nombre;
consulta.FiltroConsulta.SistemaInformatico.IdSistemaInformatico := sesiones[sesion].inicio.sistemaInformatico.ID;
consulta.FiltroConsulta.SistemaInformatico.Version := sesiones[sesion].inicio.sistemaInformatico.Version;
consulta.FiltroConsulta.SistemaInformatico.NumeroInstalacion := sesiones[sesion].inicio.sistemaInformatico.NumeroInstalacion;
consulta.FiltroConsulta.SistemaInformatico.TipoUsoPosibleSoloVerifactu := SiNoType.S;
if sesiones[sesion].inicio.sistemaInformatico.multiplesOT then
consulta.FiltroConsulta.SistemaInformatico.TipoUsoPosibleMultiOT := SiNoType.S
else
consulta.FiltroConsulta.SistemaInformatico.TipoUsoPosibleMultiOT := SiNoType.N;
End;
eventos:=TEventosHttpPrio.Create;
eventos.fileNameBefore :=sesiones[sesion].inicio.saveXMLenvio;
eventos.fileNameAfter :=sesiones[sesion].inicio.saveXMLResultado;
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 !
// limpiar resultado antes de procesarlo
clear_consulta(resultado);
// 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;
|
|
#5
|
||||
|
||||
|
Cita:
Lo mismo que ocurriría si es una operación REBU 03 (Régimen de bienes usados), no la puedo calificar con el Régimen General (01).
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
|
#6
|
||||
|
||||
|
Cita:
https://arnaldes.com/expedientes-de-...sos-indebidos/ A ver que conclusiones sacamos Saludos ! |
|
#7
|
||||
|
||||
|
en la proxima version que publicaremos este fin de semana incluira previsiblemente entre otras tres flags de factura
subsanacion rechazoprevioExiste rechazoPrevioNoExiste Con la intencion de marcar a true la modalidad de rechazoprevio, cuando se envie un registro por un fallo, por ejemplo el de un DNI. (subsanacion, rechazoPrevioNoExiste) Tenemos el siguiente caso: Factura 1 aceptada huella: A Factura 2 error por dni huella B Factura 3 aceptada huella C Factura 2 aceptada huella D Cuando se vuelva a enviar la factura 2, tendra una nueva huella D y habria que marchar esos dos flags. Ahora viene una pregunta: El resto de huellas de la 2 en adelante y hasta el fin de la facturacion estara mal por dos causas: https://www.agenciatributaria.es/sta..._registros.pdf Cita:
¿esto es asi? Saludos ! Última edición por seccion_31 fecha: 11-03-2025 a las 08:42:37. |
![]() |
| 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 |
|