Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #3161  
Antiguo 23-10-2024
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 565
Poder: 6
rci Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
teniendo en cuenta que nos indican que no debemos continuar generando registros hasta subsanar los anteriores...
Donde has visto esto?

En mi opinión no podemos dejar de generar registros (hacer nuevas facturas) aunque haya un error, un usuario no puede dejar de vender.
Yo pienso que cuando el usuario vea que ha habido un error en una factura, cuando pueda lo arreglará de la forma que el programa se lo permita y se volverá a enviar.

Gracias
  #3162  
Antiguo 23-10-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola, la cuestion es que estamos subsanado la huella, y segun esto.
Código:
Para llevar a cabo la subsanación, será necesaria la remisión de un nuevo registro de
facturación (con el mismo identificador de factura del registro de facturación que se quiere
subsanar) por cada uno de los registros con datos a subsanar, con la combinación de
valores de campos que proceda según el caso (ver en el anexo los cuadros de operativas de
alta y anulación admisibles).
Creo que tenemos que componer la huella enviada, teniendo en cuenta los datos del registro a subsanar, osea la huella anterior al registro subsanado, teniendo en cuenta que nos indican que no debemos continuar generando registros hasta subsanar los anteriores...
Tiene más sentido, así pensaba yo hace unos días, pero me había reorientar a raíz de los últimos post.
Lo lógico es reencadebar todo, ya que si tenemos que pasar un programa para revisar el encadenamiento vanos a tener fallos.
Esto es un problema GORDO para los No verufactusncomo les pidan los registros de hace 1 ó 2 años.
  #3163  
Antiguo 23-10-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por rci Ver Mensaje
Donde has visto esto?

En mi opinión no podemos dejar de generar registros (hacer nuevas facturas) aunque haya un error, un usuario no puede dejar de vender.
Yo pienso que cuando el usuario vea que ha habido un error en una factura, cuando pueda lo arreglará de la forma que el programa se lo permita y se volverá a enviar.

Gracias
No tienes que parar nada, como algún compañero en un post anterior ha dicho, las facturas no llevan el encadenamiento en el qr. Solo se encadena en los XML. Se arreglan cuando se pueda, teniendo en cuenta que cuanto más esperes más registros tienes que volver a mandar
  #3164  
Antiguo 23-10-2024
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 565
Poder: 6
rci Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
No tienes que parar nada, como algún compañero en un post anterior ha dicho, las facturas no llevan el encadenamiento en el qr. Solo se encadena en los XML. Se arreglan cuando se pueda, teniendo en cuenta que cuanto más esperes más registros tienes que volver a mandar



Yo diría que solo tienes que volver a mandar el que se tiene que arreglar... los demás ya están bien. No?
  #3165  
Antiguo 23-10-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por rci Ver Mensaje



Yo diría que solo tienes que volver a mandar el que se tiene que arreglar... los demás ya están bien. No?
Bueno, algunos entendemos que hay que reencadenar el registro subsanado don el mismo que debería estar anteriormente, con lo cual habría que r3acer todos los encadenamientos de los generados posteriormente.
Yo voy a trabajar en esa línea hasta que alguien haga la consulta y lo detallen claramente.
  #3166  
Antiguo 23-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 862
Poder: 3
bmfranky Va por buen camino
??

Cita:
Empezado por ermendalenda Ver Mensaje
Bueno, algunos entendemos que hay que reencadenar el registro subsanado don el mismo que debería estar anteriormente, con lo cual habría que r3acer todos los encadenamientos de los generados posteriormente.
Yo voy a trabajar en esa línea hasta que alguien haga la consulta y lo detallen claramente.
Hola, pues no se que deciros, ahora si que estoy hecho un lio, porque si enviamos por ejemplo la facturas 13 y la encadenomos mal , generando una huella por ejmplo hhhh(aunque deveria ser "AAA") , la siguiente factura, la encadenamos con la huella anterior hhhh, que es incorrecta, pero es la semilla que usamos para generar el encadenamiento, entonces nos dara OK, porque generamos con esa semilla, por eso os decia si alguien havia hecho la prueba de encadenar mal a drede , saltando un registro en el mismo envio, para ver como se comportaba.
  #3167  
Antiguo 23-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 862
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por rci Ver Mensaje
Donde has visto esto?

En mi opinión no podemos dejar de generar registros (hacer nuevas facturas) aunque haya un error, un usuario no puede dejar de vender.
Yo pienso que cuando el usuario vea que ha habido un error en una factura, cuando pueda lo arreglará de la forma que el programa se lo permita y se volverá a enviar.

Gracias
Perdona , igual me lo he fumado yo, como mi idea es que si hay un error , subsanar antes de seguir...
  #3168  
Antiguo 23-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 862
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Enviamos una factura, anulamos por error otra y la enviamos, y además pertenece a otro periodo impositivo la que hemos anulado por error.
Supongo que hay que volver a emitir una nueva de la que hemos anulado ¿con la fecha de la anterior?, aparte del lío de hablar con el cliente que lo mismo está en SII y ya se la ha declarado.
Ahora el cliente tiene que anular esa factura del SII (y que lo haga)
Vaya lio no?
PROHIBIDO EQUIVOCARSE.
Hola, simplemente haces un alta por subsanacion , con todos los datos de la factura anulada, segun la operativa, obtienes.

Cita:
OK(5) = Reactiva(vuelve a dejar de alta y en vigor) el registro de facturación anulado existente, sustituyendo completamente el registro de facturación registrado con los nuevos datos recibidos
Lo acabo de leer en el documento de validaciones.
  #3169  
Antiguo 23-10-2024
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Cita:
Empezado por sglorka Ver Mensaje
La Huella anterior que debes coger para formar el registro de subsanación de A13 es la huella del registro de A13 que te aceptaron con errores
Tienes toda la razon sglorka, la consulta la hice yo y es asi como tu dices, es decir hay que coger la huella inmedianteme anterior al ultimo registro.

