//private string ObtenerHtmlInformacionHistorica(RestClient client, PeticionSunatDto peticion) //{ // var request = new RestRequest($"jcrS00Alias", Method.POST); // request.AddHeader("Referer", $"http://e-consultaruc.sunat.gob.pe/cl-ti-itmrconsruc/jcrS00Alias?accion=consPorRuc&nroRuc={peticion.Ruc}&numRnd={peticion.CodigoCaptcha}"); // request.AddHeader("Upgrade-Insecure-Requests", "1"); // request.AddHeader("Cache-Control", "max-age=0"); // request.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); // request.AddHeader("Accept-Encoding", "gzip, deflate"); // request.AddHeader("Accept-Language", "en-US,en;q=0.9,es-419;q=0.8,es;q=0.7,zh;q=0.6"); // request.AddParameter("submit", "(unable to decode value)"); // request.AddParameter("accion", "getinfHis"); // request.AddParameter("nroRuc", peticion.Ruc); // request.AddParameter("desRuc", peticion.RazonSocial); // var resultado = default(string); // var encoding = Encoding.GetEncoding("ISO-8859-1"); // var response = client.Execute(request); // if (response.StatusCode == HttpStatusCode.OK) // { // resultado = encoding.GetString(response.RawBytes); // } // return resultado; //} private string ObtenerHtmlRepresentantesLegales(RestClient client, PeticionSunatDto peticion) { var request = new RestRequest($"jcrS00Alias", Method.POST); request.AddHeader("Referer", $"http://e-consultaruc.sunat.gob.pe/cl-ti-itmrconsruc/jcrS00Alias?accion=consPorRuc&nroRuc={peticion.Ruc}&numRnd={peticion.CodigoCaptcha}"); request.AddHeader("Upgrade-Insecure-Requests", "1"); request.AddHeader("Cache-Control", "max-age=0"); request.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); request.AddHeader("Accept-Encoding", "gzip, deflate"); request.AddHeader("Accept-Language", "en-US,en;q=0.9,es-419;q=0.8,es;q=0.7,zh;q=0.6"); request.AddParameter("accion", "getRepLeg"); request.AddParameter("nroRuc", peticion.Ruc); request.AddParameter("desRuc", peticion.RazonSocial); var resultado = default(string); var encoding = Encoding.GetEncoding("ISO-8859-1"); var response = client.Execute(request); if (response.StatusCode == HttpStatusCode.OK) { resultado = encoding.GetString(response.RawBytes); } return(resultado); }
private string ObtenerHtmlGeneral(RestClient client, PeticionSunatDto peticion) { var request = new RestRequest($"jcrS00Alias?accion=consPorRuc&nroRuc={peticion.Ruc}&numRnd={peticion.CodigoCaptcha}", Method.GET); var resultado = default(string); //Encoding encoding = Encoding.UTF8; var encoding = Encoding.GetEncoding("ISO-8859-1"); var response = client.Execute(request); if (response.StatusCode == HttpStatusCode.OK) { resultado = encoding.GetString(response.RawBytes); } return(resultado); }
public async Task <OperacionDto <RegistroEmpresaDto> > BuscarEmpresa(PeticionSunatDto peticion) { var client = new RestClient($"http://e-consultaruc.sunat.gob.pe/cl-ti-itmrconsruc/") { UserAgent = "Mozilla/5.0 (Linux; Android 5.0.2; SM-G920T Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.78 Mobile Safari/537.36" }; var codigo = ObtenerCaptcha(client); if (string.IsNullOrWhiteSpace(codigo)) { return(new OperacionDto <RegistroEmpresaDto>(CodigosOperacionDto.SinAccesoSunat, "No se puede acceder a sunat")); } peticion.CodigoCaptcha = codigo; var operacion = await ObtenerEmpresa(client, peticion); return(operacion); }
private async Task RealizarScraping() { var ruc = await _empresaDao.ObtenerRucParaScraping(); if (string.IsNullOrWhiteSpace(ruc)) { return; } var peticion = new PeticionSunatDto() { Ruc = ruc }; var operacion = await _sunatServicio.BuscarEmpresa(peticion); if (!operacion.Completado || string.IsNullOrWhiteSpace(operacion.Resultado.FechaInscripcion)) { return; } var dto = operacion.Resultado; var empresa = new Empresa() { ActividadComercioExterior = dto.ActividadComercioExterior, AfiliadoPLEDesde = dto.AfiliadoPLEDesde, CondicionContribuyente = dto.CondicionContribuyente, DepartamentoDomicilioFiscal = dto.DepartamentoDomicilioFiscal, DireccionDomicilioFiscal = dto.DireccionDomicilioFiscal, DistritoDomicilioFiscal = dto.DistritoDomicilioFiscal, EmisorElectronicoDesde = dto.EmisorElectronicoDesde, EstadoContribuyente = dto.EstadoContribuyente, FechaInicioActividades = dto.FechaInicioActividades, FechaInscripcion = dto.FechaInscripcion, Nombre = dto.Nombre, NombreComercial = dto.NombreComercial, ProvinciaDomicilioFiscal = dto.ProvinciaDomicilioFiscal, Ruc = dto.Ruc, SistemaDeContabilidad = dto.SistemaDeContabilidad, SistemaEmisionComprobante = dto.SistemaEmisionComprobante, TipoContribuyente = dto.TipoContribuyente }; await _empresaDao.EliminarEmpresa(dto.Ruc); await _empresaDao.GuardarEmpresa(empresa); if (dto.Padrones != null) { foreach (var padron in dto.Padrones) { await _empresaDao.InsertarPadron(padron, dto.Ruc); } } if (dto.ComprobantesElectronicos != null) { foreach (var comprobante in dto.ComprobantesElectronicos) { await _empresaDao.InsertarComprobantesElectronicos(comprobante, dto.Ruc); } } if (dto.SistemasDeEmisionElectronica != null) { foreach (var emision in dto.SistemasDeEmisionElectronica) { await _empresaDao.InsertarSistemasDeEmisionElectronica(emision, dto.Ruc); } } if (dto.ComprobantesDePago != null) { foreach (var comprobante in dto.ComprobantesDePago) { await _empresaDao.InsertarComprobantesDePago(comprobante, dto.Ruc); } } if (dto.ActividadesEconomicas != null) { foreach (var actividad in dto.ActividadesEconomicas) { var partes = actividad.Split(new string[] { "-" }, StringSplitOptions.None); var nombreActividad = ""; var codigoActividad = ""; if (partes.Length < 2) { continue; } codigoActividad = partes[0]; nombreActividad = partes[1]; if (!string.IsNullOrWhiteSpace(nombreActividad)) { nombreActividad = nombreActividad.Trim(); } if (!string.IsNullOrWhiteSpace(codigoActividad)) { codigoActividad = codigoActividad.Trim(); } await _empresaDao.InsertarActividadesEconomicas(nombreActividad, codigoActividad, dto.Ruc); } } if (dto.Representantes != null) { var lista = new List <Representante>(); foreach (var representante in dto.Representantes) { lista.Add( new Representante() { Cargo = representante.Cargo, Desde = representante.Desde, Nombres = representante.Nombres, NroDocumento = representante.NroDocumento, TipoDocumento = representante.TipoDocumento } ); } await _empresaDao.GuardarListaRepresentantes(lista, dto.Ruc); } if (dto.CantidadTrabajadores != null) { var lista = new List <CantidadTrabajador>(); foreach (var trabajador in dto.CantidadTrabajadores) { lista.Add( new CantidadTrabajador() { NroPensionistas = trabajador.NroPensionistas, NroPrestadoresDeServicio = trabajador.NroPrestadoresDeServicio, NroTrabajadores = trabajador.NroTrabajadores, Periodo = trabajador.Periodo } ); } await _empresaDao.GuardarListaCantidadTrabajadores(lista, dto.Ruc); } }
private async Task <OperacionDto <RegistroEmpresaDto> > ObtenerEmpresa(RestClient client, PeticionSunatDto peticion) { var html = ObtenerHtmlGeneral(client, peticion); if (string.IsNullOrWhiteSpace(html)) { return(new OperacionDto <RegistroEmpresaDto>(CodigosOperacionDto.NoExiste, "No existe ruc")); } var dto = new RegistroEmpresaDto() { Ruc = peticion.Ruc }; await LlenarDtoDeHtml(dto, html); if (!string.IsNullOrEmpty(dto.FechaInscripcion)) { peticion.RazonSocial = dto.Nombre; var htmlCantidadTrabajadores = ObtenerHtmlCantidadTrabajadores(client, peticion); //var htmlInformacionHistorica = ObtenerHtmlInformacionHistorica(client, peticion); var htmlRepresentantesLegales = ObtenerHtmlRepresentantesLegales(client, peticion); dto.CantidadTrabajadores = ObtenerCantidadTrabajadoresDeHtml(htmlCantidadTrabajadores); dto.Representantes = ObtenerRepresentantesLegales(htmlRepresentantesLegales); } return(new OperacionDto <RegistroEmpresaDto>(dto)); }
public async Task <RegistroEmpresaDto> Consulta(PeticionSunatDto peticion) { var operacion = await _sunatServicio.BuscarEmpresa(peticion); return(ObtenerResultadoOGenerarErrorDeOperacion(operacion)); }