Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #101  
Antiguo 05-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
ya tengo implementado por decir algo las facturas exentas, añadiendo un campo al desglose de iva, con el identificador de la exencion, pero ...

hasta aqui llegamos, porque no me aclaro con el valor ClaveRegimen (mis conocimientos fiscales son muy limitados)
Parece que no hay conexión directa entre la clave del régimen y el motivo de la excenxión de IVA. Te paso la informsción que he encontrado:

Tabla de Claves de Régimen (ClaveRegimen)

Este campo indica el régimen de IVA aplicable a la factura.

ClaveRegimen Descripción
01 Régimen General
02 Régimen Especial de Recargo de Equivalencia
03 Régimen Especial de Agricultura, Ganadería y Pesca
04 Régimen Especial de Bienes Usados, Objetos de Arte, Antigüedades y Objetos de Colección
05 Régimen Especial de Agencias de Viaje
06 Régimen Especial del Criterio de Caja
07 Régimen Especial del Grupo de Entidades
08 Régimen Especial del Oro de Inversión
09 Régimen Especial de Agencias de Viajes que actúan como Mediadores en nombre y por cuenta ajena
10 Régimen de Comercio Intracomunitario
11 Régimen aplicable a las Ventas a Distancia y determinadas entregas de bienes y prestaciones de servicios
12 Régimen especial del IVA para Trabajadores Autónomos Extranjeros en España

Por otro lado, tenemos los motivos de la excenxión.

Tabla de Motivos de Exención (E1-E6) (Campo: CausaExencion)

Código Descripción
E1 Operaciones exentas por el artículo 20 de la Ley del IVA (ej. sanidad, educación, seguros, servicios financieros, alquiler de viviendas).
E2 Operaciones no sujetas por reglas de localización (servicios prestados fuera de España según los artículos 69, 70 y 72 de la Ley del IVA).
E3 Operaciones sujetas y exentas por el artículo 21 (exportaciones de bienes fuera de la UE).
E4 Operaciones sujetas y exentas por el artículo 22 (zonas francas, depósitos aduaneros y otros regímenes especiales).
E5 Operaciones sujetas y exentas por el artículo 23 (Régimen de viajeros, es decir, devoluciones de IVA a turistas no residentes en la UE).
E6 Operaciones sujetas y exentas por los artículos 24 y 25 (entregas intracomunitarias de bienes y servicios).

Ejemplo:

Si vendes un producto a una empresa en Alemania (operación intracomunitaria), la configuración correcta sería:
• ClaveRegimen = 10 (Comercio Intracomunitario)
• Motivo de Exención = E6 (Entrega intracomunitaria exenta de IVA)

Si emites una factura exenta de IVA por una exportación, usarías ClaveRegimen = 01 (régimen general) y motivo de exención = E3.

En ambos casos al TipoImpositivo le meteríamos el 0.
  #102  
Antiguo 05-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Edito: Perdón por el mensaje anterior. El campo del motivo está en el SII pero no en el Verifactu… igual se podría añadir junto con la descripción en el detalle…. pero no parece quedar claro…
  #103  
Antiguo 06-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por DarkDudae Ver Mensaje
Edito: Perdón por el mensaje anterior. El campo del motivo está en el SII pero no en el Verifactu… igual se podría añadir junto con la descripción en el detalle…. pero no parece quedar claro…
En el SII es asi:

3.6. ¿Cómo se registra una Entrega Intracomunitaria de Bienes?
Se anotará la factura emitida al cliente comunitario en el Libro registro de Facturas
Expedidas procediendo a su identificación mediante la clave 2 en el campo de tipos de
Identificación en el país de residencia “IDType” y su Número de Operador
Intracomunitario en el campo "ID". El campo “CodigoPais” no será obligatorio.
Por otra parte, la base imponible de la factura se incluirá en el campo de tipo de
operación “Exenta” dentro del bloque “Entrega”. Como causa de exención se
consignará la clave “E5: Exenta por el artículo 25”.


3.7. ¿Cómo se registra una Exportación?
La operación se anota en el Libro Registro de Facturas Expedidas.

