Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SDK Componente Verifactu para Delphi 7+ - Subforo Avisos/consultas (https://www.clubdelphi.com/foros/forumdisplay.php?f=81)
-   -   Factura servicios a Nueva Zelanda (https://www.clubdelphi.com/foros/showthread.php?t=97844)

ramherfer 10-11-2025 21:50:12

Factura servicios a Nueva Zelanda
 
Buenas tardes una consulta. Tengo una factura de servicios a Nueva Zelanda y la aplicación me genera el siguiente XML:
Código:

<Destinatarios>
<IDDestinatario>
    <NombreRazon>TEAM NEW ZELAND LTD</NombreRazon>
    <IDOtro>
        <CodigoPais>NZ</CodigoPais>
        <IDType>06</IDType>
        <ID>DOC001</ID>
    </IDOtro>
</IDDestinatario>
</Destinatarios>
<Desglose>
    <DetalleDesglose>
        <ClaveRegimen>02</ClaveRegimen>
        <OperacionExenta>E2</OperacionExenta>
        <BaseImponibleOimporteNoSujeto>675.00</BaseImponibleOimporteNoSujeto>
    </DetalleDesglose>
</Desglose>
<CuotaTotal>0.00</CuotaTotal>
<ImporteTotal>675.00</ImporteTotal>

Y la AEAT lo traga sin problemas, pero, no debería ir de la siguiente forma (01 Regimen General / N2 No sujeta por motivos de localización:

Código:

<IDDestinatario>
  <NombreRazon>TEAM NEW ZELAND LTD</NombreRazon>
  <IDOtro>
    <CodigoPais>NZ</CodigoPais>
    <IDType>06</IDType>
    <ID>DOC001</ID>
  </IDOtro>
</IDDestinatario>
<Desglose>
  <DetalleDesglose>
    <ClaveRegimen>01</ClaveRegimen> <!-- Regimen General -->
    <!-- Sin OperacionExenta -->
    <BaseImponibleOimporteNoSujeto>675.00</BaseImponibleOimporteNoSujeto>
    <ClasificacionOperacion>N2</ClasificacionOperacion> <!-- por motivos de localización -->
  </DetalleDesglose>
</Desglose>
<CuotaTotal>0.00</CuotaTotal>
<ImporteTotal>675.00</ImporteTotal>

Creo que no está discriminando cuando es producto (03 Exportación /E2) y cuando es servicio (01 Regimen general / N2)
Un saludo,
Ramiro

jakematespain 11-11-2025 09:12:55

Hola, creo que tienes que ser como indicas (01 Regimen General / N2 No sujeta por motivos de localización).

Desde esta url se puede ver, según si es mercancía, servicios, tipo de cliente final, etc, que es lo que se aplica en cada caso y habla de no sujeta por motivos de localización.

https://sede.agenciatributaria.gob.e...sarios-ue.html

Un saludo.

seccion_31 11-11-2025 09:16:16

Buenos dias !

El componente no soporta esa automatizacion, basicamente porque no tiene el dato de si es un servicio o una entrega de bienes. (se entiende todo entrega de bienes).

Recordemos que en un princpio el componente, estaba diseñado para tratar una facturacion simple nacional.... de la forma mas simple.

Pero creo que lo puedes solucionar por el array de exentas (esta vez SI)

: )

Ya nos diras

Saludos !

ramherfer 11-11-2025 16:37:40

Pues la ficha del cliente creo que envio la clave de operación 01 y me lo devolvio y envio con clave 02/E2.

Me comentas el array de exentas, pero realmente no es una factura exenta sino no sujeta a iva por motivos de localización.
No obstante investigaré y os cuento como y con que valores lo paso y el resultado.

Un saludo,

seccion_31 15-11-2025 10:47:54

cuentame la factura con todos los datos y causas.

y pasame un XML correcto para ese envio y miro de integrarlo !

Saludos !

ramherfer 17-11-2025 09:47:19

Cita:

Empezado por seccion_31 (Mensaje 569899)
cuentame la factura con todos los datos y causas.

y pasame un XML correcto para ese envio y miro de integrarlo !

Saludos !

Bueno tengo diferenciado si es producto o servicio a través de la descripcion de la operacion (Venta de productos y prestación de servicios) de la operación ya que pueden ser Servicios, Productos o ambas cosas y servicio asumido en producto por ejemplo ( en factura venta de usb con contenido multimedia) en factura va el usb como producto en una linea y el montaje multimedia como servicio. En la operación iría Venta de productos y prestación de servicios en su descripción, mediante un pos estoy localizando si es producto solo, servicio solo o ambos producto y servicio asumido.


Canarias Ceuta y Melilla Venta de Productos y prestación de servicios (asumidos) Clave Regimen 02 Exportación, Motivo Exención E2 (Exenta por Art.21)
Canarias Ceuta y Melilla Venta de Productos Clave Regimen 02 Exportación, Motivo Exención E2 (Exenta por Art.21)
Canarias Ceuta y Melilla Venta por prestación de servicios Clave Regimen 08 (Operaciones sujetas), Clave Operacion N2 (Art. 69 Operación no sujeta por reglas de localización)

Pais NO UE Venta de Productos y prestación de servicios (asumidos) Clave Regimen 02 Motivo exención E2 (Exenta por Art.21)
Pais NO UE Venta de productos Clave Regimen 02 Exportación, Motivo exención E2 (Exenta por Art.21)
Pais NO UE Venta por prestación de servicios Clave Regimen 08 (Operaciones sujetas) Clave Operacion N2 (Art. 69 Operacion no sujeta por reglas de localización)

Pais UE Venta de Productos y prestación de servicios (asumidos) Clave Regimen 02 Motivo exención E5 (Exenta por Art.25)
Pais UE Venta de productos Clave Regimen 02 Exportación, Motivo exención E5 (Exenta por Art.25)
Pais UE Venta por prestación de servicios Clave Regimen 08 (Operaciones sujetas) Clave Operacion N2 (Art. 69 Operacion no sujeta por reglas de localización)

Motivo de exención y Clave operación son excluyentes no se pueden indicar las dos o se indica motivo de exención o Clave Operación

Ejemplo XML enviado:
Código:

<?xml version="1.0"?>
<RegistroAlta>
  <RegistroFacturacionType>
    <RegistroAlta>
      <IDVersion>1.0</IDVersion>
      <IDFactura>
        <IDEmisorFactura>00000000W</IDEmisorFactura>
        <NumSerieFactura>FA250170</NumSerieFactura>
        <FechaExpedicionFactura>10-11-2025</FechaExpedicionFactura>
      </IDFactura>
      <NombreRazonEmisor>NOMBRE EMISOR</NombreRazonEmisor>
      <TipoFactura>F1</TipoFactura>
      <DescripcionOperacion>VENTA POR PRESTACION DE SERVICIOS</DescripcionOperacion>
      <Destinatarios>
        <item>
          <NombreRazon>TEAM NEW ZELAND LTD</NombreRazon>
          <IDOtro>
            <CodigoPais>NZ</CodigoPais>
            <IDType>06</IDType>
            <ID>DC0010</ID>
          </IDOtro>
        </item>
      </Destinatarios>
      <Desglose>
        <item>
          <ClaveRegimen>02</ClaveRegimen>
          <OperacionExenta>E2</OperacionExenta>
          <BaseImponibleOimporteNoSujeto>675.00</BaseImponibleOimporteNoSujeto>
        </item>
      </Desglose>
      <CuotaTotal>0.00</CuotaTotal>
      <ImporteTotal>675.00</ImporteTotal>
      <Encadenamiento>
        <RegistroAnterior>
          <IDEmisorFactura>00000000W</IDEmisorFactura>
          <NumSerieFactura>FA250169</NumSerieFactura>
          <FechaExpedicionFactura>01-11-2025</FechaExpedicionFactura>
          <Huella>65B3C37FE09BE1DB0D71A58F265A5B0BA804F9483D2FAAB457456AA5DD1325CD</Huella>
        </RegistroAnterior>
      </Encadenamiento>
      <SistemaInformatico>
        <NombreRazon>SISTEMA INFORMATICO</NombreRazon>
        <NIF>00000000W</NIF>
        <NombreSistemaInformatico>APP VERIFACTU</NombreSistemaInformatico>
        <IdSistemaInformatico>01</IdSistemaInformatico>
        <Version>1</Version>
        <NumeroInstalacion>2</NumeroInstalacion>
        <TipoUsoPosibleSoloVerifactu>S</TipoUsoPosibleSoloVerifactu>
        <TipoUsoPosibleMultiOT>S</TipoUsoPosibleMultiOT>
        <IndicadorMultiplesOT>N</IndicadorMultiplesOT>
      </SistemaInformatico>
      <FechaHoraHusoGenRegistro>2025-11-10T20:28:55+01:00</FechaHoraHusoGenRegistro>
      <TipoHuella>01</TipoHuella>
      <Huella>41756E2E1A9164E973D30E8F17AF94B2A500F379E98F7DF3ED5A055339BE628F</Huella>
    </RegistroAlta>
  </RegistroFacturacionType>
</RegistroAlta>

Ejemplo XML de como se debería de enviar:

Código:

<?xml version="1.0"?>
<RegistroAlta>
  <RegistroFacturacionType>
    <RegistroAlta>
      <IDVersion>1.0</IDVersion>
      <IDFactura>
        <IDEmisorFactura>00000000W</IDEmisorFactura>
        <NumSerieFactura>FA250170</NumSerieFactura>
        <FechaExpedicionFactura>10-11-2025</FechaExpedicionFactura>
      </IDFactura>
      <NombreRazonEmisor>Nombre del emisor</NombreRazonEmisor>
      <TipoFactura>F1</TipoFactura>
      <DescripcionOperacion>VENTA POR PRESTACION DE SERVICIOS</DescripcionOperacion>
      <Destinatarios>
        <item>
          <NombreRazon>TEAM NEW ZELAND LTD</NombreRazon>
          <NIF>DC0010</NIF>
        </item>
      </Destinatarios>
      <Desglose>
        <item>
          <ClaveRegimen>08</ClaveRegimen>
          <CalificacionOperacion>N2</CalificacionOperacion>
          <TipoImpositivo>0.00</TipoImpositivo>
          <BaseImponibleOimporteNoSujeto>675.00</BaseImponibleOimporteNoSujeto>
          <CuotaRepercutida>0.00</CuotaRepercutida>
        </item>
      </Desglose>
      <CuotaTotal>0.00</CuotaTotal>
      <ImporteTotal>675.00</ImporteTotal>
      <Encadenamiento>
        <RegistroAnterior>
          <IDEmisorFactura>00000000W</IDEmisorFactura>
          <NumSerieFactura>FA250169</NumSerieFactura>
          <FechaExpedicionFactura>01-11-2025</FechaExpedicionFactura>
          <Huella>65B3C37FE09BE1DB0D71A58F265A5B0BA804F9483D2FAAB457456AA5DD1325CD</Huella>
        </RegistroAnterior>
      </Encadenamiento>
      <SistemaInformatico>
        <NombreRazon>Nombre del emisor</NombreRazon>
        <NIF>00000000W</NIF>
        <NombreSistemaInformatico>APP VERIFACTU</NombreSistemaInformatico>
        <IdSistemaInformatico>01</IdSistemaInformatico>
        <Version>1</Version>
        <NumeroInstalacion>2</NumeroInstalacion>
        <TipoUsoPosibleSoloVerifactu>S</TipoUsoPosibleSoloVerifactu>
        <TipoUsoPosibleMultiOT>S</TipoUsoPosibleMultiOT>
        <IndicadorMultiplesOT>N</IndicadorMultiplesOT>
      </SistemaInformatico>
      <FechaHoraHusoGenRegistro>2025-11-10T20:09:13+01:00</FechaHoraHusoGenRegistro>
      <TipoHuella>01</TipoHuella>
      <Huella>B74E8A58A92B0ABD09F1098DF636049343E22697833343277D14716D8E8E9DD9</Huella>
    </RegistroAlta>
  </RegistroFacturacionType>
</RegistroAlta>

No se si esto puede aportar algo o la estoy liando más. La diferenciación de productos, servicios o productos y servicios tengo muy claro como diferenciarlos a través de la descripción de la operación. La app ya está enviando si la factura contiene productos, servicios o productos y servicios (asumidos).

Como automatizarlo pues lo estoy intentando a través del array de exentas y cuando son servicios en lugar motivo de exención, indicar calificación de operación.
Durante la semana os indico si por ahí funciona.

Todo esto es una puta locura.

Saludos,
Ramiro

seccion_31 17-11-2025 11:58:39

gracias por compartir tu lista, vamos a ver:

Cita:

Empezado por ramherfer (Mensaje 569930)
Canarias Ceuta y Melilla Venta de Productos y prestación de servicios (asumidos) Clave Regimen 02 Exportación, Motivo Exención E2 (Exenta por Art.21)
Canarias Ceuta y Melilla Venta de Productos Clave Regimen 02 Exportación, Motivo Exención E2 (Exenta por Art.21)
Canarias Ceuta y Melilla Venta por prestación de servicios Clave Regimen 08 (Operaciones sujetas), Clave Operacion N2 (Art. 69 Operación no sujeta por reglas de localización)

Pais NO UE Venta de Productos y prestación de servicios (asumidos) Clave Regimen 02 Motivo exención E2 (Exenta por Art.21)
Pais NO UE Venta de productos Clave Regimen 02 Exportación, Motivo exención E2 (Exenta por Art.21)
Pais NO UE Venta por prestación de servicios Clave Regimen 08 (Operaciones sujetas) Clave Operacion N2 (Art. 69 Operacion no sujeta por reglas de localización)

Pais UE Venta de Productos y prestación de servicios (asumidos) Clave Regimen 01 Motivo exención E5 (Exenta por Art.25)
Pais UE Venta de productos Clave Regimen 01 General, Motivo exención E5 (Exenta por Art.25)

Pais UE Venta por prestación de servicios Clave Regimen 08 (Operaciones sujetas) Clave Operacion N2 (Art. 69 Operacion no sujeta por reglas de localización)

Motivo de exención y Clave operación son excluyentes no se pueden indicar las dos o se indica motivo de exención o Clave Operación

En rojo, no soportado por automatizacion, pero creo que por el array de exentas se puede manejar. (tampoco se ahora mismo si es correcto)

En negrita, pones originalmente 02 exportacion para UE, cuando creo que son 01 regimen general. (en esta exposicion lo he cambiado): Revisa esto por favor, porque la automatización lo coloca asi, y creo estar seguro.

Saludos !

ramherfer 17-11-2025 13:26:22

Pais UE Venta de Productos y prestación de servicios (asumidos) Clave Regimen 01 Motivo exención E5 (Exenta por Art.25)
Pais UE Venta de productos Clave Regimen 01 General, Motivo exención E5 (Exenta por Art.25)


Si perdón así es correcto, me confundí al transcribir y como llevo con esto una botifarra mental de narices lo dí por bueno como lo había escrito.
Disculpar por la confusión.

Un saludo,
Ramiro

ramherfer 17-11-2025 20:42:48

En cuanto le pongo calificación N2 me salta el siguiente aviso



lo transcribo por si no se ve la imagen

Código:

Error añadiendo factura FA250176 a la cola de Veri*Factu
Error Tipo exenta, calificación o Transcendencia no validas

Tipo exenta está en blanco ya que son excluyentes si se especifica Calificación no se debe especificar Tipo Exenta.
Corregirme si me equivoco por favor.

Ya no se por donde coger este tema!!

ramherfer 17-11-2025 21:36:54

He visto este fragmento de codigo en uVerifactuFuncs:

Código Delphi [-]
           if afactura.exenta[j].baseImp<>0 then
           begin
                if not ExisteTipoExenta( afactura.exenta[j].tipoExenta ) then exit;

                if afactura.exenta[j].calificacionOperacion<>'' then
                    if not ExisteCalificacion( afactura.exenta[j].calificacionOperacion) then exit;

                if not ExisteTranscendencia( afactura.exenta[j].claveRegimen ) then exit;
           end;

y creo que modificandolo de la siguiente manera quizás resolvería el problema, dado que repito tipo exenta y calificacion de la operación son excluyentes una y la otra:

Código Delphi [-]
           if afactura.exenta[j].baseImp<>0 then
           begin
                if afactura.exenta[j].tipoExenta<>'' then 
                    if not ExisteTipoExenta( afactura.exenta[j].tipoExenta ) then exit;

                if afactura.exenta[j].calificacionOperacion<>'' then
                    if not ExisteCalificacion( afactura.exenta[j].calificacionOperacion) then exit;

                if not ExisteTranscendencia( afactura.exenta[j].claveRegimen ) then exit;
           end;

No se si debería recompilar la dll, lo he intentado con 10.2 y me da errores por todos los lados.
Un saludo,
Ramiro

seccion_31 18-11-2025 06:56:49

le doy un vistazo

pero pasame el codigo de tu programa que carga el array con los valores para probarlo bien.

Saludos !

ramherfer 18-11-2025 07:21:35

Cita:

Empezado por seccion_31 (Mensaje 569959)
le doy un vistazo

pero pasame el codigo de tu programa que carga el array con los valores para probarlo bien.

Saludos !

Claro sin problemas:

Código Delphi [-]
        while not QFrasIva.Eof do
        begin

            dTotalIva := QFrasIva.FieldByName('IMPORTE_IVA').AsFloat +
                         QFrasIva.FieldByName('IMPORTE_RECARGO').AsFloat;

            // Añadir IVA si hay base imponible o si la cuota total es 0
            if QFrasIva.FieldByName('BASE_IMPONIBLE').AsFloat <> 0 then begin

                  // Caso: motivo exencion
                  // (N2: no sujeta por reglas de localización, salvo que exista motivo de exención)
                  if dTotalIva = 0 then begin

                        if QFrasIva.FieldByName('MOTIVO_EXENCION').AsString <> '' then begin

                            sMotivoExencion    := QFrasIva.FieldByName('MOTIVO_EXENCION').AsString;
                            sCalificaOperacion := '';

                        end else begin

                            sMotivoExencion    := '';
                            sCalificaOperacion := 'N2'; // NO SUJETA POR REGLAS DE LOCALIZACIÓN

                        end;

                        actual.exenta[index].tipoExenta            := sMotivoExencion;
                        actual.exenta[index].claveRegimen          := QRegSif.FieldByName('AEAT_CLAVE_REGIMEN').AsString;
                        actual.exenta[index].calificacionOperacion := sCalificaOperacion;
                        actual.exenta[index].baseImp               := value(QFrasIva.FieldByName('BASE_IMPONIBLE').AsString);

                        Inc(actual.nexentas);
                  end
                  // Caso: con IVA (total distinto de 0) y no exento
                  else if dTotalIva <> 0 then begin

                        // Asignar valores al array de IVA
                        actual.iva[index].baseImp := value(QFrasIva.FieldByName('BASE_IMPONIBLE').AsString);
                        actual.iva[index].iva     := value(QFrasIva.FieldByName('PORCENTAJE_IVA').AsString);
                        actual.iva[index].impiva  := value(QFrasIva.FieldByName('IMPORTE_IVA').AsString);

                        if QFrasIva.FieldByName('IMPORTE_RECARGO').AsFloat <> 0 then
                        begin
                          actual.iva[index].req    := value(QFrasIva.FieldByName('PORCENTAJE_RECARGO').AsString);
                          actual.iva[index].impreq := value(QFrasIva.FieldByName('IMPORTE_RECARGO').AsString);
                        end
                        else
                        begin
                          actual.iva[index].req    := value('0');
                          actual.iva[index].impreq := value('0');
                        end;

                        cuota := cuota + dTotalIva;

                        Inc(actual.nivas);

                  end;

            end;

            Inc(index);
            QFrasIva.Next;

        end; // while registros de IVA

Gracias.
Un saludo,
Ramiro

bmfranky 21-11-2025 17:26:43

Hola, buenas tardes, esto de servicios(asumidos), es el trabajo sobre los materiales usados?.
Cita:

Canarias Ceuta y Melilla Venta de Productos y prestación de servicios (asumidos) Clave Regimen 02 Exportación, Motivo Exención E2 (Exenta por Art.21)
Por ejemplo , el cliente canario, me envía un cilindro para rectificar.
Por un lado estaría el pistón a acoplar y por otro la mano de obra de acoplarlo.
Entonces el pistón y la mano de obra de rectificar, se pondrían de esta forma?? y los portes, también?
Perdonad como siempre las preguntas tontas, es que estoy enganchado en ello desde hace un par de días.

ramherfer 21-11-2025 19:42:51

Cita:

Empezado por bmfranky (Mensaje 570109)
Hola, buenas tardes, esto de servicios(asumidos), es el trabajo sobre los materiales usados?.

Por ejemplo , el cliente canario, me envía un cilindro para rectificar.
Por un lado estaría el pistón a acoplar y por otro la mano de obra de acoplarlo.
Entonces el pistón y la mano de obra de rectificar, se pondrían de esta forma?? y los portes, también?
Perdonad como siempre las preguntas tontas, es que estoy enganchado en ello desde hace un par de días.

Exactamente 02/E2

Ahora si solo le facturas servicio (según he leido por ahí, que me ha inflao) 08/N2

El tema de portes no lo tengo tan claro. Imagino que estarán exentos de iva bien por el Art.21 (E2) o por motivos de localización (N2) en cualquiera de los dos casos el iva no lo puedes cobrar (creo), por favor corregirme si me equivoco.

Un saludo,
Ramiro

bmfranky 21-11-2025 20:12:06

Cita:

Empezado por ramherfer (Mensaje 570116)
Exactamente 02/E2

Ahora si solo le facturas servicio (según he leido por ahí, que me ha inflao) 08/N2

El tema de portes no lo tengo tan claro. Imagino que estarán exentos de iva bien por el Art.21 (E2) o por motivos de localización (N2) en cualquiera de los dos casos el iva no lo puedes cobrar (creo), por favor corregirme si me equivoco.

Un saludo,
Ramiro

Gracias Ramiro, esa es la cuestión que yo tampoco lo se, un saludo.

bmfranky 24-11-2025 09:26:46

Cita:

Empezado por jakematespain (Mensaje 569685)
Hola, creo que tienes que ser como indicas (01 Regimen General / N2 No sujeta por motivos de localización).

Desde esta url se puede ver, según si es mercancía, servicios, tipo de cliente final, etc, que es lo que se aplica en cada caso y habla de no sujeta por motivos de localización.

https://sede.agenciatributaria.gob.e...sarios-ue.html

Un saludo.

Ahora si que no entiendo, nada, acabo de usar el informador de iva, para saber como codificar una factura desde la península a canarias y me acabo de quedar loco, si el destinatario es un particular o entidad jurídica que no actúa como empresario o profesional, lleva el IVA, normal y se tiene que presentar, como si nada, sin codificar nada de nada...



Sin embargo si el destinatario es una empresa, es exento, codificando ...





Ahora vas y la cascas, tenemos que tener en cuenta que clase de destinatario es, para codificar correctamente la factura.

seccion_31 28-11-2025 13:06:19

Buenos dias a todos !

Este cambio estara incluido en la 6.0 que se publicara en unos dias

Incluye una mejora en las exentas que ya permite un control total de sus campos.

Saludos !


La franja horaria es GMT +2. Ahora son las 18:26:14.

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