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 26-03-2025 11:28:20

Cita:

Si esta en Recargo de Equivalencia el OT no puede emitir facturas con RE, por lo tanto sera la clave 01 u otra.
Si el emisor de facturas está en recargo de equivalencia no puede emitir facturas con recargo de equivalencia ?

starlet 26-03-2025 12:59:05

Cita:

Empezado por seccion_31 (Mensaje 563105)
Ya esta corregido !

gracias por el aviso.

Por cierto starlet ¿has podido probar la demo?


slds !

No, y no tengo ni idea que puede ser. Tengo claro que es algo de mi equipo, pero ni idea.

He puesto el form en visible, he instalado Capicom (ambas cosas las hice al principio).

Es un poco más complejo ver la operativa sin poder debuguear la demo, pero poco a poco me voy enterando.

Muchas gracias.

seccion_31 26-03-2025 13:30:54

Cita:

Empezado por starlet (Mensaje 563138)
No, y no tengo ni idea que puede ser. Tengo claro que es algo de mi equipo, pero ni idea.

He puesto el form en visible, he instalado Capicom (ambas cosas las hice al principio).

Es un poco más complejo ver la operativa sin poder debuguear la demo, pero poco a poco me voy enterando.

Muchas gracias.

Asegurate que tengas la version 2

El codigo fuente de la demo (carpeta DEMO_D7 ) y la DLL esta ahi puedes ir viendo que hace.

Abres el prouecto de la Demo, y tienes dos eventos, oncreate y el onshow, empieza por seguir el codigo.

Saludos !

delphiGar 26-03-2025 14:41:23

Cita:

Empezado por CarlosMz (Mensaje 563127)
Si el emisor de facturas está en recargo de equivalencia no puede emitir facturas con recargo de equivalencia ?

Exacto, no puede.

ramherfer 26-03-2025 20:28:48

Cita:

Empezado por delphiGar (Mensaje 563126)

Si la factura lleva Recago de Equivalencia la ClaveRegimen tiene que ser 18, y aclaro, si la emite es por que puede hacerlo con recargo. Si esta en Recargo de Equivalencia el OT no puede emitir facturas con RE, por lo tanto sera la clave 01 u otra.

Esto ya lo comenté hace un par de semanas:

Cita:

Empezado por ramherfer (Mensaje 562513)
Buenas tardes.
Si se le factura a un cliente con recargo de equivalencia no se si está asignando la clave de régimen 01 (Operación de Régimen General).
Creo que en este caso debería de asignar la clave de regimen 18 (Recargo de equivalencia).

Por favor corregirme si me equivoco.

Lo que no tenía ni idea es que si estas en regimen de recargo de equivalencia, no puedas emitir facturas con recargo de equivalencia. Lógica tiene, pero me quedo patidifuso.

seccion_31 26-03-2025 22:11:54

Cita:

Empezado por ramherfer (Mensaje 563168)
Esto ya lo comenté hace un par de semanas:

Pues si, Me acordé de ti ...


Saludos !

delphiGar 27-03-2025 09:16:15

Cita:

Empezado por ramherfer (Mensaje 563168)
Esto ya lo comenté hace un par de semanas:



Lo que no tenía ni idea es que si estas en regimen de recargo de equivalencia, no puedas emitir facturas con recargo de equivalencia. Lógica tiene, pero me quedo patidifuso.

Pero esto hasta el dia 18 de Marzo no era asi, hasta esa fecha habia que poner la clave 18 al que estaba en Regimen de equivalencia aunque facture sin recargo, y el que emite la factura con recargo emitia con 01 u otra clave.

Ahora desde el 18 es como he comentado.

ramherfer 28-03-2025 10:50:18

A ver, yo sigo con el tema de comprobación del servicio soap esté activo o no. Soy cabezón por naturaleza :D

He estado probando con el tema de consulta vacia a la AEAT, pero me da errores "Consultando a la AEAT" y la verdad, tampoco he conseguido averiguar el motivo, ya que la consulta esta calcada de la que se realiza en la pantalla de consultas que funciona a la perfección.

Si la comprobación la realizo solo al entrar en la aplicación, tengo el inconveniente que si la aplicación no se cierra y el servicio deja de estar activo y se emite una o varias facturas, ya tenemos el lio montado.

Si la comprobación la realizo antes de realizar un envío, se va a poner a realizar consulta tras consulta hasta que detecte que el servicio está activo y la envie.

Todo ello desconociendo si hay algún limite de consultas, o si la operación de consultas continuadas puede desembocar en algún tipo de baneo por parte de mis amigos de la AEAT.