-> En el campo “Clave Régimen especial o Trascendencia” se consignará el valor 2.

Deberá identificarse al cliente – en caso de ser extranjero- mediante el “Código país” y
las claves 3 “Pasaporte”, 4 “Documento oficial de identificación expedido por el país o
territorio de residencia”, 5 “Certificado de residencia” ó 6 “Otro documento probatorio”
del campo “IDType”.
Por otra parte, la base imponible de la factura se incluirá en el campo de tipo de
operación “Exenta” dentro del bloque “Entrega”. Como causa de exención se
consignará la clave E2 “Exenta por el artículo 21

Fuente: https://sede.agenciatributaria.gob.e...5/FAQs_v05.pdf



Entonces en verifactu tendriamos:

Exportaciones: articulo 21, por tanto: E3 ¿aqui incluiriamos canarias?

Intracomunitarias: articulo 25, por tanto E6
  #104  
Antiguo 06-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
entonces lo indicado por DarkDudae y lo que he correlacionado con el SII, en principio coinciden.

Eso, nos asegura las exenciones para canarias, UE, y fuera de UE, en una facturacion "normal".


El problema viene con el resto de exenciones, por ejemplo facturar temas medicos, ongs, deportivos, educativos, culturales etc...

¿Podemos aclarar este tema?

Saludos !
  #105  
Antiguo 06-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
entonces lo indicado por DarkDudae y lo que he correlacionado con el SII, en principio coinciden.

Eso, nos asegura las exenciones para canarias, UE, y fuera de UE, en una facturacion "normal".


El problema viene con el resto de exenciones, por ejemplo facturar temas medicos, ongs, deportivos, educativos, culturales etc...

¿Podemos aclarar este tema?

Saludos !
Entiendo que para ventas desde la península a Canarias, estaríamos hablando de una operación general 01 con tipo de excención E03.

Para las operaciones que mencionas, creo que todas serían el tipo E04:

Tipo de Exención,ClaveRegimen en VeriFactu,Base Legal
Servicios médicos y sanitarios,04,Art. 20. Uno. 2º Ley IVA
Servicios educativos y formación,04,Art. 20. Uno. 9º y 10º Ley IVA
Servicios sociales (ONG, entidades sin ánimo de lucro),04,Art. 20. Uno. 8º Ley IVA
Servicios deportivos o culturales exentos,04,Art. 20. Uno. 13º y 14º Ley IVA
Operaciones exentas relacionadas con seguros y finanzas,04,Art. 20. Uno. 16º y 18º Ley IVA
Operaciones exentas por razones de interés general (ej. asociaciones, fundaciones),04,Art. 20. Uno. 12º Ley IVA
  #106  
Antiguo 06-02-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 162
Poder: 14
ramherfer Va por buen camino
No se mucho de fiscalidad, pero entiendo que por lo que estais comentando el tipo de excención debería proporcionarlo la ficha del cliente ¿No?
Por lo tanto al servidor habría que informarle de estos datos, creo yo, en mi humilde opinión. Creo que automatizarlo totalmente es una locura
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
  #107  
Antiguo 06-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por DarkDudae Ver Mensaje
Entiendo que para ventas desde la península a Canarias, estaríamos hablando de una operación general 01 con tipo de excención E03.

Para las operaciones que mencionas, creo que todas serían el tipo E04:

Tipo de Exención,ClaveRegimen en VeriFactu,Base Legal
Servicios médicos y sanitarios,04,Art. 20. Uno. 2º Ley IVA
Servicios educativos y formación,04,Art. 20. Uno. 9º y 10º Ley IVA
Servicios sociales (ONG, entidades sin ánimo de lucro),04,Art. 20. Uno. 8º Ley IVA
Servicios deportivos o culturales exentos,04,Art. 20. Uno. 13º y 14º Ley IVA
Operaciones exentas relacionadas con seguros y finanzas,04,Art. 20. Uno. 16º y 18º Ley IVA
Operaciones exentas por razones de interés general (ej. asociaciones, fundaciones),04,Art. 20. Uno. 12º Ley IVA
¿podemos estar seguro?

