España: Normativa sancionadora sistemas informáticos

Post Reply
FiveWiDi
Posts: 1207
Joined: Mon Oct 10, 2005 2:38 pm

Re: España: Normativa sancionadora sistemas informáticos

Post by FiveWiDi »

paquitohm wrote:Hola Carlos,
3. Esta pregunta-respuesta oficial quizás responda tu inquietud:
Pregunta: En el diseño del registro de alta, en el nodo SistemaInformatico, aparece un campo que es el
NumeroInstalacion. ¿a qué se refiere?
Respuesta: El campo <NumeroInstalacion> es un nº propio de cada instancia/instalación concreta (o SIF) de un producto de
facturación particular. Este campo sirve para diferenciar diferentes instancias/instalaciones de SIF de un mismo obligado
tributario que emplea productos "iguales" en todos ellos (por ejemplo, distintos PC que tienen instalado una mismo
programa y versión para facturar, para así poder distinguir cuál de ellos ha expedido cada factura y generado su
correspondiente registro de facturación) .
Si, si. Esto lo tengo claro. Es el caso de una empresa que tiene 2 o más ordenadores y factura desde cualquiera de ellos.

Es que es muy raro lo que me explicaron de que la empresa para la que trabajan les expide SUS facturas cuyo destinatario es la empresa para la que trabajan.

Y en la definición del XML veo que hay un 'tercero' que ha expedido la factura.
Tag 'EmitidaPorTercerosODestinatario' con la explicación 'Identificador que especifica si la factura ha sido emitida por un tercero o por el destinatario (contraparte).

Y posiblemente yo tendré este caso encima de la mesa en su momento.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: España: Normativa sancionadora sistemas informáticos

Post by paquitohm »

Es que es muy raro lo que me explicaron de que la empresa para la que trabajan les expide SUS facturas cuyo destinatario es la empresa para la que trabajan.
Ese sistema lo conozco yo a través de la agricultura y la ganadería: Como algunos pequeños agricultores o ganaderos no tienen sistemas administrativos que les permitan expedir facturar es la propia empresa que compra sus producciones la que se hace una autofactura
User avatar
VictorCasajuana
Posts: 268
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs
Contact:

Re: España: Normativa sancionadora sistemas informáticos

Post by VictorCasajuana »

FiveWiDi wrote:Hola a todos,

3 dudas.

1-Seguimos en este hilo? o abrimos uno específico para VERIFACTU? (En Off-Topic seria lo correcto)

2-Curiosidad. Mirando un fichero que tengo nombrado como "Anexo_OM_RD-1007-2023(v0.5.0_2023-12-20).xlsx", que son especificaciones del XML, veo algo curioso. Se 'podrían' enviar 1000 registros con el tag 'RegistroAltaFacturas' y en cada uno de éstos otros 1000 con el tag 'IDFacturaRectificada'. Quizás alguna gran empresa eléctrica o de telefonía puede en su día rectificar o substituir facturas (sólo serían 1.000.000 de facturas como máximo).

3-Veo que una factura puede emitirse por el propio DESTINATARIO (en las especificaciones del XML parece contemplarse esta circunstancia).
De hecho ayer me comentaban un caso de una aseguradora que emite las facturas de sus proveedores en las cuales ella es la destinataria; son trabajos baremados y así facilitan el papeleo a las pequeñas empresas que les dan servicio (ahora entiendo que exija que sean empresas y no autónomos, pero eso es otro tema).
Entonces, si esa pequeña empresa realiza además trabajos para otras empresas o a particulares, ¿Cómo se trataría el tema del encadenamiento? ¿Quién ha de enviar el registro por VERIFACTU? Por qué está claro que la pequeña empresa pierde el control de la emisión de sus facturas, al menos las destinadas a la aseguradora. ¿Podría solucionarse usando una número de serie para cada origen/emisor de la factura?
1. estaría bien
2. ok
3. Mi opinión al respecto, es que esos pequeños negocios que ahora delegan la creación de la factura a su proveedor ( lo he visto en agricultura ) tendrán que hacerla ellos, o con un SIF propio o utilizando la aplicación que habilitará hacienda. Técnicamente no pueden hacerlas los proveedores ya que se perderá el encadenamiento aunque hagas series independientes, ya que el encadenamiento es independiente de la serie, a parte de que el proveedor ha de tener los certificados de todos sus clientes para hacer las facturas en su nombre.
--------
¿ Y porque no ?
¿ And why not ?
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: España: Normativa sancionadora sistemas informáticos

