Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > General/Noticias
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-11-2025
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Motivos para permitir "subsanar"

Sé que ya se ha hablado de esto mucho. De hecho algunos han optado por no permitir hacer subsanaciones, sino rectificativas, porque motivos para subsanar debería haber pocos (y los que pudieran haber, se podrían corregir también con una Rectificativa, aunque sea más tedioso...).

Pero me gustaría tener esto cubierto para algunas causas concretas, por si acaso.

Entiendo que solo se puede subsanar una factura si el problema a corregir no afecta a los importes de la factura, los datos fiscales, etc.
Pero imaginemos que un usuario se equivoca de Motivo de Exención (pone E2 en vez de E3), o elige una ClaveRegimen que no es la adecuada (04 en vez de 01, o yo qué sé).
Hacienda no da error (o quizás sí), pero esos datos están mal (otra cosa es que sea TAN importante como para corregirlo, pero bueno, eso es otra historia...)

Total. Estoy pensando en detectar en mi aplicación si el usuario cambia alguno de estos datos de una factura/RF ya enviada, y si es así, intuir que se trata de una subsanación y generar un nuevo RF de Subsanación:
- ClaveRegimen cambiada
- MotivoExencion cambiado
- no sé si también tener en cuenta un cambio en el motivo y código de rectificación (R2,R3...) para las rectificativas

¿Pondríais un botón "subsanar" para determinadas facturas que cumplan una serie de condiciones? ¿O detectaríais con código si se ha cambiado algo susceptible de subsanación (como los ejemplos que puse) para evitar que ese botó esté siempre visible (y al usuario le dé por pulsarlo 30 veces)?

O si pasar un kilo de esto y no permitir subsanar nada. Rectificativas y punto
Responder Con Cita
  #2  
Antiguo 12-11-2025
Logan05 Logan05 is offline
Miembro
 
Registrado: jun 2024
Posts: 103
Poder: 2
Logan05 Va por buen camino
Cita:
Empezado por espinete Ver Mensaje
O si pasar un kilo de esto y no permitir subsanar nada. Rectificativas y punto
Yo por mi parte, de momento no permito la subsanación, mis clientes son "muy cucos" así que les corto las alas todo lo que puedo, cuando la cosa se calme ya veremos
Responder Con Cita
  #3  
Antiguo 12-11-2025
aleixep aleixep is offline
Miembro
 
Registrado: ene 2025
Posts: 25
Poder: 0
aleixep Va por buen camino
Nosotros hemos puesto un botón de subsanar en la pantalla que muestra los registros erróneos, pero lo único que hace es generar un nuevo registro de la misma factura. No sirve para modificar importes ni ningún otro valor (para eso se hace rectificativa), pero sí lo usamos para corregir errores del software.

Por ejemplo, el otro día les fallaron los envíos a algunos clientes porque tenían un formato de fecha extraño en su ordenador y Verifactu rechazaba la factura. Pues arreglamos el SIF para que ya no pasara y pulsamos el botón de "subsanar", enviándose así un nuevo registro exactamente igual que el anterior, pero con la fecha con el formato correcto.

Otro caso de uso sería también si recibiéramos errores de "registro duplicado", "esta no es la primera factura" o "han pasado los 240 segundos" (por si en algún caso no se enviaran con la marca de incidencia), en estos casos pulsaríamos "subsanar" y, como ese nuevo registro sería igual que el anterior pero devolvería un estado correcto, ya mostramos al usuario que la factura es correcta.
Responder Con Cita
  #4  
Antiguo 12-11-2025
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por aleixep Ver Mensaje
Nosotros hemos puesto un botón de subsanar en la pantalla que muestra los registros erróneos, pero lo único que hace es generar un nuevo registro de la misma factura. No sirve para modificar importes ni ningún otro valor (para eso se hace rectificativa), pero sí lo usamos para corregir errores del software.

Por ejemplo, el otro día les fallaron los envíos a algunos clientes porque tenían un formato de fecha extraño en su ordenador y Verifactu rechazaba la factura. Pues arreglamos el SIF para que ya no pasara y pulsamos el botón de "subsanar", enviándose así un nuevo registro exactamente igual que el anterior, pero con la fecha con el formato correcto.

Otro caso de uso sería también si recibiéramos errores de "registro duplicado", "esta no es la primera factura" o "han pasado los 240 segundos" (por si en algún caso no se enviaran con la marca de incidencia), en estos casos pulsaríamos "subsanar" y, como ese nuevo registro sería igual que el anterior pero devolvería un estado correcto, ya mostramos al usuario que la factura es correcta.
Los registroa que te devuelva error por pasar el tiempo de 240 y aunque no hayas marcado incidencia, no hay que reenviarlos ni crear subsanaciones, no hay que hacer nada, solo corregir el software si fuera por culpa de error de software.
Responder Con Cita
  #5  
