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
  #2921  
Antiguo 17-10-2024
edari edari is offline
Miembro
 
Registrado: jun 2021
Posts: 332
Poder: 5
edari Va por buen camino
Cita:
Empezado por jguarda Ver Mensaje
He buscado donde presentar la declaración responsable para comenzar a hacer pruebas, no he consguido encontrar donde entregar esto, alguien sabe donde se hace ?
Que yo sepa la declaración responsable no hace falta para hacer pruebas
  #2922  
Antiguo 17-10-2024
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 260
Poder: 5
antoine0 Va por buen camino
Cita:
Empezado por edari Ver Mensaje
Y en caso que esté caído su servidor, qué pasa con el husohorario que generamos en el envío fallido?
¿Dónde está el problema?
Si no sabes en qué huso horario estas o qué hora es porque se ha caído un servidor de tu entorno que normalmente te suministra la información, o la máquina que ha facturado no se recuerda de dónde está (GPS offline) o una cosa similar, entonces generas el hora de tu sistema (que se supone estará dentro de los márgenes) y lo apuntas el huso horario Z (GMT) o el huso local de tu sistema, dependiendo de si recuperas la hora UTc o la hora local, y la AEAT debe ser contenta (¡por eso sirven los husos horarios!)

La AEAT compara las fechas-horas en la escala UTc, es decir independientemente de los husos horarios y de su efecto sobre las horas «locales».
Es por esto que al principio algunos tenían problemas con las horas, no indicaban el huso correspondiente con la hora que suministraban por tanto había un descuadre.
Pero si conservas juntas la información de la hora y del huso horario en el cual se lee esta hora, no habrá problema.

Ejemplo práctico: dentro de semana y media vamos a dormir una hora más por el fin del horario de verano. Entonces después de las 02:59:59 serán las 02:00:00 (en la península). Pero no es ningún problema si se conserva los husos horarios: después de las 02:59:59+02:00 serán las 02:00:00+01:00. Y es univoco. En horario UTc (él que usa la AEAT y nuestro ordenadores internamente), los relojes pasan de 00:59:59Z a 01:00:00Z; lógico y sin problema.
  #2923  
Antiguo 17-10-2024
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 194
Poder: 7
unomasmas Va por buen camino
Cita:
Empezado por sglorka Ver Mensaje
El método que utilizas para iniciar una factura o tique es el que siempre se ha hecho, no había necesidad de encadenamiento y por tanto, podías iniciar y terminar el proceso en cualquier momento. Con la entrada de Verifactu, debes cambiar por completo esa filosofía porque ese caso que comentas, puede ocurrir en cualquier software donde exista concurrencia entre los usuarios a la hora de emitir facturas.

La idea es iniciar el proceso de facturación utilizando un contador auxiliar que no es el de factura o tique, por ejemplo, comenzar con una nota de entrega (albarán), ambos usuarios inician el proceso de venta con el contador de notas de entrega (cada uno con su número obtenido), el primero inicia la venta con 2 ítems y posteriormente, aparca el documento porque el cliente no le pasa la tarjeta, el segundo usuario termina su documento y solicita un número de factura bloqueando el contador de facturas para que sólo él pueda obtener un número, si el primer usuario recupera el documento aparcado y quiere emitir la factura en ese mismo momento, se encontrará con el contador bloqueado y tendrá que esperar. Desde que obtiene el número de factura el segundo usuario, genera el registro de facturación xml y desbloquea el contador. Ahora, el primer usuario podrá emitir su factura realizando el mismo proceso.

El proceso de bloqueo es muy rápido, ya que sólo requiere obtener el siguiente número de factura, asignárselo al documento que quiere emitir y generar el Xml con su fecha de creación, la del momento de generación del xml, no del inicio del proceso de venta.

No hay otra manera de asegurar la emisión de facturas en orden cronológico de número y fecha y además, asegurar el encadenamiento con el registro anterior. Al utilizar este contador de notas de entrega aseguras, por ejemplo, desechar el documento en caso de que te hayas equivocado, emitir un albarán en vez de una factura, porque el cliente era un cliente de resumen mensual de albaranes y no te habías percatado, aparcar operaciones como se hace en hostelería cuando gestionas mesas, emitir una factura completa porque el cliente antes de pagar te dice que quiere sus datos en ella, etc..
Muchas gracias por responder y especialmente, por lo detallada que es la respuesta :-)

