Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Facturas electrónicas [España] (https://www.clubdelphi.com/foros/showthread.php?t=89295)

elguille 01-10-2018 16:52:59

Añadir Pdf De La Factura
 
Cita:

Empezado por newtron (Mensaje 526794)
Hola a tod@s.


Viendo que este asunto no prosperaba y que necesitaba resolverlo le encargué el proyecto a alguien que sabe más que nosotros y que domina varias herramientas de programación.


Había que resolver dos problemas, primero el de firmar el fichero XML en tiempo de ejecución, cosa que estaba complicada sin componentes externos porque desde Delphi no conocemos a nadie que haya sido capaz de hacerlo así que se ha desarrollado una dll en .NET que hace la función de firmado y que se llama desde el proyecto Delphi. Posteriormente había que hacer la llamada al webservice firmada con el protocolo X.509, cosa que tampoco sabíamos resolver y que tampoco ha sido fácil de desarrollar.


Resumiendo, aquí os adjunto un ejemplo operativo que hace las funciones más habituales de llamadas al webservice de FACE, firma y envía ficheros XML, consulta de facturas, consulta de unidades y alguna cosa más que no he probado porque en principio tampoco voy a necesitar. Por supuesto también se pueden usar sus funciones para solamente firmar un fichero XML para enviarlo por otros medios.



Está compilado en Delphi Berlín e imagino que funcionará igualmente en Tokyo, para que funcione en versiones anteriores posiblemente habría que hacer algunos retoques.



Aunque lo pongo en un LEEME.TXT lo único que hay que hacer es tener instalada y registrada la dll de CAPICOM (no incluida) y posteriormente ejecutar el fichero REGISTER.BAT para registrar la dll que se usa para la firma.


Link para la descarga.



Saludos y que aproveche.

Edito:

Se me olvidaba comentar dos temas:

1º Para poder enviar facturas a FACE hay que estar dado de alta como proveedor. Si quieres usar los wsdl de prueba hay que estar dado de alta por el entorno de pruebas y si quieres usar los de producción hay que darse de alta también en producción. Si no me equivoco, el entorno de pruebas es https://se-face.redsara.es/es/login

2º El programa que adjunto tiene los WSDL del entorno de pruebas, para pasar al de producción solo hay que cambiar en el objeto HTTPRIO el wsdl, puerto y servicio.

Gracias Newtron por el codigo. Trasteando con el he enviado sin problemas una factura a la webservice de pruebas, pero para poderla emplear necesitaria poder añadir el PDF correspondiente a la imagen fisica de la factura, mirando el WDSL he añadido el siguiente codigo al enviar la factura

Código Delphi [-]
  
  miarr:arrayofanexofile;
  miarr1:anexofile;

if ficheropdf<>'' then
  begin
    MIARR1:=anexofile.create;
    miarr1.mime:='application/pdf';
    MIARR1.nombre:=extractfilename(ficheropdf);
    MIARR1.anexo:=tfile.ReadAllText(ficheropdf);
    SetLength(miarr, Length(miarr)+1);
    miarr[0]:=miarr1;
    SenderEnviarFactura.anexos  := miarr;
  end;
pero al hacerlo recibo el error "Se encontró un carácter no valido en el contenido del texto", imagino que tengo que codificar de alguna manera el texto resultante de tfile.ReadAllText(ficheropdf); ¿alguien sabe cómo se haría?
Gracias

newtron 01-10-2018 18:23:54

Guille.


Me alegro de que te haya servido el código. Sobre el tema del problema que tienes la verdad es que no sabría decirte pero si te puedo comentar que tuvimos bastantes problemas con la codificación de los "strings" que se enviaban y al final funcionó codificando con UTF8Encode(...), no sé si los tiros en este caso irán por ahí.


Saludos

Edito: Si das con la solución compártelo por favor por si alguno lo necesitamos.

elguille 02-10-2018 08:34:54

Cita:

Empezado por newtron (Mensaje 528729)
Guille.


Me alegro de que te haya servido el código. Sobre el tema del problema que tienes la verdad es que no sabría decirte pero si te puedo comentar que tuvimos bastantes problemas con la codificación de los "strings" que se enviaban y al final funcionó codificando con UTF8Encode(...), no sé si los tiros en este caso irán por ahí.


Saludos

Edito: Si das con la solución compártelo por favor por si alguno lo necesitamos.

Ya me fije con los comentarios que habiais hecho muchas pruebas. Lo que comentas y varias cosas mas ya las habia probado y no se me ocurre que empaquetado es el que quieren, en fin haré mas pruebas a ver si me viene alguna idea.

Gracias y saludos

Al González 02-10-2018 23:36:52

Cita:

Empezado por newtron (Mensaje 526794)
[...]firmar el fichero XML en tiempo de ejecución, cosa que estaba complicada sin componentes externos porque desde Delphi no conocemos a nadie que haya sido capaz de hacerlo[...]

Y una vez que Embarcadero o algún programador lo consiga con código 100% en Delphi, será la noticia de la década.

elguille 15-11-2018 11:59:54

Código Delphi [-]
var
  miarr:arrayofanexofile;
  miarr1:anexofile;

  if edit1.Text<>'' then
  begin
    MIARR1:=anexofile.create;
    miarr1.mime:='application/pdf';
    MIARR1.nombre:=utf8encode(extractfilename(EDIT1.Text));
    MIARR1.anexo:=Encode64(tfile.ReadAllText(edit1.Text),tetUTF8);
    SetLength(miarr, Length(miarr)+1);
    miarr[0]:=miarr1;
    SenderEnviarFactura.anexos  := miarr;
  end;
A falta de hacer una prueba real este es el codigo correcto para añadir un pdf de imagen de la factura.

newtron 16-11-2018 09:13:54

Cita:

Empezado por elguille (Mensaje 529562)
Código Delphi [-]var miarr:arrayofanexofile; miarr1:anexofile; if edit1.Text<>'' then begin MIARR1:=anexofile.create; miarr1.mime:='application/pdf'; MIARR1.nombre:=utf8encode(extractfilename(EDIT1.Text)); MIARR1.anexo:=Encode64(tfile.ReadAllText(edit1.Text),tetUTF8); SetLength(miarr, Length(miarr)+1); miarr[0]:=miarr1; SenderEnviarFactura.anexos := miarr; end;

A falta de hacer una prueba real este es el codigo correcto para añadir un pdf de imagen de la factura.


^\||/^\||/ muchas gracias por la info, el que primero lo pruebe que lo confirme.


Saludos

Virman 14-03-2019 08:06:39

Consulta estado facturas
 
Buenos días,
Tengo que realizar un programa que consulte el estado de las facturas pero sin certificado. En la web de FACE he visto que rellenando unos campos se permite realizar la consulta de facturas.

Entiendo que podría usar el programa que habéis aportado para realizar estas consultas, verdad?

Muchas gracias!

newtron 14-03-2019 09:36:55

Cita:

Empezado por Virman (Mensaje 531048)
Buenos días,
Tengo que realizar un programa que consulte el estado de las facturas pero sin certificado. En la web de FACE he visto que rellenando unos campos se permite realizar la consulta de facturas.

Entiendo que podría usar el programa que habéis aportado para realizar estas consultas, verdad?

Muchas gracias!


Dudo que puedas consultar las facturas sin tener que introducir el certificado.

Neftali [Germán.Estévez] 14-03-2019 09:51:45

Cita:

Empezado por Virman (Mensaje 531048)
Tengo que realizar un programa que consulte el estado de las facturas pero sin certificado. En la web de FACE he visto que rellenando unos campos se permite realizar la consulta de facturas.


Tendrías quue acalarar qué sistema quieres utilizar. Hay varios.
Habría que ver si se puede enviar información de registro a la web utilizando las Indy o similares.


Cita:

Empezado por Virman (Mensaje 531048)
Entiendo que podría usar el programa que habéis aportado para realizar estas consultas, verdad?

No se de qué programa hablas. Está en este hilo.
¿Puedes dar un link al programa? No sigo con mucho detalle este hilo.


Cita:

Empezado por newtron (Mensaje 531050)
Dudo que puedas consultar las facturas sin tener que introducir el certificado.


Si se puede. Hay varios sistemas de consulta:



Virman 14-03-2019 12:00:22

Si se puede. Hay varios sistemas de consulta:


[/quote]

Esta opción es a través de su web y obliga a introducir un captcha.

Lo que yo estoy preguntando es si habría posibilidad de, usando el web service, realizar esa consulta de una factura sin identificación y no tener que introducir captcha alguno.

Cualquier ayuda o sugerencia es agradecida.

Un saludo.

Casimiro Notevi 14-03-2019 12:19:58

Cita:

Empezado por Virman (Mensaje 531055)
Esta opción es a través de su web y obliga a introducir un captcha.
Lo que yo estoy preguntando es si habría posibilidad de, usando el web service, realizar esa consulta de una factura sin identificación y no tener que introducir captcha alguno.Cualquier ayuda o sugerencia es agradecida.Un saludo.

Algún control debe tener, ya que entonces cualquiera podría ver las facturas de quien quisiera.

newtron 14-03-2019 12:23:24

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 531051)