Entonces basandome en que la URL del EndPoint de mis amigos del fisco responde con una redirección, eso debiera bastar para indicar que está activo ya que si no se encuentra activo, no debiera de haber respuesta con esa redirección. Entonces con la siguiente función trato de hacer esa comprobación que activaría o desactivaría un flag y la imagen correspondiente en el StatusBar para que el usuario sea consciente en todo momento de como está el patio. La he probado con https://prewww1.aeat.es/wlpl/TIKE-CO.../VerifactuSOAP y con https://prewww1.aeat.es/wlpl/TIKE-CO...factuSOAP?wsdl y aparentemente cumple su función.

Código Delphi [-]
 
Function VerificarServicioSOAP(URL:String): Boolean;
var
  HTTP: TIdHTTP;
  SSLIO: TIdSSLIOHandlerSocketOpenSSL;

begin
  result := false;

  HTTP := TIdHTTP.Create(nil);
  SSLIO := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);

  try
    try
      // Forzar el uso de TLS 1.2
      SSLIO.SSLOptions.Method := sslvTLSv1_2;
      SSLIO.SSLOptions.Mode := sslmClient;
      HTTP.IOHandler := SSLIO;

      HTTP.Head(URL);
      //ShowMessage(Format('%s Disponible', [url]));
      result := true;
    except
      on E: EIdHTTPProtocolException do
      begin
        if (E.ErrorCode = 302) then begin
          //ShowMessage(Format('%s Disponible (Redireccionando)', [url]));
          result := True;
        end else begin
          //ShowMessage(Format('%s No Disponible: %s', [URL, E.Message]));
          result := False;
        end;
      end;
      on E: Exception do
        //ShowMessage(Format('%s No Disponible: %s', [URL, E.Message]));
    end;
  finally
    HTTP.Free;
  end;

end;

No se si estoy en un error. A ver que os parece y me alegraría que fuera válido.

Un saludo,

mqm 28-03-2025 14:04:20

Buenas tardes.
Siguiendo con las pruebas, me delvuelve este error.
Las pruebas las realizo con el "CERTIFICADO FISICA PRUEBAS - 99999910G".

Si proceso al envio de 1-6 facturas , veo que se lo traga todo del tiron, todo Correcto..
Sin embargo al meter 10 facturas en el envio me devuelve el error que muestro en el codigo siguiente.

Es problema mio, del codigo o del certificado que estoy usando?
Le ha pasado a alguien más?




Cita:

Se ha realizado el envío

Estado Del Envio: Enviado
CSV: A-PMM4K6MFKQS5MA
TimeStamp: 28/03/2025 13:53:15

A0000073-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000074-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000075-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000076-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000077-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000078-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000079-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000080-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000081-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60
A0000082-2024 Correcto 0
Se Ha Establecido Un Tiempo De Espera Proximo Envio De 60

Facturas Aceptadas: 10
Facturas Aceptadas Con Errores: 0
Facturas Con Errores: 0
El envío no ha podido ser realizado
Error Al Enviar
(ESOAPHTTPException)-Se requiere un certificado para completar la autenticación de cliente - URL:https://prewww1.aeat.es/wlpl/TIKE-CO.../VerifactuSOAP - SOAPAction:""

newtron 28-03-2025 16:47:32

Cita:

Empezado por mqm (Mensaje 563220)
Buenas tardes.
Siguiendo con las pruebas, me delvuelve este error.
Las pruebas las realizo con el "CERTIFICADO FISICA PRUEBAS - 99999910G".

Si proceso al envio de 1-6 facturas , veo que se lo traga todo del tiron, todo Correcto..
Sin embargo al meter 10 facturas en el envio me devuelve el error que muestro en el codigo siguiente.

Es problema mio, del codigo o del certificado que estoy usando?
Le ha pasado a alguien más?


¿Estás enviando las facturas en un solo paquete o una a una?

mqm 28-03-2025 17:19:50

la envio en paquete de 2, 3, 4, ..... pero al llegar a 10 es cuando me salta el error.

newtron 28-03-2025 17:31:06

Cita:

Empezado por mqm (Mensaje 563232)
la envio en paquete de 2, 3, 4, ..... pero al llegar a 10 es cuando me salta el error.


¿Y esperas el tiempo indicado entre envíos? porque ese mensaje da la impresión que dice que estás enviando antes de tiempo.

Edito: Ah... no... leyendo bien parece que es algo relacionado con el certificado...

mqm 28-03-2025 17:58:13

Espero los tiempo indicado y mas. Ahora acabo de subie 15 de golpe y han pasado.
Espero que no se repita. Gracias por todo.

seccion_31 29-03-2025 08:27:03

a mi tambien me han pasado errores al enviar 15 o 20 de golpe y luego en otro paquete se han enviado bien. Enviando 1, 2,3 nunca he tenido problemas. Un poco random cuantos mas envias.

Por otro lado antes de publicar la version 2.1 tengo algunas dudas sobre esto: (Los añadire, pero querria vuestra opinion)
Ahora mismo no los estoy enviando, y los registros son aceptados.
Pero dice que es obligatorio y en la hoja de calculo informativa NO aparecen en rojo.