¿ entonces bajo el regimen general 01, la E4 ? esta tarde lo probare.

Automatizacion:

podemos automatizar, UE, fuera de UE, y canarias. Eso ya esta automatizado , (hay que modificar los tipos de exenciones que hay en el codigo, pero ya esta)

podemos automatizar facilmente, el E4, colocandole el regimen general 01. (si funciona).


Mas alla de esto, ¿ya no se puede automatizar?:

¿Quizas habria que crear un array particular para exenciones y cubrir el resto de casos?

Última edición por seccion_31 fecha: 06-02-2025 a las 11:35:49.
  #108  
Antiguo 07-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Nueva sugerencia para el componente:

Obtener fechas de caducidad de los certificados.

Para ello, bastaría con hacer una pequeña modificación en la función loadCertificados y en el tipo TCertificados.

Código Delphi [-]
function loadCertificados(aList, aFechas:TStringList):integer;
var
  hStore: HCERTSTORE;
  PrevContext, CurContext: PCERT_CONTEXT;
  cbSize: DWORD;
  SysTime: TSystemTime;
  sNombre: String;
begin
  aList.Clear;
  aFechas.Clear;
  Result := 0;
  hStore := CertOpenSystemStore(0, PChar('MY'));
  if hStore <> nil then begin
     PrevContext := nil;
     CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
     while CurContext <> nil do begin
       sNombre := '';
       cbSize := CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, nil, 0);
       if cbSize > 0 then
       begin
          SetLength(sNombre, cbSize-1);
          CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, PChar(sNombre), cbSize);
          aList.Add(sNombre);
          if FileTimeToSystemTime(CurContext^.pCertInfo^.NotAfter, SysTime) then
          begin
            AFechas.Add(datetimetostr(SystemTimeToDateTime(SysTime)));
          end;
       end;
       PrevContext := CurContext;
       CurContext  := CertEnumCertificatesInStore(hStore, PrevContext);
     end;
  end;
  result:=aList.count;
end;
  #109  
Antiguo 07-02-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 162
Poder: 14
ramherfer Va por buen camino
Buenas tardes.
¿Es posible que no me valide los nif's usando el pfx?

Con el nombre de certificado, si lo hace aunque no devuelve el nombre registrado en la AEAT, en resultado venía IDENTIFICADO o NO IDENTIFICADO
Un saludo,
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.

Última edición por ramherfer fecha: 07-02-2025 a las 18:19:09.
  #110  
Antiguo 10-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por ramherfer Ver Mensaje
Buenas tardes.
¿Es posible que no me valide los nif's usando el pfx?

Con el nombre de certificado, si lo hace aunque no devuelve el nombre registrado en la AEAT, en resultado venía IDENTIFICADO o NO IDENTIFICADO
Un saludo,
Ya esta incorporado

Tambien soportara exentas (por otros motivos a exportacion, ue, y canarias) , en un array distinto a la de ivas, e inversión del sujeto pasivo en facturas nacionales. (eso si, toda la factura bajo inv.suje.pasivo)

La demo ha cambiado algo, y la excel para importar tambien.

Ademas de otros cambios y pequeños errores.

Creo que la semana que viene la subire

Saludos
  #111  
Antiguo 10-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
buenos dias DarkDudae !

¿ x favor, Puedes modificar el codigo para que directamente cargue SOOLO los certificados validos, evitando los caducados ?

NO tengo ninguno caducado para provar, y evitar el segundo parametro, y mas cambios.

Copiaria y pegaria tu codigo y ya, lo incorporo a la nueva version.

Saludos !
  #112  
Antiguo 10-02-2025
Avatar de Matorral
Matorral Matorral is offline
Miembro
 
Registrado: oct 2006
Ubicación: Ferrol-Galicia
Posts: 92
Poder: 20
Matorral Va por buen camino
Buenos días ¡¡

Gracias a tod@s y sobretodo a Seccion31 por las aportaciones y por el enorme esfuerzo. De verdad que me dais la vida.


Cita:
Empezado por seccion_31 Ver Mensaje

sustituye esta funcion: uVerifactuFuncs y recompila el servidor B10