Pregunta a al AEAT

Código:
Tengo 5 registros de Alta para enviar, cada uno encadenado con el anterior mediante el hash correspondiente, 
si el 2 registro me lo rechaza por ejemplo por que el tipo impositivo es incorrecto como debo actuar.

Si envio el 2 registro de nuevo ya corregido, el hash si lo calculo con el registro anterior que me dio por bueno y 
el nuevo hash sera distinto por el importe de nuevo calculado, con lo cual el encadenamiento para los registros 3, 4 y 5 tampoco sera valido. 
En este caso subsano los registros 3, 4 y 5 con el nuevo hash o envio el 2 registro encadenado con el ultimo hash del ultimo enviado como correcto y 
dejo los demas registro tal cual.
Contestacion:

Buenos días:

En el caso planteado, tenga en cuenta que para solucionar el error del registro 2 (siempre y cuando no corresponda la emisión de una factura rectificativa) deberá generar un nuevo registro de facturación de tipo "ALTA POR RECHAZO" con el error corregido. El encadenamiento siempre será en orden cronológico, por lo que este nuevo registro (siguiendo la serie, sería el registro 6) irá encadenado con el registro 5.

Efectivamente se producirá un salto en la cadena entre el registro 1 y 3 pero es algo que desde la AEAT ya se tendrá en cuenta por lo que no debe subsanar los registros posteriores con nuevas huellas.

Código:
En este tipo de situaciones, puede darse el caso de algún salto en el encadenamiento. Los registros se admitirán aunque el encadenamiento no sea el 

correcto. Aunque existan estos saltos , algo que desde la AEAT asumimos y prevemos que ocurra, tenemos la forma de detectar esta circunstancias excepcionales ya

que quedarán marcadas convenientemente y serán fáciles de trazar con nuestras herramientas de explotación. El sentido de tener encadenados cronológicamente a 

través hash de la forma que se solicita en el reglamento es porque en la mayoría de las casuísticas esta cadena estará bien formada y sólo existirán casos 

excepcionales que estarán bajo control. No debería ser una preocupación como empresa desarrolladora, la responsabilidad de detectar el mal uso o incumplimiento 

reiterado está en nuestro tejado.
  #3170  
Antiguo 23-10-2024
pablog2k pablog2k is offline
Miembro
 
Registrado: may 2017
Posts: 241
Poder: 10
pablog2k Va por buen camino
bueno pues tras leer la respuesta que te dio Hacienda, veo que lleváis razón, no consideran que nº de factura sea igual que registro, y por lo tanto si subo las facturas A1 a A5, y luego modifico la A2, esta irá encadenada con A5, y luego cuando suba A6 irá encadenada con la subsanación de A2.
Personalmente me parece un lío, pero bueno, habrá que adaptarse a lo que digan.
gracias por las respuestas

Última edición por pablog2k fecha: 23-10-2024 a las 15:00:30.
  #3171  
Antiguo 23-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 862
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por pablog2k Ver Mensaje
bueno pues tras leer la respuesta que te dio Hacienda, veo que lleváis razón, no consideran que nº de factura sea igual que registro, y por lo tanto si subo las facturas A1 a A5, y luego modifico la A2, esta irá encadenada con A5, y luego cuando suba A6 irá encadenada con la subsanación de A2.
Personalmente me parece un lío, pero bueno, habrá que adaptarse a lo que digan.
gracias por las respuestas
Entonces, lo que hay que hacer es guardar el encadenamiento en una tabla y cada vez que hacemos un envio, rectificacion o lo que sea , siempre usar los datos de la ultima entrada de la tabla, sea la que sea , podria ser abono de una factura del año pasado, da lo mismo , el ecadenamiento sera sobre los ultimos datos introducidos.
  #3172  
Antiguo 23-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 862
Poder: 3
bmfranky Va por buen camino
Sustitutiva Cliente Erroneo.

Hola siguiendo con mi ritmo, ahora me toca las sutitutivas por cliente erroneo, la operativa seria.
Siendo A mis facturas B los registros enviados a la aeat teniendo en cuanta que la factura ya se ha emitido, enviado con su respectivo rsgistro mi factura Fac001.
1-> emito una factura F1 Fac002, con las cantidades en negativo , genero mi factura A, que imprimo por si se la he enviado al cliente anterior.
Genero un registro de Anulacion Bn4 con los datos de la factura Fac001, encadenado con el registro anterior sea cual sea (por claridad n3)

2-> emito una factura F1 Fac003 con los datos ya correctos para enviar al cliente correcto.
Genero un registro de alta, Bn5 con los datos de la factura Fac003, encadenado con Bn4.


Esto seria lo correcto o en vez de la factura F1 Fac002, seria una Rectificativa R1?


Perdonad la obbiedad pero soy muy ceporro con las cosas que no he hecho nunca hasta que las comprendo.
  #3173  
Antiguo 23-10-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por delphiGar Ver Mensaje
Tienes toda la razon sglorka, la consulta la hice yo y es asi como tu dices, es decir hay que coger la huella inmedianteme anterior al ultimo registro.

Pregunta a al AEAT

Código:
Tengo 5 registros de Alta para enviar, cada uno encadenado con el anterior mediante el hash correspondiente, 
si el 2 registro me lo rechaza por ejemplo por que el tipo impositivo es incorrecto como debo actuar.

Si envio el 2 registro de nuevo ya corregido, el hash si lo calculo con el registro anterior que me dio por bueno y 
el nuevo hash sera distinto por el importe de nuevo calculado, con lo cual el encadenamiento para los registros 3, 4 y 5 tampoco sera valido. 
En este caso subsano los registros 3, 4 y 5 con el nuevo hash o envio el 2 registro encadenado con el ultimo hash del ultimo enviado como correcto y 
dejo los demas registro tal cual.
Contestacion:

Buenos días:

En el caso planteado, tenga en cuenta que para solucionar el error del registro 2 (siempre y cuando no corresponda la emisión de una factura rectificativa) deberá generar un nuevo registro de facturación de tipo "ALTA POR RECHAZO" con el error corregido. El encadenamiento siempre será en orden cronológico, por lo que este nuevo registro (siguiendo la serie, sería el registro 6) irá encadenado con el registro 5.

Efectivamente se producirá un salto en la cadena entre el registro 1 y 3 pero es algo que desde la AEAT ya se tendrá en cuenta por lo que no debe subsanar los registros posteriores con nuevas huellas.

Código:
En este tipo de situaciones, puede darse el caso de algún salto en el encadenamiento. Los registros se admitirán aunque el encadenamiento no sea el 

correcto. Aunque existan estos saltos , algo que desde la AEAT asumimos y prevemos que ocurra, tenemos la forma de detectar esta circunstancias excepcionales ya

que quedarán marcadas convenientemente y serán fáciles de trazar con nuestras herramientas de explotación. El sentido de tener encadenados cronológicamente a 

través hash de la forma que se solicita en el reglamento es porque en la mayoría de las casuísticas esta cadena estará bien formada y sólo existirán casos 

excepcionales que estarán bajo control. No debería ser una preocupación como empresa desarrolladora, la responsabilidad de detectar el mal uso o incumplimiento 

reiterado está en nuestro tejado.
Pues esto es una buena noticia dentro de todo este lío.
Gracias.
  #3174  
Antiguo 23-10-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola siguiendo con mi ritmo, ahora me toca las sutitutivas por cliente erroneo, la operativa seria.
Siendo A mis facturas B los registros enviados a la aeat teniendo en cuanta que la factura ya se ha emitido, enviado con su respectivo rsgistro mi factura Fac001.
1-> emito una factura F1 Fac002, con las cantidades en negativo , genero mi factura A, que imprimo por si se la he enviado al cliente anterior.
Genero un registro de Anulacion Bn4 con los datos de la factura Fac001, encadenado con el registro anterior sea cual sea (por claridad n3)

2-> emito una factura F1 Fac003 con los datos ya correctos para enviar al cliente correcto.
Genero un registro de alta, Bn5 con los datos de la factura Fac003, encadenado con Bn4.


Esto seria lo correcto o en vez de la factura F1 Fac002, seria una Rectificativa R1?


Perdonad la obbiedad pero soy muy ceporro con las cosas que no he hecho nunca hasta que las comprendo.
Creo que hay un pequeño lio de varias cosas aquí.
Empezando por el título, aquí nohay sustitutivas, aquí estas intentando hacer una rectificativa por sustitucion de una factura f1.
Las sustitutivas (f3) son emitidas para sustituir las de tipo f2.
Para las facturas por sustitución no hay que hacer anulaciones, algún compañerote lo podrá explicar mejor, ya que las rectificativas que yo tengo son por diferencias no hago de sustitución
El caso que has planteando estas aplicando una doble negativa, al anular y emitir un abono y se te quedaría todo a 0, como si no hubieras emitido nada.
Además las facturas rectificativas por sustitución también tienen 2 formas de hacerlas y dependiendo de lo que quieras hacer o mejor se adapte a tu software, es mejor qur lo veas claro.es un punto un poco lioso en el reglamento

Última edición por ermendalenda fecha: 23-10-2024 a las 18:01:22.
  #3175  
Antiguo 23-10-2024
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 260
Poder: 5
antoine0 Va por buen camino
Cita:
Empezado por sglorka Ver Mensaje
El encadenamiento siempre tiene que ser con el registro generado anteriormente en orden cronológico para el mismo SIF. La tercera operación que has hecho, -subo la factura A13 como subsanación, poniendo bien los valores de Encadenamiento (Encadena con A12, relleno bien IdEmisorFactura,NumSerieFactura,FechaExpedicionFactura y Huella) , respuesta OK.

no debería ser correcta ya que no estás encadenando con el registro anterior de factura A13 que sí fue aceptado, aunque con errores. Para subsanar una huella no puedes saltarte la cadena cronológica aunque parezca que en realidad no estás subsanando nada. Esto ya lo he consultado con el correo de Verifactu. Si te responde Ok en porque ellos internamente habrán decidido eso pero saben perfectamente que el encadenamiento está mal
Estoy contigo sobre lo que es lo correcto: si el SIF ha generado A13malo, debe encadenar la siguiente (A13bueno) con este mismo A13malo, no con A12.
Y estoy seguro que esta secuencia (A13bueno encadenada con A13malo y marcada subsanación) será aceptada por AEAT.

Ahora bien, puede haber caso de operatividad que permiten secuencias como:
  • se genera A12 limpiamente
  • se empieza a generar un A13, hay un problema, el sistema se raya, envía un A13malo y al mismo tiempo se cae (incluso puede llegar a no recuperar la respuesta al envío de A13malo)
  • se recupera el sistema, en la base la cadena tiene entonces A12 como última (el SIF no sabe nada de A13)
  • se envía la siguiente, A13bueno, encadenada con A12
  • este envío está descartado por AEAT ya que "A13" ya existe en el sistema de AEAT (aunque ¡no existe en el SIF!)
  • se reenvía A13bueno como subsanación (sin cambiar nada)
Visto desde la AEAT, la secuencia será efectivamente la que lo que ha probado @pablog2K. Y creo que es admisible (aunque se necesitan dos incidentes, que se raye y que se caiga).

Última edición por antoine0 fecha: 23-10-2024 a las 18:49:09. Razón: Corrección nombre pablog2K
  #3176  
Antiguo 23-10-2024
sglorka sglorka is offline
Miembro
 
Registrado: mar 2017
Ubicación: Tenerife
Posts: 548
Poder: 10
sglorka Va por buen camino
Cita:
Empezado por antoine0 Ver Mensaje
Estoy contigo sobre lo que es lo correcto: si el SIF ha generado A13malo, debe encadenar la siguiente (A13bueno) con este mismo A13malo, no con A12.
Y estoy seguro que esta secuencia (A13bueno encadenada con A13malo y marcada subsanación) será aceptada por AEAT.

Ahora bien, puede haber caso de operatividad que permiten secuencias como:
  • se genera A12 limpiamente
  • se empieza a generar un A13, hay un problema, el sistema se raya, envía un A13malo y al mismo tiempo se cae (incluso puede llegar a no recuperar la respuesta al envío de A13malo)
  • se recupera el sistema, en la base la cadena tiene entonces A12 como última (el SIF no sabe nada de A13)
  • se envía la siguiente, A13bueno, encadenada con A12
  • este envío está descartado por AEAT ya que "A13" ya existe en el sistema de AEAT (aunque ¡no existe en el SIF!)
  • se reenvía A13bueno como subsanación (sin cambiar nada)
Visto desde la AEAT, la secuencia será efectivamente la que lo que ha probado pablo2K. Y creo que es admisible (aunque se necesitan dos incidentes, que se raye y que se caiga).
Bueno esta situación, en teoría, no podría darse, y no me refiero a que se caiga el sistema, me refiero a esta suposición que haces "se recupera el sistema, en la base la cadena tiene entonces A12 como última (el SIF no sabe nada de A13)". Si en el paso anterior has podido enviar A13 y la ha aceptado la Aeat, es por que la tienes registrada en tu sistema, que luego no te enteres de la respuesta porque el sistema se haya caido no es problema porque volverías a enviar A13 (se supone que tu algoritmo la tiene marcada como no enviada) y te daría registro duplicado en la Aeat y aquí no ha pasado nada.
En mi cabeza no cabe que un registro que se envía a la Aeat no esté almacenado en el Sif. El código que se desarrolle para tal cometido, al menos, debe asegurar este punto.
  #3177  
Antiguo 23-10-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.759
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por sglorka Ver Mensaje
Bueno esta situación, en teoría, no podría darse, y no me refiero a que se caiga el sistema, me refiero a esta suposición que haces "se recupera el sistema, en la base la cadena tiene entonces A12 como última (el SIF no sabe nada de A13)". Si en el paso anterior has podido enviar A13 y la ha aceptado la Aeat, es por que la tienes registrada en tu sistema, que luego no te enteres de la respuesta porque el sistema se haya caido no es problema porque volverías a enviar A13 (se supone que tu algoritmo la tiene marcada como no enviada) y te daría registro duplicado en la Aeat y aquí no ha pasado nada.
En mi cabeza no cabe que un registro que se envía a la Aeat no esté almacenado en el Sif. El código que se desarrolle para tal cometido, al menos, debe asegurar este punto.
Si de ha enviado seguramente puedas consultarla cuando hagan la web, debes generar la factura a13 de nuevo y enviarla como subsanacion, si r3cibes la r3spuesta que ya está en el sistema tienes que recibir esa notificación y saber que tienes que hacer.
El problema es que hayas emitido la factura con su qr y no haya dado tiempo a enviarla antes de la avería y es un escenario posible y un potencial problema aquí no cabe subsanacion.

Última edición por ermendalenda fecha: 23-10-2024 a las 19:18:08.
  #3178  
Antiguo 23-10-2024
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Código:
               //creamos la factura paso a paso.
                RegFactuSistemaFacturacion facAPresentar = new RegFactuSistemaFacturacion();

                //rellenamos la cabecera
                ServicioVerifactu.Cabecera cabecera = new ServicioVerifactu.Cabecera();

                //creamos obligado presentador y se lo asignamos.
                ServicioVerifactu.PersonaFisicaJuridicaESType yo = new ServicioVerifactu.PersonaFisicaJuridicaESType();
                yo.NIF = Program.configTaller.Nif;
                yo.NombreRazon = Program.configTaller.NombreTaller;
                //se lo asignamos a la cabecera
                cabecera.ObligadoEmision = yo;

                //Creamos especificacion de remision voluntaria y la asignamos a la cabecera 
                ServicioVerifactu.CabeceraRemisionVoluntaria voluntaria = new ServicioVerifactu.CabeceraRemisionVoluntaria();

                voluntaria.Incidencia = ServicioVerifactu.IncidenciaType.N;
                voluntaria.FechaFinVeriFactu = "";
                voluntaria.IncidenciaSpecified = true;
                //voluntaria.IncidenciaSpecified = false;
                cabecera.RemisionVoluntaria = voluntaria;

                // Asignamos la cabecera a la factura.
                facAPresentar.Cabecera = cabecera;

                //creamos el registro de factura podrian ser varios, pero solo asignaremos uno.
                ServicioVerifactu.RegistroFacturaType[] registroFactura = new ServicioVerifactu.RegistroFacturaType[1];

                //Como vamos a dar de alta la factura , creamos el registro de alta
                ServicioVerifactu.RegistroFacturacionAltaType altaFactura = new ServicioVerifactu.RegistroFacturacionAltaType();

                //Asignamos el ID version
                altaFactura.IDVersion = ServicioVerifactu.VersionType.Item10;//de momento la unica accesible

                //Identificamos la factura y lo asignamos a el Alta
                ServicioVerifactu.IDFacturaExpedidaType iDFactura = new ServicioVerifactu.IDFacturaExpedidaType();
                iDFactura.FechaExpedicionFactura = fechaFactura.Text;//Fecha de presentacion de la factura.
                iDFactura.IDEmisorFactura = Program.configTaller.Nif;//NIF del obligado emisor
                iDFactura.NumSerieFactura = numFactura;//numeo de factura y serie
                altaFactura.IDFactura = iDFactura;
                Program.facturaSeleccionada.Fecha = fechaFactura.Text;
                //asignamos nombre expedidor
                altaFactura.NombreRazonEmisor = Program.configTaller.NombreTaller;

                //Es por subsanacion ?
                altaFactura.Subsanacion = ServicioVerifactu.SubsanacionType.N;
                // Se havia rechazado ?
                altaFactura.RechazoPrevio = ServicioVerifactu.RechazoPrevioType.N;
                if(alta == "RECHAZO")
                {
                    //Es por subsanacion ?
                    altaFactura.Subsanacion = ServicioVerifactu.SubsanacionType.S;
                    // Se havia rechazado ?
                    altaFactura.RechazoPrevio = ServicioVerifactu.RechazoPrevioType.X;
                }
                if (alta == "SUBSANACION")
                {
                    //Es por subsanacion ?
                    altaFactura.Subsanacion = ServicioVerifactu.SubsanacionType.S;
                    // Se havia rechazado ?
                    altaFactura.RechazoPrevio = ServicioVerifactu.RechazoPrevioType.N;
                }
                if (alta == "RECHAZO_SUBSANACION")
                {
                    //Es por subsanacion ?
                    altaFactura.Subsanacion = ServicioVerifactu.SubsanacionType.S;
                    // Se havia rechazado ?
                    altaFactura.RechazoPrevio = ServicioVerifactu.RechazoPrevioType.S;
                }
                //Que tipo de factura estamos creando?
                altaFactura.TipoFactura = ServicioVerifactu.ClaveTipoFacturaType.F1;
                /*

                //Si es rectificativa lo indicamos y cumplimentamos los datos requeridos  ya sea rectificada o sustituida son el mismo diseño 
                altaFactura.TipoRectificativa = ServicioVerifactu.ClaveTipoRectificativaType.I;
                Program.FacturaSeleccionada.Tipo=
                //aqui consignariamos los datos de las facturas para sutitucion y demas.
                int numeroFaR = 1;
                ServicioVerifactu.IDFacturaARType[] listFacturasRectificadas = new ServicioVerifactu.IDFacturaARType[numeroFaR];// creamos lista de facturas rectificadas.
                ServicioVerifactu.IDFacturaARType facSust = new ServicioVerifactu.IDFacturaARType();//rellenamos la primera
                facSust.FechaExpedicionFactura = "FECHA";          //Fecha de emision factura sustituida
                facSust.IDEmisorFactura = Program.configTaller.Nif;//Nif expedidor.
                facSust.NumSerieFactura = "Num Serie";             //Numero de serie factura sustituida 
                listFacturasRectificadas[1] = facSust;             //le asignamos una por una las facturas rectificadas
                altaFactura.FacturasSustituidas = listFacturasRectificadas; //Asignamos al mandato

                //creamos desglose de la rectificacion con los totales a rectificar
                ServicioVerifactu.DesgloseRectificacionType desgloseRectificacion = new ServicioVerifactu.DesgloseRectificacionType();
                desgloseRectificacion.BaseRectificada = "";        // Cuota base a rectificar
                desgloseRectificacion.CuotaRecargoRectificado = "";// Hay recargo equivalencia ??
                desgloseRectificacion.CuotaRectificada = "";       //Cuota iva rectificada;
                altaFactura.ImporteRectificacion = desgloseRectificacion; // asignamos importe de la rectificacion 

                */
                //Asignamos la fecha en que se izo la operacion si no es en la misma que se expide la factura, en este caso si es la misma, si fuera de reparacion puede variar
                altaFactura.FechaOperacion = fechaFactura.Text.Replace("/", "-");

                //Asignamos motivo descripcion de la operacion , en este caso venta de materiales;
                altaFactura.DescripcionOperacion = "Venta de materiales servidos.";// en caso de reparacion de vehiculo asignar aqui la reparacion.

                //Es factura simplificada s/n
                altaFactura.FacturaSimplificadaArt7273 = ServicioVerifactu.SimplificadaCualificadaType.N;

                //Es factura sin identificar destinatario? s/n
                altaFactura.FacturaSinIdentifDestinatarioArt61d = ServicioVerifactu.CompletaSinDestinatarioType.N;

                //por tercero ??
                //altaFactura.EmitidaPorTerceroODestinatario = ServicioVerifactu.TercerosODestinatarioType.T;
                /*
                // aqui se consignaria todo lo de terceros.
                ServicioVerifactu.PersonaFisicaJuridicaType Tercero = new ServicioVerifactu.PersonaFisicaJuridicaType();
                Tercero.NombreRazon = "";
                ServicioVerifactu.IDOtroType idTercero = new ServicioVerifactu.IDOtroType();
                idTercero.CodigoPais = ServicioVerifactu.CountryType2.ES;
                idTercero.ID = "nif"; //identificador
                idTercero.IDType = ServicioVerifactu.PersonaFisicaJuridicaIDTypeType.Item02;
                Tercero.Item = idTercero;
                altaFactura.Tercero = Tercero;
                 */
                int numDestinatarios = 1;
                ServicioVerifactu.PersonaFisicaJuridicaType[] destinatarios = new ServicioVerifactu.PersonaFisicaJuridicaType[numDestinatarios];//lista de destinatarios, para mi siempre 1
                                                                                                                                                //primer destinatario
                ServicioVerifactu.PersonaFisicaJuridicaType destinatario = new ServicioVerifactu.PersonaFisicaJuridicaType(); //creamos nuevo destinatario
                if (cmbPais.Text != "ESPAÑA" || _documento.Text != "NIF-IVA")
                {
                    ServicioVerifactu.IDOtroType idOtro = new ServicioVerifactu.IDOtroType();
                    destinatario.NombreRazon = nom.Text + " " + Apellido1.Text + " " + Apellido2.Text;
                    idOtro.CodigoPais = ServicioVerifactu.CountryType2.ES;// hallar el pais
                    idOtro.ID = Dni.Text;
                    idOtro.IDType = tipoPersona(_documento.SelectedIndex);
                    destinatario.Item = idOtro;
                }
                else
                {
                    //ServicioVerifactu.PersonaFisicaJuridicaESType cliente = new ServicioVerifactu.PersonaFisicaJuridicaESType();
                    destinatario.NombreRazon = nom.Text + " " + Apellido1.Text + " " + Apellido2.Text;
                    //cliente.NIF = Dni.Text;
                    //cliente.NombreRazon = nom.Text + " " + Apellido1.Text + " " + Apellido2.Text;
                    destinatario.Item = Dni.Text; //cliente;
                }


                destinatarios[0] = destinatario;
                //se los asignamos a la factura 
                altaFactura.Destinatarios = destinatarios;
                // ahora creamos el desglose uno por tipo de iva
                ServicioVerifactu.DetalleType[] desgloses = new ServicioVerifactu.DetalleType[numeroIvas];


                //iva 21%
                if (asignado21)
                {
                    ServicioVerifactu.DetalleType tipo21 = new ServicioVerifactu.DetalleType();
                    tipo21.Impuesto = ServicioVerifactu.ImpuestoType.Item01;
                    tipo21.ClaveRegimen = ServicioVerifactu.IdOperacionesTrascendenciaTributariaType.Item01;//Operaciones regimen general
                    tipo21.ClaveRegimenSpecified = true;
                    tipo21.Item = ServicioVerifactu.CalificacionOperacionType.S1;//no esta exenta ni es por inversion del sujeto pasivo...
                    tipo21.TipoImpositivo = "21.00";

                    tipo21.BaseImponibleOimporteNoSujeto = (base21 + totalPortes).ToString("F2").Replace(",", ".");// impon21.Text.Replace(",", ".").Replace(" €", ""); 
                    bases = bases + base21 + totalPortes;// float.Parse(impon21.Text.Replace(" €",""));
                    tipo21.CuotaRepercutida = float.Parse(cuota21.Text.Replace(" €", "")).ToString("F2").Replace(",", ".");// cuota21.Text.Replace(",", ".").Replace(" €", "");
                    cuotas = cuotas + float.Parse(cuota21.Text.Replace(" €", ""));
                    desgloses[numDetalle] = tipo21;
                    numDetalle++;
                }
                //iva10%
                if (asignado10)
                {
                    ServicioVerifactu.DetalleType tipo10 = new ServicioVerifactu.DetalleType();
                    tipo10.ClaveRegimenSpecified = true;
                    tipo10.Impuesto = ServicioVerifactu.ImpuestoType.Item01;
                    tipo10.ClaveRegimen = ServicioVerifactu.IdOperacionesTrascendenciaTributariaType.Item01;//Operaciones regimen general
                    tipo10.Item = ServicioVerifactu.CalificacionOperacionType.S1;//no esta exenta ni es por inversion del sujeto pasivo...
                    tipo10.TipoImpositivo = "10.00";
                    tipo10.BaseImponibleOimporteNoSujeto = float.Parse(impon10.Text.Replace(" €", "")).ToString("F2").Replace(",", ".");// impon10.Text.Replace(",", ".").Replace(" €", "");
                    bases = bases + float.Parse(impon10.Text.Replace(" €", ""));
                    tipo10.CuotaRepercutida = float.Parse(cuota10.Text.Replace(" €", "")).ToString("F2").Replace(",", ".");// cuota10.Text.Replace(",", ".").Replace(" €", "");
                    cuotas = cuotas + float.Parse(cuota10.Text.Replace(" €", ""));
                    desgloses[numDetalle] = tipo10;
                    numDetalle++;
                }
                //Iva4%
                if (asignado4)
                {
                    ServicioVerifactu.DetalleType tipo04 = new ServicioVerifactu.DetalleType();
                    tipo04.Impuesto = ServicioVerifactu.ImpuestoType.Item01;
                    tipo04.ClaveRegimen = ServicioVerifactu.IdOperacionesTrascendenciaTributariaType.Item01;//Operaciones regimen general
                    tipo04.ClaveRegimenSpecified = true;
                    tipo04.Item = ServicioVerifactu.CalificacionOperacionType.S1;//no esta exenta ni es por inversion del sujeto pasivo...
                    tipo04.TipoImpositivo = "04.00";
                    tipo04.BaseImponibleOimporteNoSujeto = float.Parse(impon4.Text.Replace(" €", "")).ToString("F2").Replace(",", "."); //impon4.Text.Replace(",", ".").Replace(" €", "");
                    bases = bases + float.Parse(impon4.Text.Replace(" €", ""));
                    tipo04.CuotaRepercutida = float.Parse(cuota10.Text.Replace(" €", "")).ToString("F2").Replace(",", "."); // cuota4.Text.Replace(",", ".").Replace(" €", "");
                    cuotas = cuotas + float.Parse(cuota4.Text.Replace(" €", ""));
                    desgloses[numDetalle] = tipo04;
                    numDetalle++;
                }
                //sin iva
                if (asignado0)
                {
                    ServicioVerifactu.DetalleType tipo0 = new ServicioVerifactu.DetalleType();
                    tipo0.Impuesto = ServicioVerifactu.ImpuestoType.Item01;
                    tipo0.ClaveRegimen = ServicioVerifactu.IdOperacionesTrascendenciaTributariaType.Item01;//Operaciones regimen general
                    tipo0.ClaveRegimenSpecified = true;
                    tipo0.Item = ServicioVerifactu.CalificacionOperacionType.N1;//si esta exenta
                    tipo0.TipoImpositivo = "0.00";
                    tipo0.BaseImponibleOimporteNoSujeto = float.Parse(impon0.Text.Replace(" €", "")).ToString("F2").Replace(",", ".");// impon0.Text.Replace(",", ".").Replace(" €", "");
                    bases = bases + float.Parse(impon0.Text.Replace(" €", ""));
                    //tipo0.CuotaRepercutida = cuota0.Text;
                    desgloses[numDetalle] = tipo0;
                    numDetalle++;
                }

                // se lo asignamos a la factura 
                altaFactura.Desglose = desgloses;
                //asignamos total impuestos
                altaFactura.CuotaTotal = cuotas.ToString("F2").Replace(",", ".");
                total = cuotas + bases;
                //asignamos total factura;
                altaFactura.ImporteTotal = total.ToString("F2").Replace(",", ".");

                //creamos el encadenamiento 
                ServicioVerifactu.RegistroFacturacionAltaTypeEncadenamiento cadenaFactura = new ServicioVerifactu.RegistroFacturacionAltaTypeEncadenamiento();
                Huella huella = new Huella();
                HuellaVerifactu huellaAnterior = new HuellaVerifactu();
                string _huella = "";
                if (huella.numeroHash() > 0)
                {
                    ServicioVerifactu.EncadenamientoFacturaAnteriorType anterior = new ServicioVerifactu.EncadenamientoFacturaAnteriorType();
                    huellaAnterior = huella.huellaAnterior();
                    anterior.FechaExpedicionFactura = huellaAnterior.FechaFactura;
                    anterior.IDEmisorFactura = huellaAnterior.IdEmisor;
                    anterior.NumSerieFactura = huellaAnterior.NumFactura;
                    anterior.Huella = huellaAnterior.Huella;
                    _huella = huellaAnterior.Huella;
                    cadenaFactura.Item = anterior;
                }
                else
                {
                    cadenaFactura.Item = ServicioVerifactu.PrimerRegistroCadenaType.S;
                }
                altaFactura.Encadenamiento = cadenaFactura;
                //ahora identificamos el software
                ServicioVerifactu.SistemaInformaticoType programaFacturacion = new ServicioVerifactu.SistemaInformaticoType();
                programaFacturacion.NombreSistemaInformatico = "Facturas Taller 2024";//nombre programa 
                programaFacturacion.NombreRazon = "  ";
                programaFacturacion.Item = " ";
                programaFacturacion.Version = Program.version;
                programaFacturacion.IdSistemaInformatico = "A1";
                programaFacturacion.NumeroInstalacion = Program.numeroInstalacion;//numero de instalacion
                programaFacturacion.TipoUsoPosibleSoloVerifactu = ServicioVerifactu.SiNoType.S;//es verifactu
                programaFacturacion.TipoUsoPosibleMultiOT = ServicioVerifactu.SiNoType.N;//varias empresas a la vez
                programaFacturacion.IndicadorMultiplesOT = ServicioVerifactu.SiNoType.N;
                //ServicioVerifactu.PersonaFisicaJuridicaType[] Destinatarios = new ServicioVerifactu.PersonaFisicaJuridicaType[1];
                altaFactura.SistemaInformatico = programaFacturacion;//asignamos tipo systema 
                altaFactura.TipoHuella = ServicioVerifactu.TipoHuellaType.Item01;//solo se admite un tipo
                var fechora = DateTime.Now;
                timeStamp = fechora.ToString("yyyy-MM-dd'T'HH:mm:ssK");
                altaFactura.FechaHoraHusoGenRegistro = timeStamp;// - new TimeSpan(0, 0, 0, 0, fechora.TimeOfDay.Milliseconds);

                //timeStamp = fechora.ToString("yyyy-MM-dd'T'HH:mm:ssK");
                altaFactura.Huella = huella.creaHuellaFactura(Program.configTaller.Nif, numFactura, fechaFactura.Text, tipoFactura, cuotas.ToString("F2").Replace(",", "."), total.ToString("F2").Replace(",", "."), _huella, timeStamp);//asignamos huella

                //registroFactura[1].Item = altaFactura;
                ServicioVerifactu.RegistroFacturaType[] fac = new ServicioVerifactu.RegistroFacturaType[1];
                //fac.Initialize();
                fac[0] = new ServicioVerifactu.RegistroFacturaType();
                fac[0].Item = altaFactura;
                facAPresentar.RegistroFactura = fac;

                //ServicioVerifactu.RegFactuSistemaFacturacionRequest envio = new ServicioVerifactu.RegFactuSistemaFacturacionRequest();
                //envio.RegFactuSistemaFacturacion = facAPresentar;
                /////////////////////////////  <--- Prueba de serializar la factura --->
                XmlSerializer serializaFactura = new XmlSerializer(typeof(ServicioVerifactu.RegFactuSistemaFacturacion));
                SoapAttributes soap = new SoapAttributes();

                string facXml = "";
                using (var xmlw = new StringWriter())
                {
                    XmlWriterSettings settings = new XmlWriterSettings();
                    settings.Indent = true;
                    settings.Encoding = Encoding.UTF8;

                    using (XmlWriter writter = XmlWriter.Create(xmlw, settings))
                    {
                        serializaFactura.Serialize(writter, facAPresentar);
                        facXml = xmlw.ToString();
                    }

                }

                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                RegFactuSistemaFacturacionResponse response = new ServicioVerifactu.RegFactuSistemaFacturacionResponse();
                // response.RespuestaRegFactuSistemaFacturacion = respuesta;
                ServicioVerifactu.RegFactuSistemaFacturacionRequest req = new ServicioVerifactu.RegFactuSistemaFacturacionRequest(facAPresentar);
                req.RegFactuSistemaFacturacion.Cabecera = cabecera;

                ServicioVerifactu.X509DataType x59 = new ServicioVerifactu.X509DataType();


                ServicioVerifactu.RSAKeyValueType key = new ServicioVerifactu.RSAKeyValueType();

                sfPortTypeVerifactuClient client = new ServicioVerifactu.sfPortTypeVerifactuClient(Program.enlaceVerifactu);
                System.ServiceModel.Description.ClientCredentials credenciales = new System.ServiceModel.Description.ClientCredentials();
                //client.ClientCredentials.UserName.UserName = Program.configTaller.Nif;
                client.ClientCredentials.ClientCertificate.Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(Program.certificado, Program.passcertificado);
                client.ClientCredentials.UseIdentityConfiguration = true;
                client.ClientCredentials.SupportInteractive = true;
                //client.ClientCredentials.ServiceCertificate.DefaultCertificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(Program.certificado, Program.passcertificado);

                string test = "";
                //client.Open();
                RespuestaRegFactuSistemaFacturacionType retorno = new RespuestaRegFactuSistemaFacturacionType();
                try
                {
                    retorno = client.RegFactuSistemaFacturacion(facAPresentar);
                }

Recuerden al importar el webservice cambiar en reference System.DateTyme por string, hay un fallo al serializar la fecha , incluye milisegundos lo que da error, esta mas o menos explicado.
Simplemente han de cambiar de donde rellenar los campos, y por ejemplo si envian varios registros a la vez tenerlño en cuenta.
Muchas gracias compañero voy a ver si lo consigo poner en marcha. Es el plan "C" que tengo pensado si no lo consigo con el Delphi 2007 ni con el 2022.
  #3179  
Antiguo 23-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 862
Poder: 3
bmfranky Va por buen camino
Forma de cambiar destinatario de una factura

Hola, segun esto, me cotesto a mi mismo
Cita:
  • Si se ha expedido una factura a nombre de un destinatario existente pero diferente de aquél para el que se realizó la correspondiente operación, deberá expedirse una factura rectificativa en la que constando el mismo destinatario se consignen con signo negativo las magnitudes de la misma.
    Además de lo anterior, se deberá expedir para el destinatario real de las operaciones una nueva factura ajustada a los datos y requisitos contenidos en el artículo 6 del Reglamento de Facturación, factura que no tendrá la consideración de factura rectificativa.
  • Si por el contrario en la factura originalmente expedida se ha cometido un error distinto del anterior en la identificación del destinatario real, por ejemplo, una incompleta denominación del nombre o razón social del destinatario, deberá expedirse una factura rectificativa que subsane, de forma clara e inteligible, el error cometido.
