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)); }
private async Task LlenarDatosUbigeoDeDireccion(RegistroEmpresaDto dto) { await Task.Delay(100); if (dto == null || string.IsNullOrWhiteSpace(dto.DireccionDomicilioFiscal)) { return; } var partes = dto.DireccionDomicilioFiscal.Split(new string[] { "-" }, StringSplitOptions.None); if (partes.Length < 3) { return; } var distrito = !string.IsNullOrWhiteSpace(partes[partes.Length - 1]) ? partes[partes.Length - 1].Trim() : ""; var provincia = !string.IsNullOrWhiteSpace(partes[partes.Length - 2]) ? partes[partes.Length - 2].Trim() : ""; var departamentoPorProcesar = !string.IsNullOrWhiteSpace(partes[partes.Length - 3]) ? partes[partes.Length - 3].Trim() : ""; if (provincia.ToLower().Contains("callao")) { dto.DistritoDomicilioFiscal = distrito; dto.ProvinciaDomicilioFiscal = "CALLAO"; dto.DepartamentoDomicilioFiscal = "CALLAO"; return; } dto.DistritoDomicilioFiscal = distrito; dto.ProvinciaDomicilioFiscal = provincia; if (string.IsNullOrWhiteSpace(departamentoPorProcesar)) { return; } var depas = departamentoPorProcesar.Split(new string[] { " " }, StringSplitOptions.None); if (partes.Length < 1) { return; } var departamento = !string.IsNullOrWhiteSpace(depas[depas.Length - 1]) ? depas[depas.Length - 1].Trim() : ""; if ("dios".Equals(departamento, StringComparison.OrdinalIgnoreCase)) { departamento = "Madre De Dios"; } if ("libertad".Equals(departamento, StringComparison.OrdinalIgnoreCase)) { departamento = "La Libertad"; } if ("martin".Equals(departamento, StringComparison.OrdinalIgnoreCase)) { departamento = "San Martin"; } dto.DepartamentoDomicilioFiscal = departamento; //var ubigeos = await _ubigeoIneiRepositorio.BuscarPorDistritoYProvincia(distrito, provincia); //if (ubigeos.Count > 0) //{ // dto.DepartamentoDomicilioFiscal = ubigeos[0].Departamento?.ToUpper(); //} }
private async Task LlenarDtoDeHtml(RegistroEmpresaDto dto, string html) { var doc = new HtmlDocument(); doc.LoadHtml(html); var tablas = doc.DocumentNode.Descendants("table").ToList(); if (tablas.Count < 1) { return; } var tabla = tablas.FirstOrDefault(); var trList = tabla.Descendants().Where(e => e.Name == "tr"); if (trList == null || trList.Count() == 0) { return; } var contador = 0; foreach (var tr in trList) { switch (contador) { case 0: var rucPlus = ObtenerResultadoSimpleDeTd(tr, 1); if (!string.IsNullOrWhiteSpace(rucPlus)) { var partes = rucPlus.Split(new string[] { "-" }, StringSplitOptions.None); if (partes.Length > 1) { dto.Nombre = !string.IsNullOrWhiteSpace(partes[1]) ? partes[1].Trim() : null; } } break; case 1: dto.TipoContribuyente = ObtenerResultadoSimpleDeTd(tr, 1); break; case 2: dto.NombreComercial = ObtenerResultadoSimpleDeTd(tr, 1); break; case 3: dto.FechaInscripcion = ObtenerResultadoSimpleDeTd(tr, 1); dto.FechaInicioActividades = ObtenerResultadoSimpleDeTd(tr, 3); break; case 4: dto.EstadoContribuyente = ObtenerResultadoSimpleDeTd(tr, 1); break; case 5: dto.CondicionContribuyente = ObtenerResultadoSimpleDeTd(tr, 1); break; case 6: dto.DireccionDomicilioFiscal = ObtenerResultadoSimpleDeTd(tr, 1); break; case 7: dto.SistemaEmisionComprobante = ObtenerResultadoSimpleDeTd(tr, 1); dto.ActividadComercioExterior = ObtenerResultadoSimpleDeTd(tr, 3); break; case 8: dto.SistemaDeContabilidad = ObtenerResultadoSimpleDeTd(tr, 1); break; case 9: var listaActividadesEconomicas = ObtenerListaDeSimpleDeTd(tr, 1); dto.ActividadesEconomicas = listaActividadesEconomicas; break; case 10: var listaComprobantesPago = ObtenerListaDeSimpleDeTd(tr, 1); dto.ComprobantesDePago = listaComprobantesPago; break; case 11: var listaSistemasDeEmisionElectronica = ObtenerListaDeSimpleDeTd(tr, 1); dto.SistemasDeEmisionElectronica = listaSistemasDeEmisionElectronica; break; case 12: dto.EmisorElectronicoDesde = ObtenerResultadoSimpleDeTd(tr, 1); break; case 13: var comprobantes = ObtenerResultadoSimpleDeTd(tr, 1); if (!string.IsNullOrWhiteSpace(comprobantes)) { var partes = comprobantes.Split(new string[] { "," }, StringSplitOptions.None); dto.ComprobantesElectronicos.AddRange(partes); } break; case 14: dto.AfiliadoPLEDesde = ObtenerResultadoSimpleDeTd(tr, 1); break; case 15: var listaPadrones = ObtenerListaDeSimpleDeTd(tr, 1); dto.Padrones = listaPadrones; break; } contador++; } await LlenarDatosUbigeoDeDireccion(dto); }