Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco (https://www.clubdelphi.com/foros/showthread.php?t=94264)

unomasmas 26-10-2021 21:59:53

Cita:

Empezado por ermendalenda (Mensaje 543762)
Ahora si que la hemos liado.
A ver que se considera distinta aplicación o no, si tengo un proceso en segundo plano que espera los pagos que ha lanzado la aplicación principal y la aplicación principal puede seguir haciendo facturas pero la serie es la misma.... Madre mía..

No sé si tu caso se podría considerar como dos aplicaciones distintas. Yo se lo plantearía directamente a ellos...

Sistel 26-10-2021 22:45:44

Cita:

Empezado por elcharlie (Mensaje 543743)
Buenas, ¿sabéis si se puede comprobar que un fichero xml de factura TBai, cumple con el esquema xsd? porque me estoy partiendo los cuernos para intentar comprobarlo, y no encuentro ninguna solución. No sé si alguien puede echarme una mano...

Hola elcharlie,

Yo lo hago con PHP

Código PHP:

function VALIDAR_XML($xml$xsd) {
    
// Valida un string xml frente a un string de esquema xsd
    // Devuelve array de errores si los hay, o nada si no hay errores
    
libxml_use_internal_errors(true);
    
$domDocument= new DOMDocument();
    
$domDocument->loadXML($xml);
    if (!
$domDocument->schemaValidate($xsd)) {
        
$errores libxml_get_errors();
        
libxml_clear_errors();
        return 
$errores;
    } else {
        return;
    }


Saludos

Sistel 26-10-2021 23:01:13

Cita:

Empezado por espinete (Mensaje 543742)
...
Por cierto, una duda que me surge ahora... ¿cómo hacéis con "ClaveRegimenIvaOpTrascendencia"? ¿Es un dato que depende del negocio (emisor) o de cada factura?

Permite estos valores:
01=Regimen General
02=Exportación
03=Bienes usados, arte, antiguedades
04.....

Se supone que es un dato genérico por empresa? O cada factura puede tener un valor distinto según lo que se venda? Porque si es esto último, no veo yo a los clientes rellenando un dato más (obligatorio) antes de guardar cada venta.

Hola espinete,

No es un dato de la empresa sino de la factura.
Aunque en general, para la mayor parte de emisores será la que le corresponda por su régimen de IVA ante Hacienda:
- 01 Operación de régimen general y cualquier otro supuesto que no esté recogido en los siguientes valores
- 51 Operaciones en recargo de equivalencia
- 52 Operaciones en régimen simplificado

Pero se puede dar el caso de que por el tipo de operación sea, por ejemplo:
- 02 Exportación
- 11 Operaciones de arrendamiento de local de negocio sujetas a retención.
- 12 Operaciones de arrendamiento de local de negocio no sujetas a retención.
- 13 Operaciones de arrendamiento de local de negocio sujetas y no sujetas a retención.

Pero si te fijas, verás que se permiten hasta 3 claves para una misma factura.
Con ello creo que se pueden cubrir la mayoría de casos.

Saludos

ermendalenda 27-10-2021 06:47:28

Cita:

Empezado por Sistel (Mensaje 543767)
Hola elcharlie,

Yo lo hago con PHP

Código PHP:

function VALIDAR_XML($xml$xsd) {
    
// Valida un string xml frente a un string de esquema xsd
    // Devuelve array de errores si los hay, o nada si no hay errores
    
libxml_use_internal_errors(true);
    
$domDocument= new DOMDocument();
    
$domDocument->loadXML($xml);
    if (!
$domDocument->schemaValidate($xsd)) {
        
$errores libxml_get_errors();
        
libxml_clear_errors();
        return 
$errores;
    } else {
        return;
    }


Saludos

Gracias esto va a venir genial

ermendalenda 27-10-2021 07:36:27

Cita:

Empezado por unomasmas (Mensaje 543766)
No sé si tu caso se podría considerar como dos aplicaciones distintas. Yo se lo plantearía directamente a ellos...

Lo lógico es una sola, es un instalador que instala todas las funciones y que haya un proceso en segundo que genera los tiquets de idéntica forma que si fueran manuales) y que dependa toralmente del proceso principal.
Es una forma de programar que igualmente puede ser con procesos asíncronos desde el mismo ejecutable.

elcharlie 27-10-2021 08:32:38

Cita:

Empezado por unomasmas (Mensaje 543765)
Acabo de publicar cómo lo hago yo. Está en C#. No sé si te sirve. Puedes verlo en https://www.clubdelphi.com/foros/sho...postcount=2039

Gracias, lo intentare adaptar a delphi, a ver si soy capaz, si encuentro solución lo posteo para que lo reutiliceis.

Neftali [Germán.Estévez] 27-10-2021 09:23:59

Cita:

Empezado por APO (Mensaje 543745)
Buenas!! ¿Sabéis como se configura Postman para probar de enviar algún TicketBAI.xml y saber si es correcto? Es la primera vez que lo utilizo y no hay manera. Tampoco sé donde especificarle el xml que quiero enviarle. A ver si me podéis echar una mano, gracias!!!
Adjunto pantallazo de lo que estoy poniendo en Postman:
https://files.fm/thumb_show.php?i=agn9cpwwv


En este hilo explicamos cómo hacerlo con insomnia:
http://clubdelphi.com/foros/showpost...postcount=1029

Es un programa similar.
Te lo comento, porque me resultó más sencillo que hacerlo con PostMan. A mi hubo una temporada que me funcionaba (postman), pero luego dejaron de hacerlo.

keys 27-10-2021 11:05:48

Hola a todos.

No se si alguien esta usando el servicio de consulta de facturas de la hacienda de Bizkaia. Me ocurre lo siguiente.

Tenemos una factura con dos tipos de IVA, uno normal al 21% (S1) y otro una inversión de sujeto pasivo (S2). A la hora de enviar el fichero lo enviamos el desglose de la siguiente manera y se envía correctamente.

Código PHP:

<TipoDesglose>
      <
DesgloseFactura>
          <
Sujeta>
             <
NoExenta>
                <
DetalleNoExenta>
                     <
TipoNoExenta>S1</TipoNoExenta>
                    <
DesgloseIVA>
                           <
DetalleIVA>
                                 <
BaseImponible>1189.50</BaseImponible>
                                 <
TipoImpositivo>21.00</TipoImpositivo>
                                 <
CuotaImpuesto>249.80</CuotaImpuesto>
                                 <
OperacionEnRecargoDeEquivalenciaORegimenSimplificado>N</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
                        </
DetalleIVA>
                      </
DesgloseIVA>
                  </
DetalleNoExenta>
                 <
DetalleNoExenta>
                     <
TipoNoExenta>S2</TipoNoExenta>
                        <
DesgloseIVA>
                            <
DetalleIVA>
                                <
BaseImponible>450.00</BaseImponible>
                                <
TipoImpositivo>0.00</TipoImpositivo>
                                <
CuotaImpuesto>0.00</CuotaImpuesto>
                                <
OperacionEnRecargoDeEquivalenciaORegimenSimplificado>N</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
                            </
DetalleIVA>
                      </
DesgloseIVA>
                 </
DetalleNoExenta>
             </
NoExenta>
        </
Sujeta>
   </
DesgloseFactura>
</
TipoDesglose

Es decir hay que añadir dos tipos de la etiqueta <DetalleNoexenta> dentro de la etiqueta <NoExenta> uno de tipo S1 y otro de tipo S2.

Pero cuando se hace la consulta al servicio de consulta el fichero devuelto tiene la siguiente estructura.
Código PHP:

<TipoDesglose>
      <
DesgloseFactura>
         <
Sujeta>
            <
NoExenta>
               <
DetalleNoExenta>
                       <
TipoNoExenta>S1</TipoNoExenta>
                        <
DesgloseIVA>
                             <
DetalleIVA>
                                  <
BaseImponible>1189.50</BaseImponible>
                                  <
TipoImpositivo>21.00</TipoImpositivo>
                                  <
CuotaImpuesto>249.80</CuotaImpuesto>
                                  <
OperacionEnRecargoDeEquivalenciaORegimenSimplificado>N</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
                           </
DetalleIVA>
                       </
DesgloseIVA>
                </
DetalleNoExenta>
            </
NoExenta>
          <
NoExenta>
            <
DetalleNoExenta>
                  <
TipoNoExenta>S2</TipoNoExenta>
                  <
DesgloseIVA>
                        <
DetalleIVA>
                              <
BaseImponible>450.00</BaseImponible>
                              <
TipoImpositivo>0.00</TipoImpositivo>
                              <
CuotaImpuesto>0.00</CuotaImpuesto>
                             <
OperacionEnRecargoDeEquivalenciaORegimenSimplificado>N</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
                       </
DetalleIVA>
                  </
DesgloseIVA>
              </
DetalleNoExenta>
           </
NoExenta>
         </
Sujeta>
   </
DesgloseFactura>
</
TipoDesglose

Es decir lo que esta duplicado es la etiqueta <Noexenta> en vez de <DetalleNoExenta> dentro de ella por lo que al cargar el fichero sólo retorna un elemento en vez de dos, ya que esta duplicada <Noexenta>.

al hacer
Código Delphi [-]
ShowMessage(Resultado240.FacturasEmitidas[i].TicketBai.Factura.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.Count.ToString);

Esto retorna 1 en vez de 2.

¿Alguien lo puede probar?. Por que cualquiera le explica esto a hacienda.

espinete 27-10-2021 12:54:41

Hola a todos...

Como Álava es la única que devuelve los posibles "errores de validación de negocio" al enviar las facturas, me estoy encontrando con varios problemas a la hora de enviar facturas con descuentos por línea, con recargo de equivalencia, retenciones, etc... y no encuentro ninguna factura de prueba que usar como ejemplo para ver las diferencias.

He conseguido enviar sin problema facturas con varios tipos de IVA e incluso con un descuento "global" (por pronto pago, por ejemplo). Entiendo que el problema está en que estoy poniendo mal los importes en algún sitio según las condiciones de cada caso.
¿Alguien podría decirme si en el detalle de la factura (líneas), "ImporteUnitario" e "ImporteTotal" deben reflejar el importe REAL/FINAL de esa línea, con el recargo, descuento, etc. aplicados?

Por ejemplo. Para una Factura EXENTA DE IVA...

Lo que yo hago:

* * * * * * <DetallesFactura>
* * * * * * * * <IDDetalleFactura>
* * * * * * * * * * <DescripcionDetalle>TARJETA SMALL</DescripcionDetalle>
* * * * * * * * * * <Cantidad>1</Cantidad>
* * * * * * * * * * <ImporteUnitario>100.00</ImporteUnitario>
* * * * * * * * * * <Descuento>0.00</Descuento>
* * * * * * * * * * <ImporteTotal>121.00</ImporteTotal>
* * * * * * * * </IDDetalleFactura>
* * * * * * </DetallesFactura>

Pero creo que ImporteTotal debería ser 100.00 en vez de 121.00 si la factura está exenta?


Otro caso: Factura con RETENCIÓN

* * * * * * <DetallesFactura>
* * * * * * * * <IDDetalleFactura>
* * * * * * * * * * <DescripcionDetalle>WEBCAM NGS XPRESSCAM</DescripcionDetalle>
* * * * * * * * * * <Cantidad>1</Cantidad>
* * * * * * * * * * <ImporteUnitario>100.00</ImporteUnitario>
* * * * * * * * * * <Descuento>0.00</Descuento>
* * * * * * * * * * <ImporteTotal>121.00</ImporteTotal>
* * * * * * * * </IDDetalleFactura>
* * * * * * </DetallesFactura>

* * * * * * <ImporteTotalFactura>102.00</ImporteTotalFactura>
* * * * * * <RetencionSoportada>19.00</RetencionSoportada>

¿Debería ImporteTotal (121.00) reflejar la retención también? ¿O tal vez ImporteTotalFactura no deba incluir la retención?

Lo mismo me ocurre con facturas con Recargo de Equivalencia o con Descuento por línea.

¿Debería ImporteTotal reflejar SIEMPRE el importe final de la línea según las condiciones de la factura? ¿o solo el precio "real" del artículo, independientemente de las condiciones de la factura?

Sé que puede resultar obvio, pero no sé cómo hace Araba las validaciones de los totales. La facturación electrónica de otros países se encarga de sumar/restar lo que sea necesario en función de los datos/condiciones de la factura, pero en este caso es "al revés" y debemos indicar nosotros los importes exactos que se van a sumar/restar. Es decir, hay que dárselo todo masticado.

ermendalenda 27-10-2021 14:40:27

Cita:

Empezado por Sistel (Mensaje 543767)
Hola elcharlie,

Yo lo hago con PHP

Código PHP:

function VALIDAR_XML($xml$xsd) {
    
// Valida un string xml frente a un string de esquema xsd
    // Devuelve array de errores si los hay, o nada si no hay errores
    
libxml_use_internal_errors(true);
    
$domDocument= new DOMDocument();
    
$domDocument->loadXML($xml);
    if (!
$domDocument->schemaValidate($xsd)) {
        
$errores libxml_get_errors();
        
libxml_clear_errors();
        return 
$errores;
    } else {
        return;
    }


Saludos

Vaya, se queda bloqueado el servicio php en cuanto llega a esta línea:
if (!$domDocument->schemaValidate($xsd)) {

hago_preguntas 27-10-2021 16:59:39

Cita:

Empezado por elcharlie (Mensaje 543743)
Buenas, ¿sabéis si se puede comprobar que un fichero xml de factura TBai, cumple con el esquema xsd? porque me estoy partiendo los cuernos para intentar comprobarlo, y no encuentro ninguna solución. No sé si alguien puede echarme una mano...

Puedes probar también online en esta dirección (falta el protocolo delante y tiene un espacio, ya que no tengo permisos para poner urls), pegando el xml y el xsd:

[quote]
www .utilities-online.info/xsdvalidation
[quote]

Nosotros los comprobamos usando el API de java:

Cita:

public static void validateXMLSchema(File xsdFile, File xmlFile) throws IOException, SAXException {
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(xsdFile);
Validator validator = schema.newValidator();

validator.validate(new StreamSource(xmlFile));
}

ermendalenda 27-10-2021 17:34:45

Cita:

Empezado por ermendalenda (Mensaje 543775)
Vaya, se queda bloqueado el servicio php en cuanto llega a esta línea:
if (!$domDocument->schemaValidate($xsd)) {

Ahora me da otro error
<br />
<b>Warning</b>: DOMDocument::schemaValidate(): Invalid Schema in <b>/..../firmador.php</b> on line <b>72</b><br />
Buahh por qué cada cosa se complica tantooo

hago_preguntas 27-10-2021 19:23:21

Cita:

Empezado por rci (Mensaje 543698)
Hola, he estado haciendo pruebas al generar la ruta para el QR y al final creo que Araba funciona de una forma y Bizkaia y Gipuzkoa de otra.


Estaba haciendo pruebas de QR para Araba y en un caso me contestó lo de "parámetros incorrectos". El identificador TBAI de esa factura tiene una barra /
En mi proceso para generar el QR hacia URL encoding de los valores para construir la URL y después generaba el CRC.

Para Bizkaia y Gipuzkoa esto es correcto y funciona. Pero para Araba no, pregunté y me contestaron que el CRC lo tengo que calcular antes del URL encoding.
Si lo hago de esta forma ya funciona pero claro... preferiria hacerlo siempre igual :o


Probando probando también vi que si no hago URL encoding en ningún momento, y no sustituyo la barra por %2F también funciona y funciona haciendo lo mismo para las tres diputaciones, lo cual me gusta, pero claro, en la documentación dice que tenemos que hacer el encoding y supongo que habrá algún otro carácter que no sea aceptado en una URL y falle si no lo recodifico.


Volví a preguntar a Araba y me contestaron:


Vosotros estais filtrando los valores que pasamos como parámetros en la URL del QR o no? Antes y después de generar el QR dependiendo de la diputación?:p



Muchas gracias y disculpad por tantas preguntas


Saludos

Ya debería de funcionar como el resto de administraciones, escribimos a Álava para preguntar por la inconsistencia con respecto a las especificaciones, y nos respondieron esto:

Cita:

Hemos implantado una nueva versión en la cual no deberíais tener problemas para realizar dicha consulta.



¿Lo podéis probar?



Un saludo y disculpen las molestias.
Lo probamos con varias que no funcionaban, y ya funcionan como indica la especificación.

adolphsys 27-10-2021 20:17:15

Cita:

Empezado por keys (Mensaje 543773)
Hola a todos.

No se si alguien esta usando el servicio de consulta de facturas de la hacienda de Bizkaia. Me ocurre lo siguiente.

...

Hola keys, suprime el <TipoImpositivo> y <CuotaImpuesto> de la línea ISP. En ventas con Inversión de Sujeto Pasivo, el IVA no hay que consignarlo:

Código PHP:

<DetalleIVA>
           <
BaseImponible>450.00</BaseImponible>
           <
OperacionEnRecargoDeEquivalenciaORegimenSimplificado>N</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
</
DetalleIVA

Y después inténtalo de nuevo.

adolphsys 27-10-2021 20:34:48

Cita:

Empezado por espinete (Mensaje 543774)
Hola a todos...

...

¿Alguien podría decirme si en el detalle de la factura (líneas), "ImporteUnitario" e "ImporteTotal" deben reflejar el importe REAL/FINAL de esa línea, con el recargo, descuento, etc. aplicados?

Hola espinete, el montante de los recargos y descuentos globales (recargo financiero, descuento por pronto pago...), o sea, cargos pie factura, no se incluyen en el <ImporteTotal> de las líneas de detalle.
El <ImporteUnitario> es el precio de venta de la línea de detalle.
Si el artículo de la línea de detalle tiene descuento de venta, su importe (no su porcentaje) hay que consignarlo en <Descuento>
El <ImporteTotal> tiene que ser el propio de la línea de detalle con su IVA (y Recargo de equivalencia en su caso) correspondiente.
Si la factura incluye conceptos adicionales como entregas a cuenta, suplidos... aplicables tras el total de factura, no hay que incluirlos en el fichero TicketBAI.

Espero haberte ayudado.

keys 28-10-2021 09:15:25

Cita:

Empezado por adolphsys (Mensaje 543782)
Hola keys, suprime el <TipoImpositivo> y <CuotaImpuesto> de la línea ISP. En ventas con Inversión de Sujeto Pasivo, el IVA no hay que consignarlo:

Código PHP:

<DetalleIVA>
           <
BaseImponible>450.00</BaseImponible>
           <
OperacionEnRecargoDeEquivalenciaORegimenSimplificado>N</OperacionEnRecargoDeEquivalenciaORegimenSimplificado>
</
DetalleIVA

Y después inténtalo de nuevo.

El problema no esta en el envío, las facturas las envia correctamente, el problema esta en lo que devuelve hacienda en la consulta que no sigue la estructura de los xsd.

Un Saludo

rci 28-10-2021 09:34:28

QR Araba ya funciona igual que las otras
 
Cita:

Empezado por hago_preguntas (Mensaje 543780)
Ya debería de funcionar como el resto de administraciones, escribimos a Álava para preguntar por la inconsistencia con respecto a las especificaciones, y nos respondieron esto:



Lo probamos con varias que no funcionaban, y ya funcionan como indica la especificación.




Hola hago_preguntas, acabo de probar el ejemplo que tenia controlado y es cierto, funciona de las dos forma, igual que las otras diputaciones forales y también con su propio sistema.

Muchas gracias

Sistel 28-10-2021 09:37:09

Cita:

Empezado por ermendalenda (Mensaje 543775)
Vaya, se queda bloqueado el servicio php en cuanto llega a esta línea:
if (!$domDocument->schemaValidate($xsd)) {

Hola ermendalenda,

Comprueba que tienes instalada la extensión libxml de PHP.
Puedes comprobarlo ejecutando
Código PHP:

<?php phpinfo(); ?>

Debe aparecerte una sección de libxml
Si no la tienes instalada, ya sabes ... en mi caso
Código:

apt-get install php7.4-xml
Saludos

Sistel 28-10-2021 09:48:36

Cita:

Empezado por adolphsys (Mensaje 543783)
...
El <ImporteTotal> tiene que ser el propio de la línea de detalle con su IVA (y Recargo de equivalencia en su caso) correspondiente.
...

Hola adolphsys,

¿Seguro que el RE (en el caso de que el destinatario esté obligado) debe estar incluído en el <ImporteTotal> de cada línea de detalle?
Según la descripción: "Importe total CON IVA de la línea de factura."
No dice que deba estar incluído el RE.
Donde sí debe estar el RE detallado es en la sección DetalleIVA -> CuotaRecargoEquivalencia

Saludos

Sistel 28-10-2021 09:52:13

Cita:

Empezado por keys (Mensaje 543785)
El problema no esta en el envío, las facturas las envia correctamente, el problema esta en lo que devuelve hacienda en la consulta que no sigue la estructura de los xsd.

Un Saludo

Hola keys,

Si verificas el XML devuelto por Hacienda contra el esquema XSD ¿te da correcto?
En caso de que no dé correcto, habría que informar a Hacienda Foral.

Saludos

APO 28-10-2021 09:53:18

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 543772)
En este hilo explicamos cómo hacerlo con insomnia:
http://clubdelphi.com/~marcsc/foros/...postcount=1029

Es un programa similar.
Te lo comento, porque me resultó más sencillo que hacerlo con PostMan. A mi hubo una temporada que me funcionaba (postman), pero luego dejaron de hacerlo.

Estupendo Neftali, gracias! Pues probaré con insomnia porque con PostMan soy incapaz de cargar el certificado.

Sistel 28-10-2021 10:05:53

Cita:

Empezado por espinete (Mensaje 543774)
Hola a todos...

Como Álava es la única que devuelve los posibles "errores de validación de negocio" al enviar las facturas, me estoy encontrando con varios problemas a la hora de enviar facturas con descuentos por línea, con recargo de equivalencia, retenciones, etc... y no encuentro ninguna factura de prueba que usar como ejemplo para ver las diferencias.

He conseguido enviar sin problema facturas con varios tipos de IVA e incluso con un descuento "global" (por pronto pago, por ejemplo). Entiendo que el problema está en que estoy poniendo mal los importes en algún sitio según las condiciones de cada caso.
¿Alguien podría decirme si en el detalle de la factura (líneas), "ImporteUnitario" e "ImporteTotal" deben reflejar el importe REAL/FINAL de esa línea, con el recargo, descuento, etc. aplicados?

Por ejemplo. Para una Factura EXENTA DE IVA...

Lo que yo hago:

* * * * * * <DetallesFactura>
* * * * * * * * <IDDetalleFactura>
* * * * * * * * * * <DescripcionDetalle>TARJETA SMALL</DescripcionDetalle>
* * * * * * * * * * <Cantidad>1</Cantidad>
* * * * * * * * * * <ImporteUnitario>100.00</ImporteUnitario>
* * * * * * * * * * <Descuento>0.00</Descuento>
* * * * * * * * * * <ImporteTotal>121.00</ImporteTotal>
* * * * * * * * </IDDetalleFactura>
* * * * * * </DetallesFactura>

Pero creo que ImporteTotal debería ser 100.00 en vez de 121.00 si la factura está exenta?


Otro caso: Factura con RETENCIÓN

* * * * * * <DetallesFactura>
* * * * * * * * <IDDetalleFactura>
* * * * * * * * * * <DescripcionDetalle>WEBCAM NGS XPRESSCAM</DescripcionDetalle>
* * * * * * * * * * <Cantidad>1</Cantidad>
* * * * * * * * * * <ImporteUnitario>100.00</ImporteUnitario>
* * * * * * * * * * <Descuento>0.00</Descuento>
* * * * * * * * * * <ImporteTotal>121.00</ImporteTotal>
* * * * * * * * </IDDetalleFactura>
* * * * * * </DetallesFactura>

* * * * * * <ImporteTotalFactura>102.00</ImporteTotalFactura>
* * * * * * <RetencionSoportada>19.00</RetencionSoportada>

¿Debería ImporteTotal (121.00) reflejar la retención también? ¿O tal vez ImporteTotalFactura no deba incluir la retención?

Lo mismo me ocurre con facturas con Recargo de Equivalencia o con Descuento por línea.

¿Debería ImporteTotal reflejar SIEMPRE el importe final de la línea según las condiciones de la factura? ¿o solo el precio "real" del artículo, independientemente de las condiciones de la factura?

Sé que puede resultar obvio, pero no sé cómo hace Araba las validaciones de los totales. La facturación electrónica de otros países se encarga de sumar/restar lo que sea necesario en función de los datos/condiciones de la factura, pero en este caso es "al revés" y debemos indicar nosotros los importes exactos que se van a sumar/restar. Es decir, hay que dárselo todo masticado.

Hola espinete,

Mi opinión (aunque, como es lógico, la última palabra siempre la tiene Hacienda):

- Si una factura es exenta de IVA, en la línea de detalles, en <ImporteTotal> debe aparecer sin IVA.

- Si una factura lleva retención, no debe reflejarse esa retención ni en las líneas de detalle, ni en los desgloses, ni siquiera en <ImporteTotalFactura>. La retención debe ir por separado de todo ello sólo en <RetencionSoportada>
La retención no afecta a la factura ni a sus IVAs. Es un tema de pagos/cobros que irá por otro lado (declaración de retenciones de IRPF)

Se admiten otras opiniones.

Saludos

Sistel 28-10-2021 10:08:02

Cita:

Empezado por APO (Mensaje 543790)
Estupendo Neftali, gracias! Pues probaré con insomnia porque con PostMan soy incapaz de cargar el certificado.

Hola APO,

Sí, yo también, como Neftali, uso Insomnia.
Es muchísimo más sencillo de configurar y utilizar que PostMan.
Te recomiendo Insomnia.

Saludos

thinkows 28-10-2021 10:36:00

Contenido del documento FAQ'S de Guipuzkoa
 
Cita:

Empezado por Sistel (Mensaje 543791)
Hola espinete,

Mi opinión (aunque, como es lógico, la última palabra siempre la tiene Hacienda):

- Si una factura es exenta de IVA, en la línea de detalles, en <ImporteTotal> debe aparecer sin IVA.

- Si una factura lleva retención, no debe reflejarse esa retención ni en las líneas de detalle, ni en los desgloses, ni siquiera en <ImporteTotalFactura>. La retención debe ir por separado de todo ello sólo en <RetencionSoportada>
La retención no afecta a la factura ni a sus IVAs. Es un tema de pagos/cobros que irá por otro lado (declaración de retenciones de IRPF)

Se admiten otras opiniones.

Saludos

Por sí ayuda :

12.13 En el importe que va en la etiqueta “BaseImponible”, ¿hay que descontar los descuentos especiales, los descuentos por pronto pago, y sumarle los portes? ¿O sólo hay que indicar la suma de los importes de los detalles de la factura?
En la etiqueta Base imponible debe figurar en efecto la cifra que resulte de los descuentos y de los portes. Los descuentos que figuran en el detalle serán los descuentos unitarios.
No obstante, cada uno de los descuentos globales también deberán figurar en la factura, consignándose cada uno de ellos como una nueva línea de detalle describiendo el concepto del descuento, en su caso, y el importe, que según se configure el mismo, pudiera tener signo negativo.
El archivo XML-TicketBAI debe tener toda la información que figure en relación a los descuentos en la factura, al punto que con ese archivo se podría prácticamente considerar que sería un repositorio de las facturas por lo que el detalle del archivo XML-TicketBAI será el mismo que el detalle que figure en la factura y, por tanto, en su caso, precisará cada uno de los descuentos globales y su importe.

espinete 28-10-2021 10:40:01

Cita:

Empezado por Sistel (Mensaje 543791)
Hola espinete,

Mi opinión (aunque, como es lógico, la última palabra siempre la tiene Hacienda):

- Si una factura es exenta de IVA, en la línea de detalles, en <ImporteTotal> debe aparecer sin IVA.

- Si una factura lleva retención, no debe reflejarse esa retención ni en las líneas de detalle, ni en los desgloses, ni siquiera en <ImporteTotalFactura>. La retención debe ir por separado de todo ello sólo en <RetencionSoportada>
La retención no afecta a la factura ni a sus IVAs. Es un tema de pagos/cobros que irá por otro lado (declaración de retenciones de IRPF)

Se admiten otras opiniones.

Saludos

Gracias Sistel...

Me he liado un poco con los nombres que le han dado a las variables. ImporteUnitario en realidad es el Precio unitario, no el importe (al menos en mi cabeza, importe es precio*cantidad).
Pero luego ImporteTotal sí es el total de la línea. Por eso me liaba.

ermendalenda 28-10-2021 10:40:45

Pregunta campo Idotro
 
Hola,
alguien ha usado el campo <IDOtro> cuando se trata de un cif extranjero?
por favor un ejemplo

rci 28-10-2021 10:59:39

RAEE impuesto de reciclaje
 
Buenos días,

alguien me puede decir cómo debemos informar el RAEE (el impuesto de reciclaje) que puede tener algún artículo de una línea de detalle de la factura?
¿Tiene que ir sumado dentro del campo ImporteUnitario del DetalleFactura correspondiente?

No encuentro información sobre el RAEE en la documentación.



Muchas gracias

espinete 28-10-2021 11:12:30

Cita:

Empezado por ermendalenda (Mensaje 543795)
Hola,
alguien ha usado el campo <IDOtro> cuando se trata de un cif extranjero?
por favor un ejemplo

Hola...

Yo he conseguido enviar facturas para destinatarios extranjeros rellenando solo los siguientes datos:

Sujetos.Destinatarios.IDOtro.CodigoPais (el código ISO de 2 letras del país)
Sujetos.Destinatarios.IDOtro.IDType (04)
Sujetos.Destinatarios.IDOtro.ID (el código ISO + la identificación fiscal del destinatario en su país de origen)
Sujetos.Destinatarios.ApellidosNombreRazonSocial
Sujetos.Destinatarios.CodigoPostal
Sujetos.Destinatarios.Direccion

Fíjate que Sujetos.Destinatarios.NIF no se incluye en este caso.

Desde que envíes el campo NIF te devuelve error. NIF y IDOtro son excluyentes.

Otra cosa es que esté bien hecho, pero al menos así puedo enviar las facturas sin error/aviso

espinete 28-10-2021 11:25:51

Facturas con Recargo de Equivalencia...
 
Tengo una duda con las facturas con recargo de equivalencia, y la respuesta que me dan desde Álava me provoca más dudas aún...

1. En la línea de detalle de cada artículo, el importe total debe llevar acumulado el recargo de equivalencia, no solo el IVA.

Bien, hasta ahí no hay problema.

2. Cuando hay tipo y cuota de recargo de equivalencia en el desglose, la etiqueta OperacionEnRecargoDeEquivalenciaORegimenSimplificadodebe ser ‘N’

Aquí ya se me empieza a torcer el culo... ¿Si es una factura con recargo, por qué OperacionEnRecargoDeEquivalenciaORegimenSimplificado debe ser "N" y no "S"?

3. Los campos “tipo recargo equivalencia” y “cuota recargo equivalencia” sólo deben rellenarse en el caso de que se documente una operación en la que el destinatario de la operación sea un comerciante minorista acogido al régimen especial del recargo de equivalencia y proceda la aplicación de dicho recargo.

Ya, por eso los rellenaba, porque la factura está acogida al recargo de equivalencia, no?

4. En el desglose a nivel de factura, se habilita una marca de nombre "Operación en recargo de equivalencia o Régimen simplificado", en la cual el valor por defecto es "N". Si se marca “S”, se trata de una factura expedida por un contribuyente en régimen simplificado o en régimen de recargo de equivalencia. La cuota del IVA repercutida en este caso NO se traslada a la declaración del IVA

5. Operación en recargo de equivalencia o régimen simplificado: S. Esta marca significa que la cuota de IVA no forma parte de la liquidación del impuesto, por lo que tiene la consideración de ingreso de la actividad económica a efectos del IRPF.

Ejemplo que me ponen desde Álava:

Un empresario en régimen de recargo de equivalencia expide una factura de un medicamento con base imponible IVA de 100 euros y cuota de IVA de 4 euros. ¿Cómo se debe generar el fichero TB en este caso?
Se debe marcar la clave de regímenes de IVA y operaciones con trascendencia tributaria "51 Operaciones en recargo de equivalencia".
En el desglose de factura, se deben rellenar los siguientes importes y valores:
- Base imponible: 100.
- Tipo impositivo: 4.
- Cuota del impuesto: 4.
- Tipo del recargo de equivalencia: 0.
- Cuota del recargo de equivalencia: 0.

A ver si lo he entendido bien...

Si el Emisor está acogido al Recargo de Equivalencia, se hace como el ejemplo anterior:
- clave de regímenes de IVA = 51
- Tipo Recargo 0
- Cuota Recargo 0

Y si es el Destinatario está acogido al Recargo de Equivalencia:
- Tipo del recargo de equivalencia: 5,20 (o el que sea).
- Cuota del recargo de equivalencia: (la cuota de recargo)

¿Es así o lo estoy entendiendo mal?

keys 28-10-2021 12:17:53

Cita:

Empezado por Sistel (Mensaje 543789)
Hola keys,

Si verificas el XML devuelto por Hacienda contra el esquema XSD ¿te da correcto?
En caso de que no dé correcto, habría que informar a Hacienda Foral.

Saludos

Asi es el xml devuelto por hacienda contra el xsd de hacienda no es correcto. Se lo he comunicado a hacienda, pero quería ver si le pasa a alguien más.

Un saludo

pablog2k 28-10-2021 12:37:55

Cita:

Empezado por APO (Mensaje 543790)
Estupendo Neftali, gracias! Pues probaré con insomnia porque con PostMan soy incapaz de cargar el certificado.

por si te sirve, en postman, vas a settings, Certificates, Client Certificates, Add Certificate, en Host pones la url (yo tengo la de pruebas tbai-prep.egoitza.gipuzkoa.eus) y luego pfx file pones el certificado,y en passphrase el password si hiciera falta.
Con esto yo puedo enviar sin problemas

ermendalenda 28-10-2021 12:46:22

Cita:

Empezado por espinete (Mensaje 543797)
Hola...

Yo he conseguido enviar facturas para destinatarios extranjeros rellenando solo los siguientes datos:

Sujetos.Destinatarios.IDOtro.CodigoPais (el código ISO de 2 letras del país)
Sujetos.Destinatarios.IDOtro.IDType (04)
Sujetos.Destinatarios.IDOtro.ID (el código ISO + la identificación fiscal del destinatario en su país de origen)
Sujetos.Destinatarios.ApellidosNombreRazonSocial
Sujetos.Destinatarios.CodigoPostal
Sujetos.Destinatarios.Direccion

Fíjate que Sujetos.Destinatarios.NIF no se incluye en este caso.

Desde que envíes el campo NIF te devuelve error. NIF y IDOtro son excluyentes.

Otra cosa es que esté bien hecho, pero al menos así puedo enviar las facturas sin error/aviso

Gracias Espinete.

Neftali [Germán.Estévez] 28-10-2021 13:13:41

Cita:

Empezado por ermendalenda (Mensaje 543795)
Hola,
alguien ha usado el campo <IDOtro> cuando se trata de un cif extranjero?
por favor un ejemplo


Un ejemplillo:


edari 28-10-2021 13:33:04

Otro con problemas con la validación de negocios de Alava


Hago una factura muy simple


una línea con -1 x 197,29 al 21% (-238,72)


Me devuelve el error de 78-AVISO: Error validación de negocio [Sumatorio detalle no coincide con el sumatorio desglose]

Y yo mando esto (pongo solo la parte de datos referente a valoraciones)

<CabeceraFactura>
<NumFactura>21001011</NumFactura>
<FechaExpedicionFactura>21-10-2021</FechaExpedicionFactura>
<HoraExpedicionFactura>00:00:13</HoraExpedicionFactura>
<FacturaSimplificada>N</FacturaSimplificada>
<FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
</CabeceraFactura>
<DatosFactura>
<DescripcionFactura>factura a cliente</DescripcionFactura>
<DetallesFactura>
<IDDetalleFactura>
<DescripcionDetalle>IMPRESORA LASER </DescripcionDetalle>
<Cantidad>-1.00</Cantidad>
<ImporteUnitario>-197.29</ImporteUnitario>
<Descuento>0</Descuento>
<ImporteTotal>-238.72</ImporteTotal>
</IDDetalleFactura>
</DetallesFactura>
<ImporteTotalFactura>-238.72</ImporteTotalFactura>
<Claves>
<IDClave>
<ClaveRegimenIvaOpTrascendencia>01</ClaveRegimenIvaOpTrascendencia>
</IDClave>
</Claves>
</DatosFactura>
<TipoDesglose>
<DesgloseFactura>
<Sujeta>
<NoExenta>
<DetalleNoExenta>
<TipoNoExenta>S1</TipoNoExenta>
<DesgloseIVA>
<DetalleIVA>
<BaseImponible>-197.29</BaseImponible>
<TipoImpositivo>21.00</TipoImpositivo>
<CuotaImpuesto>-41.43</CuotaImpuesto>

</DetalleIVA>
</DesgloseIVA>
</DetalleNoExenta>
</NoExenta>
</Sujeta>
</DesgloseFactura>
</TipoDesglose>
</Factura>

....


Falla la valildación o fallo yo?


Gracias.

espinete 28-10-2021 13:41:36

Cita:

Empezado por edari (Mensaje 543803)
Otro con problemas con la validación de negocios de Alava


Hago una factura muy simple


una línea con -1 x 197,29 al 21% (-238,72)


Me devuelve el error de 78-AVISO: Error validación de negocio [Sumatorio detalle no coincide con el sumatorio desglose]

Y yo mando esto (pongo solo la parte de datos referente a valoraciones)

<CabeceraFactura>
<NumFactura>21001011</NumFactura>
<FechaExpedicionFactura>21-10-2021</FechaExpedicionFactura>
<HoraExpedicionFactura>00:00:13</HoraExpedicionFactura>
<FacturaSimplificada>N</FacturaSimplificada>
<FacturaEmitidaSustitucionSimplificada>N</FacturaEmitidaSustitucionSimplificada>
</CabeceraFactura>
<DatosFactura>
<DescripcionFactura>factura a cliente</DescripcionFactura>
<DetallesFactura>
<IDDetalleFactura>
<DescripcionDetalle>IMPRESORA LASER </DescripcionDetalle>
<Cantidad>-1.00</Cantidad>
<ImporteUnitario>-197.29</ImporteUnitario>
<Descuento>0</Descuento>
<ImporteTotal>-238.72</ImporteTotal>
</IDDetalleFactura>
</DetallesFactura>
<ImporteTotalFactura>-238.72</ImporteTotalFactura>
<Claves>
<IDClave>
<ClaveRegimenIvaOpTrascendencia>01</ClaveRegimenIvaOpTrascendencia>
</IDClave>
</Claves>
</DatosFactura>
<TipoDesglose>
<DesgloseFactura>
<Sujeta>
<NoExenta>
<DetalleNoExenta>
<TipoNoExenta>S1</TipoNoExenta>
<DesgloseIVA>
<DetalleIVA>
<BaseImponible>-197.29</BaseImponible>
<TipoImpositivo>21.00</TipoImpositivo>
<CuotaImpuesto>-41.43</CuotaImpuesto>

</DetalleIVA>
</DesgloseIVA>
</DetalleNoExenta>
</NoExenta>
</Sujeta>
</DesgloseFactura>
</TipoDesglose>
</Factura>

....


Falla la valildación o fallo yo?


Gracias.

Yo para que me la tome por válida pongo la cantidad en negativo, el importe en positivo y el total en negativo.

Según ellos, se puede hacer de la siguiente manera: Cantidad sin signo y los 2 importes negativos.

...pero no lo he probado. Poniendo cantidad negativa, importe positivo y total negativo, la da por válida.

edari 28-10-2021 14:37:20

Cita:

Empezado por espinete (Mensaje 543804)
Yo para que me la tome por válida pongo la cantidad en negativo, el importe en positivo y el total en negativo.

Según ellos, se puede hacer de la siguiente manera: Cantidad sin signo y los 2 importes negativos.

...pero no lo he probado. Poniendo cantidad negativa, importe positivo y total negativo, la da por válida.


Gracias espinete. Funciona. ^\||/

ermendalenda 28-10-2021 14:49:58

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 543802)
Un ejemplillo:


:)Muchas Gracias

espinete 28-10-2021 14:58:53

Álava me acaba de responder a mi duda sobre el Recargo de Equivalencia:

1) EMISOR acogido al régimen de recargo de equivalencia:

TipoRecargo = 0
CuotaRecargo = 0
OperacionEnRecargoDeEquivalenciaORegimenSimplificado = "S"
ClaveRegimenIvaOpTrascendencia = 51
(no válido para personas jurídicas, solo personas físicas)
ImporteTotal*debe incluir Importe+IVA (SIN el RE)

2) DESTINATARIO acogido al recargo de equivalencia

TipoRecargo = porcentaje del RE
CuotaRecargo = cuota del RE
OperacionEnRecargoDeEquivalenciaORegimenSimplificado = "N"
ClaveRegimenIvaOpTrascendencia = 01 (o la que sea)
ImporteTotal*debe incluir Importe+IVA+RE

He hecho pruebas de envío con ambos casos y ya no me devuelve ningún aviso/error.

Con tantas condiciones, regímenes, códigos, tipos, etc. que hay que indicar en la generación de las facturas...

"causas de exención", "clave de régimen especial", "causa de no sujeción", "tipo de factura rectificativa", "código de factura rectificativa"

...los programas facturación van a quedar de todo menos minimalistas e intuitivos, si el cliente final va a tener ahora que indicar todas estas variables antes de hacer una factura, no? O me estoy perdiendo algo?

Al menos la utilidad para crear facturas que hay en la web de Bizkaia y Gipuzkoa incluyen varios desplegables y checkboxes para indicar todas estas opciones. Me pregunto si realmente hay alguna forma de que sea lo más automático posible para el usuario final. Vamos, que si se olvidan de elegir la forma de pago, ya te digo yo que se van a olvidar de todas estas opciones "nuevas".

Por eso preguntaba hace unos días de si la "Clave de régimen especial de IVA y operaciones con trascendencia tributaria" era algo fijo (por empresa) o dependía de cada factura. Imagino que en la mayoría de los casos (un comercio de venta al público, por ejemplo), se pueden predefinir la mayoría de opciones, pero aún así habrá que poner la opción visible.

ermendalenda 28-10-2021 19:42:02

Validador
 
Terminando Validador XSD-XLM para VB6.

Madre del amor hermoso todos los santos y la Virgen del petroleo vaya cirio hay que montar.

unomasmas 29-10-2021 08:05:19

Cita:

Empezado por espinete (Mensaje 543794)
Gracias Sistel...

Me he liado un poco con los nombres que le han dado a las variables. ImporteUnitario en realidad es el Precio unitario, no el importe (al menos en mi cabeza, importe es precio*cantidad).
Pero luego ImporteTotal sí es el total de la línea. Por eso me liaba.

Pues sí, yo también entiendo que importe es precio*cantidad y creo que, al menos, la gran mayoría, pero efectivamente: se refieren al Precio


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

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