コード例 #1
0
        //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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        public async Task <RegistroEmpresaDto> Consulta(PeticionSunatDto peticion)
        {
            var operacion = await _sunatServicio.BuscarEmpresa(peticion);

            return(ObtenerResultadoOGenerarErrorDeOperacion(operacion));
        }