La operativa correcta es emitir una factura rectificativa "R1" , con todas las cantidades en negativo, a nombre del anterior destinatario Con numero de serie diferente ,asignado a las rectificativas, que es la que imprimo como prueba de la anulacion, creando un registro de sustitucion y a la vez, creo una factura ordinaria "F1", consignando los datos del destinatario correcto,que es la que imprimo y le doy al destinatario, creando un nuevo registro de alta, encadeno y envio los 2 registros.

1-> Emito una factura R1 FacR001, con las cantidades en negativo , genero mi factura A serie Rectificativa, que imprimo para el cliente anterior generando un registro de Rectificacion Bn4 con los datos de la factura Fac001, encadenado con el registro anterior sea cual sea (por claridad Bn3)

2-> Emito una factura F1 Fac002 con los datos ya correctos con serie de facturas normales ,para enviar al cliente correcto generando un registro de alta, Bn5 con los datos de la factura Fac002, encadenado con Bn4.



Gracias de todas formas por tu interes @ermendalenda

Última edición por bmfranky fecha: 23-10-2024 a las 20:16:36.
  #3180  
Antiguo 23-10-2024
sglorka sglorka is offline
Miembro
 
Registrado: mar 2017
Ubicación: Tenerife
Posts: 548
Poder: 10
sglorka Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola, segun esto, me cotesto a mi mismo