Post by paquitohm »

Autofactura, aclaración oficial

Pregunta: Como se van a tratar las autofacturas que hacen algunas empresas. Ya que emiten en nombre de
cliente. Presentará el que emite la autofactura?

Respuesta: Se entiende que se refiere a cuando es el propio destinatario de la factura quien expide materialmente la factura que su proveedor está obligado a expedirle. Esto está permitido por el reglamento de facturación y por el reglamento del RD
1007/2023, siempre y cuando el proveedor le haya otorgado al destinatario las facultades pertinentes para ello. En ese
caso, quien firmaría o remitiría a la AEAT el registro de facturación de la factura (de su proveedor a él) sería el
destinatario, con su propio certificado (del destinatario). Se recuerda quen en el caso de remisión, además se requiere
apoderamiento para dicho trámite o ser colaborador social con el adecuado convenio suscrito.
User avatar
VictorCasajuana
Posts: 268
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs
Contact:

Re: España: Normativa sancionadora sistemas informáticos

Post by VictorCasajuana »

paquitohm wrote:Autofactura, aclaración oficial

Pregunta: Como se van a tratar las autofacturas que hacen algunas empresas. Ya que emiten en nombre de
cliente. Presentará el que emite la autofactura?

Respuesta: Se entiende que se refiere a cuando es el propio destinatario de la factura quien expide materialmente la factura que su proveedor está obligado a expedirle. Esto está permitido por el reglamento de facturación y por el reglamento del RD
1007/2023, siempre y cuando el proveedor le haya otorgado al destinatario las facultades pertinentes para ello. En ese
caso, quien firmaría o remitiría a la AEAT el registro de facturación de la factura (de su proveedor a él) sería el
destinatario, con su propio certificado (del destinatario). Se recuerda quen en el caso de remisión, además se requiere
apoderamiento para dicho trámite o ser colaborador social con el adecuado convenio suscrito.
pues aún más sencillo! así ya es una gestión que se deriva al cliente final (nuestro cliente que utiliza el SIF) para que haga los apoderamientos pertinentes.
--------
¿ Y porque no ?
¿ And why not ?
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: España: Normativa sancionadora sistemas informáticos

Post by paquitohm »

Hola,

¿ Alguien tiene implementada el hash 256 de la huella en harbour ?

El ejemplo que ponen es en Java y es este, extraido de una imagen:

Code: Select all | Expand

import java.security.MessageDigest; 
import org.apache.commons.codec.binary.Basel6; 

