Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Ley antifraude 2021 (VERIFACTU) - Programas informáticos (https://www.clubdelphi.com/foros/showthread.php?t=95235)

antoine0 15-01-2024 10:47:18

Cita:

Empezado por afxe (Mensaje 554012)
No sé... creo que la frase "Para un determinado obligado tributario, el sistema informático producirá una única cadena de registros de facturación" no deja lugar a dudas, el obligado tributario no es cada TPV o PDA de un negocio, seguramente se refiere a un CIF/NIF.

Esta leyendo como si fuese escrito "Para un determinado obligado tributario, el único sistema informático..." Pero esto no está escrito en ningún lugar. Y la respuesta a sglorka contempla claramente la posibilidad de tener más de un SIF para una determinada empresa (NIF).
Cita:

Creo que si te dan la posibilidad de empezar tantas cadenas de facturación desde cero como uno quiera no tendría mucho sentido encadenar la factura, incluso se podría llegar a la paradoja de tener tantas series de facturación como facturas, y ya no sería necesario encadenar.
Aquí vendrá el inspector diciéndote que hay abuso, y será multa por mala fe. Hay lógica de tener varios SIF por tener varios TPV, ya que son varios ordenadores. No veo tanta lógica en poner varios SIF para un mismo NIF corriendo en un mismo servidor, aunque sería para dos departamentos distintos con dos jefes muy celosos.

Cita:

Otra discusión que tenemos es si el envío debe ser inmediato a la emisión de la factura o puedo hacerlo en momentos más propicios... Según el desarrollo técnico del sistema Verifactu dice que tras cada comunicación recibiremos instrucciones de cuando o cuantos registros tendremos que comunicar la siguiente vez, pero no sé si nosotros podemos decidir también la cantidad de registros y establecer ciclos periódicos de comunicación.
El sistema (n,t) te ponen límite por debajo en número de registros (n) y en el tiempo de demora (t). Entiendo que no hay límite por encima para el tiempo de demora (para n hay un límite de 10.000 registros). El único lugar dónde veo una restricción está en el artículo 16.1 del RDL (la énfasis es mía):
Cita:

[...] para remitir efectivamente por medios electrónicos a la Agencia Estatal de Administración Tributaria de forma continuada, segura, correcta, íntegra, automática, consecutiva, instantánea y fehaciente todos los registros de facturación generados [...]
Es cierto que si el sistema de AEAT ha caído o la conexión a internet de la zona está fuera de servicio por motivos externos, no veo muy bien por qué te multen por no cumplir esta instantaneidad, aunque siga definida como "en menos de 60 minutos".
Pero para ponerlo de otra forma, no sé si es posible tener un sistema dónde la presentación al sistema Veri*factura siga suspendida al uso de certificados de usuario, dado que son certificados cuyo acceso no es (o no debería ser) posible si aquel usuario no esté presente: se podrían dar casos dónde no hay ningún usuario habilitado disponible y por tanto no sería posible remitir la información al sitio Veri*Factu, por ejemplo hasta la mañana siguiente. Evidentemente si hay posibilidad o amenaza de sanción en tal caso, habrán empresas dónde la obligación de presencia del usuario se diluirá (tipo instalación de certificados en varios cuentas de usuarios, o comunicación de contraseñas) y al final será una menor seguridad del sistema...

Neftali [Germán.Estévez] 15-01-2024 11:53:35

Cita:

Empezado por afxe (Mensaje 554001)
...
(1) Pienso que los terminales generarán prefecturas (por poner un nombre) y se irán encolando en un sistema que procederá a la “facturación” con todo lo que implique (generación del xml, encadenado, huella, envio, QR…).
(2) Si el sistema es ágil el cliente saldrá por la puerta con su factura verificable…
(3) Si se produce una sobrecarga o una avería o desconexión de la central, se le podrá poner un QR para que en breve pueda descargarse en el móvil su factura verifactu, o reclamarla posteriormente.

Creo que estás equivocado en el proceso. Me baso en lo que sabemos de ticketBAI y lo que sabemos hasta ahora.
(1) Tu sistema debe generar una factura REAL que el cliente debe llevarse cuando salga de la tienda, supermercado, peluquería,...
Los 2 procesos que hay que separar son:
* La generación de la factura, con encadenamiento y QR (en el ticket). TODO esto debe y puede hacerse sin conexión a Internet.
* El envío, que puede hacerse en ese momento o más tarde, dependiendo del sistema, de las comunicaciones, de internet o de lo que sea. Para eso sí puedes montar una cola.
NOTA: En el caso de ticketBAI la AEAT especifica expresamente que el sistema DEBE poder facturar sin conexión.

(2) El cliente DEBE irse con un ticket REAL y ese es el ticket definitivo (nada de una prefactura, borrador,...).

(3) Si es como TicketBAI como parece, el ticket del cliente DEBE llevar el QR. Con ese QR el cliente puede comprobar su factura y además asegura que esa factura ya no se modifica, ya que lleva las medidas de seguridad correspondiente (encadenamiento de la factura anterior).
Si la factura no se ha podido subir en ese momento (porque la tienda se ha quedado sin internet, por ejemplo) el ticket lleva el QR igualmente con la información de la factura (que ya debe estar generada en tu sistema -y no modificable-). Entiendo que si tú esa factura la subes al día siguiente (porque se te roto el router) el cliente podrá consultarla


Cita:

Empezado por ermendalenda (Mensaje 554005)
Bueno, según lo que cada uno interprete por cada sistema informático.
Si tienes 4 tpvs en un supermercado y cada uno tiene sus series independiente, posiblemente te acepten cada tpv como un sistema independiente, quizás tengas que reformular la pregunta para que sean más claros.

Yo lo veo por ahí también.
Pienso también en empresas con delegaciones, donde lo habitual son series distintas, aunque la facturación se hace por 1 sólo ente.
Sería limitar cómo debes tú facturar (más restrictivo que la ley de facturación).

Cita:

Empezado por afxe (Mensaje 554012)
(1) No sé... creo que la frase "Para un determinado obligado tributario, el sistema informático producirá una única cadena de registros de facturación" no deja lugar a dudas, el obligado tributario no es cada TPV o PDA de un negocio, seguramente se refiere a un CIF/NIF.

(2) Creo que si te dan la posibilidad de empezar tantas cadenas de facturación desde cero como uno quiera no tendría mucho sentido encadenar la factura, incluso se podría llegar a la paradoja de tener tantas series de facturación como facturas, y ya no sería necesario encadenar.

(1) El "Corte Inglés" tiene un único CIF, pero no creo que puedas obligar a todos los establecimientos/TPV/Delegaciones a enviar con la misma serie.
(2) Basándome también en TicketBAI, hay unas normas para crear una nueva serie. Esto que describes no se puede hacer. Y en todo caso la creación hay que justificarla (por ejemplo al empezar un nuevo ejercicio).

pablog2k 15-01-2024 12:24:48

muy de acuerdo con Nefta en todo lo comentado, sería lo más lógico que se hiciera todo intentando parecerse a lo que ya está hecho con ticketbai

ermendalenda 15-01-2024 12:52:23

hola
 
No es práctico que vayan encadenados por cif, tu mismo tienes la preocupación de las colas.
Lo de que mandes antes de 1 hora no lo has interpretado bien. Dice que si tienes problemas con la comunicacion tiene que haber un intento cada hora mínimo, ya mandas cuando se pueda.
Ninguna empresa va a tener un servicio de atención tan inmediato ante una incidencia, las 24h del dia los 365 dias del año.
Cada sistema SIF será un identificador, y en cada identificador tendras una serie para los tiquets y/o facturas, para rectificaivas. Ejemplo que yo uso
Comercio numero 44
Serie tiquets (1)


tpv 1
Serie: 44.1.1
Nº Factura : xxx

tpv 2
Serie: 44.2.1
Nº Factura : xxx

tpv 3
Serie: 44.3.1
Nº Factura : xxx

Cada tpv con su numerador y su blockchain de la huella.

No te compliques de verdad.

antoine0 15-01-2024 13:05:58

Cita:

Empezado por pablog2k (Mensaje 554022)
muy de acuerdo con Nefta en todo lo comentado, sería lo más lógico que se hiciera todo intentando parecerse a lo que ya está hecho con ticketbai

También de acuerdo. Por algo han dado como identificado "tike" a la aplicación Veri*factu (//prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl)

_Io 15-01-2024 14:30:22

Hola.

Lo Primero, agradecer a todos lo que estáis involucrados en este Foro, porque está ayudando y aclarando conceptos a nuevos como yo.
Lo Dicho Muchas Gracias.

En contestación a la duda del compañero ramherfer en el post #1104.
Me pasó lo mismo, el problema lo tienes porque estás utilizando un fichero descargado en tu PC. En vez de hacer eso, pones el link al fichero en internet y te generará la unit, con todas las clases como las que puso Neftali.

Sigo en el hilo.

Salu2.

afxe 15-01-2024 16:37:57

Ermendalenda, Antoine0 y Neftali... gracias por vuestra intervención, viniendo de vosotros cambiaré el planteamiento (tengo gran estima vuestra experiencia).

Tengo tres tipos de terminales de SIF: TPV de tiendas y supermercados con series independientes, ERP de escritorio tirando de una misma serie, o varias según el tipo de cliente o el tipo de venta, y Android libres, también tirando de una serie cada terminal. No quiero poner la cantidad de terminales que mantenemos, pero en un pequeño porcentaje (muy pequeño), se produce una pérdida de datos (en lo que llevamos de mes ha pasado 2 veces), desde criptolockers, pérdida o rotura del dispositivo (hablo de los androids), averías del disco duro por humedad, frío o calor en los TPV, etc... y casi siempre pasa en los dispositivos autónomos sin conexión a internet o que envían la información bajo petición del usuario, y la solución ha sido volver a meter los datos a mano... y no siempre se ha conseguido meter la realidad de lo que ha pasado... Aparte de los "truquitos" que me hacen algunos, como tener varios TPV y uno dejarlo en una especie de "Sandbox", que al terminar el día lo reinician a como estaba al inicio sin llegar a transmitir los datos de venta a la central.

No sé cómo evitar un uso fraudulento del sistema o accidentes que puedan achacarlo a negligencia de la empresa desarrolladora, por eso era lo de controlar en nuestros servidores los procesos de facturación (una especie de facturación en la nube para programas de escritorio o distribuidos). Si empieza a suceder fallos de encadenamiento por pérdidas de datos, un cambio de serie erróneo, un TPV mal configurado (que nos ha pasado también) temo que nos colapse el departamento de atención técnica con acciones de gran consumo de tiempo.

Imagino que cada uno iremos reflejando cómo atacamos esos problemas y habrá ideas geniales que podamos replicar, sobre todo por parte de los que habéis sufrido la puesta en marcha del Ticketbai.

ermendalenda 15-01-2024 18:49:31

Cita:

Empezado por afxe (Mensaje 554027)
Ermendalenda, Antoine0 y Neftali... gracias por vuestra intervención, viniendo de vosotros cambiaré el planteamiento (tengo gran estima vuestra experiencia).

Tengo tres tipos de terminales de SIF: TPV de tiendas y supermercados con series independientes, ERP de escritorio tirando de una misma serie, o varias según el tipo de cliente o el tipo de venta, y Android libres, también tirando de una serie cada terminal. No quiero poner la cantidad de terminales que mantenemos, pero en un pequeño porcentaje (muy pequeño), se produce una pérdida de datos (en lo que llevamos de mes ha pasado 2 veces), desde criptolockers, pérdida o rotura del dispositivo (hablo de los androids), averías del disco duro por humedad, frío o calor en los TPV, etc... y casi siempre pasa en los dispositivos autónomos sin conexión a internet o que envían la información bajo petición del usuario, y la solución ha sido volver a meter los datos a mano... y no siempre se ha conseguido meter la realidad de lo que ha pasado... Aparte de los "truquitos" que me hacen algunos, como tener varios TPV y uno dejarlo en una especie de "Sandbox", que al terminar el día lo reinician a como estaba al inicio sin llegar a transmitir los datos de venta a la central.

No sé cómo evitar un uso fraudulento del sistema o accidentes que puedan achacarlo a negligencia de la empresa desarrolladora, por eso era lo de controlar en nuestros servidores los procesos de facturación (una especie de facturación en la nube para programas de escritorio o distribuidos). Si empieza a suceder fallos de encadenamiento por pérdidas de datos, un cambio de serie erróneo, un TPV mal configurado (que nos ha pasado también) temo que nos colapse el departamento de atención técnica con acciones de gran consumo de tiempo.

Imagino que cada uno iremos reflejando cómo atacamos esos problemas y habrá ideas geniales que podamos replicar, sobre todo por parte de los que habéis sufrido la puesta en marcha del Ticketbai.

Buff, pues quien mejor conoce la problemática y los puntos críticos de tu software para cerrar al.máximo las puertas.
Si te sirve de algo, lo que yo hago es voy poniendo en cola los xmls y los voy enviando a un servidor en la nube que es el que se va a encargar de enviarlos a hacienda, siempre respetando los parámetros que diga hacienda por dispositivo...
En la nube debes poner un primer control de encadenamiento y una alerta al cliente que tiene el tpv si se produce rotura de encadenamiento.
Los problemas técnicos por averias seguro estaran recogidos en las doctrinas/reglamento(cuando estén disponibles) y te dirán como actuar si algún registro se corrompe o se rompe el.disco.
Por supuesto tienes que i for ar claramente a tus clientes donde se meten si no cumplen con la parte que les toca.
Te recomiendo que le de mil vueltas a crear todo tipo de alertas informativas, por correo para ti y por pantalla/correo al cliente, de todas las incidencias, el control de errores es lo más trabajoso de esta normativa.

_Io 16-01-2024 07:06:20

Buenos días.

Perdonarme, soy bastante nuevo en esto de programación utilizando xsd,wsdl...
Estoy un poco o un mucho perdido.
He llegado hasta aquí, para generar el xml de una factura, pero no sé de dónde sale o cómo hacer la función NewFacturaAlta
Código Delphi [-]
procedure TForm3.Button2Click(Sender: TObject);
var
  fAlta:IXMLSistemaFacturacionAltaFact;
begin

  fAlta := NewFacturaAlta;
  fAlta.Cabecera.IDVersion := '1.0';
  fAlta.Cabecera.ObligadoEmision.NombreRazon := 'EMPRESA PRUEBAS';
  fAlta.Cabecera.ObligadoEmision.NIF := '11111111H';
  fAlta.Cabecera.TipoRegistroAEAT := 'S0';

  ...

  var sXML:string;
  fAlta.OwnerDocument.SaveToXML(sXML);
  Memo1.Lines.Text := sXML;

end;

Muchas Gracias.

Neftali [Germán.Estévez] 16-01-2024 08:25:28

Cita:

Empezado por _Io (Mensaje 554031)
Perdonarme, soy bastante nuevo en esto de programación utilizando xsd,wsdl...
Estoy un poco o un mucho perdido.
He llegado hasta aquí, para generar el xml de una factura, pero no sé de dónde sale o cómo hacer la función NewFacturaAlta


Aquí hemos puesto algo de código.
Una vez importado el WSDL. A ver si te sirve...

_Io 16-01-2024 10:04:30

Hola Neftali, buenos días.
Muchas gracias por tu rápida respuesta.

Cita:

Aquí hemos puesto algo de código.
Una vez importado el WSDL. A ver si te sirve...
Ya he visto este código y en mi poco conocimiento en el tema, creo que es para enviar la factura a hacienda, he conseguido generarlo, gracias a vosotros, claro.

Cita:

procedure TForm3.Button2Click(Sender: TObject);
var
fAlta:IXMLSistemaFacturacionAltaFact;
begin

fAlta := NewFacturaAlta;
fAlta.Cabecera.IDVersion := '1.0';
fAlta.Cabecera.ObligadoEmision.NombreRazon := 'EMPRESA PRUEBAS';
fAlta.Cabecera.ObligadoEmision.NIF := '11111111H';
fAlta.Cabecera.TipoRegistroAEAT := 'S0';

...

var sXML:string;
fAlta.OwnerDocument.SaveToXML(sXML);
Memo1.Lines.Text := sXML;

end;
Entiendo que este código que pusistes es para generar el xml de la factura y es lo que intentaba hacer, pero no sé exactamente de dónde sale NewFacturaAlta, es por eso el post.

Salu2.

nincillo 16-01-2024 10:37:15

Cita:

Empezado por _Io (Mensaje 554033)
Hola Neftali, buenos días.
Muchas gracias por tu rápida respuesta.



Ya he visto este código y en mi poco conocimiento en el tema, creo que es para enviar la factura a hacienda, he conseguido generarlo, gracias a vosotros, claro.



Entiendo que este código que pusistes es para generar el xml de la factura y es lo que intentaba hacer, pero no sé exactamente de dónde sale NewFacturaAlta, es por eso el post.

Salu2.

Si no me confundo, el trozo de código que estás poniendo no se corresponde a como trabajar con el wsdl, sino a como trabajar si lo que hiciste fue importar el wsd.

Si estoy en lo cierto, el "problema" que yo tuve en su momento, no es el de dónde sale el NewFacturaAlta, sino que luego no super como crear/añadir el nodo correspondiente a los datos de la factura propiamente dichos, ya que no encontré como hacer el "NewRegistroFactura" por así decirlo para poder añadirle el resto de datos que no son de la cabecera.

_Io 16-01-2024 11:25:52

Ok.

Entonces, ¿cómo estáis generando el XML de la Factura?
Con código independiente al wsdl ?

con el XML Data Binding , he pasado un xsd y me ha generado diferentes nodos

Cita:

type

{ Forward Decls }

IXMLSistemaFacturacionAltaFact = interface;
IXMLCabecera = interface;
IXMLPersonaFisicaJuridicaESType = interface;
IXMLSistemaFacturacionBajaFact = interface;
IXMLDatosPresentacionType = interface;
IXMLDatosPresentacion2Type = interface;
IXMLRegistroSf = interface;
IXMLRegistroSf_PeriodoImputacion = interface;
IXMLIDFacturaExpedidaBCType = interface;
IXMLIDFacturaExpedidaBCType_IDEmisorFactura = interface;
IXMLIDFacturaExpedidaBajaType = interface;
IXMLIDFacturaExpedidaBajaType_IDEmisorFacturaAnulada = interface;
IXMLRegistroFacturacionType = interface;
IXMLIDFacturaExpedidaType = interface;
IXMLIDFacturaExpedidaType_IDEmisorFactura = interface;
IXMLRegistroFacturacionType_FacturasRectificadas = interface;
IXMLIDFacturaARType = interface;
IXMLRegistroFacturacionType_FacturasSustituidas = interface;
IXMLDesgloseRectificacionType = interface;
IXMLPersonaFisicaJuridicaType = interface;
IXMLIDOtroType = interface;
IXMLRegistroFacturacionType_Destinatarios = interface;
IXMLDesgloseType = interface;
IXMLDetalleType = interface;
IXMLEncadenamientoFacturaAnteriorType = interface;
IXMLEncadenamientoFacturaAnteriorType_IDEmisorFacturaRegistroAnterior = interface;
IXMLSistemaInformaticoType = interface;
IXMLRegistroFacturacionBajaType = interface;
IXMLObligadoGeneracionType = interface;
IXMLDatosControlType = interface;
IXMLIDFacturaConsulta2Type = interface;
IXMLPersonaFisicaJuridicaUnicaESType = interface;
IXMLRangoFechaPresentacionType = interface;
IXMLRegistroDuplicadoType = interface;
IXMLContraparteConsultaType = interface;
IXMLConsultaInformacion = interface;
IXMLCabeceraConsultaSf = interface;
IXMLObligadoEmisionConsultaType = interface;
IXMLControFlujoEnviosType = interface;

{ IXMLSistemaFacturacionAltaFact }

IXMLSistemaFacturacionAltaFact = interface(IXMLNode)
['{71D1ADBE-E067-4563-982B-E703A1790DA9}']
{ Property Accessors }
function Get_Cabecera: IXMLCabecera;
{ Methods & Properties }
property Cabecera: IXMLCabecera read Get_Cabecera;
end;

{ IXMLCabecera }

IXMLCabecera = interface(IXMLNode)
['{B83FF7BE-8748-4880-9D0D-09A3B2E296FB}']
{ Property Accessors }
function Get_IDVersion: UnicodeString;
function Get_ObligadoEmision: IXMLPersonaFisicaJuridicaESType;
function Get_TipoRegistroAEAT: UnicodeString;
function Get_FechaFinVeriFactu: UnicodeString;
procedure Set_IDVersion(const Value: UnicodeString);
procedure Set_TipoRegistroAEAT(const Value: UnicodeString);
procedure Set_FechaFinVeriFactu(const Value: UnicodeString);
{ Methods & Properties }
property IDVersion: UnicodeString read Get_IDVersion write Set_IDVersion;
property ObligadoEmision: IXMLPersonaFisicaJuridicaESType read Get_ObligadoEmision;
property TipoRegistroAEAT: UnicodeString read Get_TipoRegistroAEAT write Set_TipoRegistroAEAT;
property FechaFinVeriFactu: UnicodeString read Get_FechaFinVeriFactu write Set_FechaFinVeriFactu;
end;
Yo entiendo que con esta clase, se podría generar el XML de la factura.
Vamos a estudiar a ver hasta dónde llego.

Saludos.

_Io 16-01-2024 20:05:44

Hola, buenas tardes.

Me estoy liando y tengo la cabeza a punto de reventar :confused:

¿Qué diferencia hay entre el XML de la factura (la que se guarda y calcula el HASH) y el XML de alta (el que se envía a la AEAT ?

Siento ser tan Pesado :(

Muchas Gracias.

nincillo 16-01-2024 21:01:37

Cita:

Empezado por _Io (Mensaje 554048)
Hola, buenas tardes.

Me estoy liando y tengo la cabeza a punto de reventar :confused:

¿Qué diferencia hay entre el XML de la factura (la que se guarda y calcula el HASH) y el XML de alta (el que se envía a la AEAT ?

Siento ser tan Pesado :(

Muchas Gracias.

Hasta donde yo voy entendiendo, el xml de la factura lo vas generando cada vez que facturas, calculando su hash, etc.
Luego, cuando cada x tiempo vas haciendo los envíos, lo que hace es cargar y ficheros xml de facturas y los envías de una sola vez a hacienda. El x y el y puede variar según las necesidades que te marque hacienda en cada momento.

Aprovechando. ¿Conseguiste avanzar algo con lo que comentabas en tu post anterior de generar el xml partiendo de los xsd?.

Un saludo y espero que los que ya lo tienen más avanzando nos confirmen o corrijan.

_Io 17-01-2024 07:05:31

Buenas dias.

Todavía no puedo poner enlaces, tengo el usuario limitado.

nincillo
Hasta donde yo voy entendiendo, el xml de la factura lo vas generando cada vez que facturas, calculando su hash, etc.
Luego, cuando cada x tiempo vas haciendo los envíos, lo que hace es cargar y ficheros xml de facturas y los envías de una sola vez a hacienda. El x y el y puede variar según las necesidades que te marque hacienda en cada momento.


Esto más o menos lo tengo claro.
Es la estructura de cada archivo xml. El compañero Maska10, te contestó sobre la posible diferencia en el postpost #961, página 49, que elarchivo de la factura iba sin el nodo cabecera y el archivo que se manda si la lleva, pero no he visto ningún ejemplo.

nincillo
¿Conseguiste avanzar algo con lo que comentabas en tu post anterior de generar el xml partiendo de los xsd?.


Tengo problemas y no avanzo.

Saludos.

Saludos.

edari 17-01-2024 10:08:17

Cita:

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


Dándole vueltas a este tema se me ocurren mil problemas que vamos a tener a la hora de enviar los datos y uno de ellos es que el NIF y nombre del cliente sean válidos. Imagino que si se intenta subir una factura con un nif erróneo el servidor chillará y la devolverá como no válida y a partir de ahí no sé cómo actuar, sobre todo si el cliente ya no está y no hay forma de comprobar y corregir ese dato.


Se puede hacer una consulta mediante webservice para confirmar que el nif+nombre es correcto pero estoy pensando en que se necesita hacer la llamada con un certificado válido y me temo que los clientes no van a instalar certificados en todos los posibles terminales de la red y que usen el programa. ¿Qué se os ocurre al respecto? porque ando un poco perdido con este asunto.


Gracias y un saludo.



Yo también le estoy dando vueltas a esto, me parece muy importante hacer ese Webservice de verificación porque, como sea como TicketBai, cada vez que subes una factura y es rechazada por algún tema de NIF...puede provocar errores de encadenamiento

Con el tema del Werbservice de Hacienda para validarlos, alguien sabe como se debería lanzarlo con curl?

Gracias

edari 17-01-2024 10:22:54

Ahora voy con una duda mía sobre los xml y el tema de la la firma


Creo que hay dos "estilos" de hacer el xml


Este
Código PHP:

<?xml version="1.0" ?>
<AltaFactuSistemaFacturacion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Cabecera xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
    <IDVersion>1.0</IDVersion>
    <ObligadoEmision>
      <NombreRazon>EMPRESA SL</NombreRazon>
      <NIF>NIF</NIF>
    </ObligadoEmision>
    <TipoRegistroAEAT>T0</TipoRegistroAEAT>
  </Cabecera>
  <RegistroAltaFacturas xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">
    <RegistroFacturacion>
      <IDFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
        <IDEmisorFactura>
          <NIF>NIF</NIF>
        </IDEmisorFactura>
        <NumSerieFacturaEmisor>3</NumSerieFacturaEmisor>
        <FechaExpedicionFacturaEmisor>16-01-2024</FechaExpedicionFacturaEmisor>
      </IDFactura>
      <NombreRazonEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">EMPRESA SL</NombreRazonEmisor>
      <TipoRegistroSIF xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">S0</TipoRegistroSIF>
      <TipoFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">F1</TipoFactura>
      <DescripcionOperacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">VENTAS</DescripcionOperacion>
      <Destinatarios xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
        <IDDestinatario>
          ...

</div>

y este


Código PHP:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<
soapenv:Header/>
<
soapenv:Body>
<
sum:AltaFactuSistemaFacturacion>
<
sum1:Cabecera>
<
sum1:IDVersion>1.0</sum1:IDVersion>
<
sum1:ObligadoEmision>
<
sum1:NombreRazon>EMPRESA SL</sum1:NombreRazon>
<
sum1:NIF>nif</sum1:NIF>
</
sum1:ObligadoEmision>
<
sum1:TipoRegistrroEAT>T0</sum1:TipoRegistrroEAT>
</
sum1:Cabecera>
<
sum:RegisgtroAltaFacturas>
<
sum:RegistroFacturacion>
<
sum1:IDFactura>
<
sum1:IDEmisorFactura>
<
sum1:NIF>nif</sum1:NIF>
</
sum1:IDEmisorFactura>
<
sum1:NumSerieFacturaEmisor>002235405</sum1:NumSerieFacturaEmisor>
<
sum1:FechaExpedicionFacturaEmisor>01-01-2024</sum1:FechaExpedicionFacturaEmisor>
</
sum1:IDFactura>
<
sum1:NombreRazonEmisor>EMPRESA SL</sum1:NombreRazonEmisor>
<
sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF>
<
sum1:TipoFactura>F1</sum1:TipoFactura>
<
sum1:DescripcionOperacion>Factura cliente</sum1:DescripcionOperacion>
<
sum1:Destinatarios

</div>

Entendiendo que la verificación de la huella que va a hacer Hacienda da igual que monte el fichero de una forma u otra porque al final siempre se va calcular sobre el contenido de los dos etiquetas "RegistroFacturacion"



Voy bien

sglorka 17-01-2024 10:29:05

Cita:

Empezado por edari (Mensaje 554052)
Yo también le estoy dando vueltas a esto, me parece muy importante hacer ese Webservice de verificación porque, como sea como TicketBai, cada vez que subes una factura y es rechazada por algún tema de NIF...puede provocar errores de encadenamiento

No sólo el Nif o el nombre del cliente pueden causarte este problema. También puedes tener problemas que causen el rechazo por otros motivos, tipos impositivos inexistentes (5,5% p.e.), clave del tipo de factura erróneo (F16), tipo de registro de alta erróneo (T8). Y todo esto ocurre cuando ya has generado 10 registros de facturación perfectamente encadenamos y cuando los vas a enviar (por que el control de flujo te ha marcado que hasta que no tengas 10 registros no los envíes ) resulta que se produce el rechazo de los registros 1,3 y 7 y los demás te han entrado correctamente, o no te han entrado aunque fueran correctos pero la aeat te rechaza todo el paquete. ¿ Qué hacemos ?
Yo trasladé una consulta parecida al correo de Verifactu y su respuesta fue :

Buenos días:

Tras consultarlo con los responsables, para esta casuística no podemos ofrecerle más información por el momento.
Actualmente, se está estudiando internamente cómo realizar el encadenamiento de facturas cuando existe algún rechazo por parte de la AEAT. En la futura Orden Ministerial se darán más detalles al respecto, y se incluirá en las FAQ de la sede electrónica de la AEAT.

Atentamente,
AEAT.

_Io 17-01-2024 10:35:43

Hola edari

Estos códigos que has puesto, son los del envío a la AEAT, o es el formato con el que se registra cada factura?.

Muchas Gracias.


La franja horaria es GMT +2. Ahora son las 19:59:18.

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