Cita:

TipoUsoPosibleMultiOT
Especifica si el sistema informático de facturación permite llevar independientemente la facturación de varios obligados tributarios (valor "S") o solo de uno (valor "N"). Obligatorio en registros de facturación de alta y de anulación, y opcional en registros de evento.
Entiendo que es para indicar que el programa permite en teoria la facturacion de varios emisores.


Cita:

IndicadorMultiplesOT
Indicador de que el sistema informático, en el momento de la generación de este registro, está soportando la facturación de más de un obligado tributario. Este valor deberá obtenerlo automáticamente el sistema informático a partir del número de obligados tributarios contenidos y/o gestionados en él en ese momento, independientemente de su estado operativo (alta, baja...), no pudiendo obtenerse a partir de otra información ni ser introducido directamente por el usuario del sistema informático ni cambiado por él. El valor "N" significará que el sistema informático solo contiene y/o gestiona un único obligado tributario (de alta o de baja o en cualquier otro estado), que se corresponderá con el obligado a expedir factura de este registro de facturación. En cualquier otro caso, se deberá informar este campo con el valor "S". Obligatorio en registros de facturación de alta y de anulación, y opcional en registros de evento.
Entiendo que es para indicar si en el programa de facturacion tienes registrados al menos dos emisores. (envien registros o no), pero que en tu base de datos figuran. Es decir un programa tiene dos emisores en su bd, envia registros de alta de uno de ellos, pero al tener dos emisores registrados este campo sera true.

¿porque no aparecen en rojo en la hoja de calculo? (como obligatorios)

¿estoy interpretando bien esos campos?

Saludos !

seccion_31 29-03-2025 08:57:24

otra cosa que no entiendo

en el portal de pruebas cuando consultas una factura, al final en el encadenamiento ¿porque colocan el NIF de la factura anterior? los encadenamientos son del mismo obligado tributario entiendo que del mismo nif, dato que saca de su registro de facturas ya enviadas... no veo porque coloca ese dato.

lo que no coloca en el portal de pruebas es el numero de factura rectificada. Yo no lo he visto.

saludos !

seccion_31 29-03-2025 09:08:42

Cita:

Empezado por mqm (Mensaje 563220)
Buenas tardes.
Siguiendo con las pruebas, me delvuelve este error.
Las pruebas las realizo con el "CERTIFICADO FISICA PRUEBAS - 99999910G".

Si proceso al envio de 1-6 facturas , veo que se lo traga todo del tiron, todo Correcto..
Sin embargo al meter 10 facturas en el envio me devuelve el error que muestro en el codigo siguiente.

Es problema mio, del codigo o del certificado que estoy usando?
Le ha pasado a alguien más?

El log que muestras es raro. (dejando como he dicho que en su momento yo tambien tuve problemas con pruebas de varios registros, ahora ya no las hago).

Pero leyendolo:
Las 10 facturas han sido aceptadas, y tienen su CSV, es decir el envio SI ha sido exitoso y ha habido respuesta. No entiendo los errores posteriores. Si el envio no hubiera sido exitoso no se habria procesado la consulta y por tanto no habria registro de resultado.

seccion_31 29-03-2025 10:34:19

Cita:

Empezado por ramherfer (Mensaje 563218)
A ver, yo sigo con el tema de comprobación del servicio soap esté activo o no. Soy cabezón por naturaleza :D

He estado probando con el tema de consulta vacia a la AEAT, pero me da errores "Consultando a la AEAT" y la verdad, tampoco he conseguido averiguar el motivo, ya que la consulta esta calcada de la que se realiza en la pantalla de consultas que funciona a la perfección.

Si la comprobación la realizo solo al entrar en la aplicación, tengo el inconveniente que si la aplicación no se cierra y el servicio deja de estar activo y se emite una o varias facturas, ya tenemos el lio montado.

Si la comprobación la realizo antes de realizar un envío, se va a poner a realizar consulta tras consulta hasta que detecte que el servicio está activo y la envie.

Todo ello desconociendo si hay algún limite de consultas, o si la operación de consultas continuadas puede desembocar en algún tipo de baneo por parte de mis amigos de la AEAT.

Entonces basandome en que la URL del EndPoint de mis amigos del fisco responde con una redirección, eso debiera bastar para indicar que está activo ya que si no se encuentra activo, no debiera de haber respuesta con esa redirección. Entonces con la siguiente función trato de hacer esa comprobación que activaría o desactivaría un flag y la imagen correspondiente en el StatusBar para que el usuario sea consciente en todo momento de como está el patio. La he probado con https://prewww1.aeat.es/wlpl/TIKE-CO.../VerifactuSOAP y con https://prewww1.aeat.es/wlpl/TIKE-CO...factuSOAP?wsdl y aparentemente cumple su función.