public class Huella { 

public static String getHashVerifactu(String msg)throws Exception {
MessageDigest digest = MessageDigest.getlnstance("SHA-256");
return new Basel6(f&lse) .encodeAsString(digest.digest{msg.getBytes(StandardCharsets UTF_8))); 

public static String getReferenciaRegistro(String idEmisorFactura, String numFacturaSerie, String fechaExpedicion,
String tipoFactura, String cuotaTotal, String importeTotal, String huellaAnterior,
String fechaUsoHorarioRegistro) {
StringBuilder sb = new StringBuilder();
sb.append("IDE:misorFactura=") .append(idEmisorFactura) .append("&")
.append("NumSerieFactura="l .append(numFacturaSerie) .append("&") 
.append("FechaExpedicionFactura="l .append(fechaExpedicion) .append("&")
.append("TipoFactura="l . append(tipoFactura) .append("& ")
. append ( "CuotaTotal=") . append (cuotaTotal) . append ( " & ")
.append("ImporteTotal=") . append{llnporteTotal) . append("&")
. append ("Huella=") . append {huellaAnterior) . append ( " & ")
. append (" FechaHoraHusoGenRegistro=") . append (fechaUsoHorarioRegistro) ;
return sb.toString(); 
public static String calcularHuella{String idEmisorFactura, String numFacturaSerie, String fechaExpedicion,
String tipoFactura, String cuotaTotal, String importeTotal, String huellaAnterior,
String fechaRegistro, String horaRegistro, String usoHorarioRegistro)throws Exception
String ref = getReferenciaRegistro(idEmisorFactura, numFacturaSerie, fechaExpedicion, tipoFactura, cuotaTotal,
importeTotal, huellaAnterior, fechaRegistro);
return getHashVerifactu(ref); 
public static void main(String args(])throws Exception {
Huella h = new Huella();
System. out.println (calcularHuella ("89890001K", "12345678/G33", "01-01-2024", "Fl", "12. 35", "123. 45",
"123456789012345678901234567890123456789012345678901234567890abcd", "2024-01-01Tl2:00:00+0l:OO")); 
}
}
 
quim
Posts: 43
Joined: Mon Apr 11, 2011 6:22 pm

Re: España: Normativa sancionadora sistemas informáticos

Post by quim »

paquitohm wrote:Hola,
¿ Alguien tiene implementada el hash 256 de la huella en harbour ?
 [/code]
Paquito, en harbour es muy fácil (como en casi todo) ...

Code: Select all | Expand

//-----------------------------------------------------------------------------//
// Especificaciones de huella o hash
//-----------------------------------------------------------------------------//
// Algoritmo: SHA-256
// Codificación: UTF-8
// Formato de salida será:
//    - En sistema hexadecimal.
//    - En mayúsculas.
// Se validará la huella o hash en el servicio de remisión de registros de facturación.
// En caso de error, se marcará como “Aceptada con errores” y se deberá proceder a su revisión.
//-----------------------------------------------------------------------------//
function hb_Huella()

   local c := ""
   local h := {=>}

   h['Nif']                      := "B1234567"
   h['NumSerieFacturaEmisor']    := "AB-123456"
   h['FechaExpedicionFactura']   := hb_dtoc( date(), "dd-mm-yyyy" )
   h['TipoRegistroSIF']          := "01"
   h['TipoFactura']              := "F1"
   h['CuotaTotal']               := ltrim( str(261.61, 12, 2) )
   h['ImporteTotal']             := ltrim( str(1507.36, 12, 2) )
   h['HuellaRegistroAnterior']   := "ZmY2MDgxMzc2ZWIyMTI4ZDFiMDMyMDlkMTAyNmQ4ZDVmZGExMWJkYWRiMThjZTNkYjE4ODExZDg3MDUwZTNjMQ=="
   h['FechaHoraHusoGenRegistro'] := hb_TtoS( hb_datetime() )

   hb_heval( h, {|k,v,i| c += v} ) // | key, value, index |

return hb_base64Encode( hb_sha256(c) )
 
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: España: Normativa sancionadora sistemas informáticos

Post by paquitohm »

Gracias quim por el aporte del que todos nos beneficiaremos

Es fácil cuando se sabe hacer, claro está :D

Pero lo que sí me parece que resulta evidente es que el código es mucho más fácil que el código de JAVA
quim
Posts: 43
Joined: Mon Apr 11, 2011 6:22 pm

Re: España: Normativa sancionadora sistemas informáticos

Post by quim »

paquitohm wrote: Es fácil cuando se sabe hacer, claro está :D
Evidentemente es fácil si se conoce, disculpa por si me he expresado de forma prepotente ...

Me referia a lo 'relativamente' fácil que resulta implementar cualquier cosa en harbour, respecto por ejemplo a Java

Saludos
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: España: Normativa sancionadora sistemas informáticos

Post by paquitohm »

No por dios, quim, no hay nada que disculpar, sólo faltaba...
Quise decir que cuando las cosas se estudian, entonces se conocen y entonces se saben hacer y resultan fáciles. Es evidente que tú ya has hecho el camino que otros deberíamos hacer también.

Agradezco nuevamente este y todos tus aportes que tanto benefician a la comunidad y por los cuales siempre te estaremos agradecidos
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: España: Normativa sancionadora sistemas informáticos

Post by paquitohm »

Esta autorización parece que es necesaria para el tema de las autofacturas que comentábamos el otro día ¿ Que vas a hacer/ imprimir facturas en nombre de un tercero ? Pues entonces te toca también enviarlas a la agencia y para eso se hace necesaria una autorización

https://sede.agenciatributaria.gob.es/s ... quidac.pdf
FiveWiDi
Posts: 1207
Joined: Mon Oct 10, 2005 2:38 pm

Re: España: Normativa sancionadora sistemas informáticos

Post by FiveWiDi »

Hola a todos,

Sabéis si hay novedades respecto de la orden ministerial? (A ver si me he despistado)

Y sobre cambios 'técnicos'?

Es que estoy trabajando en ello (modificar los DBF, validaciones internas, el XML, ...)

Veo algo que no encuentro justificación que esté donde está en la estructura del XML.

Hay un grupo de datos que hace referencia al 'sistema informático', no es un poco absurdo que esté con cada grupo de datos de la factura?
Para mi lo lógico sería que estuviera al mismo nivel que los TAG 'RegistroFacturación' y 'DatosControl', y no que pertenezca al 'RegistroFacturación'.

Por eso pregunto si han habido cambios recientemente.

Muchas gracias,
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: España: Normativa sancionadora sistemas informáticos

Post by paquitohm »

Buenos días,
FiveWiDi wrote:Hola a todos,

Sabéis si hay novedades respecto de la orden ministerial? (A ver si me he despistado)

Y sobre cambios 'técnicos'?
Hasta donde yo sé nada hay de la O.M. aunque si todo entra en vigor el 1/7/25, no debería tardar muchos meses, salvo retrasos oficiales

FiveWiDi wrote:Es que estoy trabajando en ello (modificar los DBF, validaciones internas, el XML, ...)
¿ Qué tipo de cambios estás haciendo en los DBF ? ¿ Qué validaciones ? Pregunto por ayudarte porque no hacen falta _ como supusimos al principio que había que hacer
FiveWiDi wrote:Veo algo que no encuentro justificación que esté donde está en la estructura del XML.
Hay un grupo de datos que hace referencia al 'sistema informático', no es un poco absurdo que esté con cada grupo de datos de la factura?
Para mi lo lógico sería que estuviera al mismo nivel que los TAG 'RegistroFacturación' y 'DatosControl', y no que pertenezca al 'RegistroFacturación'.
TicketBai tiene la estructura que tu comentas.
Sospecho que esa estructura tiene el sentido de que haya sistemas "enviadores" de facturas producidas por varios SIF, asi un envio podria constar de muchas facturas impresas por varios SIF distintos

Salu2
User avatar
Xevi
Posts: 174
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: España: Normativa sancionadora sistemas informáticos

Post by Xevi »

quim wrote:
paquitohm wrote:Hola,
¿ Alguien tiene implementada el hash 256 de la huella en harbour ?
 [/code]
Paquito, en harbour es muy fácil (como en casi todo) ...

Code: Select all | Expand

//-----------------------------------------------------------------------------//
// Especificaciones de huella o hash
//-----------------------------------------------------------------------------//
// Algoritmo: SHA-256
// Codificación: UTF-8
// Formato de salida será:
//    - En sistema hexadecimal.
//    - En mayúsculas.
// Se validará la huella o hash en el servicio de remisión de registros de facturación.
// En caso de error, se marcará como “Aceptada con errores” y se deberá proceder a su revisión.
//-----------------------------------------------------------------------------//
function hb_Huella()

   local c := ""
   local h := {=>}

   h['Nif']                      := "B1234567"
   h['NumSerieFacturaEmisor']    := "AB-123456"
   h['FechaExpedicionFactura']   := hb_dtoc( date(), "dd-mm-yyyy" )
   h['TipoRegistroSIF']          := "01"
   h['TipoFactura']              := "F1"
   h['CuotaTotal']               := ltrim( str(261.61, 12, 2) )
   h['ImporteTotal']             := ltrim( str(1507.36, 12, 2) )
   h['HuellaRegistroAnterior']   := "ZmY2MDgxMzc2ZWIyMTI4ZDFiMDMyMDlkMTAyNmQ4ZDVmZGExMWJkYWRiMThjZTNkYjE4ODExZDg3MDUwZTNjMQ=="
   h['FechaHoraHusoGenRegistro'] := hb_TtoS( hb_datetime() )

   hb_heval( h, {|k,v,i| c += v} ) // | key, value, index |

return hb_base64Encode( hb_sha256(c) )
 

Quim,

Harbour nos lo pone ¿fácil???, jejeje.
Le daré una vuelta a ver si cambio por lo que tengo hecho.

Code: Select all | Expand

   cUtcTime := iTime()['datetime']
   cUtcTime := Left( cUtcTime, 19 ) + Right( cUtcTime, 6 ) //2024-01-01T19:20:35+01:00
   h['TextHuella'] := "IDEmisorFactura=" + AllTrim(AppData:cNifEmpresa) + "&NumSerieFactura=" + AllTrim(cNumFac) + "&FechaExpedicionFactura=" + StrTran( h['cDataFactura'], "/", "-" ) + "&TipoFactura=F1&CuotaTotal=" + AllTrim(Str( h['nIva1']+h['nIva2']+h['nIva3'], 15, 2 )) + "&ImporteTotal=" + AllTrim(Str( h['nBase0']-h['nDte0'] + h['nBase1']-h['nDte1'] + h['nBase2']-h['nDte2'] + h['nBase3']-h['nDte3'], 15, 2 )) + "&Huella=" + "3C464DAF61ACB827C65FDA19F352A4E3BDC2 C640E9E9FC4CC058073F38F12F60" + "&FechaHoraHusoGenRegistro=" + cUtcTime
   h['Huella'] := Upper(HB_SHA256( h['TextHuella'] ))
 
No se porque le antepones hb_base64Encode()... ¿?¿?

Debes de añadir un Upper() al retorno del valor.
Además... debería de conformar la huella TODO el texto 'informativo' de cada campo a generar la huella...

Editado...
Acabo de mirar el documento para la generación de la huella...
Es como comento.

https://www.agenciatributaria.es/static ... istros.pdf
Apartado 6. Ejemplos
Un Saludo,
Xevi.

Aprendiz de la vida!!!
FiveWiDi
Posts: 1207
Joined: Mon Oct 10, 2005 2:38 pm

Re: España: Normativa sancionadora sistemas informáticos

Post by FiveWiDi »

paquitohm wrote: ¿ Qué tipo de cambios estás haciendo en los DBF ? ¿ Qué validaciones ? Pregunto por ayudarte porque no hacen falta _ como supusimos al principio que había que hacer
He añadido el campo huella y de envío a Verifactu al DBF de las facturas y al de su detalle.
A partir del 01/07/2025 no permitiré las bajas y modificaciones de facturas ya enviadas a Verifactu, hasta esa fecha (o hasta que empiece a utilizar Verifactu) aparecerá un mensaje indicando que no debe hacerlo, pero bajo su responsabilidad podrá hacerlo.
Está el tema de enlazar facturas anterior-posterior, aún le estoy dando vueltas; creo que guiarme por el número de factura.... leí algo de que no tienen por que existir facturas correlativas, por tanto puede faltar la factura 'anterior'.
Si es así deberé establecer el binomio anterior-siguiente en el momento de recepción 'Ok' de Verifactu.
Hasta la recepción del 'Ok' de Verifactu soy libre de hacer lo que quiera mientras no se entregue la factura al cliente.
paquitohm wrote: TicketBai tiene la estructura que tu comentas.
Sospecho que esa estructura tiene el sentido de que haya sistemas "enviadores" de facturas producidas por varios SIF, asi un envio podria constar de muchas facturas impresas por varios SIF distintos
Entiendo.
Les será útil a las empresas que den servicio de envío a Verifactu y en un solo paquete envíen información de varios de sus clientes.

Curiosidad.
Si un obligado tributario está acogido a Verifactu, en sus XML enviará sólo la factura del momento, cierto?
Ya que la emisión, envío a Verifactu, entrega al cliente, debe ser por este orden, cierto?

Duda.
He leído que no hay problema en enviar facturas a Verifactu con fecha emisión anterior a la de su envío a Verifactu.
Ahora bien, se de una persona que envía las facturas de alquiler días antes de la fecha factura (envío el dia 28 de mes, fecha factura día 1 del mes siguiente) . De esto no he encontrado nada. Si las envía a Verifactu... Qué ocurrirá?

Muchas gracias,
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Post Reply