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(); }