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);
            }
        }
Example #2
0
        public async Task <RegistroEmpresaDto> Consulta(PeticionSunatDto peticion)
        {
            var operacion = await _sunatServicio.BuscarEmpresa(peticion);

            return(ObtenerResultadoOGenerarErrorDeOperacion(operacion));
        }