Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 01-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
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
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 04:16:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi