Example #1
0
        public void importarExcel()
        {
            FormProgressBar progres = new FormProgressBar();
            ARTICULO        articulo;
            NastiUtil       util = new NastiUtil();

            string[] cabecera = { "Id", "Código", "Nombre", "P.V.P", "Stock", "Tipo Articulo", "Impuesto", "compras", "Ventas", "Unidad", "Saldo Inicial", "SECCION", "DescripcionCorta" };
            int      i        = 0;
            DataSet  result   = util.getExcel();

            if (result == null)
            {
                return;
            }
            DataTable table = result.Tables[0];

            progres.setData(0, table.Rows.Count, 1);
            progres.Show();
            foreach (DataRow row in table.Rows)
            {
                if (i == 0) //revisar cabecera
                {
                    if (!verificarCabecera(cabecera, row))
                    {
                        MessageBox.Show("Archivo excel no cumple con el formato adecuado.");
                        return;
                    }
                }
                else
                {
                    Decimal numero;
                    articulo                    = new ARTICULO();
                    articulo.CODIGO             = row[1].ToString();
                    articulo.DESCRIPCION        = row[2].ToString();
                    articulo.PRECIOVENTA        = Decimal.TryParse(row[3].ToString(), out numero) ? Decimal.Parse(row[3].ToString()) : 0;
                    articulo.CANTIDAD           = Decimal.TryParse(row[4].ToString(), out numero) ? Decimal.Parse(row[4].ToString()) : 0;
                    articulo.CODIGOTIPOARTICULO = articuloservicio.getTipoArticulo(row[5].ToString()).CODIGOTIPOARTICULO;
                    articulo.CODIGOIMPUESTO     = articuloservicio.getImpuesto(CredencialUsuario.getInstancia().getEmpresaSeleccionada().CODIGOEMPRESA, row[6].ToString()).CODIGOIMPUESTO;
                    articulo.SOLOCOMPRAS        = row[7].ToString();
                    articulo.VENTAS             = row[8].ToString();
                    articulo.CODIGOUNIDAD       = articuloservicio.getUnidad(CredencialUsuario.getInstancia().getEmpresaSeleccionada().CODIGOEMPRESA, row[9].ToString()).CODIGOUNIDAD;
                    articulo.SALDOINICIAL       = Decimal.TryParse(row[9].ToString(), out numero) ? Decimal.Parse(row[9].ToString()) : 0;
                    articulo.SECCION            = row[10].ToString();
                    articulo.DESCRIPCIONCORTA   = row[11].ToString();
                    articulo.CODIGOEMPRESA      = CredencialUsuario.getInstancia().getEmpresaSeleccionada().CODIGOEMPRESA;
                    articulo.COSTO              = 0;
                    articulo.ESTADO             = "A";
                    articulo.FECHACREACION      = DateTime.Now;
                    articulo.FECHAMODIFICACION  = DateTime.Now;
                    try
                    {
                        articuloservicio.grabarArticuloImport(articulo, CredencialUsuario.getInstancia().getEmpresaSeleccionada().CODIGOEMPRESA);
                    }
                    catch (Exception ex)
                    {
                    }
                }
                i++;
                progres.refreshData();
            }
            progres.Close();
        }
        public void enviarComprobante()
        {
            if (this.comprobante == null)
            {
                return;
            }
            Nasti.Datos.Utiles.UtilesElectronico util = new Nasti.Datos.Utiles.UtilesElectronico();
            this.comprobante = new FacturaServicio().getComprobante(this.comprobante.CODIGOCOMPROBANTE);
            FormProgressBar progress = new FormProgressBar();

            progress.setTexto("Generando XML");
            progress.Show();
            LlenarInformacionTributaria(comprobante.TIPOCOMPROBANTE.VERSION);
            byte[] archivo = util.serializar(factura);
            progress.setTexto("Firmando comprobante");
            progress.Update();
            byte[] archivoFirmado = util.firmarArchivo(archivo, comprobante.EMPRESA.CLAVEFIRMA, comprobante.EMPRESA.CODIGOEMPRESA, comprobante.EMPRESA.FIRMAELECTRONICA, comprobante.EMPRESA.PROVEEDORCERTIFICADO.SIGLA, comprobante.EMPRESA.RUC);
            if (archivoFirmado == null)

            {
                XtraMessageBox.Show("Error en el proceso de firmado. Contactese con el administrador del sistema");
                return;
            }
            if (comprobante == null || archivoFirmado == null || comprobante.CLAVEDEACCESO == null)
            {
                return;
            }
            GeneralServicio generalServicio = new GeneralServicio();
            PARAMETRO       parametroSRI    = generalServicio.getParametro(comprobante.EMPRESA.CODIGOEMPRESA, "ENVIAR_SRI");

            if (parametroSRI != null)
            {
                if (parametroSRI.VALORSTRING.Equals("S"))
                {
                    EnvioComprobantesWs envio = new EnvioComprobantesWs();
                    progress.setTexto("Enviando al SRI.");
                    envio.obtenerRespuestaEnvio(archivoFirmado, comprobante.EMPRESA.RUC, comprobante.TIPOCOMPROBANTE.CODIGOSRI, comprobante.CLAVEDEACCESO.ToString());
                    this.respuestaSolicitud    = envio.getRespuestaSolicitud();
                    this.respuestaAutorizacion = envio.getRespuestaAutorizacion();
                    progress.setTexto("Autorizando comprobante.");
                    progress.Update();
                    if (respuestaSolicitud.getEstado().Equals("RECIBIDA"))
                    {
                        comprobante.ESTADO = (int)EnumEstadoComprobante.RECIBIDOSRI;
                        envio.autorizarComprobante(comprobante.CLAVEDEACCESO);
                        if (envio.getRespuestaAutorizacion().getAutorizaciones() != null)
                        {
                            envio.autorizarComprobante(comprobante.CLAVEDEACCESO);
                        }
                        if (envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getEstado().Equals("AUTORIZADO"))
                        {
                            comprobante.CODIGOESTADOCOMPROBANTE = (long)EnumEstadoComprobante.AUTORIZADO;
                            XMLGregorianCalendar fec = envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getFechaAutorizacion();
                            comprobante.FECHAAUTORIZACION = new DateTime(fec.getYear(), fec.getMonth(), fec.getDay(), fec.getHour(), fec.getMinute(), fec.getSecond());
                            comprobante.ARCHIVOAUTORIZADO = System.Text.Encoding.UTF8.GetBytes(envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getComprobante());
                        }
                        else
                        {
                            comprobante.CODIGOESTADOCOMPROBANTE = (long)EnumEstadoComprobante.NOAUTORIZADO;
                            comprobante.NOVEDAD = envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getMensajes().getMensaje()[0].getMensaje();
                        }
                        progress.setTexto("Actualizando comprobante en el sistema");
                        progress.Update();
                        facturaServicio.actualizarComprobante(comprobante);
                        if (facturaServicio.ErrorNasti != null)
                        {
                            XtraMessageBox.Show(facturaServicio.ErrorNasti.Error);
                        }
                        //XtraMessageBox.Show("Existe un inconveniente al autorizar el comprobante");
                    }
                    else if (respuestaSolicitud.getEstado().Equals("DEVUELTA"))
                    {
                        if (respuestaSolicitud.getComprobantes().getComprobante()[0].getMensajes().getMensaje()[0].getIdentificador().Equals("43"))
                        {
                            if (respuestaSolicitud.getComprobantes().getComprobante()[0].getClaveAcceso().Equals(comprobante.CLAVEDEACCESO))
                            {
                                try
                                {
                                    progress.setTexto("Extrayendo nuevamente comprobante autorizado");
                                    envio.autorizarComprobante(comprobante.CLAVEDEACCESO);
                                    this.respuestaAutorizacion = envio.getRespuestaAutorizacion();
                                    if (envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getEstado().Equals("AUTORIZADO"))
                                    {
                                        progress.setTexto("COMPROBANTE AUTORIZADO");
                                        progress.Update();
                                        comprobante.CODIGOESTADOCOMPROBANTE = (long)EnumEstadoComprobante.AUTORIZADO;
                                        XMLGregorianCalendar fec = envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getFechaAutorizacion();
                                        comprobante.FECHAAUTORIZACION = new DateTime(fec.getYear(), fec.getMonth(), fec.getDay(), fec.getHour(), fec.getMinute(), fec.getSecond());
                                        comprobante.ARCHIVOAUTORIZADO = new XStreamUtil().getResuestaStream(System.Text.Encoding.UTF8.GetBytes(envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getComprobante()), comprobante.CLAVEDEACCESO, comprobante.FECHAAUTORIZACION.ToString(), comprobante.ESTADOCOMPROBANTE.DESCRIPCION);
                                        //enviar correo

                                        progress.setTexto("Enviando por correo.");
                                        progress.Update();
                                        this.enviarCorreo();
                                    }
                                    else
                                    {
                                        comprobante.CODIGOESTADOCOMPROBANTE = (long)EnumEstadoComprobante.NOAUTORIZADO;
                                        comprobante.NOVEDAD = envio.getRespuestaAutorizacion().getAutorizaciones().getAutorizacion()[0].getMensajes().getMensaje()[0].getMensaje();
                                    }
                                    progress.setTexto("Actualizando el comprobante en el sistema");
                                    new FacturaServicio().actualizarComprobante(comprobante);
                                    progress.Update();
                                }
                                catch (Exception ex)
                                {
                                    XtraMessageBox.Show(ex.ToString());
                                    return;
                                }
                            }
                        }
                        else
                        {
                            XtraMessageBox.Show(respuestaSolicitud.getComprobantes().getComprobante()[0].getMensajes().getMensaje()[0].getMensaje());
                        }
                    }
                }
            }
            else
            {
                XtraMessageBox.Show("NO EXISTE PARAMETRO GENERAR_SRI");
            }

            progress.Close();
        }