Si se puede. Hay varios sistemas de consulta:




Me refería a que no creo que pueda hacer consultas sin identificarse.

Neftali [Germán.Estévez] 14-03-2019 13:20:04

Cita:

Empezado por Virman (Mensaje 531055)
Si se puede. Hay varios sistemas de consulta:
Esta opción es a través de su web y obliga a introducir un captcha.


Lo que yo preguntaba es ¿Cual de ellas?
Quitando la del certificado quedan 3.


Revisa estos hilos que explican cómo interactuar con una web:
http://www.clubdelphi.com/foros/showthread.php?t=37050
https://www.clubdelphi.com/foros/showthread.php?t=72067


Si buscas encontrarás más...

Virman 14-03-2019 16:37:17

Usando el botón de Sin Identificación.

En el formulario que aparece a continuación te pide algún dato que identifique la factura e introducir un captcha. https://1drv.ms/u/s!Ar8oZnzvbJ7FmVRITrDI51MC9xPk

Mi consulta es si usando los métodos del webservice se podría hacer esta consulta a través de un programa, para no tener que usar la web y sin tener que introducir el captcha alguno.

Muchas gracias.

Virman 18-03-2019 16:45:34

Cita:

Empezado por Virman (Mensaje 531061)
Usando el botón de Sin Identificación.

