Ver Mensaje Individual
  #145  
Antiguo 18-02-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Reputación: 10
seccion_31 Va por buen camino
Cita:
Empezado por ramherfer Ver Mensaje
Hola buenas tardes.
Al procesar la respuesta resultado.facturas[j].tipoOperacion me está devolviendo "SistemaFac" cuando la factura contiene algún error y es rechazada.
Si la factura es correcta y es admitida resultado.facturas[j].tipoOperacion devuelve "Alta".
Solo proceso una factura y utilizo este dato para identificar en el registroFacturación la operación de la factura a la que se refiere y actualizar su estado, movimiento.

En operaciones Baja declaradas en el registroFacturación obtengo un Access Violation en el módulo msgVerifactu.exe. He probado como fecha de factura la fecha actual y la propia fecha de la factura que se da de baja, pero no se, obtengo el mismo resultado. Voy a darle un vistazo a ver si soy capaz de encontrar el problema.

Al final creo que entiendo el sistema y tengo todo el tema de comunicaciones en una tabla independiente llamada RegistroSIF con las operaciones de cada una de las facturas (Alta, baja, modificacion, etc) que se relaciona con la tabla de cabeceras de facturas. Si genero una baja entra en RegistroSIF como baja y la cabecera de factura tambien la pone como baja. De esta forma puede tener una factura distintos movimientos o estados FR250056 ALTA y FR250056 BAJA. Gracias a los que me aclarasteis mi monumental lio mental.

Un saludo,
Esta pendiente el cambio a la version DLL, asi a bote pronto recuerdo que la baja daba error.

En cuanto lo publiquen en el FTP, que ya tienen el enlace, lo readaptas y vuelves a probar

Estos son los cambios de la nueva version , donde tambien ha colaborado el usuario darkdudae, a quien agradezco su trabajo.
(Algunos de ellos estan sin comprobar).

Cita:
> Nota general:
Ahora el servidor B10 ya no se suministra como aplicacion. Tenemos una DLL llamada veriFactu.dll


cuando se cambia un type (record). etc... en uTiposVeriFactu se deben recompilar verifactu.dll y aplicacion D7.
La compilacion de la DLL se guarda en la carpeta DEMO_D7 para facilitar las pruebas


Si ha utilizado la version anterior del componente, eliminarlo
Antes de registrar el componente copiar la DLL a syswow64
----------------------------------------------------------------------------------------------------------------------------


--------------------------------
---------------- version 1
--------------------------------
Se añade la funcion getCertificadosFecha para obtener no solo el nombre de los certificados si no su fecha de validez. En las funciones de certificados solo se devuelven certificados validos.

Aumentada longitud DescripcionError en el resultado de cada factura (array)

Se añade propiedad ultimo_error_verifactu con el texo de error al añadir una factura, de momento solo recoge algunos errores. Puede leerse si la funcion VeriFactuD7.addFactura retorna -1. (ver demo de ejemplo).


Se añaden en el componente las propiedades nsesion y nfacturas (numero de facturas altas y baja preparadas para enviar) como propiedades de solo lectura

Se eliminan del record TRegistroFactura nsesion y nfactura

En la DEMO se elimina del formulario el componente TVeriFactu pasando a ser creado al inicio del formulario, se incluye un ejemplo del nuevo evento OnRegFac, de esta forma ya no es necesario instalar el componente en Delphi y la DLL puede ser mantenida en el directorio de la Demo.

---> Se cambian las exenciones de operaciones EU a E5 y Export a E2, se automatiza el tipoNIF si NO esta indicado. Para EU 02 y para Export 06 (otro doc.probatorio).

Se incluye un array en la unidad uTiposVeriFactu llamado _AyudaExentas[1..6] que contiene un resumen textual de las exenciones a modo informativo.

Se añaden las funciones Paises PaisesEU PaisesExport Para obtener una lista de paises validos en un TStringList. ( ES: España se considera fuera de la lista en PaisesEU retornada )

Se añade la funcion validPais para validar el codigo de pais (ya con max. 3 digitos)

Automatizacion de facturas a España (canarias):
En codigoPais podemos enviar ahora el codigo postal de la provincia del cliente. Si se detecta valor numerico se procesara como españa, y ADEMAS si el codigo postal es 35 ó 38 se activara automaticamente el flag de canarias.

Se añade el evento OnRegFac que sera lanzado cuando se procese cada registro de facturacion, es decir, podemos dejar en blanco el pathXML_RegistroFacturacion y todavia guardar el archivo que nos ira enviando como un Stream al evento definido por el usuario: (o utilizar ambos, archivo y evento)