Antiguo 12-11-2025
RUBEN_SP RUBEN_SP is offline
Miembro
 
Registrado: mar 2008
Posts: 69
Poder: 19
RUBEN_SP Va por buen camino
Cita:
Empezado por aleixep Ver Mensaje
Nosotros hemos puesto un botón de subsanar en la pantalla que muestra los registros erróneos, pero lo único que hace es generar un nuevo registro de la misma factura. No sirve para modificar importes ni ningún otro valor (para eso se hace rectificativa), pero sí lo usamos para corregir errores del software.

Por ejemplo, el otro día les fallaron los envíos a algunos clientes porque tenían un formato de fecha extraño en su ordenador y Verifactu rechazaba la factura. Pues arreglamos el SIF para que ya no pasara y pulsamos el botón de "subsanar", enviándose así un nuevo registro exactamente igual que el anterior, pero con la fecha con el formato correcto.

Otro caso de uso sería también si recibiéramos errores de "registro duplicado", "esta no es la primera factura" o "han pasado los 240 segundos" (por si en algún caso no se enviaran con la marca de incidencia), en estos casos pulsaríamos "subsanar" y, como ese nuevo registro sería igual que el anterior pero devolvería un estado correcto, ya mostramos al usuario que la factura es correcta.
Pero si mandas una subsanación de un registro duplicado te va a volver a dar el mismo error
Responder Con Cita
  #6  
Antiguo 12-11-2025
aleixep aleixep is offline
Miembro
 
Registrado: ene 2025
Posts: 25
Poder: 0
aleixep Va por buen camino
Tienes razón, @ermendalenda.

Sobre lo que comentas @RUBEN_SP, solo si se envían con RechazoPrevio=X. En caso contrario, la AEAT devuelve aceptado.

Sea como sea, esperamos no tener que usarlo en estos dos casos (y como menciona @ermendalenda, con los 240 segundos no hace falta). Pero es cierto que sí que nos ha sido útil para solucionar esos errores de software que se habían escapado.

¡Espero que sirva!
Responder Con Cita
  #7  
Antiguo 12-11-2025
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por RUBEN_SP Ver Mensaje
Pero si mandas una subsanación de un registro duplicado te va a volver a dar el mismo error
Una subsanación normamlmente no te va a devolver registro duplicado, puesto que el cometido es claro, subsanar un envio anterior, a no ser que sea lo que comenta el compañero en el post anterior, subsanacion sin registro previo que si existe si te va a devolver error y entras en bucle, que tendrias que enviar una subsanación de una subsanación mal realizada para seguir el orden de encadenamiento, hay que andarse con ojo y no enviar subsanaciones sin comprobar la existencia del registro, igualmente para las anulaciones.
Responder Con Cita
  #8  
Antiguo 12-11-2025
RUBEN_SP RUBEN_SP is offline
Miembro
 
Registrado: mar 2008
Posts: 69
Poder: 19
RUBEN_SP Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Una subsanación normamlmente no te va a devolver registro duplicado, puesto que el cometido es claro, subsanar un envio anterior, a no ser que sea lo que comenta el compañero en el post anterior, subsanacion sin registro previo que si existe si te va a devolver error y entras en bucle, que tendrias que enviar una subsanación de una subsanación mal realizada para seguir el orden de encadenamiento, hay que andarse con ojo y no enviar subsanaciones sin comprobar la existencia del registro, igualmente para las anulaciones.
Ok. Tienes toda la razón
Responder Con Cita
  #9  
Antiguo 21-11-2025
FacilIng FacilIng is offline
Miembro
 
Registrado: may 2025
Posts: 74
Poder: 2
FacilIng Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Una subsanación normamlmente no te va a devolver registro duplicado, puesto que el cometido es claro, subsanar un envio anterior, a no ser que sea lo que comenta el compañero en el post anterior, subsanacion sin registro previo que si existe si te va a devolver error y entras en bucle, que tendrias que enviar una subsanación de una subsanación mal realizada para seguir el orden de encadenamiento, hay que andarse con ojo y no enviar subsanaciones sin comprobar la existencia del registro, igualmente para las anulaciones.
Con respecto a esto, nos surge una duda a causa de un error que le ha pasado a un cliente.

Este cliente tiene mal la configuración regional por lo que usa el "." como separador de horas. P.e.: "2025-10-24T11.38.06+02:00".
El cliente ha generado una docena de RdF que el programa no llega a enviar a la AEAT pq nuestro código "peta" antes, al no reconocer el formato de hora.
Por lo tanto la AEAT no tiene constancia de estos RdF ni tampoco los ha rechazado pq no se han llegado a enviar.