Cita:
Empezado por rci Ver Mensaje
En nuestro caso, el numero de factura no se asigna hasta justo en el momento de guardar, así que el primer tpv que salva la factura coge el contador le toca. el número no se asigna al iniciar la venta.
Cita:
Empezado por pablog2k Ver Mensaje
justo esto iba a comentar, nosotros hacemos igual, hasta que la factura/ticket no está 'finalizada', no se le asigna el número
Muchas gracias por vuestra respuesta. A cambiar el planteamiento...
  #2924  
Antiguo 17-10-2024
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 194
Poder: 7
unomasmas Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola, una pregunta , como comente en su dia yo usaba un cliente ficticio llamado cliente contado y cif 9999999X, como ya sabemos ahora eso no se puede(Vale antes tampoco, pero colaba), mi pregunta es, en una factura "Normal" en la que no incluya datos del cliente, a saber en nombre pondria cliente contado, sin mas datos, pero el resto igual.


Seria tipo "F1" y marcaria FacturaSimplificadaArt7273 = S
o
Seria tipo "F2" y marcaria FacturaSinIdentifDestinatarioArt61d =S

O me estoy haciendola picha un lio.
Gracias por vuestras respuestas.
Yo creo que la opción b:
Seria tipo "F2" y marcaria FacturaSinIdentifDestinatarioArt61d=S
  #2925  
Antiguo 17-10-2024
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 194
Poder: 7
unomasmas Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Empezado por delphiGar Ver Mensaje
Hola sglorka, el primer caso es correcto, es decir:

se pueden emitir Facturas completas y Facturas Simplificadas cualificadas (con identificación de destinatario) y ambas se informan con la clave F1, sólo en caso de factura simplificada cualificada se marca la opción FacturaSimplificadaArt7273=S

pero en el segundo caso, tanto la factura simplicada no cualificada como la factura ordinaria sin identificar se informan con la clave F2, pero para el caso de la factura ordinaria sin identificar se pone la clave FacturaSinIdentifDestinatarioArt61d a S.

Lo de Factura ordinaria sin identificar es porque se utiliza un identificador que no lo recoge la AEAT, por ejemplo un pasaporte o un documento de identificacion de otro pais. En este caso en destinatario habria que poner el IDOtro en vez del NIF.

Creo que ya lo tengo, seria tipo factura "F2" sin marcar nada, es que no encontraba esta aclaracion, gracias @delphigar
Parece (al menos, yo entiendo) que delphiGar dice que la factura ordinaria sin identificar se usa para un cliente extranjero (con pasaporte u otro documento de identificación) y añade que habría que poner el IDOtro, pero me parece que no es compatible: si señalas la etiqueta FacturaSinIdentifDestinatarioArt61d=S te obliga a que el tipo de factura sea "F2" ¿No? y con este tipo de factura no se puede dar ningún dato del bloque de Destinatarios...

Resulta el error 1190:
<tikR:CodigoErrorRegistro>1190</tikR:CodigoErrorRegistro>
<tikRescripcionErrorRegistro>Si TipoFactura es F2 o R5 el bloque Destinatarios no puede estar cumplimentado.</tikRescripcionErrorRegistro>
  #2926  
Antiguo 17-10-2024
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 194
Poder: 7
unomasmas Va por buen camino
Cita:
Empezado por Jesusggc Ver Mensaje
...He puesto consulta a verifactu, y contestan lo siguiente:
Otra cuestión a tener en cuenta, es que está previsto que los sistemas informáticos de facturación, tengan indisponibilidades como cortes de luz, falta de conexión, fallos en el sistema , etc. y se pueda superar el tiempo establecido...En esos casos deben activar el campo "Incidencia" (ver diseño de registro, hoja "1)DR Remisión Alta-Anul.VF-Req.") para que no les aparezca dicho error
Me preocupa esto. ¿Habéis pensado cómo implementar la posibilidad de señalar el campo "Incidencia"? Se supone que el proceso debe ser lo más automatizado posible, por lo que no veo una buena solución la intervención humana; principalmente porque el usuario típico no se va a parar a pensar en procedimientos extraordinarios...
  #2927  
Antiguo 18-10-2024
edari edari is offline
Miembro
 
Registrado: jun 2021
Posts: 332
Poder: 5
edari Va por buen camino
Cita:
Empezado por antoine0 Ver Mensaje
¿Dónde está el problema?
Si no sabes en qué huso horario estas o qué hora es porque se ha caído un servidor de tu entorno que normalmente te suministra la información, o la máquina que ha facturado no se recuerda de dónde está (GPS offline) o una cosa similar, entonces generas el hora de tu sistema (que se supone estará dentro de los márgenes) y lo apuntas el huso horario Z (GMT) o el huso local de tu sistema, dependiendo de si recuperas la hora UTc o la hora local, y la AEAT debe ser contenta (¡por eso sirven los husos horarios!)

La AEAT compara las fechas-horas en la escala UTc, es decir independientemente de los husos horarios y de su efecto sobre las horas «locales».
Es por esto que al principio algunos tenían problemas con las horas, no indicaban el huso correspondiente con la hora que suministraban por tanto había un descuadre.
Pero si conservas juntas la información de la hora y del huso horario en el cual se lee esta hora, no habrá problema.

Ejemplo práctico: dentro de semana y media vamos a dormir una hora más por el fin del horario de verano. Entonces después de las 02:59:59 serán las 02:00:00 (en la península). Pero no es ningún problema si se conserva los husos horarios: después de las 02:59:59+02:00 serán las 02:00:00+01:00. Y es univoco. En horario UTc (él que usa la AEAT y nuestro ordenadores internamente), los relojes pasan de 00:59:59Z a 01:00:00Z; lógico y sin problema.

En realidad me refería a la etiqueta FechaHoraHusoGenRegistro que mandamos en el fichero con la fecha de creación y que ya he podido comprobar en mis propias pruebas que si no cumple el margen de tiempo que estás obligado te devuelve el error

<tikR:CodigoErrorRegistro>2004</tikR:CodigoErrorRegistro>
<tikRescripcionErrorRegistro>El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos.</tikRescripcionErrorRegistro>

Mi duda en que si yo genero este valor a las 9:00 de hoy según estoy haciendo el envío y su servidor está out media hora, cuando vuelva a subir el fichero me dará este error o que se supone que habrá que hacer

A eso iba




  #2928  
Antiguo 18-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 edari Ver Mensaje
En realidad me refería a la etiqueta FechaHoraHusoGenRegistro que mandamos en el fichero con la fecha de creación y que ya he podido comprobar en mis propias pruebas que si no cumple el margen de tiempo que estás obligado te devuelve el error

<tikR:CodigoErrorRegistro>2004</tikR:CodigoErrorRegistro>
<tikRescripcionErrorRegistro>El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos.</tikRescripcionErrorRegistro>

Mi duda en que si yo genero este valor a las 9:00 de hoy según estoy haciendo el envío y su servidor está out media hora, cuando vuelva a subir el fichero me dará este error o que se supone que habrá que hacer

A eso iba

Cita:
Cita:
Buenas tardes:
Este es un error de los denominados admisibles (ver documento de validaciones, apartado "4.3 Tratamiento de los errores admisibles ") y debido a ello se admitirá el registro. Este error en concreto, se excepciona de la necesidad de ser subsanado por lo que necesitarían realizar ninguna subsanación posteriormente.
Otra cuestión a tener en cuenta, es que está previsto que los sistemas informáticos de facturación, tengan indisponibilidades como cortes de luz, falta de conexión, fallos en el sistema , etc. y se pueda superar el tiempo establecido...En esos casos deben activar el campo "Incidencia" (ver diseño de registro, hoja "1)DR Remisión Alta-Anul.VF-Req.") para que no les aparezca dicho error


