protected void Page_Load(object sender, EventArgs e)
    {
        tIdServicio.Text    = Request.QueryString["idservicio"];
        tIdFormato.Text     = Request.QueryString["idformato"];
        tNombreUsuario.Text = Request.QueryString["usuario"];
        idUsuario           = Request.QueryString["idUsuario"];

        int result;

        if (int.TryParse(tIdServicio.Text, out result))
        {
            idCliente = result;
        }
        else
        {
            Mensaje.Text = "Parámetros de Uso erróneos";
            return;
        }

        DataSet   Ds = new DataSet();
        DataTable Dt = new DataTable();

        safservicio.capaservicioSoapClient cliente = new safservicio.capaservicioSoapClient();

        Ds = cliente.ServicioCamposClave(idCliente);
        Dt = Ds.Tables[0];

        cmbCampoClave.DataTextField  = "salida";
        cmbCampoClave.DataValueField = "TipoTablaInv";
        cmbCampoClave.DataSource     = Dt;
        cmbCampoClave.DataBind();

        //   cliente.Close();

        SqlConnection cn = new SqlConnection();

        cn.ConnectionString = ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString;
        cn.Open();
        SqlCommand cm = new SqlCommand();

        cm.Connection  = cn;
        cm.CommandText = "spGetTipoEnvioClienteServicio @idcliente=" + tIdServicio.Text;

        SqlDataReader    Dr          = cm.ExecuteReader();
        List <tipoEnvio> lsTipoEnvio = new List <tipoEnvio>();

        while (Dr.Read())
        {
            tipoEnvio tp = new tipoEnvio();
            tp.codigo      = Dr["codigo"].ToString();
            tp.descripcion = Dr["descripcion"].ToString();
            lsTipoEnvio.Add(tp);
        }
        Dr.Close();

        cm.CommandText = "spGetTiempoRespuestaClienteServicio @idcliente=" + tIdServicio.Text;
        Dr             = cm.ExecuteReader();
        List <tiempoRespuesta> lsTiempoRespuesta = new List <tiempoRespuesta>();

        while (Dr.Read())
        {
            tiempoRespuesta tr = new tiempoRespuesta();
            tr.codigo      = Dr["codigo"].ToString();
            tr.descripcion = Dr["descripcion"].ToString();
            lsTiempoRespuesta.Add(tr);
        }
        Dr.Close();

        cm.CommandText = "select codigo, descripcion from SAF_Codificacion where nombre_tabla = 'FORMA_ENVIO' order by codigo";
        Dr             = cm.ExecuteReader();
        List <formaEnvio> lsFormaEnvio = new List <formaEnvio>();

        while (Dr.Read())
        {
            formaEnvio fe = new formaEnvio();
            fe.codigo      = Dr["codigo"].ToString();
            fe.descripcion = Dr["descripcion"].ToString();
            lsFormaEnvio.Add(fe);
        }
        Dr.Close();

        cm.CommandText = "select codigo, descripcion from SAF_Codificacion where nombre_tabla='TIPO_SALIDA' order by codigo";
        Dr             = cm.ExecuteReader();
        List <tipoSalida> lsTipoSalida = new List <tipoSalida>();

        while (Dr.Read())
        {
            tipoSalida ts = new tipoSalida();
            ts.codigo      = Dr["codigo"].ToString();
            ts.descripcion = Dr["descripcion"].ToString();
            lsTipoSalida.Add(ts);
        }
        Dr.Close();

        cmbFormaEnvio.DataValueField = "codigo";
        cmbFormaEnvio.DataTextField  = "descripcion";
        cmbFormaEnvio.DataSource     = lsFormaEnvio.ToList();
        cmbFormaEnvio.DataBind();

        cmbTiempoServicio.DataValueField = "codigo";
        cmbTiempoServicio.DataTextField  = "descripcion";
        cmbTiempoServicio.DataSource     = lsTiempoRespuesta.ToList();
        cmbTiempoServicio.DataBind();

        cmbTipoEnvio.DataValueField = "codigo";
        cmbTipoEnvio.DataTextField  = "descripcion";
        cmbTipoEnvio.DataSource     = lsTipoEnvio.ToList();
        cmbTipoEnvio.DataBind();

        cmbTipoSalida.DataValueField = "codigo";
        cmbTipoSalida.DataTextField  = "descripcion";
        cmbTipoSalida.DataSource     = lsTipoSalida.ToList();
        cmbTipoSalida.DataBind();

        habilitarEnvio(false);
    }