Nosotros ahora ya hemos corregido el error para que siempre se usen los ":" como separador de horas en el XML de los RdF.

Pero claro, tenemos que "arreglarle" los RdF's al cliente para que los pueda enviar a la AEAT.
La cuestión es que como no se llegaron a enviar en ningún momento, no podemos usar "Subsanar un envío previo aceptado" (punto 9.1.2 del documento de servicios web) ni tampoco "Subsanación por rechazo (sin registro previo)" (punto 9.1.3 del mismo documento).

Entonces, ¿cómo lo hacemos? ¿Cuál sería la forma correcta de hacerlo?
Creemos que los RdF del cliente los tenemos que "borrar/ocultar" y volver a generarlos de nuevo para poder enviarlos como alta inicial de RdF (punto 9.1.1).

A ver si nos podéis ayudar.
¡Muchas gracias!
Responder Con Cita
  #10  
Antiguo 21-11-2025
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por FacilIng Ver Mensaje
Con respecto a esto, nos surge una duda a causa de un error que le ha pasado a un cliente.

Este cliente tiene mal la configuración regional por lo que usa el "." como separador de horas. P.e.: "2025-10-24T11.38.06+02:00".
El cliente ha generado una docena de RdF que el programa no llega a enviar a la AEAT pq nuestro código "peta" antes, al no reconocer el formato de hora.
Por lo tanto la AEAT no tiene constancia de estos RdF ni tampoco los ha rechazado pq no se han llegado a enviar.

Nosotros ahora ya hemos corregido el error para que siempre se usen los ":" como separador de horas en el XML de los RdF.

Pero claro, tenemos que "arreglarle" los RdF's al cliente para que los pueda enviar a la AEAT.
La cuestión es que como no se llegaron a enviar en ningún momento, no podemos usar "Subsanar un envío previo aceptado" (punto 9.1.2 del documento de servicios web) ni tampoco "Subsanación por rechazo (sin registro previo)" (punto 9.1.3 del mismo documento).

Entonces, ¿cómo lo hacemos? ¿Cuál sería la forma correcta de hacerlo?
Creemos que los RdF del cliente los tenemos que "borrar/ocultar" y volver a generarlos de nuevo para poder enviarlos como alta inicial de RdF (punto 9.1.1).

A ver si nos podéis ayudar.
¡Muchas gracias!
La marca =S se refiere a si te han rechazao anteriomente una subsanación, pero el registro original permanece en sis servidores.
Subsanacion sin rechazo previo
=N (existe el registro en el servidor de verifactu)
=S (te han rechazado una subsanacion pero el registro original existe en el servidor de verifactu)
=X (Te han rechazado el original)
Responder Con Cita
  #11  
Antiguo 21-11-2025
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Por otro lado, cuando arranqueis un SIF, os recominedo, si podeis tener prioblemas con los separadores, siempre reaigneis los mismos con las variables de sistema, por ejemplo separador decimal, de miles, de hora, fecha...
Y eso lo admite cualquier deaarrollo independientemente del lenguaje, os ahorrara posobles errores de la instalacion o manipulaciones.
Si lo necesitais por que no lo tenga directamente, podeis usar la api de windows SetLocaleInfo
Responder Con Cita
  #12  
Antiguo 21-11-2025
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 565
Poder: 6
rci Va por buen camino
Cita:
Empezado por FacilIng Ver Mensaje
Con respecto a esto, nos surge una duda a causa de un error que le ha pasado a un cliente.

Este cliente tiene mal la configuración regional por lo que usa el "." como separador de horas. P.e.: "2025-10-24T11.38.06+02:00".
El cliente ha generado una docena de RdF que el programa no llega a enviar a la AEAT pq nuestro código "peta" antes, al no reconocer el formato de hora.
Por lo tanto la AEAT no tiene constancia de estos RdF ni tampoco los ha rechazado pq no se han llegado a enviar.

Nosotros ahora ya hemos corregido el error para que siempre se usen los ":" como separador de horas en el XML de los RdF.

Pero claro, tenemos que "arreglarle" los RdF's al cliente para que los pueda enviar a la AEAT.
La cuestión es que como no se llegaron a enviar en ningún momento, no podemos usar "Subsanar un envío previo aceptado" (punto 9.1.2 del documento de servicios web) ni tampoco "Subsanación por rechazo (sin registro previo)" (punto 9.1.3 del mismo documento).

Entonces, ¿cómo lo hacemos? ¿Cuál sería la forma correcta de hacerlo?
Creemos que los RdF del cliente los tenemos que "borrar/ocultar" y volver a generarlos de nuevo para poder enviarlos como alta inicial de RdF (punto 9.1.1).