Hola, como indicaban en un post anterior, la administracion ya lo ha tenido en cuenta, simplemente se ha de indicar incidencia al realizar el envio, la forma de acerlo seria variada , por ejemplo, crear una lista de registros, en la añadir encadenadamente los registros generados, cuando no hay conexion, y en el momento de volver a tenerla, simplemente reenviar la lista completa marcando le check de incidencia, o como lo hare yo, en mi caso personal, no dejando abanzar hasta poder enviar el registro, aplicando un temporizador , reintente el envio x veces, si en esas veces no lo consigo, archivare el alta, sin dejar facturar hasta que se restablezca la conexion.

Pensandolo mejor , como hasta que no tengo la confirmacion de que ha llegado bien la consulta, no guardo nada en la base de datos, ni modifico el contador de facturas, voy a emitir un mensaje con un temporizador que me indique la incidencia y que vuelva a intentar el envio en por ejemplo 60" , si veo que sigue sin funcionar, guardare la factura como proforma, para volver a intentarlo mas tarde, sin perder todo el progreso de generacion de la misma, estamos hablando de que no podemos comunicar con la administracion, no es el mismo caso que el vuestro , yo no tengo que garantizar el poder continuar enviando / entregando facturas al cliente, perfectamente puedo cobrarle una proforma y enviarle la copia de la factura en otro momento.

Última edición por bmfranky fecha: 18-10-2024 a las 09:26:50.
  #2929  
Antiguo 18-10-2024
edari edari is offline
Miembro
 
Registrado: jun 2021
Posts: 332
Poder: 5
edari Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola, como indicaban en un post anterior, la administracion ya lo ha tenido en cuenta, simplemente se ha de indicar incidencia al realizar el envio, la forma de acerlo seria variada , por ejemplo, crear una lista de registros, en la añadir encadenadamente los registros generados, cuando no hay conexion, y en el momento de volver a tenerla, simplemente reenviar la lista completa marcando le check de incidencia, o como lo hare yo, en mi caso personal, no dejando abanzar hasta poder enviar el registro, aplicando un temporizador , reintente el envio x veces, si en esas veces no lo consigo, archivare el alta, sin dejar facturar hasta que se restablezca la conexion.

Pensandolo mejor , como hasta que no tengo la confirmacion de que ha llegado bien la consulta, no guardo nada en la base de datos, ni modifico el contador de facturas, voy a emitir un mensaje con un temporizador que me indique la incidencia y que vuelva a intentar el envio en por ejemplo 60" , si veo que sigue sin funcionar, guardare la factura como proforma, para volver a intentarlo mas tarde, sin perder todo el progreso de generacion de la misma, estamos hablando de que no podemos comunicar con la administracion, no es el mismo caso que el vuestro , yo no tengo que garantizar el poder continuar enviando / entregando facturas al cliente, perfectamente puedo cobrarle una proforma y enviarle la copia de la factura en otro momento.

Aclarado, muchas gracias
  #2930  
Antiguo 18-10-2024
novatico novatico is offline
Miembro
 
Registrado: dic 2022
Posts: 370
Poder: 4
novatico Va por buen camino
Cita:
Empezado por unomasmas Ver Mensaje
Me preocupa esto. ¿Habéis pensado cómo implementar la posibilidad de señalar el campo "Incidencia"? Se supone que el proceso debe ser lo más automatizado posible, por lo que no veo una buena solución la intervención humana; principalmente porque el usuario típico no se va a parar a pensar en procedimientos extraordinarios...
En mi caso, siempre incluyo la "Incidencia=N" en el proceso normal, aunque no se obligatoria. Esto me permitirá sustituirla por "Incidencia=S" en el caso de tener que reenviarlo de forma automatizada, ya que, como ese dato no forma parte ni del cálculo del HASH ni del QR, no hay problema en modificarlo.
  #2931  
Antiguo 18-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 novatico Ver Mensaje
En mi caso, siempre incluyo la "Incidencia=N" en el proceso normal, aunque no se obligatoria. Esto me permitirá sustituirla por "Incidencia=S" en el caso de tener que reenviarlo de forma automatizada, ya que, como ese dato no forma parte ni del cálculo del HASH ni del QR, no hay problema en modificarlo.
Si, es lo logico, yo uso un bool para consultar el estado en la regeneracion envio.
Código:
 
//en la parte del load del form incluyo indencia = false;


voluntaria.Incidencia = ServicioVerifactu.IncidenciaType.N;
                if(incidencia)
                {
                    voluntaria.Incidencia = ServicioVerifactu.IncidenciaType.S;
                }
Al intentar el envio establezco el valor en true;
Código:
                try
                {
                    retorno = client.RegFactuSistemaFacturacion(facAPresentar);
                }
                catch
                {
                    incidencia = true;
                    consolaError cE = new consolaError();
                    cE.Text = "Ha habido un error en la conexion con el servicio web de hacienda, por favor verifique el estado de su conexion a internet, en 60\"  vuelva a intentar el envio, si tampoco tiene exito, se archivara esta factura como proforma y se le indicara el numero de la misma , para que vuelva a proceder al envio de la misma mas tarde";
                    cE.Cuentaatras = 60;
                    cE.Errores = false;
                    cE.volverAVer.Visible = false;
                    cE.ShowDialog();
}
  #2932  
Antiguo 18-10-2024
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 260
Poder: 5
antoine0 Va por buen camino
Cita:
Empezado por edari Ver Mensaje
Mi duda en que si yo genero este valor a las 9:00 de hoy según estoy haciendo el envío y su servidor está out media hora, cuando vuelva a subir el fichero me dará este error o que se supone que habrá que hacer
La cortesía en tal caso sería que los de AEAT desactive aquel control de hora después de re-arrancar la plataforma después de un corte (poco probable) de la totalidad del servicio Veri*factu durante media hora.
Pero me imagino que si pasaría tal cosa, tendrá la cabeza en un montón de cosas y este problema será de los últimos que les preocupará.
  #2933  
Antiguo 18-10-2024
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 194
Poder: 7
unomasmas Va por buen camino
Cita:
Empezado por novatico Ver Mensaje
En mi caso, siempre incluyo la "Incidencia=N" en el proceso normal, aunque no se obligatoria. Esto me permitirá sustituirla por "Incidencia=S" en el caso de tener que reenviarlo de forma automatizada, ya que, como ese dato no forma parte ni del cálculo del HASH ni del QR, no hay problema en modificarlo.
Cita:
Empezado por bmfranky Ver Mensaje
Si, es lo logico, yo uso un bool para consultar el estado en la regeneracion envio.
Código:
 
//en la parte del load del form incluyo indencia = false;


voluntaria.Incidencia = ServicioVerifactu.IncidenciaType.N;
                if(incidencia)
                {
                    voluntaria.Incidencia = ServicioVerifactu.IncidenciaType.S;
                }
Al intentar el envio establezco el valor en true;
Código:
                try
                {
                    retorno = client.RegFactuSistemaFacturacion(facAPresentar);
                }
                catch
                {
                    incidencia = true;
                    consolaError cE = new consolaError();
                    cE.Text = "Ha habido un error en la conexion con el servicio web de hacienda, por favor verifique el estado de su conexion a internet, en 60\"  vuelva a intentar el envio, si tampoco tiene exito, se archivara esta factura como proforma y se le indicara el numero de la misma , para que vuelva a proceder al envio de la misma mas tarde";
                    cE.Cuentaatras = 60;
                    cE.Errores = false;
                    cE.volverAVer.Visible = false;
                    cE.ShowDialog();
}
Muchas gracias a ambos :-) Estoy pensando que podría servir incluso en caso de problemas de otro tipo; no sólo de caídas del sistema... (aunque es una idea que habrá que analizar un poco...)
  #2934  
Antiguo 18-10-2024
[email protected] frrr@grupo3rs.c is offline
Miembro
 
Registrado: mar 2024
Posts: 116
Poder: 3
frrr@grupo3rs.c Va por buen camino
Error verificacion/carga XML

Compañeros, tengo un problema que no consigo que pase.

En el RegistroFactura / RegistroAlta

</IDFactura>

<NombreRazonEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd"/>

<TipoFactura xmlns ........................