Código Delphi [-]
 
Function VerificarServicioSOAP(URL:String): Boolean;
var
  HTTP: TIdHTTP;
  SSLIO: TIdSSLIOHandlerSocketOpenSSL;

begin
  result := false;

  HTTP := TIdHTTP.Create(nil);
  SSLIO := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);

  try
    try
      // Forzar el uso de TLS 1.2
      SSLIO.SSLOptions.Method := sslvTLSv1_2;
      SSLIO.SSLOptions.Mode := sslmClient;
      HTTP.IOHandler := SSLIO;

      HTTP.Head(URL);
      //ShowMessage(Format('%s Disponible', [url]));
      result := true;
    except
      on E: EIdHTTPProtocolException do
      begin
        if (E.ErrorCode = 302) then begin
          //ShowMessage(Format('%s Disponible (Redireccionando)', [url]));
          result := True;
        end else begin
          //ShowMessage(Format('%s No Disponible: %s', [URL, E.Message]));
          result := False;
        end;
      end;
      on E: Exception do
        //ShowMessage(Format('%s No Disponible: %s', [URL, E.Message]));
    end;
  finally
    HTTP.Free;
  end;

end;

No se si estoy en un error. A ver que os parece y me alegraría que fuera válido.

Un saludo,


gracias por el aporte !

Hoy con el error del fin de semana, lamentablamente, sigue dando como valida (al menos en las pruebas que acabo de hacer).... cuando realmente no esta disponible. Si pongo una URL inexistente SI salta el error.


Cita:

Codigo[20009].UNSUCCESSFUL EXECUTION CAUSED BY AN UNAVAILABLE RESOURCE. REASON 00C90081, TYPE OF RESOURCE 00000210, AND RESOURCE NAME DBTCCSOR.TSTCCSOR.00000001. SQLCODE=-904, SQLSTATE=57011, DRIVER=4.33.43
en la version 2.1 , a cambio la consulta "nula" da como inactiva.

Saludos !

ramherfer 29-03-2025 10:58:32

Cita:

Empezado por seccion_31 (Mensaje 563244)
gracias por el aporte !

Hoy con el error del fin de semana, lamentablamente, sigue dando como valida (al menos en las pruebas que acabo de hacer).... cuando realmente no esta disponible. Si pongo una URL inexistente SI salta el error.




en la version 2.1 , a cambio la consulta "nula" da como inactiva.

Saludos !

Ufff, pues a mi en estos momentos me aparece como activa. A ver si tengo suerte y en algún momento se desactiva y puedo probar la función.

seccion_31 29-03-2025 11:05:42

Cita:

Empezado por ramherfer (Mensaje 563245)
Ufff, pues a mi en estos momentos me aparece como activa. A ver si tengo suerte y en algún momento se desactiva y puedo probar la función.


efectivamente ahora esta activa de nuevo. 11:05

saludos !

: )

ramherfer 29-03-2025 11:22:01

Cita:

Empezado por seccion_31 (Mensaje 563241)

Por otro lado antes de publicar la version 2.1 tengo algunas dudas sobre esto: (Los añadire, pero querria vuestra opinion)
Ahora mismo no los estoy enviando, y los registros son aceptados.
Pero dice que es obligatorio y en la hoja de calculo informativa NO aparecen en rojo.



Entiendo que es para indicar que el programa permite en teoria la facturacion de varios emisores.




Entiendo que es para indicar si en el programa de facturacion tienes registrados al menos dos emisores. (envien registros o no), pero que en tu base de datos figuran. Es decir un programa tiene dos emisores en su bd, envia registros de alta de uno de ellos, pero al tener dos emisores registrados este campo sera true.

¿porque no aparecen en rojo en la hoja de calculo? (como obligatorios)

¿estoy interpretando bien esos campos?

Saludos !

TipoUsoPosibleMultiOT
Yo los dejaría y que la aplicación informe en el momento del envío. En mi aplicación informa de los OT que se están gestionando en el StatusBar. con lo que si es mayor de 1 debería ser S y si es = 1 debería de ser N. Esto sería bien fácil que lo envíe y gestione la aplicación. Normalmente hoy en día casi todos los ERP son multiempresa.



IndicadorMultiplesOT
Idem de lo mismo.

Mi humilde opinión cuanta más información de el ERP al respecto, menos intento por parte de los usuarios para intentos desesperados de ocultar información y mejor cara a la AEAT que vea que no se está tratando de ocultar ningún dato. Sea obligatorio o no si se envía, mejor que mejor.

Un saludo,

delphiGar 29-03-2025 21:58:59

Cita:

Empezado por seccion_31 (Mensaje 563241)
Ahora mismo no los estoy enviando, y los registros son aceptados.
Pero dice que es obligatorio y en la hoja de calculo informativa NO aparecen en rojo.

Entiendo que es para indicar que el programa permite en teoria la facturacion de varios emisores.

Entiendo que es para indicar si en el programa de facturacion tienes registrados al menos dos emisores. (envien registros o no), pero que en tu base de datos figuran. Es decir un programa tiene dos emisores en su bd, envia registros de alta de uno de ellos, pero al tener dos emisores registrados este campo sera true.

¿porque no aparecen en rojo en la hoja de calculo? (como obligatorios)

¿estoy interpretando bien esos campos?

Saludos !

El campo TipoUsoPosibleMultiOT es para indicar si tu programa puege gestionar mas de un OT y el campo IndicadorMultiplesOT es para indicar si lo esta haciendo.

Si tu programa puede gestionar varios OT y tienes un solo OT seria:
Código:

TipoUsoPosibleMultiOT=S
IndicadorMultiplesOT=N


Si tu programa puede gestionar varios OT y tiene dos o mas:
Código:

TipoUsoPosibleMultiOT=S
IndicadorMultiplesOT=S

Si tu programa solo admite un OT:
Código:

TipoUsoPosibleMultiOT=N
IndicadorMultiplesOT=N


jlmoli_67 30-03-2025 09:31:03

Buenas,
Si tu programa puede gestionar varios OT y tiene dos o mas:
Código:
TipoUsoPosibleMultiOT=S IndicadorMultiplesOT=S
En este caso supongo que un mismo sif puede encargarse de enviar de forma independiente (primero una empresa, luego otra, ....) los registros de facturacion, no?

seccion_31 30-03-2025 10:51:40

Cita:

Empezado por jlmoli_67 (Mensaje 563253)
Buenas,
Si tu programa puede gestionar varios OT y tiene dos o mas:
Código:
TipoUsoPosibleMultiOT=S IndicadorMultiplesOT=S
En este caso supongo que un mismo sif puede encargarse de enviar de forma independiente (primero una empresa, luego otra, ....) los registros de facturacion, no?

gracias por las respuestas ! esto sera novedad en la 2.1

En mi caso particular desde dos puestos podrian enviar a la vez, siempre que el emisor sea distinto. (con un nivel muy muy bajo de facturas emitidas). Ni se va a dar.

seccion_31 30-03-2025 10:58:54

ahora hay otra cosa que me preocupa.

y esto deberia preocuparnos a todos los que usamos el componente.

el uso del stack y los arrays.

Actualmente (2.0) soportamos tipo de operacion con un maximo de 255 caracteres para un array de envio de 1000 facturas. Cuando en realidad deberian ser 500 digitos. Eso esta mal. (yo no lo veo bien).

He conseguido colocar el widestring que soporta ya los 500 digitos para un array de 500 facturas. Creo que es mejor enviar 500 facturas correctas que 1000 no muy bien. (cortadas a 255).

Cuando he tratado de forzar esos limites, empieza a comportarse de forma erratica, incluso con errores de proteccion general. Creo que la limitacion viene en la consulta, porque pasan por el stack de la DLL a la aplicacion, no lo se muy bien. Con la 3.0 sacandolo del stack y colocando el evento (ver abajo), quizas quedaria corregido y podriamos volver a las 1000 de envio.

Deberiamos someter al componente 2.1 cuando este publicado, a una prueba de stress simulando 500 facturas con tipos de operacion de 500 digitos. (pienso que hacerlo en modo simulado sin enviar seria suficiente y analizar que pasa).


¿que opiniais?



Por otro lado creo que para la version 3 voy a incorporar un evento para recibir las consultas.

En una sola pagina de consulta te pueden enviar hasta 10.000 registros, pero el componente solo soporta 1000. Con un evento se podrían recibir los 10.000 sin problemas. Sin soportar paginacion creo que ya es mas que suficiente para un periodo de consulta y un emisor "normal".

de nuevo, ¿que opiniais?

ramherfer 31-03-2025 12:22:30

Cita:

Empezado por seccion_31 (Mensaje 563255)
ahora hay otra cosa que me preocupa.

y esto deberia preocuparnos a todos los que usamos el componente.

el uso del stack y los arrays.

Actualmente (2.0) soportamos tipo de operacion con un maximo de 255 caracteres para un array de envio de 1000 facturas. Cuando en realidad deberian ser 500 digitos. Eso esta mal. (yo no lo veo bien).

He conseguido colocar el widestring que soporta ya los 500 digitos para un array de 500 facturas. Creo que es mejor enviar 500 facturas correctas que 1000 no muy bien. (cortadas a 255).

Cuando he tratado de forzar esos limites, empieza a comportarse de forma erratica, incluso con errores de proteccion general. Creo que la limitacion viene en la consulta, porque pasan por el stack de la DLL a la aplicacion, no lo se muy bien. Con la 3.0 sacandolo del stack y colocando el evento (ver abajo), quizas quedaria corregido y podriamos volver a las 1000 de envio.

Deberiamos someter al componente 2.1 cuando este publicado, a una prueba de stress simulando 500 facturas con tipos de operacion de 500 digitos. (pienso que hacerlo en modo simulado sin enviar seria suficiente y analizar que pasa).


¿que opiniais?



Por otro lado creo que para la version 3 voy a incorporar un evento para recibir las consultas.

En una sola pagina de consulta te pueden enviar hasta 10.000 registros, pero el componente solo soporta 1000. Con un evento se podrían recibir los 10.000 sin problemas. Sin soportar paginacion creo que ya es mas que suficiente para un periodo de consulta y un emisor "normal".

de nuevo, ¿que opiniais?

Por mi parte, aunque son cifras que mi aplicación en estos momentos son inimaginables, y que tampoco tengo un conocimiento extremo como para dar una opinión acertada, cualquier cosa que sea una mejora me parece correcta, no lo siguiente. Y por la lógica de la explicación siempre será mejor enviar menos pero correcto que más y que de problemas.

Aprovecho para realizar una observación. Teniendo el siguiente desglose que no debería ser, pero se podría dar el caso y a nivel de aplicación es totalmente correcto:

Código:

<Desglose>
<DetalleDesglose>
<ClaveRegimen>01</ClaveRegimen>
<CalificacionOperacion>S1</CalificacionOperacion>
<TipoImpositivo>21.00</TipoImpositivo>
<BaseImponibleOimporteNoSujeto>459.00</BaseImponibleOimporteNoSujeto>
<CuotaRepercutida>96.39</CuotaRepercutida>
</DetalleDesglose>
<DetalleDesglose>
<ClaveRegimen>01</ClaveRegimen>
<CalificacionOperacion>S1</CalificacionOperacion>
<TipoImpositivo>21.00</TipoImpositivo>
<BaseImponibleOimporteNoSujeto>722.50</BaseImponibleOimporteNoSujeto>
<CuotaRepercutida>151.73</CuotaRepercutida>
</DetalleDesglose>
</Desglose>
<CuotaTotal>248.12</CuotaTotal>
<ImporteTotal>1333.23</ImporteTotal>

Los codigos de iva los tengo codificados y en un albarán por error se asignó un codigo de iva distinto pero que iva tambien al 21%. La cuestión es que en una factura iban dos lineas con el 21% una con el codigo 01 y otra con el codigo 21 (Ya digo que es un error pero que debía haber sido aceptado y teniendo la base imponible bien y el total factura tambien), en el importe total se puede observar que falta sumar la primera linea de iva, cuando en la factura estaba incluidas ambas lineas y el total factura era 1429,62.

No he podido saber por que la primera cuota no se agregó al total factura. Desconozco si ha sido un filtro de la AEAT al haber un segundo registro de iva con el mismo porcentaje.

seccion_31 31-03-2025 13:36:03

Cita:

Empezado por ramherfer (Mensaje 563269)
Por mi parte, aunque son cifras que mi aplicación en estos momentos son inimaginables, y que tampoco tengo un conocimiento extremo como para dar una opinión acertada, cualquier cosa que sea una mejora me parece correcta, no lo siguiente. Y por la lógica de la explicación siempre será mejor enviar menos pero correcto que más y que de problemas.

Aprovecho para realizar una observación. Teniendo el siguiente desglose que no debería ser, pero se podría dar el caso y a nivel de aplicación es totalmente correcto:

Código:

<Desglose>
<DetalleDesglose>
<ClaveRegimen>01</ClaveRegimen>
<CalificacionOperacion>S1</CalificacionOperacion>
<TipoImpositivo>21.00</TipoImpositivo>
<BaseImponibleOimporteNoSujeto>459.00</BaseImponibleOimporteNoSujeto>
<CuotaRepercutida>96.39</CuotaRepercutida>
</DetalleDesglose>
<DetalleDesglose>
<ClaveRegimen>01</ClaveRegimen>
<CalificacionOperacion>S1</CalificacionOperacion>
<TipoImpositivo>21.00</TipoImpositivo>
<BaseImponibleOimporteNoSujeto>722.50</BaseImponibleOimporteNoSujeto>
<CuotaRepercutida>151.73</CuotaRepercutida>
</DetalleDesglose>
</Desglose>
<CuotaTotal>248.12</CuotaTotal>
<ImporteTotal>1333.23</ImporteTotal>

Los codigos de iva los tengo codificados y en un albarán por error se asignó un codigo de iva distinto pero que iva tambien al 21%. La cuestión es que en una factura iban dos lineas con el 21% una con el codigo 01 y otra con el codigo 21 (Ya digo que es un error pero que debía haber sido aceptado y teniendo la base imponible bien y el total factura tambien), en el importe total se puede observar que falta sumar la primera linea de iva, cuando en la factura estaba incluidas ambas lineas y el total factura era 1429,62.