En el formulario que aparece a continuación te pide algún dato que identifique la factura e introducir un captcha. https://1drv.ms/u/s!Ar8oZnzvbJ7FmVRITrDI51MC9xPk

Mi consulta es si usando los métodos del webservice se podría hacer esta consulta a través de un programa, para no tener que usar la web y sin tener que introducir el captcha alguno.

Muchas gracias.

Me auto respondo.
Al final he optado por hacer una aplicación que interactúe con la web, como recomendaba Neftali [Germán.Estévez] :), es un tostón tener que estar introduciendo el captcha, pero al menos puedes consultar el estado de una factura sin tener que identificarte en el portal de FACE.

Gracias a todos por vuestros comentarios y ayuda.

keys 12-07-2022 09:28:48

Hola a todos.

Tengo una aplicación que genera facturas en formato facturae y ahora quiero hacer que se envién directamente a face. ¿Sabeis donde se puede encontrar la informacion de los servicios web, wsdl, entornos de desarrollo, etc?. No lo encuentro en la página de face o ¿igual te lo envían cuando te das de alta?.

Gracias.

nincillo 05-08-2022 20:09:52

Cita:

Empezado por keys (Mensaje 547456)
Hola a todos.

Tengo una aplicación que genera facturas en formato facturae y ahora quiero hacer que se envién directamente a face. ¿Sabeis donde se puede encontrar la informacion de los servicios web, wsdl, entornos de desarrollo, etc?. No lo encuentro en la página de face o ¿igual te lo envían cuando te das de alta?.

Gracias.

Mira a ver si este post en concreto te puede servir para algo: https://www.clubdelphi.com/foros/sho...&postcount=514

El hilo no es de FacturaE precisamente, pero ese ejemplo que posteó @ermendalenda si que parece que es para eso.

Yo creo que estoy en tu caso, actualmente genero el xml, pero luego lo subo manualmente a la plataforma y me gustaría poder enviarlo en modo "automático".

Prueba y cualquier cosa me dices para ver si avanzamos.

nincillo 22-08-2022 19:37:09

Cita:

Empezado por keys (Mensaje 547456)
Hola a todos.

Tengo una aplicación que genera facturas en formato facturae y ahora quiero hacer que se envién directamente a face. ¿Sabeis donde se puede encontrar la informacion de los servicios web, wsdl, entornos de desarrollo, etc?. No lo encuentro en la página de face o ¿igual te lo envían cuando te das de alta?.

Gracias.

¿Conseguiste avanzar algo?

Yo un poquito...

Me he dado de alta como integrador y ya consigo hacer consultas contra el webservice en el entorno de pruebas tras pedir que me diera de alta, etc...

Mi pregunta ahora es la siguiente, cuando mi aplicación la ponga en marcha en el ordenador de mi cliente, ¿voy a poder utilizar los webservice con el mismo certificado que hasta ahora estaba utilizando él para enviar las facturas manualmente o hay que pedir que también lo den de alta como "integrador"?. Es un punto que ahora mismo no tengo nada claro...

newtron 23-08-2022 09:10:07

Buenas.

Yo creo que el certificado da igual, la diferencia es atacar a las urls de prueba o a las de producción.

Saludos.

nincillo 23-08-2022 11:43:07

Cita:

Empezado por newtron (Mensaje 548019)
Buenas.

Yo creo que el certificado da igual, la diferencia es atacar a las urls de prueba o a las de producción.

Saludos.

Si selecciono el certificado que tengo dado de alta como integrador y pongo el programa "apuntando" a las url de prueba y le pido por ejemplo "SolicitarUnidades" me responde correctamente. (correcto)

Si con el mismo certificado, apunto al entorno real, me da error de que no estoy dado de alta (correcto también)

El problema viene cuando hago las prueba de envío con el certificado de "proveedor", no de "integrador". En ese caso me da error tanto en el entorno de pruebas como en el real.

Es como si hiciera falta también dar de alta o activar algo para poder hacer envíos mediante webservice con el certificado de proveedor...

Les he mandado una consulta, pero de momento no me han contestado...


La franja horaria es GMT +2. Ahora son las 05:46:29.

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