Пример #2
0
    private void RevisarInformacion(string Archivo)
    {
        long   idServicio = int.Parse(tIdServicio.Text);
        long   idFormato  = int.Parse(tIdFormato.Text);
        string usuario    = tNombreUsuario.Text;
        long   filas      = 0;
        long   columnas   = 0;

        List1.Items.Clear();

        string linea;

        System.IO.StreamReader file = new System.IO.StreamReader(Archivo);
        linea = file.ReadLine();
        file.Close();

        //Verificar que en la cabecera no existan columnas numericas
        Char delimiter = ';';

        String[] substrings = linea.Split(delimiter);
        Boolean  cabError   = false;
        string   tipo1;
        int      numero;

        foreach (var substring in substrings)
        {
            if (int.TryParse(substring, out numero) | substring.Trim() == "")
            {
                cabError = true;
            }
        }

        if (cabError)
        {
            Mensaje.Text = "Existen errores en los nombres de las columnas en la primera fila (pueden haber nombres vacío o sólo números), corrija para subir el archivo.";
            return;
        }

        DataTable Dt = new DataTable();

        if (Archivo != "")
        {
            if (File.ReadAllLines(Archivo).Length < 2)
            {
                Mensaje.Text = "El archivo debe contener una linea de cabecera y una o más línea con datos.";
                return;
            }

            Dt       = ByteBufferToTable(File.ReadAllBytes(Archivo), true);
            filas    = Dt.Rows.Count;
            columnas = Dt.Columns.Count;
        }

        lColumnas.Text = columnas.ToString();
        lFilas.Text    = filas.ToString();

        DataSet Ds       = new DataSet();
        DataSet DsClaves = new DataSet();

        safservicio.capaservicioSoapClient cliente = new safservicio.capaservicioSoapClient();

        Ds       = cliente.campos_Formato_Servicio_DataTable(idFormato);
        DsClaves = cliente.ServicioCamposClave(idServicio);

        DataTable DtClaves = new DataTable();

        DtClaves = DsClaves.Tables[0];



        int           tipocampo;
        int           tipovalor;
        int           largo;
        string        valor;
        string        nombreCampo;
        List <string> errores = new List <string>();

        DataTable dt2 = new DataTable();

        dt2 = Ds.Tables[0];

        lColFormato.Text = (dt2.Rows.Count).ToString();

        if (dt2.Rows.Count != columnas)
        {
            Mensaje.Text = "El archivo no puede ser procesado, el numero de columnas es distinto al formato definido.";
            return;
        }


        for (int r = 0; r <= dt2.Rows.Count - 1; r++)
        {
            tipocampo   = int.Parse(dt2.Rows[r][6].ToString());
            largo       = int.Parse(dt2.Rows[r][5].ToString());
            nombreCampo = dt2.Rows[r][3].ToString();

            bool   isNum;
            double retNum;

            for (int x = 0; x <= Dt.Rows.Count - 1; x++)
            {
                valor = Dt.Rows[x][r].ToString();
                //Verificar Error de Tipo
                if (tipocampo == 2) //numerico
                {
                    if (valor.Length > 0)
                    {
                        isNum = Double.TryParse(Convert.ToString(valor),
                                                System.Globalization.NumberStyles.Any,
                                                System.Globalization.NumberFormatInfo.InvariantInfo,
                                                out retNum);
                        if (!isNum)
                        {
                            errores.Add("Linea " + (x + 1).ToString() + ", Columna " + (r + 1).ToString() + ", Error de Tipo");
                        }
                    }
                    else
                    {
                        valor = "0";
                    }
                }
                if (tipocampo == 1) //texto
                {
                }
                if (tipocampo == 3)//fecha
                {
                }
                //Verificar Error de Largo
                if (largo > 0)
                {
                    if (largo < valor.Length && valor.Length > 0)
                    {
                        errores.Add("Linea " + (x + 1).ToString() + ", Columna " + (r + 1).ToString() + ", Error de Largo, Valor " + valor.ToString());
                    }
                }
            }
        }


        if (errores.Count > 0)
        {
            foreach (var i in errores)
            {
                List1.Items.Add(i.ToString());
            }

            lErrores.Text = errores.Count.ToString();

            Mensaje.Text = "El archivo no puede ser procesado ya que contiene errores, corrijalos y vuelva a subirlo.";
            return;
        }

        //Verificar Existencia de Registro y Cual es su estado

        SqlConnection cn = new SqlConnection();

        cn.ConnectionString = ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString;
        cn.Open();
        SqlCommand cm = new SqlCommand();

        cm.Connection = cn;
        SqlDataReader Dr;

        if (DtClaves.Rows.Count > 0)
        {
            for (int fl = 0; fl <= DtClaves.Rows.Count - 1; fl++)
            {
                for (int f2 = 0; f2 <= dt2.Rows.Count - 1; f2++)
                {
                    if (DtClaves.Rows[fl][0].ToString() == dt2.Rows[f2][3].ToString()) //Busco el Campo Clave dentro de los Campos asignados al Formato
                    {
                        DtClaves.Rows[fl][2] = dt2.Rows[f2][0];                        // El Orden (que indica la columna en el archivo)
                        DtClaves.Rows[fl][3] = dt2.Rows[f2][6];                        // El tipo del Campo
                    }
                }
            }

            int    posicion = 0;
            string campoIdCaja;
            for (int f3 = 0; f3 <= dt2.Rows.Count - 1; f3++)
            {
                campoIdCaja = dt2.Rows[f3][3].ToString().ToUpper();
                if ("ID_CAJA" == campoIdCaja) //Busco el Campo Clave dentro de los Campos asignados al Formato
                {
                    posicion = f3;
                }
            }

            string  cadena;
            string  campo;
            Boolean existe;
            int     numCol;
            string  nomCol;
            string  numeroCaja;
            Boolean CajaExiste = false;
            for (int fl = 0; fl <= Dt.Rows.Count - 1; fl++)
            {
                numeroCaja = Dt.Rows[fl][posicion].ToString();

                cm.CommandText = "spGetEstadoCaja @idCaja=" + numeroCaja.ToString();
                Dr             = cm.ExecuteReader();
                CajaExiste     = Dr.Read();
                Dr.Close();

                if (!CajaExiste)
                {
                    cadena = "";
                    for (int f2 = 0; f2 <= DtClaves.Rows.Count - 1; f2++)
                    {
                        nomCol = DtClaves.Rows[f2][1].ToString();
                        numCol = 0;
                        for (int pos = 0; pos <= Dt.Columns.Count - 1; pos++)
                        {
                            if (Dt.Columns[pos].ColumnName == nomCol)
                            {
                                numCol = pos;
                            }
                        }
                        if (int.Parse(DtClaves.Rows[f2][3].ToString()) == 2)
                        {
                            campo = " and " + DtClaves.Rows[f2][0].ToString() + "=" + Dt.Rows[fl][numCol];
                        }
                        else
                        {
                            campo = " and " + DtClaves.Rows[f2][0].ToString() + "='" + Dt.Rows[fl][numCol] + "'";
                        }
                        cadena = cadena + campo;
                    }

                    cm.CommandText = "spGetVerificarExistenciaEnInventario @idCliente=" + idServicio.ToString() + ", @filtro='" + cadena.Replace("'", "''") + "'";
                    Dr             = cm.ExecuteReader();
                    existe         = Dr.Read();
                    Dr.Close();
                    if (existe)
                    {
                        errores.Add("Linea " + (fl + 1).ToString() + ", el registro que intenta subir como nuevo ya existe.");
                    }
                }
                else
                {
                    errores.Add("Linea " + (fl + 1).ToString() + ", el numero de caja que intenta subir ya existe.");
                }
            }
        }


        if (errores.Count > 0)
        {
            foreach (var i in errores)
            {
                List1.Items.Add(i.ToString());
            }

            lErrores.Text = errores.Count.ToString();

            Mensaje.Text = "El archivo no puede ser procesado ya que contiene errores, corrijalos y vuelva a subirlo.";
            return;
        }

        DataSet Ds2 = new DataSet();

        Ds2.Tables.Add(Dt);
        string respuesta;

        respuesta = "";
        respuesta = cliente.grabarSolicitudIngresoDataSet(idServicio.ToString(), idFormato.ToString(), usuario, idUsuario, Ds2);

        JavaScriptSerializer jss    = new JavaScriptSerializer();
        DataTable            dtresp = (DataTable)JsonConvert.DeserializeObject(respuesta, typeof(DataTable));

        if (dtresp.Rows.Count > 0)
        {
            if (int.Parse(dtresp.Rows[0][0].ToString()) > 0)
            {
                List1.Items.Clear();
                Mensaje.Text    = "Se ha creado la Solicitud Número: " + dtresp.Rows[0][0].ToString();
                Button1.Enabled = true;
            }
        }
    }