Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 884
Poder: 3
bmfranky Va camino a la fama
Cita:
Empezado por CarlosArjonomia Ver Mensaje
Me refiero a cuando el cliente ya ha actualizado a VeriFactu. Imagina, el cliente actualiza para adaptar el programa a verifactu y una vez pasado el año de actualización y soporte decide dejar de pagar y no actualizar. El programa debe de dejar de emitir facturas ya que no ha sido actualizado y tu puedes estar enviando información incorrecta o no verificada con tu acreditación como proveedor del SIF.
Hola, en mi umilde opinion, creo que no es asi, tu legalmente no creo que puedas dejar no funcional un programa que has vendido,pero si no cumple el 100% de las modificaciones de la normativa, por no actualizarlo, no es responsabilidad del creador, sino del cliente final por no actualizarlo, o tendriamos que ser responsables de cualquier cliente que continue facturando con un programa no verifactu en absoluto?

Otra cosa es que un programa que tu vendes/actualizas no cumpla las normativas exigibles, ahi si podriamos tener un problema.

Recuerda que tu acreditas que tu programa "Pepe Factus 2000" , version x.y.z cumplia verifactu version a.b en la fecha en que lo instalaste / actualizaste por ultima vez, no despues.
  #2  
Antiguo 17-10-2024
Jesusggc Jesusggc is offline
Miembro
 
Registrado: may 2024
Posts: 50
Poder: 3
Jesusggc Va por buen camino
Remitir Registros de facturacion superados 120 segundos desde su emision

En relación al servicio caido de esta mañana y posterior remision de Registros una vez solucionado el problema.

En estos casos recibirán este mensaje de error:

Cita:
<EstadoRegistro>AceptadoConErrores</EstadoRegistro>
<CodigoErrorRegistro>2004</CodigoErrorRegistro>
<DescripcionErrorRegistro>El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos.</DescripcionErrorRegistro>
He puesto consulta a verifactu, y contestan lo siguiente:

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
  #3  
Antiguo 17-10-2024
jguarda jguarda is offline
Miembro
 
Registrado: feb 2008
Posts: 27
Poder: 0
jguarda Va por buen camino
duda

Había alguien, que había subido un código fuente para enviar facturas al sistema VERIFACTU, hay alguna actualización al respecto para probar de nuevo??
  #4  
Antiguo 18-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...
  #5  
Antiguo 18-10-2024
novatico novatico is offline
Miembro
 
Registrado: dic 2022
Posts: 383
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.
  #6  
Antiguo 18-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 884
Poder: 3
bmfranky Va camino a la fama
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();
}
  #7  
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...)
  #8  
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
  #9  
Antiguo 18-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 884
Poder: 3
bmfranky Va camino a la fama
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?
  #10  
Antiguo 18-10-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 884
Poder: 3
bmfranky Va camino a la fama
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.
Tema Cerrado


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 12:05:35
Adictos informaticos ... Trigger Humor 2 11-10-2004 13:18:32
Nosotros los Informáticos Trigger Humor 1 10-10-2004 15:58:09
Patrón de los Informáticos. obiwuan Varios 20 10-09-2003 15:44:54
Chistes Informaticos jhonny Humor 2 11-08-2003 22:59:09


La franja horaria es GMT +2. Ahora son las 05:04:57.


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