TRegistroFacEvent = procedure(Sender: TObject; numserieFactura:string; xml:TMemoryStream) of object;

Añadida busqueda por SIF en la funcion consulta(..... ) filtroSIF=true filtrara ademas por los datos del sistema informatico. Ver ejemplo en la Demo en consulta de periodo

Se añade refexterna en el dato de la factura, para indicar informacion libre, 60 digitos. tanto en alta/anulacion como en la consulta

Se añade el path para indicar donde guardar los registros de facturacion y una variable booleana para indicar si se guardan todos los registros o solo los aceptados, ATENCION: con una limitacion, podrian guardarse registros innecesarios de facturas con operaciones aceptadas y no aceptadas en la misma sesion de envio (si se da el caso).

pathXML_RegistroFacturacion (ruta a la carpeta, sin terminar en \)
Registro_soloAceptadas (true o false) (false= guardara todas los registros de facturacion)

Hay dos cambios de nombres en el archivo de XML:
Se cambian las variables de los xml de envio y de respuesta a: (para hacerlos mas consistentes)

filenameXML_Envio
filenameXML_Respuesta

Se corrije la consulta por fechas

La demo ha sido muy mejorada, con mas funciones y capacidad

Se añade el campo estadoderegistro en el array de la consulta para cotejar facturas (en cada factura) con los valores: Aceptada, Aceptada con errores, Anulada

Se corrigen las fechas devueltas por consulta a formato / /

Corregido fallo al dar de baja una factura, de momento solo se admiten bajas de facturas registradas en verifactu

-----------------------
Inversion del sujeto pasivo: Hay un nuevo flag que afecta todos los ivas llamado inversionSUjetoPasivo en el record de factura para facturas a ESPAÑA (no canarias):

"
- El proveedor o prestador del servicio registrará los datos de la factura en el Libro
registro de Facturas Expedidas consignando en el campo de tipo de operación la clave
“S2: Sujeta – No Exenta – Inv. Suj. Pasivo”. En los campos de tipo impositivo y cuota"
repercutida consignará “0”. -

"

> Toda la factura debe estar bajo ese regimen y utilizar el primer IVA para indicar unicamente la base imponible.
-----------------------

Corregido error al cotejar (consultar) una factura sin cliente, ni nif.

Eliminada variable situacion, por no usar

Si se suministra una fecha de factura en formato - - se convierte a / / que es el formato esperado

Se añade la extension .P12 para reconocer un certificado en disco al nombre del certificado: PFX y P12

Se añade el indicador primerRegistro para comprobar antes de enviar si no hay registro anterior en algun punto de las facturas a enviar.

Ahora hay dos indicadores: incidencia (lectura/escritura) y primerRegistro(lectura).

En la consulta a la AEAT, en desglose de iva ahora se carga la base imponible e incluye informacion sobre exencion,
revisar: TRegistroFacturaIVASConsulta

Cliente codpais pasa de 2 a 3 digitos

Se ha mejorado la limpieza de algunos records funciones clear_ internas del servidor B10 (ahora DLL)

Al validar el NIF ya se puede obtener el nombre validado (devuelto por la consulta)

EXENCIONES AUTOMATICAS : (en array iva)
------------------------
Las facturas con pais destino a la EU automaticamente se consideran tipoExenta E6 clave regimen 01 (ahora E5)

Las facturas con pais destino al resto del mundo (en clave regimen 02) y canarias (en clave regimen 01) automaticamente se consideran tipoExentas E3 (ahora E2)

Las facturas de inversion sujeto pasivo (para españa)


OTRAS EXENCIONES: (en array exenta)
-----------------
En el record de facturas hay un nuevo array para crear OTRAS exenciones:
Este array se procesa tal cual sin otro proceso generando el desglose equivalente.

Record Factura:

exenta: array[0..maxivas] of TRegistroFacturaExentas;


Array de:

TRegistroFacturaExentas=record
tipoExenta :string[2];
calificacionOperacion:string[2]; // ¿opcional?
claveRegimen :string[2];

baseImp :currency;
end;

Para indicar si la factura lleva alguna base imponible exenta, se hara de forma similar a la del iva, pero cambiando el array. (ver ejemplo en el importador de excel)

Asi mismo un record similar se encuentra en la consulta a la AEAT, para retornar informacion sobre las facturas exentas: (exenciones creadas automaticas, o manuales con el array).

Nota de uso: Cada sesion deberia limitarse a una serie de facturacion y por supuesto 1 solo objeto TVeriFactu

Saludos !

Última edición por seccion_31 fecha: 18-02-2025 a las 07:00:32.