Ejemplo n.º 1
0
 public void setFechaAutorizacion(XMLGregorianCalendar value)
 {
     this.fechaAutorizacion = value;
 }
Ejemplo n.º 2
0
        public void autorizarComprobante(String claveAcceso)
        {
            sriAutorizacion.AutorizacionComprobantesOfflineService servicio = new sriAutorizacion.AutorizacionComprobantesOfflineService();
            object[] resAutorizacion = null;
            try
            {
                resAutorizacion = servicio.autorizacionComprobante(claveAcceso);
            }
            catch (Exception ex)
            {
                return;
            }
            this.respuestaAutorizacion.setClaveAccesoConsultada((((System.Xml.XmlNode[])(((object[])(resAutorizacion[0]))[0]))[0]).InnerText);
            this.respuestaAutorizacion.setNumeroComprobantes((((System.Xml.XmlNode[])(((object[])(resAutorizacion[0]))[0]))[1]).InnerText);
            Autorizaciones autorizaciones = new Autorizaciones();;
            Autorizacion   autorizacion   = new Autorizacion();
            XmlNode        nodoAutorizaciones;

            if (((System.Xml.XmlNode[])(((object[])(resAutorizacion[0]))[0])).Length <= 2)
            {
                nodoAutorizaciones = (((System.Xml.XmlNode[])(((object[])(resAutorizacion[0]))[0]))[1]);
            }
            else
            {
                nodoAutorizaciones = (((System.Xml.XmlNode[])(((object[])(resAutorizacion[0]))[0]))[2]);
            }

            foreach (XmlNode nodo in nodoAutorizaciones.SelectNodes("/autorizaciones"))
            {
                autorizacion = new Autorizacion();
                if (nodo.InnerText.Equals("EN PROCESO"))
                {
                    autorizacion.setComprobante(null);
                    autorizacion.setEstado(nodo["autorizacion"]["estado"].InnerText);
                    autorizacion.setNumeroAutorizacion(nodo["autorizacion"]["numeroAutorizacion"].InnerText);
                    Autorizacion.Mensajes msjs = new Autorizacion.Mensajes();
                    foreach (XmlNode nodoMensajes in nodo["autorizacion"]["mensajes"])
                    {
                        Mensaje mensaje = new Mensaje();
                        mensaje.setIdentificador(nodoMensajes["identificador"].InnerText);
                        mensaje.setMensaje(nodoMensajes["mensaje"].InnerText);
                        mensaje.setTipo(nodoMensajes["tipo"].InnerText);
                        msjs.getMensaje().Add(mensaje);
                        autorizacion.setMensajes(msjs);
                    }
                }
                else
                {
                    java.text.DateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
                    Date date             = format.parse(nodo["autorizacion"]["fechaAutorizacion"].InnerText);
                    GregorianCalendar cal = new GregorianCalendar();
                    cal.setTime(date);
                    XMLGregorianCalendar xmlGregCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
                    autorizacion.setComprobante(nodo["autorizacion"]["comprobante"].InnerText);
                    autorizacion.setEstado(nodo["autorizacion"]["estado"].InnerText);
                    autorizacion.setFechaAutorizacion(xmlGregCal);
                    autorizacion.setNumeroAutorizacion(nodo["autorizacion"]["numeroAutorizacion"].InnerText);
                    Autorizacion.Mensajes msjs = new Autorizacion.Mensajes();
                    foreach (XmlNode nodoMensajes in nodo["autorizacion"]["mensajes"])
                    {
                        Mensaje mensaje = new Mensaje();
                        mensaje.setIdentificador(nodoMensajes["identificador"].InnerText);
                        mensaje.setMensaje(nodoMensajes["mensaje"].InnerText);
                        mensaje.setTipo(nodoMensajes["tipo"].InnerText);
                        msjs.getMensaje().Add(mensaje);
                        autorizacion.setMensajes(msjs);
                    }
                    autorizaciones.getAutorizacion().Add(autorizacion);
                }
            }
            this.respuestaAutorizacion.setAutorizaciones(autorizaciones);
        }