Código:
function consultar(sesion:integer; var resultado:TConsultaResultado):boolean;

.....

      // Cargar certificado del disco
      if ( pos('.PFX',uppercase(sesiones[sesion].inicio.nombreCertificado))<>0) or
         ( pos('.P12',uppercase(sesiones[sesion].inicio.nombreCertificado))<>0) then
          HTTPRIO1.HTTPWebNode.onBeforePost:=eventosWebNode.WebNodeBeforePost;

......

end;
Estoy utilizando Delphi 12 (no tengo Delphi 10 Berlin) para compilar el componente. Al reemplazar la función "consultar" me aparece un error en la línea

Código:
          HTTPRIO1.HTTPWebNode.onBeforePost:=eventosWebNode.WebNodeBeforePost;
En eventosWebNode.WebNodeBeforePost me dice "E2010: Incompatible types 'THTTPClient' and 'Pointer'"

y no la puedo recompilar (no se como corregir el error).

Podría alguien enviar el fichero VerifactuD7.bpl y dcp recompilados con la nueva funcion (o si algún moderador pudiera subirla al área de descarga )?

P.D.
Las aplicaciones las tengo en Delphi 7, y el componente VerifactuD7 lo había compilado en Delphi12 perfectamente, el fallo me da ahora al cambiar la función "consultar".

Muchas gracias¡¡
__________________
Inieeeesssstademiviiiiidaaaaa.
  #113  
Antiguo 10-02-2025
Avatar de Matorral
Matorral Matorral is offline
Miembro
 
Registrado: oct 2006
Ubicación: Ferrol-Galicia
Posts: 92
Poder: 20
Matorral Va por buen camino
Perdonad¡¡¡

Pero creo que me he liado un "POCO".

La corrección de la función consultar es del servidor de envíos (ese no lo había compilado antes en Delphi 12, lo utilice tal cual lo había descargado).

O sea, que lo que necesitaría para poder seguir es el servidor (msgVerifactu.exe) con la corrección hecha.

Gracias y mil disculpas de nuevo.
__________________
Inieeeesssstademiviiiiidaaaaa.
  #114  
Antiguo 10-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Conseguido enviar desde DLL

Buenos días compañeros/as:

He conseguido enviar facturas desde una dll creada en Delphi 10.2 con llamadas desde Delphi 7.
Para hacer las pruebas, como primera aproximación simplemente he embebido el formulario de la demo 2 dentro de la dll para ver que pudiese enviar facturas, y efectivamente, puede, así como mantener el resto de funcionalidades.

Luego a modo extra he implementado la carga de certificados también usando la dll desde Delphi 7. Con esto no sé si verdaderamente sería necesaria una "aplicación servidora" ejecutándose en segundo plano.

Os paso el código:
Código Delphi 7 DLL
  #115  
Antiguo 10-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por DarkDudae Ver Mensaje
Buenos días compañeros/as:

He conseguido enviar facturas desde una dll creada en Delphi 10.2 con llamadas desde Delphi 7.
Para hacer las pruebas, como primera aproximación simplemente he embebido el formulario de la demo 2 dentro de la dll para ver que pudiese enviar facturas, y efectivamente, puede, así como mantener el resto de funcionalidades.

Luego a modo extra he implementado la carga de certificados también usando la dll desde Delphi 7. Con esto no sé si verdaderamente sería necesaria una "aplicación servidora" ejecutándose en segundo plano.

Os paso el código:
Código Delphi 7 DLL
perfecto, porque asi quedara mas elegante y seguro.

A ver si puedo descargarlo.
  #116  
Antiguo 10-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por Matorral Ver Mensaje
Perdonad¡¡¡

Pero creo que me he liado un "POCO".

La corrección de la función consultar es del servidor de envíos (ese no lo había compilado antes en Delphi 12, lo utilice tal cual lo había descargado).

O sea, que lo que necesitaría para poder seguir es el servidor (msgVerifactu.exe) con la corrección hecha.