La operativa correcta es emitir una factura rectificativa "R1" , con todas las cantidades en negativo, a nombre del anterior destinatario Con numero de serie diferente ,asignado a las rectificativas, que es la que imprimo como prueba de la anulacion, creando un registro de sustitucion y a la vez, creo una factura ordinaria "F1", consignando los datos del destinatario correcto,que es la que imprimo y le doy al destinatario, creando un nuevo registro de alta, encadeno y envio los 2 registros.

1-> Emito una factura R1 FacR001, con las cantidades en negativo , genero mi factura A serie Rectificativa, que imprimo para el cliente anterior generando un registro de Rectificacion Bn4 con los datos de la factura Fac001, encadenado con el registro anterior sea cual sea (por claridad Bn3)

2-> Emito una factura F1 Fac002 con los datos ya correctos con serie de facturas normales ,para enviar al cliente correcto generando un registro de alta, Bn5 con los datos de la factura Fac002, encadenado con Bn4.



Gracias de todas formas por tu interes @ermendalenda
Este punto al que te refieres
"Si se ha expedido una factura a nombre de un destinatario existente pero diferente de aquél para el que se realizó la correspondiente operación, deberá expedirse una factura rectificativa en la que constando el mismo destinatario se consignen con signo negativo las magnitudes de la misma." ...
puede ser incorrecto, ya que sólo tendrán consideración de rectificativas ( apartado 6 del artículo 15) la facturas que se expidan por alguna de las causas previstas en los apartados 1 y 2 del artículo 15 del reglamento de facturación (Real Decreto 1619/2012). En ningún caso, errar en el destinatario de la operación ( no en algún dato descriptivo del mismo) de forma que no era la persona a la que iba dirigida la factura, se contempla en dichos apartados. Para estos casos, existe la factura de abono (factura normal en negativo).

Yo barajaría dos opciones
1.- Anular la factura mediante un registro de anulación y emitir una nueva factura al cliente correcto
2.- Emitir una factura de abono en negativo al cliente incorrecto y otra factura normal con el cliente correcto

Yo elegiría la primera ,ya que de esta forma, el cliente que erramos no se entera de nada. Si eliges la segunda, debes enviar las dos facturas ( Factura errónea y Abono ) al cliente para que las declare como recibidas y se puedean conciliar ante un hipotético cruce de hacienda
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
Hijo de Informáticos gluglu Humor 3 13-03-2007 11:05:35
Adictos informaticos ... Trigger Humor 2 11-10-2004 12:18:32
Nosotros los Informáticos Trigger Humor 1 10-10-2004 14:58:09
Patrón de los Informáticos. obiwuan Varios 20 10-09-2003 14:44:54
Chistes Informaticos jhonny Humor 2 11-08-2003 21:59:09


La franja horaria es GMT +2. Ahora son las 18:21:00.


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