Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Envío de registros y sus respuestas (https://www.clubdelphi.com/foros/forumdisplay.php?f=66)
-   -   Demo con código Verifactu.dll para (delphi 7) (https://www.clubdelphi.com/foros/showthread.php?t=97004)

CarlosMz 20-02-2025 12:52:34

Una pregunta... ¿Se puede resetear los envíos realizados al servidor de pruebas?, o tengo que ir enviando nuevas facturas ?

Neftali [Germán.Estévez] 20-02-2025 15:39:36

Cita:

Empezado por CarlosMz (Mensaje 562143)
Una pregunta... ¿Se puede resetear los envíos realizados al servidor de pruebas?, o tengo que ir enviando nuevas facturas ?

Nosotros vamos generando series nuevas.
Nos dijeros que no tenían previsto resetear.

newtron 20-02-2025 17:09:19

Cita:

Empezado por CarlosMz (Mensaje 562143)
Una pregunta... ¿Se puede resetear los envíos realizados al servidor de pruebas?, o tengo que ir enviando nuevas facturas ?


Yo lo que hago es que si tengo un parámetro activo modifica el número de factura añadiendo una cadena "a voleo". Así aunque envíe siempre la factura 1 enviará la 1_99382834238 (por ejemplo)


Saludos.

CarlosMz 20-02-2025 17:19:00

Muchas gracias, desde luego grandes aportes

DarkDudae 20-02-2025 18:21:17

Cita:

Empezado por newtron (Mensaje 562146)
Yo lo que hago es que si tengo un parámetro activo modifica el número de factura añadiendo una cadena "a voleo". Así aunque envíe siempre la factura 1 enviará la 1_99382834238 (por ejemplo)

A estas horas ya debo estar muy espeso porque no me he enterado de nada. Con eso qué se conseguiría?

CarlosMz 20-02-2025 18:33:15

Cita:

Empezado por DarkDudae (Mensaje 562148)
A estas horas ya debo estar muy espeso porque no me he enterado de nada. Con eso qué se conseguiría?

Para hacer como si fuera un reset y empezar por registro / factura primera

newtron 20-02-2025 19:33:11

Cita:

Empezado por DarkDudae (Mensaje 562148)
A estas horas ya debo estar muy espeso porque no me he enterado de nada. Con eso qué se conseguiría?


Con eso lo que hago es que aunque yo envíe siempre el mismo número de factura la función que hace el envío lo convierte al número de factura+un número aleatorio con lo cual el número de factura que se envía siempre es distinto.


Saludos.

seccion_31 21-02-2025 09:12:40

Hola CarlosMz !

Cita:

Empezado por CarlosMz (Mensaje 562142)
Buenas, no sé si era esto lo que me pediste:

Respuesta envío factura normal con 21%
Respuesta envío Canarias
Código:


<ClaveRegimen>01</ClaveRegimen>
<OperacionExenta>E4</OperacionExenta>
<BaseImponibleOimporteNoSujeto>19.95</BaseImponibleOimporteNoSujeto>
</DetalleDesglose>
</Desglose>
<CuotaTotal>0.00</CuotaTotal>
<ImporteTotal>19.95</ImporteTotal>


¿porque lo colocas como E4 ?

que yo sepa segun el SII, (no se si verifactu tambien) canarias debe ir con clave exportacion E2 y tipo de documento 02 iva nif nacional.

Eso es lo que el componente deberia generar, y no se si es correcto.

¿como lo has generado?

Saludos !

CarlosMz 21-02-2025 11:01:31

Buenos días,

Creo que lo forcé porque me daba un error si los dejaba vacíos en checkFactura.
También he readaptando el código para quitar la DLL y ponerlo como un simple .pas al proyecto,

Pregunta, ¿Por qué usáis sesiones? no tengo muy claro el objetivo

seccion_31 21-02-2025 13:27:59

Cita:

Empezado por CarlosMz (Mensaje 562166)
Buenos días,

Creo que lo forcé porque me daba un error si los dejaba vacíos en checkFactura.
También he readaptando el código para quitar la DLL y ponerlo como un simple .pas al proyecto,

Pregunta, ¿Por qué usáis sesiones? no tengo muy claro el objetivo

Las sesiones se usaban cuando se recibian datos por aplicacion servidora, pues varias aplicaciones podrian enviar sus datos, que era compartido. 10 sesiones.

En la DLL yo diria que no tiene sentido. Pero podrias abrir varios envios a la vez.


Se supone que no deberia dar un error en checkfactura y creo que podrias seguir usando la DLL tal cual esta publicada, con el componente compilado para tu version de delphi.

Sigo diciendo que falta una comprobacion clara de los tipos de XML que se generan. Yo ahora mismo no tengo tiempo de comprobarlo.

Con la ultima version una factura a canarias, podria ser pasada como codpais=35 y enviar el resto de datos tal cual. sin mas.

mqm 21-02-2025 15:32:52

Cita:

Empezado por CarlosMz (Mensaje 562166)
Buenos días,

Creo que lo forcé porque me daba un error si los dejaba vacíos en checkFactura.
También he readaptando el código para quitar la DLL y ponerlo como un simple .pas al proyecto,

Pregunta, ¿Por qué usáis sesiones? no tengo muy claro el objetivo

Para qué versión de Delphi la has adaptado?. Podrías pasar el código. Estoy intentado adaptarlo todo en un programa independiente que se encarga de todo el proceso.

seccion_31 22-02-2025 08:23:10

si a alguno le da error al añadir facturas, quejandose de "no se que exentas" en la validacion, es que teneis que inicializar el nexentas a cero en el record de factura antes de añadirla, lo mismo que se inicializa el de nivas

saludos !

seccion_31 24-02-2025 09:43:55

tambien es conveniente iniciar a "" referencia externa en la informacion de factura a enviar, (si no la utiizais), podria dar error de caracter no valido SOAP.

ramherfer 24-02-2025 18:47:38

En una factura a canarias identificada por los dos dígitos del codigo postal (38), no me la acepta con error 1199. No se si es porque antes he puesto el flag canarias = false
Cita:

<tikR:CodigoErrorRegistro>1199</tikR:CodigoErrorRegistro>
<tikR:DescripcionErrorRegistro>Si Impuesto es '01' (IVA), '03' (IGIC) o no se cumplimenta y ClaveRegimen es 01 no pueden marcarse las OperacionExenta E2, E3.</tikR:DescripcionErrorRegistro>

ramherfer 24-02-2025 21:43:13

Cita:

Empezado por ramherfer (Mensaje 562209)
En una factura a canarias identificada por los dos dígitos del codigo postal (38), no me la acepta con error 1199. No se si es porque antes he puesto el flag canarias = false

Me respondo a mi mismo:

cambiando en uVerifactuFuncs la linea 1559

Código Delphi [-]
DetalleDesglose.OperacionExenta  :=OperacionExentaType.E2;
por

Código Delphi [-]
DetalleDesglose.OperacionExenta  :=OperacionExentaType.E5;

Ha tragado la factua como correcta. Para mi tiene la siguiente lógica E2 es exportaciones fuera de la UE (Exenta por el artículo 21) y Canarias está dentro de la UE por lo tanto debe de ser E5 (Exenta por el artículo 25).

(Están exentas de acuerdo al citado art. 25, LIVA : Las entregas de bienes definidas de acuerdo al art. 8, LIVA , que sean expedidos o transportados por el vendedor, el comprador o un tercero que actúe en nombre o por cuenta de uno de los anteriores con destino al territorio de otro Estado miembro de la UE.)

Creo que es lo correcto, si me equivoco por favor corregirme.
Un saludo,

seccion_31 25-02-2025 07:13:25

hola

Efectivamente el xml canarias no funciona, da ese error.

A mi me ha pasado asi:

Tipo de factura: F1
Clave régimen: 02
Operación exenta: E2

Pero la AEAT me dice esto, a ver quien se aclara, porque el caso que busco es: un empresario de la peninsula, vende productos (no servicios), entrega de bienes a canarias, y no lo veo en este parrafo:

Cita:

Le facilitamos varios ejemplos por si le sirviesen de ayuda. Si necesitase más información deberá contactar con los canales de ayuda para cuestiones no informáticas.

1. Desde el punto de vista de una empresa con tributación IVA, que realiza ventas por ejemplo desde un establecimiento permanente situado en Canarias (La factura emitida estará sujeta a IGIC)

En este caso el apartado desglose del registro de alta sería:

Impuesto: 03
Clave de régimen : 01 ( u otra de la lista L8B)
Calificación de la operación: S1
Tipo: el tipo IGIC que corresponda
BI: sin ninguna especialidad
Cuota : la que corresponda aplicando el tipo IGIC a la BI


2. En los casos de “doble tributación”: Por ejemplo, una operación realizada por empresa estatal, relativa a un servicio prestado y localizado en Canarias (por lo tanto sujeta a IGIC). Actualmente en el SII, esa factura se debe informar en SII Estatal como 08 y al mismo tiempo también en el SII IGIC (si está obligado) como operación 01 y con su desglose de IGIC.

En estos casos solo se generará un registro de alta .
En este caso el apartado desglose del registro de alta sería:
Impuesto: 01
Clave de régimen : 08
Calificación de la operación: N2
Tipo: en blanco
BI: sin ninguna especialidad
Cuota :en blanco


3. Un empresario A con domicilio fiscal en Madrid presta servicios de abogacía a un profesional B establecido en Canarias. Se trata de una prestación de servicios sujeta al IGIC.
Con relación a la facturación de ese empresario A:

Entendemos que se trata de servicios de abogacía que van a ser usados por el profesional o empresario canario en Canarias.

¿Qué valor asignar al dato Impuesto? (L1), ¿01 o 03?

Para empresarios residentes en territorio peninsular (excepto País Vasco y Navarra) y Baleares la obligación tributaria que les corresponde es el IVA por lo que todas su facturación debe venir referida al IVA. De este modo, la operación puede estar no sujeta o exenta (caso de exportación o entregas intracomunitarias o a Canarias, Ceuta o Melilla) y asea de bienes o de servicios, pero lo estará respecto del IVA. Por ello, el valor a consignar en el caso planteado es L1: 01=IVA con independencia de que no deba repercutirse el impuesto.

¿Qué valor asignar al dato ClaveRegimen? (L8A/L8B)

El valor (de la tabla L8A) a consignar en ClaveRegimen es 08.

¿Qué valor asignar al dato CalificacionOperacion? (L9)

El valor a consignar CalificacionOperacion (L9) sería la clave N2 = Operación No Sujeta por Reglas de localización.


ramherfer 25-02-2025 08:50:36

Cita:

Empezado por seccion_31 (Mensaje 562217)
hola

Efectivamente el xml canarias no funciona, da ese error.

A mi me ha pasado asi:

Tipo de factura: F1
Clave régimen: 02
Operación exenta: E2

Pero la AEAT me dice esto, a ver quien se aclara, porque el caso que busco es: un empresario de la peninsula, vende productos (no servicios), entrega de bienes a canarias, y no lo veo en este parrafo:

Si puedes pasa la pregunta formulada y de esta forma a ver si puedo interpretarla. De esta forma quizás sea más sencillo

seccion_31 25-02-2025 09:51:20

entrega de bienes a canarias, desde una empresa con domicilio fiscal en madrid

esa fue la pregunta.

han respondido lo de arriba, creo que es responder todo menos lo que pregunte. (dentro de como digo mi ignorancia)

he vuelto a repreguntar.

saludos

seccion_31 25-02-2025 13:05:32

han escalado mi pregunta a gestion.

a ver que responden.

sglorka 25-02-2025 17:30:28

Podéis encontrar información de operaciones desde península a Canarias, Ceuta y Melilla dentro de las Faqs del SII
https://sede.agenciatributaria.gob.e...00dc381e0aRCRD

Si entrar en mucho detalle en este proyecto que está desarrollando Seccion_31, si me aceptáis un consejo, podría decir que este módulo debería cumplir un objetivo muy específico, y sería el de gestionar la cola de envío de facturas emitidas por un ERP a la Aeat, recoger las respuestas y entregarlas al ERP.
Yo creo que trasladar la gestión de, con qué claves, debe enviarse un RF correspondiente a una factura emitida de Península a Canarias, debería ser objetivo del ERP que es quien lleva la lógica de negocio. Trasladar esto al componente de comunicación no me parece que cumpla con los estándares de estructuración y escalabilidad.
En el caso de Canarias, depende de si la entrega de bienes es trasladada o no desde península, de si es el vendedor es el que paga los portes, de si existe un establecimiento o sucursal de esa empresa en Canarias, todas estas circunstancias derivan en claves distintas para el registro como podéis ver en el link que adjunto.
Pero bueno, es sólo una opinión

seccion_31 25-02-2025 20:04:56

Cita:

Empezado por sglorka (Mensaje 562237)
Podéis encontrar información de operaciones desde península a Canarias, Ceuta y Melilla dentro de las Faqs del SII
https://sede.agenciatributaria.gob.e...00dc381e0aRCRD

Si entrar en mucho detalle en este proyecto que está desarrollando Seccion_31, si me aceptáis un consejo, podría decir que este módulo debería cumplir un objetivo muy específico, y sería el de gestionar la cola de envío de facturas emitidas por un ERP a la Aeat, recoger las respuestas y entregarlas al ERP.
Yo creo que trasladar la gestión de, con qué claves, debe enviarse un RF correspondiente a una factura emitida de Península a Canarias, debería ser objetivo del ERP que es quien lleva la lógica de negocio. Trasladar esto al componente de comunicación no me parece que cumpla con los estándares de estructuración y escalabilidad.
En el caso de Canarias, depende de si la entrega de bienes es trasladada o no desde península, de si es el vendedor es el que paga los portes, de si existe un establecimiento o sucursal de esa empresa en Canarias, todas estas circunstancias derivan en claves distintas para el registro como podéis ver en el link que adjunto.
Pero bueno, es sólo una opinión


Puede que tengas razon. Mi opinion, hoy es esta:

Para crear exenciones esta el array de exenciones que creo podria cubrir los casos manualmente desde el ERP sin mas tratamiento.

Ahora bien, quisiera incluir el caso mas comun de envio a canarias, que por cierto NO se encuentra descrito en ese documento del SII, que ya lei.

Si no hay una respuesta, anulare la opcion y ya. ¿que le vamos a hacer?

Saludos !

sglorka 25-02-2025 20:34:28

La respuesta sí está en el documento
"Ejemplo 3. Un empresario con domicilio fiscal en Madrid que aplica el SII transporta una partida de mercancías a Canarias para efectuar una venta en dicho territorio:
Si el vendedor satisface el IGIC de la importación, registrará este traslado de la mercancía desde Península a Canarias como una importación (tipo de factura: F5) no sujeta con clave 08. La posterior venta localizada en Canarias se informará con la clave 08.
Si el comprador satisface el IGIC de la importación, el vendedor registrará la operación como una exportación con la clave 02."


Lo más normal es que sea el comprador el que satisfaga el Igic de importación, estás en el segundo caso, por lo tanto y en el 99% de los casos, una empresa en península que no tiene sucursal en Canarias, informa su venta con la clave de régimen tributario 02 Exportación y como desglose exenta tipo E2. Exenta por el artículo 21
Si no es una entrega de bienes sino una prestación de servicios entonces la clave de régimen es 08 y el desglose es N2 No sujeta por reglas de localización

seccion_31 26-02-2025 07:00:59

Cita:

Empezado por sglorka (Mensaje 562242)
La respuesta sí está en el documento
"Ejemplo 3. Un empresario con domicilio fiscal en Madrid que aplica el SII transporta una partida de mercancías a Canarias para efectuar una venta en dicho territorio:
Si el vendedor satisface el IGIC de la importación, registrará este traslado de la mercancía desde Península a Canarias como una importación (tipo de factura: F5) no sujeta con clave 08. La posterior venta localizada en Canarias se informará con la clave 08.
Si el comprador satisface el IGIC de la importación, el vendedor registrará la operación como una exportación con la clave 02."


Lo más normal es que sea el comprador el que satisfaga el Igic de importación, estás en el segundo caso, por lo tanto y en el 99% de los casos, una empresa en península que no tiene sucursal en Canarias, informa su venta con la clave de régimen tributario 02 Exportación y como desglose exenta tipo E2. Exenta por el artículo 21
Si no es una entrega de bienes sino una prestación de servicios entonces la clave de régimen es 08 y el desglose es N2 No sujeta por reglas de localización

Muchas Gracias por la aclaracion

Canarias:

02 Exportación y como desglose exenta tipo E2

Cita:

Que es justo como lo había dejado: (ver mensaje anterior) y es como me aparecía aceptado por la AEAT

Tipo de factura: F1
Clave régimen: 02
Operación exenta: E2
Ya esta aclarado entonces,

Me temo entonces que ramherfer debera dejarlo como E2 y no como E5.

Saludos !


Con este ultimo ajuste, las automatizaciones previstas, para iva normal, eu, exportacion y canarias (añadire ceuta y melilla) quedan finalizadas.

ramherfer 26-02-2025 20:59:29

vale, me estoy dando cuenta que me define el registro así
Cita:

<Desglose>
<DetalleDesglose>
<ClaveRegimen>01</ClaveRegimen>
<OperacionExenta>E2</OperacionExenta>
<BaseImponibleOimporteNoSujeto>31.80</BaseImponibleOimporteNoSujeto>
</DetalleDesglose>
</Desglose>
y este es el error que devuelve:

Cita:

<tikR:Operacion>
<tik:TipoOperacion>Alta</tik:TipoOperacion>
</tikR:Operacion>
<tikR:EstadoRegistro>Incorrecto</tikR:EstadoRegistro>
<tikR:CodigoErrorRegistro>1199</tikR:CodigoErrorRegistro>
<tikR:DescripcionErrorRegistro>Si Impuesto es '01' (IVA), '03' (IGIC) o no se cumplimenta y ClaveRegimen es 01 no pueden marcarse las OperacionExenta E2, E3.</tikR:DescripcionErrorRegistro>
Pero no se porque está poniendo ClaveRegimen 01.

No habría que añadir esta línea en uVerifactuFuncs en el caso especifico de canarias:

Código:

DetalleDesglose.ClaveRegimen := IdOperacionesTrascendenciaTributariaType._02;
dado que pone ClaveRegimen 01

seccion_31 27-02-2025 07:33:04

Cita:

Empezado por ramherfer (Mensaje 562282)
vale, me estoy dando cuenta que me define el registro así


y este es el error que devuelve:



Pero no se porque está poniendo ClaveRegimen 01.

No habría que añadir esta línea en uVerifactuFuncs en el caso especifico de canarias:

Código:

DetalleDesglose.ClaveRegimen := IdOperacionesTrascendenciaTributariaType._02;
dado que pone ClaveRegimen 01

efectivamente,

en la futura version 1.3 ya aparece la correccion:


Código:

              else  // caso especifico Canarias ceuta y melilla entrega de bienes
              begin
                  DetalleDesglose.ClaveRegimen    := IdOperacionesTrascendenciaTributariaType._02;
                  DetalleDesglose.OperacionExenta  := OperacionExentaType.E2;
              end;

uVerifactuFuncs

linea 1600 aprox. donde se vuelve a reajustar el regimen para canarias en el "else".

Saludos

recompila la DLL y ya.

CarlosMz 27-02-2025 14:42:07

Consulta

en el método de la demo procedure TForm1.procesarEnvio(resultado:TResultadoEnvio);

¿No debería también guardar la huella y lo disponible en registros de facturación para incorrectos ?

Algo así:

Código Delphi [-]
procedure TForm1.procesarEnvio(resultado:TResultadoEnvio);
var
  desError,error,estado,factura, emisor:string;

  j:integer;

  _ok,_oke,_err:integer;

begin
      memoXML.Lines.LoadFromFile(xmlEnvio);
      memoXML.Text:=FormatXMLData(memoXML.Text);

      memoRes.lines.clear;
      memoRes.lines.Add('Se ha realizado el envío');
      memoRes.Lines.Add('');
      memoRes.Lines.Add('Estado Del Envio:'+resultado.EstadoEnvio );
      memoRes.lines.Add('CSV: ' + resultado.CSV);
      memoRes.lines.Add('TimeStamp: ' + resultado.Fecha+' '+resultado.Hora);
      memoRes.Lines.Add('');


      _ok   :=0;    // nº facturas OK
      _oke  :=0;    // nº facturas OK ( pero aceptadas con errores )
      _err  :=0;    // nº facturas con errores  (no aceptadas)

      for j:=0 to resultado.nFacturas-1 do
      begin
            factura  := resultado.facturas[j].NumSerieFactura;
            emisor   := resultado.facturas[j].IDEmisorFactura;
            estado   := resultado.facturas[j].estado;
            error    := inttostr(resultado.facturas[j].errorcodigo);
            desError := resultado.facturas[j].descripcionError;

            memoRes.Lines.Add( factura + ' ' + estado + ' '+error+' '+desError );     // ver en pantalla

            if resultado.facturas[j].OK then   // Es correcto ó aceptado con errores
            begin
                // colocar el csv y huella en la factura
                if facturasEnviadas.locate('emisor;NumSerieFactura',vararrayof([emisor, factura ]),[]) then
                begin
                    FacturasEnviadas.edit;
                    FacturasEnviadas.fieldbyName('csv').text      :=resultado.CSV;
                    FacturasEnviadas.FieldByName('huella').text   :=resultado.facturas[j].huellaFactura;
                    FacturasEnviadas.fieldbyName('situacion').text:=estado;
                    FacturasEnviadas.post;
                end;
                if resultado.facturas[j].aceptadoConErrores then inc(_oke) else inc(_ok);
            end
            else
            begin
                FacturasEnviadas.edit;
                    FacturasEnviadas.fieldbyName('csv').text      :=resultado.CSV;
                    FacturasEnviadas.FieldByName('huella').text   :=resultado.facturas[j].huellaFactura;
                    FacturasEnviadas.fieldbyName('situacion').text:=estado;
                    FacturasEnviadas.post;
                inc(_err);                            // Es erronea
            end;
      end;

      memoRes.Lines.Add('');
      memoRes.Lines.Add('Facturas Aceptadas: '+inttostr(_ok) );
      memoRes.Lines.Add('Facturas Aceptadas Con Errores: '+inttostr(_oke) );
      memoRes.Lines.Add('Facturas Con Errores: '+inttostr(_err) );

      // tiempo de espera:
      if resultado.tiempoDeEspera<>'' then memoRes.Lines.Add('Se Ha Establecido Un Tiempo De Espera Proximo Envio De '+resultado.tiempoDeEspera);
end;

CarlosMz 27-02-2025 16:55:43

Creo que hay un error en la función asignaTipoNif, en la línea

"if factura.clientetipoNIF='ES' then"

quedaría así:

Código Delphi [-]
procedure asignaTipoNif(var factura:TRegistroFactura);
begin
      if factura.clientetipoNIF<>'' then exit;

      if factura.clienteCodPais='ES' then
          factura.clientetipoNIF:='02'
      else
          if CodpaisEuropea(factura.clienteCodPais) then
              factura.clientetipoNIF:='04'
          else
              factura.clientetipoNIF:='06';
end;

seccion_31 27-02-2025 17:58:50

gracias !!

corrección incorporada a la version 1.3

¿alguna sugerencia / necesidad para la 1.3?

Saludos !



Cita:

Empezado por CarlosMz (Mensaje 562334)
Creo que hay un error en la función asignaTipoNif, en la línea

"if factura.clientetipoNIF='ES' then"

quedaría así:

Código Delphi [-]
procedure asignaTipoNif(var factura:TRegistroFactura);
begin
      if factura.clientetipoNIF<>'' then exit;

      if factura.clienteCodPais='ES' then
          factura.clientetipoNIF:='02'
      else
          if CodpaisEuropea(factura.clienteCodPais) then
              factura.clientetipoNIF:='04'
          else
              factura.clientetipoNIF:='06';
end;


CarlosMz 27-02-2025 18:05:02

Como sugerencias:

- Ver el tema de las rechazadas que creo que no pone la huella al archivarlo como RF y luego hay problemas para reencadenar.
- Trabajar con las subsanaciones en función de los errores recibidos
- Controlar el flujo con los parámetros de la AEAT recibidos en cada envío

seccion_31 28-02-2025 07:19:41

Cita:

Empezado por CarlosMz (Mensaje 562338)
Como sugerencias:

- Ver el tema de las rechazadas que creo que no pone la huella al archivarlo como RF y luego hay problemas para reencadenar.
- Trabajar con las subsanaciones en función de los errores recibidos
- Controlar el flujo con los parámetros de la AEAT recibidos en cada envío

buenos dias

yo creo que si devuelve la huella, de echo es lo primero que hace en el array de resultados.
Las subsanaciones, no las entiendo, si alguien quiere y sabe colaborar en ello, soy todo oidos.
El flujo que tenemos son los 60 segundos que se envian de facto tras cada envio. No se mucho mas, tambien ¿hay otro parametro que pueden enviar como numero de registros?


Problemas:

Lo que si es cierto que hay un problema y es el siguiente: (aqui y en consultas)

Cuando se devuelve el resultado, hay que localizar la huella: para devolverla, tengo que mirar si la huella viene en el resultado mismo, (que no la veo), asi que ahora mismo trato de localizarla en el array de facturas para devolverla. ahora bien, si la misma factura esta dos veces en el array de envio (una por alta y otra por rectificacion por ejemplo), tendriamos un problema, porque va a devolver la misma huella.

Puedo mejorar la busqueda añadiendole la operacion, o algo mas...

Creo que es la mejor solucion.

Voy a ir revisando ese tema, y la informacion que me devuelve en el resultado.

Si alguien quiere colaborar en la subsanacion....

ramherfer 28-02-2025 10:26:32

Cita:

Empezado por seccion_31 (Mensaje 562239)
Puede que tengas razon. Mi opinion, hoy es esta:

Para crear exenciones esta el array de exenciones que creo podria cubrir los casos manualmente desde el ERP sin mas tratamiento.

Ahora bien, quisiera incluir el caso mas comun de envio a canarias, que por cierto NO se encuentra descrito en ese documento del SII, que ya lei.

Si no hay una respuesta, anulare la opcion y ya. ¿que le vamos a hacer?

Saludos !

¿Donde se encuentra el array de exenciones para darle un vistazo o te refieres a los datos tal y como aparecen en la hoja excel y que el erp puede enviar?

Yo no anularía nada y se va viendo. Por el momento pueden haber algunas lagunas, que se irán adaptando o dejando que el erp envíe la información.

ramherfer 28-02-2025 14:32:50

Cita:

Empezado por seccion_31 (Mensaje 562341)
buenos dias

Las subsanaciones, no las entiendo, si alguien quiere y sabe colaborar en ello, soy todo oidos.

Yo el tema de la subsanación lo entiendo así:
Las subsanaciones en alta inicial normalmente no se informan o se informa con N o en blanco al igual como RechazoPrevio
El encadenamiento sería el mismo que para cualquier alta o baja

Supuesto.1: He remitido a la AEAT y lo tengo en el registro de SIF una factura con un cliente erróneo. Corrijo el cliente en la factura y genero una nueva alta en el registro SIF el campo subsanación indicaría S y en el campo RechazoPrevio N

Supuesto.2: He remitido una factura a la AEAT y lo tengo en el registro SIF que ha generado algún tipo de error (Aceptada con errores). Corrijo el error y genero un nuevo registro de alta indicando en subsanación S y en el campo RechazoPrevio indicaré S.
En este supuesto no se admiten valores (Subsanación N y RechazoPrevio S) por lógica y según informa en las listas.

Supuesto.3: Emití una factura con algún tipo de error, pero esa factura no se encuentra registrada en la AEAT ( he pasado de NO Verifactu a Verifactu ). Corrijo la factura y genero un nuevo registro de alta indicando en subsanación S y en RechazoPrevio se indicaría X.
En este supuesto no se admiten valores (Sustitutiva N y RechazoPrevio X) por lógica y según informa en las listas


Si la factura ha sido rechazada totalmente entiendo que no existiendo en la AEAT sería corregir el error, y se remitiría como como alta inicial Subsanación N o en blanco y RechazoPrevio N o en blanco.
Aunque aquí tengo una duda si se debería de indicar Subsanacion S y RechazoPrevio X. Entiendo que no.

Ya digo yo lo veo así de sencillo. Desconozco si te refieres a esto.

seccion_31 01-03-2025 09:55:25

Cita:

Empezado por ramherfer (Mensaje 562343)
¿Donde se encuentra el array de exenciones para darle un vistazo o te refieres a los datos tal y como aparecen en la hoja excel y que el erp puede enviar?

Yo no anularía nada y se va viendo. Por el momento pueden haber algunas lagunas, que se irán adaptando o dejando que el erp envíe la información.


donde esta el del iva:


Código:

  TRegistroFacturaExentas=record
          tipoExenta          :string[2];
          calificacionOperacion:string[2];
          claveRegimen        :string[2];

          baseImp  :currency;
  end;

En TRegistroFactura=record

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

Que por cierto,tenemos que comprobar que su planteamiento sea correcto y que funcione ok.

seccion_31 01-03-2025 10:00:03

por ahorrarme tiempo,

¿cuando una factura NO pasa por algun error, se interrumpe el envio de las siguientes? yo en las pruebas si he visto que se interrumpia el envio del resto, pero ahora no estoy seguro.

lo digo por no perder el encadenamiento.

saludos !

CarlosMz 03-03-2025 09:35:21

Buenos días
¿No se devuelve el array de resultados con las aceptadas, aceptadas con errores y rechazadas ?

seccion_31 03-03-2025 10:44:03

Cita:

Empezado por CarlosMz (Mensaje 562361)
Buenos días
¿No se devuelve el array de resultados con las aceptadas, aceptadas con errores y rechazadas ?

Si, tal cual lo devuelve la AEAT sin procesar, solo trasladando los datos al record

slds

Quim Herrera 03-03-2025 12:42:44

No sé si ya lo habéis detectado, creo que hay un error en uVerifactuFuncs.pas en TEventosWebNode.WebNodeBeforePost al validar un NIF con P12 o PFX en la asignación del nombre del archivo y password:

Código Delphi [-]
 if sesion=-1 then // viene de un validador de nif
  begin
      pass:=nifValidator;
      cert:=nifValidatorPass;
  end
  else     // viene de un objeto verifactu

deberia ser:

Código Delphi [-]
  if sesion=-1 then // viene de un validador de nif
  begin
      cert:=nifValidator;
      pass:=nifValidatorPass;
  end
  else     // viene de un objeto verifactu
Saludos

DarkDudae 04-03-2025 12:07:42

Cita:

Empezado por seccion_31 (Mensaje 562355)
por ahorrarme tiempo,

¿cuando una factura NO pasa por algun error, se interrumpe el envio de las siguientes? yo en las pruebas si he visto que se interrumpia el envio del resto, pero ahora no estoy seguro.

lo digo por no perder el encadenamiento.

saludos !

No, no se interrumpe.

He probado a hacer un envío con 4 facturas. La segunda de ellas con el NIF incorrecto. Las otras 3 se envían sin problemas.

elguille 04-03-2025 13:33:59

Pfx
 
Hola, muchas gracias por iluminar el camino. Tengo un problema al cargar directamente un certificado PFX, no me funciona el procedimiento
Código Delphi [-]
cargaCertificado(Data: Pointer; cert, pass: string)
que está en uverifactufuncs.pas, la siguiente linea no carga el certificado correctamente
Código Delphi [-]
InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, pCert, SizeOf(CERT_CONTEXT))
lo he modificado para saber cual es el error
Código Delphi [-]
   if not InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, pCert, SizeOf(CERT_CONTEXT)) then
   BEGIN
      LastError := GetLastError();
      raise Exception.CreateFmt('Error en InternetSetOption. Código: %d', [LastError]);
   END;
recibo el código de error 6 . He importado el certificado al almacen de windows y desde ahi funciona perfectamente ¿alguien ha probado de cargar un certificado desde el fichero PFX directamente?
Gracias anticipadas.

ramherfer 04-03-2025 17:51:30

Cita:

Empezado por elguille (Mensaje 562438)
recibo el código de error 6 . He importado el certificado al almacen de windows y desde ahi funciona perfectamente ¿alguien ha probado de cargar un certificado desde el fichero PFX directamente?
Gracias anticipadas.

Hola termino de hacer una prueba validando NIF del cliente, por hacer una prueba rápida y sencilla con PFX y me pide que seleccione un certificado del almacen. Esto con el nombre de certificado cierto que no ocurre y funciona bien. Habiendo realizado una prueba con validación, creo que tampoco funcionará con los envíos. No lo he probado en los envíos por si se me lía un trifostio. Luego si acaso probaré con una factura y amplio la información lo tengo fácil para cambiar el uso de certificados.

Probado, pide el certificado tanto al comprobar el nif como al facturar del almacen de certificados.


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

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