Gracias y mil disculpas de nuevo.
Ese error lo tuve al reves cuando hice la implementacion usando codigo encontrado (hay un codigo gemelo para tu version de Delphi, pero no lo puedo implementar) . La semana que viene saldra el update del componente, ya sea en version ejecutable o dll visto el posteo de darkdudae.

saludos !
  #117  
Antiguo 10-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
perfecto, porque asi quedara mas elegante y seguro.

A ver si puedo descargarlo.
Perdonad, no había puesto el enlace en público y ahora Google dice que tiene que revisarlo

Voy a borrar el exe por si ese fuese el motivo.
  #118  
Antiguo 10-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Aquí lo tenéis:

DEMO LLAMADAS DESDE DLL

El pass de descompresión es: "clubdelphi"

Dentro tenéis los dos proyectos:

"verifactu_multi.dproj" creada con Delphi 10.2 (dll)
"Llamada_dll.dpr", con el código de un ejecutable desarrollado en Delphi 7 que interactua con la dll anterior.

Última edición por DarkDudae fecha: 10-02-2025 a las 12:51:57.
  #119  
Antiguo 10-02-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 162
Poder: 14
ramherfer Va por buen camino
Hola buenas tardes.
A ver si alguien me puede dar un empujoncito con respecto a la anulación.
Tenemos el siguiente planteamiento:

Oper. NumFra Fecha Fra
ALTA F240001 21/01/2024
ALTA F240002 22/01/2024
BAJA F240001 21/01/2024
ALTA F240003 22/01/2024
ALTA F240004 22/01/2024
ALTA F240005 22/01/2024
ALTA F240006 22/01/2024

En la hoja excel lo tengo claro y lo veo y sin ningún problema. pero me lleva loco el tema de la anulación y ostras, no soy capaz de encaminarlo. Como orientais el asunto en la base de datos si la tabla tiene como índice principal NumFra y tenemos ya el registro de alta con el número F240001. Sería sencillo y básico botón derecho en el alta correspondiente y opción anual factura, automáticamente se duplica el registro con la operación de baja y su fecha, pero no llego ni a probarlo ya que automáticamente me daría registros duplicados en la tabla de cabecera de facturas.

Si alguno me diera una pista de como orientar el tema se lo agradecería. No pensaba utilizar el tema de anulación, pero creo que se va a dar el caso en más de una vez y me gustaría tenerlo previsto.

Disculpar mi torpeza.
Un saludo,
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
  #120  
Antiguo 10-02-2025
Avatar de DarkDudae
DarkDudae DarkDudae is offline
Miembro
 
Registrado: abr 2006
Posts: 177
Poder: 21
DarkDudae Va por buen camino
Cita:
Empezado por ramherfer Ver Mensaje
Hola buenas tardes.
A ver si alguien me puede dar un empujoncito con respecto a la anulación.
Tenemos el siguiente…
Un saludo,
Yo tengo pensadas dos aproximaciones:

1) Incluir un campo de ANULADA booleano a la tabla cabecera de facturas e incluirlo en la clave primaria. Adicionalmente se debería poner un campo de fecha/hora anulación.

O…

2) crear una tabla de STATUS de las facturas. En esta tabla podríamos almacenar Serie de factura, número de la misma, año fiscal, tipo de factura, si es alta, anulación, rectificación…, la huella, el csv, y demás datos que puedan interesar. Luego se relacionaria fácilmente esta tabla con la de cabeceras de las facturas.
__________________
El recuerdo es la prisión en la que el alma sueña pasado, cuando no vive el presente, ni quiere un futuro.
Tema Cerrado



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
Verifactu o por requerimiento (no-verifactu) ¿decisión del usuario? Maska10 Temas legales 2 07-12-2024 12:34:47
Demo de una applicación para una estación de enfermera con RAD Studio AgustinOrtu La Taberna 1 21-07-2015 17:41:35
Demo Delphi, EMail Caral Internet 1 19-12-2006 00:37:56
Demo de delphi 2005 mazinger Varios 2 18-12-2004 09:23:09
El Rave que viene con Delphi es una Demo? apicito Impresión 0 04-06-2003 11:33:36


La franja horaria es GMT +2. Ahora son las 12:46:05.


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