Ejemplo n.º 3
0
        public void enviarComprobante()
        {
            if (this.comprobante == null)
            {
                return;
            }
            Nasti.Datos.Utiles.UtilesElectronico util = new Nasti.Datos.Utiles.UtilesElectronico();
            this.comprobante = new FacturaServicio().getComprobante(this.comprobante.CODIGOCOMPROBANTE);
            FormProgressBar progress = new FormProgressBar();

            progress.setTexto("Generando XML");
            progress.Show();
            LlenarInformacionTributaria(comprobante.TIPOCOMPROBANTE.VERSION);
            byte[] archivo = util.serializar(factura);
            progress.setTexto("Firmando comprobante");
            progress.Update();
            byte[] archivoFirmado = util.firmarArchivo(archivo, comprobante.EMPRESA.CLAVEFIRMA, comprobante.EMPRESA.CODIGOEMPRESA, comprobante.EMPRESA.FIRMAELECTRONICA, comprobante.EMPRESA.PROVEEDORCERTIFICADO.SIGLA, comprobante.EMPRESA.RUC);
            if (archivoFirmado == null)

            {
                XtraMessageBox.Show("Error en el proceso de firmado. Contactese con el administrador del sistema");
                return;
            }
            if (comprobante == null || archivoFirmado == null || comprobante.CLAVEDEACCESO == null)
            {
                return;
            }
            GeneralServicio generalServicio = new GeneralServicio();
            PARAMETRO       parametroSRI    = generalServicio.getParametro(comprobante.EMPRESA.CODIGOEMPRESA, "ENVIAR_SRI");

            if (parametroSRI != null)
            {
                if (parametroSRI.VALORSTRING.Equals("S"))
                {
                    EnvioComprobantesWs envio = new EnvioComprobantesWs();
                    progress.setTexto("Enviando al SRI.");
                    envio.obtenerRespuestaEnvio(archivoFirmado, comprobante.EMPRESA.RUC, comprobante.TIPOCOMPROBANTE.CODIGOSRI, comprobante.CLAVEDEACCESO.ToString());
                    this.respuestaSolicitud    = envio.getRespuestaSolicitud();
                    this.respuestaAutorizacion = envio.getRespuestaAutorizacion();
                    progress.setTexto("Autorizando comprobante.");
                    progress.Update();
                    if (respuestaSolicitud.getEstado().Equals("RECIBIDA"))
                    {
                        comprobante.ESTADO = (int)EnumEstadoComprobante.RECIBIDOSRI;
                        envio.autorizarComprobante(comprobante.CLAVEDEACCESO);
                        if (envio.getRespuestaAutorizacion().getAutorizaciones() != null)
                        {
                            envio.autorizarComprobante(comprobante.CLAVEDEACCESO);
                        }
                        if (envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getEstado().Equals("AUTORIZADO"))
                        {
                            comprobante.CODIGOESTADOCOMPROBANTE = (long)EnumEstadoComprobante.AUTORIZADO;
                            XMLGregorianCalendar fec = envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getFechaAutorizacion();
                            comprobante.FECHAAUTORIZACION = new DateTime(fec.getYear(), fec.getMonth(), fec.getDay(), fec.getHour(), fec.getMinute(), fec.getSecond());
                            comprobante.ARCHIVOAUTORIZADO = System.Text.Encoding.UTF8.GetBytes(envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getComprobante());
                        }
                        else
                        {
                            comprobante.CODIGOESTADOCOMPROBANTE = (long)EnumEstadoComprobante.NOAUTORIZADO;
                            comprobante.NOVEDAD = envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getMensajes().getMensaje()[0].getMensaje();
                        }
                        progress.setTexto("Actualizando comprobante en el sistema");
                        progress.Update();
                        facturaServicio.actualizarComprobante(comprobante);
                        if (facturaServicio.ErrorNasti != null)
                        {
                            XtraMessageBox.Show(facturaServicio.ErrorNasti.Error);
                        }
                        //XtraMessageBox.Show("Existe un inconveniente al autorizar el comprobante");
                    }
                    else if (respuestaSolicitud.getEstado().Equals("DEVUELTA"))
                    {
                        if (respuestaSolicitud.getComprobantes().getComprobante()[0].getMensajes().getMensaje()[0].getIdentificador().Equals("43"))
                        {
                            if (respuestaSolicitud.getComprobantes().getComprobante()[0].getClaveAcceso().Equals(comprobante.CLAVEDEACCESO))
                            {
                                try
                                {
                                    progress.setTexto("Extrayendo nuevamente comprobante autorizado");
                                    envio.autorizarComprobante(comprobante.CLAVEDEACCESO);
                                    this.respuestaAutorizacion = envio.getRespuestaAutorizacion();
                                    if (envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getEstado().Equals("AUTORIZADO"))
                                    {
                                        progress.setTexto("COMPROBANTE AUTORIZADO");
                                        progress.Update();
                                        comprobante.CODIGOESTADOCOMPROBANTE = (long)EnumEstadoComprobante.AUTORIZADO;
                                        XMLGregorianCalendar fec = envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getFechaAutorizacion();
                                        comprobante.FECHAAUTORIZACION = new DateTime(fec.getYear(), fec.getMonth(), fec.getDay(), fec.getHour(), fec.getMinute(), fec.getSecond());
                                        comprobante.ARCHIVOAUTORIZADO = new XStreamUtil().getResuestaStream(System.Text.Encoding.UTF8.GetBytes(envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getComprobante()), comprobante.CLAVEDEACCESO, comprobante.FECHAAUTORIZACION.ToString(), comprobante.ESTADOCOMPROBANTE.DESCRIPCION);
                                        //enviar correo

                                        progress.setTexto("Enviando por correo.");
                                        progress.Update();
                                        this.enviarCorreo();
                                    }
                                    else
                                    {
                                        comprobante.CODIGOESTADOCOMPROBANTE = (long)EnumEstadoComprobante.NOAUTORIZADO;
                                        comprobante.NOVEDAD = envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getMensajes().getMensaje()[0].getMensaje();
                                    }
                                    progress.setTexto("Actualizando el comprobante en el sistema");
                                    new FacturaServicio().actualizarComprobante(comprobante);
                                    progress.Update();
                                }
                                catch (Exception ex)
                                {
                                    XtraMessageBox.Show(ex.ToString());
                                    return;
                                }
                            }
                        }
                        else
                        {
                            XtraMessageBox.Show(respuestaSolicitud.getComprobantes().getComprobante()[0].getMensajes().getMensaje()[0].getMensaje());
                        }
                    }
                }
            }
            else
            {
                XtraMessageBox.Show("NO EXISTE PARAMETRO GENERAR_SRI");
            }

            progress.Close();
        }