No he podido saber por que la primera cuota no se agregó al total factura. Desconozco si ha sido un filtro de la AEAT al haber un segundo registro de iva con el mismo porcentaje.


en el registro que tienes se han enviado los 2, asi que ha sido la AEAT la que lo ha rechazdo.

¿que deberia hacer el componente?

¿generar una excepcion que impida añadir esa factura, con ese caso?

¿o sumar ambas cuotas y colocarlas con su iva?


Creo que lo mejor es el 1 er. caso.

Saludos !

ramherfer 31-03-2025 16:05:51

Nada tranquilo, esta bien.
He modificado la aplicación para que no vuelva a ocurrir, que es lo más correcto. Antes de emitir las facturas comprueba que no hayan dos lineas de iva con el mismo porcentaje.
El componente está funcionando bien y hace lo que tiene que hacer.
Gracias.

seccion_31 31-03-2025 21:43:49

ya esta publicada la version 2.1 en espera del enlace para el foro:

Cita:

version 2.1
----------------------------------------------------------------------------------------------------------------------------
Elevar el max. stack a $00510000 (recomendado) (hoy x hoy el tema del stack es un terreno desconocido)

Descripcion de operacion pasa de string a widestring para albergar 500 digitos
Se reducen de 1000 facturas por envio a 500 facturas (maximo)

Si no se espcifica url endpoint no se inicia sesion (antes lo hacia con el de pre-produccion por defecto)

Respuesto, modificado: EN SISTEMA INFORMATICO:

SistemaInformatico.TipoUsoPosibleMultiOT:=false; // capacidad del software para gestionar varios emisores ?
SistemaInformatico.IndicadorMultiplesOT :=false; // 1 solo emisor registrado por el software ?
SistemaInformatico.TipoUsoPosibleSoloVerifactu:=true; // la aplicacion funciona unicamente en modo verifactu ?

Utilizados tambien en la consulta cuando se busca por SIF

Nuevo:

ClaveRegimen 18. Recargo de equivalencia
Cuando una factura lleva recargo se cambia automaticamente a claveRegimen=18

Corregida la demo cuando carga una excel, se borran filas y se volvia cargar de nuevo otra excel.

Ahora esta disponible una funcion para verificar que la AEAT esta funcionando:

function TVeriFactu.VerifactuActivo:boolean;

Ejemplo:
VeriFactuD7.Certificado :=comboCertificados.text;
VerifactuD7.Emisor.NombreRazonEmisor :=editEmisor.Text;
VerifactuD7.Emisor.nifEmisor :=editNIFEmisor.Text;
VerifactuD7.urlEndPoint :=editURL.text; // endpoint de la AEAT

if veriFactuD7.VerifactuActivo then
statusBar1.panels[1].Text:='AEAT Activa'
else
statusBar1.panels[1].Text:='AEAT Inactiva';

Para ello se realiza una consulta muy simple por numero de factura y se analiza si ha sido correcta.

Ese numero de factura puede ser cambiado al numero de factura que se desee mediate la variable global VERIFACTUACTIVOPING por ejemplo:

VERIFACTUACTIVOPING:='ACTIVOVERIFACTU'; aunque el valor inicial es '*' y funciona perfectamente.

coregido el form principal de la demo, visible=true

Advertencia: el LOG que se puede guardar al final de una sesion de envio, esta obsoleto desde la conversion a DLL y no devuelve nada.

Suprimido: outputdebugstring por incompatibilidad con otras veresiones de D7.

corregida asignacion de fecha y hora del resultado de envio, estaban cambiadas una por otra.

NANAUJ1970 01-04-2025 08:05:11

Tengo unas dudas con las librerias.
Estaba usando hasta ahora D6 y acabo de instalar D7 y cuando quiero usar librerias tipo:

System.SysUtils, System.Classes, Soap.Rio, Xml.XMLIntf, Soap.SOAPHTTPClient, Soap.SOAPHTTPTrans etc

me dice que no encuentra el .dcu....

Alguien pude ayudarme por favor diciendome donde se encuentran y como instalarlas

Gracias de antemano

NANAUJ1970 01-04-2025 08:05:41

Librerias delphi 7
 
Tengo unas dudas con las librerias.
Estaba usando hasta ahora D6 y acabo de instalar D7 y cuando quiero usar librerias tipo:

System.SysUtils, System.Classes, Soap.Rio, Xml.XMLIntf, Soap.SOAPHTTPClient, Soap.SOAPHTTPTrans etc

me dice que no encuentra el .dcu....

Alguien pude ayudarme por favor diciendome donde se encuentran y como instalarlas

Gracias de antemano

NANAUJ1970 01-04-2025 08:07:05

Librerias
 
Tengo unas dudas con las librerias.
Estaba usando hasta ahora D6 y acabo de instalar D7 y cuando quiero usar librerias tipo:

System.SysUtils, System.Classes, Soap.Rio, Xml.XMLIntf, Soap.SOAPHTTPClient, Soap.SOAPHTTPTrans etc

me dice que no encuentra el .dcu....

Alguien pude ayudarme por favor diciendome donde se encuentran y como instalarlas

Gracias de antemano

Neftali [Germán.Estévez] 01-04-2025 09:21:09

Se ha subido al FTP la versión 2.1 de la DLL.
https://terawiki.clubdelphi.com/Otro...%20Delphi%207/

seccion_31 01-04-2025 12:26:17

La versión 3.0 incorporara:

Las 1.000 facturas de envío, con descripción de operación completa a 500 dígitos

Un evento para recibir consultas con mas de +1.000 facturas, hasta las 10.000 que puede enviar la AEAT en la primera pagina.

Además de mantener también las primeras 1.000 consultadas como en la actualidad en el array.

Demo mejorada, para mostrar el funcionamiento de los eventos.

Eso si, se restringe en la consulta la descripción de operación a 255 dígitos.

Saludos !

Galahad 01-04-2025 19:09:21

Proyecto verifactu.dll para windows 12.1 (error)
 
Hola, buenas tardes.
Estoy intentando compilar el proyecto verifactuformd7 en delphi 12.1 y crea un ejecutable, pero no válido,, aparece el error:

'No se encuentra el punto de entrada del procedimiento setbackgroundcolor en la biblioteca de vinculos dinamicos verifactuformd7.exe'

es compatible el proyecto con delphi 12.1 ¿?

seccion_31 01-04-2025 20:51:30

Cita:

Empezado por Galahad (Mensaje 563307)
Hola, buenas tardes.
Estoy intentando compilar el proyecto verifactuformd7 en delphi 12.1 y crea un ejecutable, pero no válido,, aparece el error:

'No se encuentra el punto de entrada del procedimiento setbackgroundcolor en la biblioteca de vinculos dinamicos verifactuformd7.exe'

es compatible el proyecto con delphi 12.1 ¿?

Ni idea si es compatible con D12. La aplicacion demo es compatible con D7.

No hay un punto de entrada con ese procedimiento dentro de verifactu.dll, eso si, debes registrar capicom.dll

Galahad 01-04-2025 22:41:32

Cita:

Empezado por seccion_31 (Mensaje 563308)
Ni idea si es compatible con D12. La aplicacion demo es compatible con D7.

No hay un punto de entrada con ese procedimiento dentro de verifactu.dll, eso si, debes registrar capicom.dll

Ok, muchas gracias^\||/

mqm 02-04-2025 09:23:24

Cita:

Hola, buenas tardes.
Estoy intentando compilar el proyecto verifactuformd7 en delphi 12.1 y crea un ejecutable, pero no válido,, aparece el error:
'No se encuentra el punto de entrada del procedimiento setbackgroundcolor en la biblioteca de vinculos dinamicos verifactuformd7.exe'
es compatible el proyecto con delphi 12.1 ¿?
El problema lo tienes en la unit QuricolAPI.pas. Puedes omitir la generación del QR e intentar compilarlo con delphi 12.

Galahad 02-04-2025 09:30:46

Cita:

Empezado por mqm (Mensaje 563315)
El problema lo tienes en la unit QuricolAPI.pas. Puedes omitir la generación del QR e intentar compilarlo con delphi 12.

Efectivamente, comentando el código de la generación del QR ya compila con delphi 12.1,,
Muchas gracias,,,^\||/

mqm 02-04-2025 18:06:04

Con la última versión al realizar la consulta de un periodo, si marco filtrar SIF me devuelve 0, si lo desmarco me aparecen todas las pruebas realizadas incluyendo las que yo he hecho.
¿A alguien más le pasa esto?

seccion_31 02-04-2025 19:40:43

Cita:

Empezado por mqm (Mensaje 563361)
Con la última versión al realizar la consulta de un periodo, si marco filtrar SIF me devuelve 0, si lo desmarco me aparecen todas las pruebas realizadas incluyendo las que yo he hecho.
¿A alguien más le pasa esto?

esta filtrando con los valores por defecto de multiplesOT, indicador y modosoloverifactu. (añadidos a sistemaInformatico) si los colocas como se enviaron los registros te lo encontrara.

¿Es un tema, que habra que darle una vuelta para poder omitirlos o no en la busqueda por SIF? solucion, tenerlos como caracter para determinar S/N/blanco y asi poder incluirlos o no en el filtro. (o añadir algun indicador para buscar por cada uno de ellos opcionalmente:


filtroModoVerifactu:boolean;
filtroPosiblesMOT :boolean;
filtroIndicadorMOT :boolean;

Esto ira nuevo en la 3.0


La franja horaria es GMT +2. Ahora son las 10:02:17.

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