예제 #1
0
        private void mapDireccion(ConsultaRuc data, string direccion)
        {
            string dir = "", dep = "", prov = "", dist = "";

            string[] items = direccion.Split("-");
            if (items.Length != 3)
            {
                if (direccion.Trim() == "-")
                {
                    dir = "";
                }
            }
            else
            {
                items = items.Select(item => item.Trim()).ToArray();
                var words = items[0].Split(" ");
                (int, string)mapDep = mapDepartamento(words.Last());

                dep  = mapDep.Item2;
                prov = items[1];
                dist = items[2];
                var i = words.Take(words.Length - mapDep.Item1).ToArray();
                dir = string.Join(" ", i);
            }

            data.Direccion    = dir;
            data.Departamento = dep != "" ? dep : "LIMA";
            data.Provincia    = prov != "" ? prov : "LIMA";
            data.Distrito     = dist != "" ? dist : "LIMA";
        }
예제 #2
0
        private ConsultaRuc ObtenerValoresHTML(string html)
        {
            ConsultaRuc  data         = new ConsultaRuc();
            HtmlDocument pageDocument = new HtmlDocument();

            pageDocument.LoadHtml(html);

            List <List <string> > table = pageDocument.DocumentNode.SelectSingleNode("//table[@class='form-table']")
                                          .Descendants("tr")
                                          .Skip(1)
                                          .Where(tr => tr.Elements("td").Count() > 1)
                                          .Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
                                          .ToList();

            var rucRazonSocial = table.Where(e => e[0] == "N&uacute;mero de RUC:").ToList()[0][1];

            // var ruc = rucRazonSocial.Split("- ")[0];
            data.Nombre          = rucRazonSocial.Split("- ")[1];
            data.NombreComercial = table.Where(e => e[0] == "Nombre Comercial:").ToList()[0][1];
            var domicilio = table.Where(e => e[0] == "Direcci&oacute;n del Domicilio Fiscal:").ToList()[0][1];

            mapDireccion(data, domicilio);

            return(data);
        }
예제 #3
0
        public JsonResult ConsultaRuc(string ruc)
        {
            var jsonResponseDto = new JsonResponseDto();

            try
            {
                UtilsDAL utilsDAL = new UtilsDAL();
                var      random   = ConsultarURL(URL_CAPTCHA_RANDOM);
                var      url      = URL_CONSULTA_RUC + "?accion=consPorRuc&nroRuc=" + ruc + "&numRnd=" + random + "&tipdoc=";

                var         html = ConsultarURL(url);
                ConsultaRuc data = ObtenerValoresHTML(html);
                jsonResponseDto.data    = data;
                jsonResponseDto.IsValid = true;
                jsonResponseDto.Mensaje = ruc;
                jsonResponseDto.Type    = Constante.Success.ToLower();

                return(Json(jsonResponseDto));
            }
            catch (Exception ex)
            {
                jsonResponseDto.data    = null;
                jsonResponseDto.IsValid = false;
                jsonResponseDto.Mensaje = ruc;
                jsonResponseDto.Type    = Constante.Warning.ToLower();

                return(Json(jsonResponseDto));
            }
        }
예제 #4
0
        public ConsultaSunatFrm()
        {
            InitializeComponent();
            ConsultaRuc = new ConsultaRuc();
            ConsultaRuc.Inicializar();

            var styleController = new StyleController();

            WinFormUtils.SetStyleController(this, styleController);
        }
예제 #5
0
 private void ObtenerCaptcha()
 {
     if (ConsultaRuc.EstadoConsultaSunat == EstadoConsultaSunat.ErrorConexion)
     {
         XtraMessageBox.Show(string.Format("Error en la conexion al servicio {0}", ConsultaRuc.MensajeError), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return;
     }
     if (ConsultaRuc.EstadoConsultaSunat == EstadoConsultaSunat.Resultado)
     {
         peCaptcha.EditValue = ConsultaRuc.ObtenerCapcha();
     }
 }
예제 #6
0
        private void ConsultaDatosSunat(string ruc, string captcha)
        {
            Cursor        = Cursors.WaitCursor;
            Contribuyente = ConsultaRuc.BuscarContribuyente(ruc, captcha);
            Cursor        = Cursors.Default;

            if (Contribuyente != null)
            {
                iRazonSocial.EditValue     = Contribuyente.RazonSocial;
                iNombreComercial.EditValue = Contribuyente.NombreComercial;
                iEstado.EditValue          = Contribuyente.Estado;
                iCondicion.EditValue       = Contribuyente.Situacion;
                iDireccionFiscal.EditValue = Contribuyente.Direccion;
                iReferencia.EditValue      = Contribuyente.ReferenciaDireccion;
                iIddistrito.Select();
            }
            switch (ConsultaRuc.EstadoConsultaSunat)
            {
            case EstadoConsultaSunat.ErrorTextoCapcha:
                XtraMessageBox.Show("Codigo captcha incorrecto", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                iCaptcha.Select();
                iCaptcha.SelectAll();
                break;

            case EstadoConsultaSunat.NumeroRucNoValido:
                XtraMessageBox.Show("Numero de ruc invalido", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                iRuc.Select();
                iRuc.SelectAll();
                break;

            case EstadoConsultaSunat.Error:
                XtraMessageBox.Show("Error no especificado", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                break;

            case EstadoConsultaSunat.ErrorConexion:
                XtraMessageBox.Show("Error en la conexion al servicio", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                break;
            }
            ObtenerCaptcha();
            LeerCaptchaSunat();
        }
예제 #7
0
        private async Task GetRuc()
        {
            bool canConvert = long.TryParse(txtRUC.Text, out long Ruc);

            if (canConvert && txtRUC.Text.Length == 11)
            {
                try
                {
                    RUC ruc = await ConsultaRuc.GetRuc(txtRUC.Text);

                    if (ruc != null)
                    {
                        txtRazonSocial.Text = ruc.datos.result.razon_social;
                        txtDireccion.Text   = ruc.datos.result.direccion;
                    }
                    await Dispatcher.BeginInvoke(new System.Action(() => { Keyboard.Focus(txtRepresentanteLegal); }),
                                                 System.Windows.Threading.DispatcherPriority.Loaded);
                }
                catch (Exception ex)
                {
                    DialogResult result = CustomMessageBox.Show($"{ex.Message}", CustomMessageBox.CMessageBoxTitle.Información, CustomMessageBox.CMessageBoxButton.Aceptar, CustomMessageBox.CMessageBoxButton.No);
                }
            }
        }
예제 #8
0
 private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
 {
     string prueba = await ConsultaRuc.ConsultaContribuyente("20563223457", 3);
 }