A ver si nos podéis ayudar.
¡Muchas gracias!
Yo creo que tienes que volver a enviar esos registros de facturación ya creados.
NUNCA puedes modificarlos.
Si el programa corregido ya no "peta", los envía con la marca de incidencia, para que no se queje que envías tarde y punto.
y si al enviar se rechazan, luego ya si que podrás CREAR un nuevo registro de facturación de subsanación

Que pensáis los demás?
Responder Con Cita
  #13  
Antiguo 21-11-2025
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por rci Ver Mensaje
Yo creo que tienes que volver a enviar esos registros de facturación ya creados.
NUNCA puedes modificarlos.
Si el programa corregido ya no "peta", los envía con la marca de incidencia, para que no se queje que envías tarde y punto.
y si al enviar se rechazan, luego ya si que podrás CREAR un nuevo registro de facturación de subsanación

Que pensáis los demás?
Eso no estaría alineado con el reglamento. Comerselos como comentas se los come, pero hay diversos riesgos:
Que tengan trazado y grabado lo que has intentado enviar erroneamente y vean que has vuelto a generar los mismos, cosa incompatible con el reglamento. 2 que te lies y los envies despues de haber enviado alguno posteriormente emitido cuando el software está bien(dificil por que lo normal es que este intentando mandar un bloque con algunos mal y uno bien e igualmente te lo rechaza), lo legal:
-subsanación rechazoprevio=X.
Además entra dentro de la lógica de que todos estamos empezando y hay fallos.
A mi ya me ha pasado algo parecido en una instalacion hace 1 semana y opte por la subsanación, qie necesidad de arriesgarse?
Responder Con Cita
  #14  
Antiguo 21-11-2025
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 565
Poder: 6
rci Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Eso no estaría alineado con el reglamento. Comerselos como comentas se los come, pero hay diversos riesgos:
Que tengan trazado y grabado lo que has intentado enviar erroneamente y vean que has vuelto a generar los mismos, cosa incompatible con el reglamento. 2 que te lies y los envies despues de haber enviado alguno posteriormente emitido cuando el software está bien(dificil por que lo normal es que este intentando mandar un bloque con algunos mal y uno bien e igualmente te lo rechaza), lo legal:
-subsanación rechazoprevio=X.
Además entra dentro de la lógica de que todos estamos empezando y hay fallos.
A mi ya me ha pasado algo parecido en una instalacion hace 1 semana y opte por la subsanación, qie necesidad de arriesgarse?
si no se han enviado nunca, como dice el compañero porque el programa petaba, no veo el problema.
lo que yo si considero fuera de la ley es lo que propone de
Cita:
Empezado por FacilIng Ver Mensaje
tenemos que "arreglarle" los RdF's al cliente para que los pueda enviar a la AEAT.
...
Creemos que los RdF del cliente los tenemos que "borrar/ocultar" y volver a generarlos de nuevo para poder enviarlos como alta inicial de RdF (punto 9.1.1).
Un registro de facturación no se puede modificar nunca.
Estamos de acuerdo en eso no?


Yo dije volver a enviar, en el caso que los registros de facturación creados estén bien y lo que estaba mal era el programa que los gestionaba y petaba.
Si los registros están mal y se rechazan, pues tal como dije, crear nuevo registro de facturación de subsanación. Vaya lo mismo que comentas tu ermendalenda

Saludos

Última edición por rci fecha: 21-11-2025 a las 17:36:33.
Responder Con Cita
  #15  
Antiguo 21-11-2025
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por rci Ver Mensaje
si no se han enviado nunca, como dice el compañero porque el programa petaba, no veo el problema.
lo que yo si considero fuera de la ley es lo que propone de

Un registro de facturación no se puede modificar nunca.
Estamos de acuerdo en eso no?


Yo dije volver a enviar, en el caso que los registros de facturación creados estén bien y lo que estaba mal era el programa que los gestionaba y petaba.
Si los registros están mal y se rechazan, pues tal como dije, crear nuevo registro de facturación de subsanación. Vaya lo mismo que comentas tu ermendalenda

Saludos
Llevas razón, maal entendido por mi parte.
Si ya estan generados y es el que genera el bloque de envios el que peta, palante.
Disculpa.
Responder Con Cita
Respuesta



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
Usar TServerSocket y TClientSocket para enviar "streams" más o menos "grandes" dec Internet 9 04-08-2015 16:11:50
Mostrar un "Balloon Hint" usando un componente "TTrayIcon" JuanOrtega Varios 3 29-11-2014 19:34:43
Existe algun componente "linea" y "vista miniatura"? DSK25 C++ Builder 6 09-06-2013 01:23:05
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53


La franja horaria es GMT +2. Ahora son las 18:33:39.


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