Cuando intento cargar el xml, la linea <NombreRazonEmisor xmlns me dice Error registro : 1100, valor o tipo incorrecto de campo : NombreRazonEmisor y no consigo subsanar. Alguien puede indicarme alguna pista por donde seguir investigando

Gracias
  #2935  
Antiguo 18-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 unomasmas Ver Mensaje
Muchas gracias a ambos :-) Estoy pensando que podría servir incluso en caso de problemas de otro tipo; no sólo de caídas del sistema... (aunque es una idea que habrá que analizar un poco...)
Para otros tipos de incidencia, he creado un condicionante llamado alta, segun el error la cambio , asi al reeenviar ya me codifica el motivo o mejor dicho que variar segun el motivo.
Código:
//Es por subsanacion ?
                altaFactura.Subsanacion = ServicioVerifactu.SubsanacionType.N;
                // Se havia rechazado ?
                altaFactura.RechazoPrevio = ServicioVerifactu.RechazoPrevioType.N;
//Si alta es diferente a "ALTA" , que es el valor iniucial actuamos al respecto
                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;
                }

El estado lo asigno segun la respuesta del servicio.
Código:
                XmlSerializer serializaFactura2 = new XmlSerializer(typeof(RespuestaRegFactuSistemaFacturacionType));


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

                    using (XmlWriter writter = XmlWriter.Create(xmlw, settings))
                    {
                        serializaFactura2.Serialize(writter, retorno);
                        info = xmlw.ToString();
                    }

                }
                string EstadoRegistro = "";
                Match match1 = Regex.Match(info, "<EstadoRegistro>(.*?)</EstadoRegistro>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
                if (null != match1.Value)
                {
                    EstadoRegistro = match1.Value.Replace("<EstadoRegistro>", "");
                    EstadoRegistro = EstadoRegistro.Replace("</EstadoRegistro>", "");
                    switch (EstadoRegistro)
                    {
                        case "Correcto":
                            {
                                txtConsulta.BackColor = Color.LawnGreen;
                                txtConsulta.Text = "Correcto";
                                huella.insertaHuella(new HuellaVerifactu(1, "CONTADO", facAPresentar.Cabecera.ObligadoEmision.NIF, txtSerie.Text, txtNfac.Text, altaFactura.FechaOperacion, altaFactura.TipoFactura.ToString(), altaFactura.CuotaTotal, altaFactura.ImporteTotal, altaFactura.Huella, altaFactura.FechaHoraHusoGenRegistro));
                                
                                //esto forma parte de mi sistema para guardar las factura... :D
                                Program.VehiculoSeleccionado.Marca = " ";
                                Program.VehiculoSeleccionado.Modelo = " ";
                                Program.facturaSeleccionada.Tasa = " ";
                                if (txtPortes.Text != "")
                                {
                                    Program.facturaSeleccionada.Portes = txtPortes.Text;
                                }
                                else
                                {
                                    Program.facturaSeleccionada.Portes = " ";
                                }
                                Program.facturaSeleccionada.ClientUID = 0;// Program.ClienteSelecionado.ClientUID;
                                Program.facturaSeleccionada.TipoFactura = "CONTADO";
                                Program.facturaSeleccionada.Tipo = "F2";
                                Program.facturaSeleccionada.Motivo = "";
                                Program.facturaSeleccionada.Regimen = "01";
                                Program.facturaSeleccionada.Sujeto = "S1";
                                Program.facturaSeleccionada.Exento = "";
                                Program.facturaSeleccionada.Fecha = altaFactura.FechaOperacion;// Program.RepSeleccionada.FechaReparacion;
                                Program.facturaSeleccionada.Matricula = " ";
                                Program.facturaSeleccionada.NumReparacion = 0;
                                Program.facturaSeleccionada.NºHoras = " ";// Program.madobra.Cantidad;
                                Program.facturaSeleccionada.DTOHoras = " ";//Program.madobra.Descuento;
                                Program.facturaSeleccionada.PrecioHoras = " ";//Program.madobra.Precio;
                                Program.facturaSeleccionada.TipoIva = Program.currentIva;
                                Program.facturaSeleccionada.Tasa = " ";// Program.madobra.Tasa;
                                Program.facturaSeleccionada.Materiales = info;
                                //Program.facturaSeleccionada.Portes = Program.madobra.Portes;
                                //Program.facturaSeleccionada.Materiales = " ";// Program.RepSeleccionada.Reparacion;
                                Program.facturaSeleccionada.NºFactura = Convert.ToInt32(txtNfac.Text);                                                 //
                                
                                    Program.configTaller.NºFactura++;
                                    ConfigDB.actualizaNfac(Program.configTaller.NºFactura.ToString());
                                    FacturasDB.grabaFacturaSimple(Program.facturaSeleccionada, "contado", Program.currentYear);//,"");
                                    MaterialesDB.agregar(Program.MaterialesSeleccionados, "contado"+Program.currentYear);
                               

                                muestraFactura2 vf1 = FacturasDB.asignaReporteFacturaVenta();
                                InterfaceFunciones Interface1 = this.Owner as InterfaceFunciones;
                                Interface1.reiniciaBlocker("Parar");
                                vistaPrevia vP = new vistaPrevia(vf1);
                                vP.Text = "Factura Nº " + txtSerie.Text + txtNfac.Text;
                                vP.ShowDialog(Owner);
                                borra.PerformClick();
                                break;
                            }
                        case "AceptadoConErrores":
                            {
                                txtConsulta.BackColor = Color.Yellow;
                                txtConsulta.Text = "AceptadoConErrores";
                                if(alta=="ALTA")
                                {
                                    alta = "SUBSANACION";
                                }
                                else
                                {
                                    alta = "RECHAZO_SUBSANACION";
                                }
                                Match match2 = Regex.Match(info, "<CodigoErrorRegistro>(.*?)</CodigoErrorRegistro>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
                                string codigoRegistro = match2.Value.Replace("<CodigoErrorRegistro>", "");
                                codigoRegistro = codigoRegistro.Replace("</CodigoErrorRegistro>", "");
                                Match match3 = Regex.Match(info, "<DescripcionErrorRegistro>(.*?).", RegexOptions.IgnoreCase | RegexOptions.Singleline);
                                string DescripcionRegistro = match2.Value.Replace("<DescripcionErrorRegistro>", "");
                                txt_motivo.Text = codigoRegistro + " -> " + DescripcionRegistro;
                                break;
                            }
                        case "Incorrecto":
                            {
                                txtConsulta.BackColor = Color.Red;
                                txtConsulta.Text = "Errores";
                                alta="RECHAZO";
                                Match match2 = Regex.Match(info, "<CodigoErrorRegistro>(.*?)</CodigoErrorRegistro>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
                                string codigoRegistro = match2.Value.Replace("<CodigoErrorRegistro>", "");
                                codigoRegistro = codigoRegistro.Replace("</CodigoErrorRegistro>", "");
                                Match match3 = Regex.Match(info, "<DescripcionErrorRegistro>(.*?)</DescripcionErrorRegistro>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
                                string DescripcionRegistro = match3.Value.Replace("<DescripcionErrorRegistro>", "");
                                DescripcionRegistro = DescripcionRegistro.Replace("</DescripcionErrorRegistro>", "");
                                txt_motivo.Text = codigoRegistro + " -> " + DescripcionRegistro;
                                break;
                            }
                        default://Incorrecta
                            {
                                txtConsulta.BackColor = Color.Red;
                                txtConsulta.Text = "Errores";
                                Match match2 = Regex.Match(info, "<CodigoErrorRegistro>(.*?)</CodigoErrorRegistro>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
                                string codigoRegistro = match2.Value.Replace("<CodigoErrorRegistro>", "");
                                codigoRegistro = codigoRegistro.Replace("</CodigoErrorRegistro>", "");
                                Match match3 = Regex.Match(info, "<DescripcionErrorRegistro>(.*?)</DescripcionErrorRegistro>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
                                string DescripcionRegistro = match3.Value.Replace("<DescripcionErrorRegistro>", "");
                                DescripcionRegistro = DescripcionRegistro.Replace("</DescripcionErrorRegistro>", "");
                                txt_motivo.Text = codigoRegistro + " -> " + DescripcionRegistro;
                                break;
                            }
                    }
                }

No sera la forma mas limpia de hacerlo, pero a mi me funciona.
  #2936  
Antiguo 18-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 [email protected] Ver Mensaje
Compañeros, tengo un problema que no consigo que pase.

En el RegistroFactura / RegistroAlta

</IDFactura>

<NombreRazonEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd"/>

<TipoFactura xmlns ........................


Cuando intento cargar el xml, la linea <NombreRazonEmisor xmlns me dice Error registro : 1100, valor o tipo incorrecto de campo : NombreRazonEmisor y no consigo subsanar. Alguien puede indicarme alguna pista por donde seguir investigando

Gracias

Hola, puedes postear el trozo del xml completo, para ver si esta mal formado?
  #2937  
Antiguo 18-10-2024
[email protected] frrr@grupo3rs.c is offline
Miembro
 
Registrado: mar 2024
Posts: 116
Poder: 3
frrr@grupo3rs.c Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola, puedes postear el trozo del xml completo, para ver si esta mal formado?

<IDVersion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">1.0</IDVersion>
<IDFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<IDEmisorFactura>33461360V</IDEmisorFactura>
<NumSerieFactura>2024</NumSerieFactura>
<FechaExpedicionFactura>15-10-2024</FechaExpedicionFactura>
</IDFactura>
<NombreRazonEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd"/>


con esto es suficiente o subo el xml completo
  #2938  
Antiguo 18-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 [email protected] Ver Mensaje
<IDVersion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">1.0</IDVersion>
<IDFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<IDEmisorFactura>33461360V</IDEmisorFactura>
<NumSerieFactura>2024</NumSerieFactura>
<FechaExpedicionFactura>15-10-2024</FechaExpedicionFactura>
</IDFactura>
<NombreRazonEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd"/>


con esto es suficiente o subo el xml completo
Hola, estas cerrando la etiqueta, antes de rellenarla con ningun dato.
Cita:
SuministroInformacion.xsd"/> Sobra, la barra al final y luego has de poner el nombre asi: SuministroInformacion.xsd"> luego cierras la etiqueta

Cita:
<NombreRazonEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">Nombre emisor facturas</NombreRazonEmisor>

Asi.
  #2939  
Antiguo 18-10-2024
Jesusggc Jesusggc is offline
Miembro
 
Registrado: may 2024
Posts: 45
Poder: 0
Jesusggc Va por buen camino
Como estais formando NumSerieFactura

Buenas, me surge una duda

vosotros como estáis formando el campo NumSerieFactura?

las indicaciones son : Numero de Serie + Numero Factura

Me gustaría que saber como lo formais.

Yo, resumiendo, Tengo una tabla distinta de mi tabla de facturas llamada RegistrosFacturacion donde almaceno los registros de alta y anulacion, dicha tabla tiene un campo autoincrementado Id. NumSerieFactura lo formo así : Id/SerieNumero

Ejemplo:
Serie factura = 24
Numero Factura = 511
Id registro facturacion = 333

NumSerieFactura = 333/24511

Os agradezco vuestras opiniones
  #2940  
Antiguo 18-10-2024
novatico novatico is offline
Miembro
 
Registrado: dic 2022
Posts: 370
Poder: 4
novatico Va por buen camino
Cita:
Empezado por Jesusggc Ver Mensaje
Buenas, me surge una duda

vosotros como estáis formando el campo NumSerieFactura?

las indicaciones son : Numero de Serie + Numero Factura

Me gustaría que saber como lo formais.

Yo, resumiendo, Tengo una tabla distinta de mi tabla de facturas llamada RegistrosFacturacion donde almaceno los registros de alta y anulacion, dicha tabla tiene un campo autoincrementado Id. NumSerieFactura lo formo así : Id/SerieNumero

Ejemplo:
Serie factura = 24
Numero Factura = 511
Id registro facturacion = 333

NumSerieFactura = 333/24511

Os agradezco vuestras opiniones
Yo te aconsejaría que cambiaras la barra que separa el 333 del 24511 por un guión medio o bajo, pues si lo vas a identificar igual para el montaje del QR, puede darte error.
A mí ya me paso.
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:26:59.


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