public void crearEspecialidad(object sender, EventArgs e)
        {
            try
            {
                String       comparar;
                Especialidad compEsp;
                especialidad = new Especialidad();

                especialidad.descripcionEspecialidad = txt_nombre.Text.ToString();
                especialidad.complejidad             = int.Parse(ddl_complejidad.SelectedItem.Value);
                especialidad.añosEspecialidad        = int.Parse(txt_anios.Text);

                especialidad.codigoEspecialidad = generarCodigo();

                iEsp.save <Especialidad>(especialidad);
                txt_nombre.Text = "";
                ddl_complejidad.SelectedIndex = 0;
                txt_anios.Text = "";
                String msj = "La especialidad ha sido creado correctamente.";
                Intermediario.confirmarCambios();
                mostrarMensaje(msj);
            }

            catch (Exception) { }
        }
Exemplo n.º 2
0
        private void CodigoIntermediario(List <String> lista_variaveis)
        {
            Intermediario codigo_intermediario = new Intermediario(lista_de_tokens, lista_variaveis);
            Tuple <List <String>, List <String>, List <Token> > intermediario = codigo_intermediario.GerarCodigo();

            CodigoIntermediarioRaspberry(intermediario.Item2, intermediario.Item3, intermediario.Item1);
        }
Exemplo n.º 3
0
        protected void crearUsuario(object sender, EventArgs e)
        {
            try
            {
                usuario               = new Usuario();
                usuario.login         = txt_nombre.Text.Trim();
                usuario.contraseña    = txt_password.Text.Trim();
                usuario.fechaVigencia = DateTime.Now.Date;
                //verificar el tipo del estado
                usuario.estado = null;

                iUs.save <Usuario>(usuario);
                String msj = "El usuario ha sido creado correctamente.";
                Intermediario.confirmarCambios();
                this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");

                //string continueUrl = "Inicio.aspx";

                //if (String.IsNullOrEmpty(continueUrl))
                //{
                //    continueUrl = "~/";
                //}
                //Response.Redirect(continueUrl);
            }
            catch (Exception) {
            }
        }
Exemplo n.º 4
0
        protected void crearUsuario(object sender, EventArgs e)
        {
            try
            {
                List <Usuario> existen = iUs.getByCriterio <Usuario>("", "", txt_username.Text);
                if (existen.Count == 0)
                {
                    if (ddl_perfil.SelectedValue == "0")
                    {
                        String msj = "Seleccione un perfil.";
                        this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");
                    }
                    else
                    {
                        usuario       = new Usuario();
                        usuario.login = txt_username.Text.Trim();
                        password      = txt_password.Text.Trim();
                        String hash = Encripta.EncodePassword(string.Concat(usuario.login, password));
                        usuario.contraseña    = hash;
                        usuario.fechaVigencia = DateTime.Now.Date;
                        //verificar el tipo del estado
                        usuario.estado = true;
                        Persona p = iPers.getByCriterio <Persona>("", "", txt_persona.Text).First <Persona>();
                        usuario.codigoPersona = p.codigoPersona;
                        usuario.codigoUsuario = generarCodigoUsuario();
                        usuario.mail          = txt_correo.Text;
                        usuario.recibeAlertas = cheq_alerta.Checked;

                        perf           = iPerf.getPorCriterio <Perfil>(ddl_perfil.SelectedValue.ToString()).First <Perfil>();
                        usuario.perfil = perf.codigoPerfil;

                        iUs.save <Usuario>(usuario);
                        String msj = "El usuario ha sido creado correctamente.";
                        Intermediario.confirmarCambios();
                        this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");

                        txt_apellido.Text   = "";
                        txt_codigo.Text     = "";
                        txt_nombre.Text     = "";
                        txt_password.Text   = "";
                        txt_persona.Text    = "";
                        txt_username.Text   = "";
                        txt_correo.Text     = "";
                        cheq_alerta.Checked = false;
                    }
                }
                else
                {
                    String msj = "El nombre de usuario ingresado ya existe. Por favor ingrese otro usuario.";
                    this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");
                    txt_username.Text = "";
                    txt_password.Text = "";
                }
            }
            catch (Exception) {
            }
        }
Exemplo n.º 5
0
        protected void bt_guardar_Click(object sender, EventArgs e)
        {
            try
            {
                remedio = new Medicamento();
                stock   = new StockMedicamento();

                remedio.descripcion         = txtName.Text.ToString();
                remedio.monoDroga           = txtName0.Text.ToString();
                remedio.codigo              = generarCodigo();
                remedio.descripcionAmpliada = txt_ampliada.Text;

                //Guarda el stock necesario y de alerta para este tipo de medicamento que está creando
                remedio.stockInicioMes = Convert.ToInt32(txt_stockInicial.Text);
                remedio.stockMinimo    = Convert.ToInt32(txt_stockMinimo.Text);
                remedio.stockAlerta    = Convert.ToInt32(txt_stockAlerta.Text);
                remedio.stockMaximo    = Convert.ToInt32(txt_stockMax.Text);
                remedio.diasAlertas    = Convert.ToInt32(txt_diasAlerta.Text);

                stock.codigoMedicamento = remedio.codigo;
                stock.codigoStock       = generarCodigoStock();
                stock.stockActual       = Convert.ToInt32(txt_stockInicial.Text);
                stock.lote = 4;

                UnidadMedida um = iUniMed.getPorCriterio <UnidadMedida>(ddl_unidadMed.SelectedValue.ToString()).First <UnidadMedida>();
                remedio.unidadMedida = um.codigoUnidadMed;
                Formato form = iformato.getPorCriterio <Formato>(ddl_Formato.SelectedValue.ToString()).First <Formato>();
                remedio.formato = form.codigoPresentacion;

                iMed.save <Medicamento>(remedio);
                iStock.save <StockMedicamento>(stock);

                txtName.Text          = "";
                txtName0.Text         = "";
                txt_ampliada.Text     = "";
                txt_stockInicial.Text = "";
                txt_stockInicial.Text = "";
                txt_stockMinimo.Text  = "";
                txt_stockMax.Text     = "";
                txt_diasAlerta.Text   = "";

                String msj = "El medicamento ha sido creado correctamente, con el nro: " + remedio.codigo;
                Intermediario.confirmarCambios();
                this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");
            }
            catch (Exception) { }
        }
        protected void crearEspecialidad(object sender, EventArgs e)
        {
            try
            {
                especialidad = new Especialidad();
                especialidad.descripcionEspecialidad = txt_nombre.Text.ToString();
                especialidad.complejidad             = int.Parse(txt_complejidad.Text);
                especialidad.añosEspecialidad        = int.Parse(txt_anios.Text);
                especialidad.codigoEspecialidad      = int.Parse(txt_codigo.Text);

                iEsp.save <Especialidad>(especialidad);
                String msj = "El usuario ha sido creado correctamente.";
                Intermediario.confirmarCambios();
                this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");
            }
            catch (Exception) { }
        }
        protected void bt_guardar_Click(object sender, EventArgs e)
        {
            if (guardado == false)
            {
                String msj1 = "Debe actualizar la grilla antes de guardar.";
                mostrarMensaje(msj1);
            }
            else
            {
                Intermediario.confirmarCambios();
                String msj = "Los cambios han sido guardados correctamente";

                mostrarMensaje(msj);
                txt_nombreMed.Text = "";

                guardado = false;
            }
        }
        protected void bt_Guardar_Click(object sender, EventArgs e)
        {
            //para asegurarme que se haya actualizado la base de datos
            if (guardado == false)
            {
                String msj1 = "Debe actualizar la grilla antes de guardar.";
                mostrarMensaje(msj1);
            }
            else
            {
                Intermediario.confirmarCambios();
                String msj = "Los cambios han sido guardados correctamente";

                mostrarMensaje(msj);
                txt_nombreEsp.Text = "";

                guardado = false;
            }
        }
Exemplo n.º 9
0
        protected void crearUsuario(object sender, EventArgs e)
        {
            try
            {
                Persona   persona   = new Persona();
                Direccion direccion = new Direccion();
                String    msj;
                persona.nombre        = txt_nombre.Text;
                persona.apellido      = txt_apellido.Text;
                persona.tipoDocumento = dl_tipoDocumento.Text;
                persona.telefono      = txt_telefono.Text;
                persona.dni           = txt_numero.Text;
                persona.esActiva      = true;
                //  persona.= int.Parse(ddl_persona.Text);

                direccion.calle           = txt_calle.Text;
                direccion.codigoDireccion = generarCodigoDireccion();
                direccion.nroCalle        = int.Parse(txt_nroCalle.Text);
                Provincia    prov = iProv.getPorCriterio <Provincia>(ddl_provincia.SelectedValue.ToString()).First <Provincia>();
                Departamento dpto = iDpto.getPorCriterio <Departamento>(ddl_dpto.SelectedValue.ToString()).First <Departamento>();
                Localidad    loc  = iLoc.getPorCriterio <Localidad>(ddl_localidad.SelectedValue.ToString()).First <Localidad>();
                direccion.codigoProvincia    = prov.codigoProvincia;
                direccion.codigoDepartamento = dpto.codigoDepartamento;
                direccion.codigoLocalidad    = loc.codigoLocalidad;

                persona.codigoPersona   = generarCodigoPersona();
                persona.codigoDireccion = direccion.codigoDireccion;


                iPers.save <Persona>(persona);
                iDir.save <Direccion>(direccion);

                Intermediario.confirmarCambios();
                msj = "La persona ha sido creada correctamente.";
                mostrarMensaje(msj);
                limpiarCampos();
            }
            catch (Exception)
            {
            }
        }
Exemplo n.º 10
0
        public void crearTipoMov(object sender, EventArgs e)
        {
            try
            {
                numerogenerado           = generarCodigo();
                tipoM                    = new TipoMovimiento();
                tipoM.codigoTipoMov      = numerogenerado;
                tipoM.descripcionTipoMov = txt_descripcionTM.Text;
                tipoM.tipo               = ddl_tipoMov.SelectedValue;

                iTM.save <TipoMovimiento>(tipoM);

                txt_descripcionTM.Text = "";


                String msj = "El tipo de movimiento ha sido creado correctamente";
                Intermediario.confirmarCambios();
                this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");
            }
            catch (Exception) { }
        }
Exemplo n.º 11
0
        public void crearPerfil(object sender, EventArgs e)
        {
            try
            {
                perfil             = new Perfil();
                perfil.descripcion = txt_descripcion.Text.ToString();
                //Privilegio priv = iPriv.getPorCriterio<Privilegio>(ddl_privilegio.SelectedValue.ToString()).First<Privilegio>();
                //perfil.privilegio = priv.codigoPrivilegio;


                perfil.codigoPerfil = generarCodigo();

                iPer.save <Perfil>(perfil);

                txt_descripcion.Text = "";

                String msj = "El perfil ha sido creado correctamente.";
                Intermediario.confirmarCambios();
                this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");
            }
            catch (Exception) { }
        }
Exemplo n.º 12
0
        public void crearEnfermedad(object sender, EventArgs e)
        {
            try
            {
                enfermedad = new Enfermedad();
                enfermedad.descripcionEnfermedad = txt_nombre.Text.ToString();
                enfermedad.gravedad    = int.Parse(dl_gravedad.SelectedItem.Value);
                enfermedad.tratamiento = txt_tratamiento.Text.ToString();
                enfermedad.diasReposo  = int.Parse(dl_diasReposo.SelectedItem.Value);
                //enfermedad.requiereInternacion= Boolean.Parse(dl_internacion.SelectedItem.Value);

                enfermedad.codigoEnfermedad = generarCodigo();

                iEnf.save <Enfermedad>(enfermedad);
                txt_nombre.Text           = "";
                dl_gravedad.SelectedIndex = 0;
                txt_tratamiento.Text      = "";
                String msj = "La enfermedad ha sido creado correctamente.";
                Intermediario.confirmarCambios();
                this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");
            }
            catch (Exception) { }
        }
Exemplo n.º 13
0
        //Guarda el lote
        public void crearLote(object sender, EventArgs e)
        {
            try
            {
                lote                  = new Lote();
                lote.nroLote          = int.Parse(nroLote.Text);
                lote.fechaElaboracion = DateTime.Parse(ChosenDate.Text);
                lote.fechaVto         = DateTime.Parse(fechaVencimiento.Text);

                //comparar ambas fechas para que fechaElab < fechaVto

                iLote.save <Lote>(lote);


                String msj = "El lote ha sido creado correctamente.";
                Intermediario.confirmarCambios();
                this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>");

                nroLote.Text          = null;
                ChosenDate.Text       = null;
                fechaVencimiento.Text = null;
            }
            catch (Exception) { }
        }
Exemplo n.º 14
0
        //Busca los stockMovimientos asociados a ese lote
        //Si existen stockMedicamentos-->Actualizar ese stock existente
        //Si no existe stockMedicamento-->Crear un nuevo stockMedicamento e indicarle el stock
        //Guarda el movimiento generado con todos sus detalles
        protected void bt_guardar_Click(object sender, EventArgs e)
        {
            try
            {
                numerogenerado = generarCodigo();
                String tipoM = ddl_tipoMovE.SelectedValue;
                //Busca el tipo de movimiento seleccionado
                tipoMov = iTM.getPorCriterio <TipoMovimiento>(tipoM).First <TipoMovimiento>();
                //Crea el movimiento
                DetalleMovimientoStock   f;
                MovimientoStock          movimiento = new MovimientoStock();
                IList <StockMedicamento> stockM;

                //Generaciòn del movimiento
                movimiento.fechaMovimiento = DateTime.Now.Date;
                movimiento.nroMovimiento   = numerogenerado; // generarCodigo();
                //Este tipo=1 indica que son movimienots de tipo entrada
                movimiento.tipoMovimiento = tipoMov.codigoTipoMov;
                movimiento.nroComprobante = int.Parse(txt_comprobante.Text);

                //Guarda el movimiento de stock
                iMovStk.save <MovimientoStock>(movimiento);
                Intermediario.confirmarCambios();

                DataTable dt = Session["DataTableMovimientosE"] as DataTable;

                //Guarda los elementos de la grilla--crea un detalle para cada uno

                foreach (DataRow row in dt.Rows)
                {
                    f = new DetalleMovimientoStock();
                    f.codigoMedicamento = Convert.ToInt32(row["codigo"]);
                    f.cantidad          = Convert.ToInt32(row["cantidad"]);
                    f.nroLote           = Convert.ToInt32(row["lote"]);
                    f.codDetalle        = generarCodigoDetalles();
                    f.nroMovimiento     = movimiento.nroMovimiento;
                    iDetMovStk.save <DetalleMovimientoStock>(f);
                    Intermediario.confirmarCambios();

                    //Busca el stock actual para el codigo seleccionado

                    stockM = iStockM.getCriterioById <StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"])));
                    //Verifica si tiene creado stock para ese lote
                    bool existe = false;
                    foreach (StockMedicamento stk in stockM)
                    {
                        if (stk.lote == Convert.ToInt32(row["lote"]))
                        {
                            existe = true;
                        }
                    }
                    if (stockM.Count == 0 || existe == false)
                    {
                        stockNuevo = new StockMedicamento();
                        stockNuevo.codigoMedicamento = Convert.ToInt32(row["codigo"]);
                        stockNuevo.codigoStock       = generarCodigoStock();
                        stockNuevo.stockActual       = Convert.ToInt32(row["cantidad"]);
                        stockNuevo.lote = Convert.ToInt32(row["lote"]);

                        iStockM.save <StockMedicamento>(stockNuevo);
                    }
                    else
                    {
                        StockMedicamento stockMed = stockM.First <StockMedicamento>();   // = iStockM.getCriterioById<StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))).First<StockMedicamento>();
                        stockMed.stockActual = stockMed.stockActual + Convert.ToInt32(row["cantidad"]);
                        iStockM.Update <StockMedicamento>(stockMed);
                    }

                    Intermediario.confirmarCambios();
                }


                msj = "El Movimiento ha sido creado correctamente, con el nro: " + numerogenerado;

                Session["DataTableMovimientosE"] = null;

                txt_comprobante.Text     = "";
                txt_cantidad.Text        = "";
                txt_descripcionMed.Text  = "";
                txt_codigoMed.Text       = "";
                txt_lote1.Text           = "";
                panelMedicamento.Visible = false;
                panel_grilla.Visible     = false;
                gv_Movimientos.Visible   = false;
                bt_Nuevo.Visible         = false;
                bt_cancel.Visible        = false;
                bt_guardar.Visible       = false;
                bt_cancelar.Visible      = false;
                ddl_lotes.Items.Clear();
                ddl_medicamentos.Items.Clear();
                //ddl_tipoMovE.Items.Clear();

                mostrarMensaje(msj);
            }

            catch (Exception) { }
        }
Exemplo n.º 15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            listaMedicamentos        = iStockMed.getAll <StockMedicamento>();
            tipito                   = iTipo.getPorCriterio <TipoMovimiento>("Vencimiento").First <TipoMovimiento>();
            vencidos.nroMovimiento   = generarCodigo();
            vencidos.fechaMovimiento = DateTime.Today;
            vencidos.nroComprobante  = 0;
            vencidos.tipoMovimiento  = tipito.codigoTipoMov;

            iMovStk.save <MovimientoStock>(vencidos);

            mensajes.Columns.Add("codigo");
            mensajes.Columns.Add("descripcion");
            mensajes.Columns.Add("mensaje");
            mensajes.Columns.Add("fecha");
            mensajes.Columns.Add("lote");

//            int det = generarCodigoDetalles();

            foreach (StockMedicamento m in listaMedicamentos)
            {
                Lote        lote    = iLote.getCriterioById <Lote>("", "", Convert.ToInt32(m.lote)).First <Lote>();
                Medicamento remedio = iMedicamento.getCriterioById <Medicamento>("", "", Convert.ToInt32(m.codigoMedicamento)).First <Medicamento>();
                DataRow     fila    = mensajes.NewRow();
                dif = DateTime.Today.Subtract(Convert.ToDateTime(lote.fechaVto));


                if (m.fechaBaja == null)
                {
                    //VERIFICAR CUANDO EL MEDICAMENTO YA ESTÉ VENCIDO
                    if (-(dif.Days) <= remedio.diasAlertas)
                    {
                        //Agregar el mensaje a un dto mensaje
                        //msj=new DtoMensaje();

                        //Si la fecha es igual o menor a la fecha de hoy le doy de baja
                        if (lote.fechaVto <= DateTime.Today)
                        {
                            m.fechaBaja = DateTime.Today;
                            iStockMed.Update <StockMedicamento>(m);

                            fila["codigo"]      = m.codigoMedicamento;
                            fila["descripcion"] = remedio.descripcion;
                            fila["fecha"]       = lote.fechaVto.ToString();
                            fila["mensaje"]     = "El medicamento con cód: " + m.codigoMedicamento + " está vencido. Fue dado de baja.";
                            fila["lote"]        = "Pertenece al lote: " + lote.nroLote;


                            detalle                   = new DetalleMovimientoStock();
                            detalle.codDetalle        = generarCodigoDetalles();
                            detalle.cantidad          = Convert.ToInt32(m.stockActual);
                            detalle.codigoMedicamento = m.codigoMedicamento;
                            detalle.nroMovimiento     = vencidos.nroMovimiento;
                            detalle.nroLote           = m.lote;

                            iDetMovStk.save <DetalleMovimientoStock>(detalle);
                        }
                        else
                        {
                            fila["codigo"]      = m.codigoMedicamento;
                            fila["descripcion"] = remedio.descripcion;
                            fila["fecha"]       = lote.fechaVto.ToString();
                            fila["mensaje"]     = "Faltan " + Convert.ToInt32(-dif.Days) + " días para que el medicamento se venza";
                            fila["lote"]        = "Pertenece al lote: " + lote.nroLote;
                        }
                        mensajes.Rows.Add(fila);
                    }
                }
            }

            Intermediario.confirmarCambios();

            if (mensajes.Rows.Count > 0)
            {
                panelMensajes.Visible = true;
                grillaMsjs.DataSource = mensajes;
                grillaMsjs.DataBind();
                grillaMsjs.Visible = true;
            }
        }
Exemplo n.º 16
0
        // Metodo que guarda la cabecera del Pedido y los detalles del mismo
        // se envia el pedido por mail al usuario logeado y al proveedor
        protected void bt_guardar_Click(object sender, EventArgs e)
        {
            DetallePedido detallePed;

            nvoPedido             = new Pedido();
            nvoPedido.nroPedido   = generarCodigo();
            nvoPedido.fechaPedido = DateTime.Today.Date;
            nvoPedido.proveedor   = 1;

            iPedido.save <Pedido>(nvoPedido);

            DataTable dt = Session["DtPedidos"] as DataTable;

            foreach (DataRow row in dt.Rows)
            {
                detallePed = new DetallePedido();
                detallePed.nroDetallePedido  = generarNroDetalle();
                detallePed.nroPedido         = nvoPedido.nroPedido;
                detallePed.codigoMedicamento = Convert.ToInt32(row["codigo"]);
                detallePed.cantidad          = Convert.ToInt32(row["cantidadPedida"]);

                iDetalle.save <DetallePedido>(detallePed);
                Intermediario.confirmarCambios();
            }

            //Recupera el usuario logueado al sistema
            String  usLogueado   = Session["UsuarioLogueado"].ToString();
            Usuario userLogueado = logueado.getPorCriterio <Usuario>(usLogueado).First <Usuario>();

            destinatario = userLogueado.mail;

            //Si tiene permiso para recibir mails, lo agrega a los destinatarios
            if (userLogueado.recibeAlertas == true)
            {
                msg.To.Add(destinatario);
            }

            //enviar mail al proveedor y al usuario logueado
            msg.To.Add("*****@*****.**");

            //Busca el mail del pedido
            string Body = System.IO.File.ReadAllText(Server.MapPath("MailPedidos.htm"));

            msg.Body       = Body;
            msg.IsBodyHtml = true;

            //Busca el adjunto-debe enviarle el pedido adjunto--
            // adjunto = new Attachment("C:adjunto.txt"); //lo adjuntamos
            //  msg.Attachments.Add(new Attachment(@"C:\Users\CarlaFern\Downloads\ReporteVto.pdf"));

            //Envìa desdel el mail del sistema
            msg.From = new MailAddress("*****@*****.**");

            //Configura el asunto del mail
            msg.Subject = "Centro Salud-Información";

            client.Credentials = new NetworkCredential("*****@*****.**", "sistemamaipu");
            client.Host        = "smtp.gmail.com";
            client.Port        = 25;
            client.EnableSsl   = true;

            //Envìa el mail
            client.Send(msg);

            //Enviar mensaje de pedido generado
            String msj = "Se ha creado un nuevo pedido. Nro Pedido: " + nvoPedido.nroPedido;

            mostrarMensaje(msj);
            txt_nombreMed.Text = "";
        }
Exemplo n.º 17
0
        //Guarda el movimiento generado con todos sus detalles. Actualiza el stock
        protected void bt_guardar_Click(object sender, EventArgs e)
        {
            try
            {
                numerogenerado = generarCodigo();

                String tipoM = ddl_tipMov.SelectedValue;
                tipoMov = iTM.getPorCriterio <TipoMovimiento>(tipoM).First <TipoMovimiento>();

                DetalleMovimientoStock f;
                MovimientoStock        movimiento = new MovimientoStock();

                StockMedicamento stockM;
                stockM = new StockMedicamento();

                //guarda la cabecera el movimiento
                movimiento.fechaMovimiento = DateTime.Now.Date;
                movimiento.nroMovimiento   = numerogenerado;
                movimiento.tipoMovimiento  = tipoMov.codigoTipoMov;
                movimiento.nroComprobante  = int.Parse(txt_comprobante.Text);

                iMovStk.save <MovimientoStock>(movimiento);
                Intermediario.confirmarCambios();

                // guarda los detalles del movimiento
                DataTable dt = Session["DataTableMovimientos"] as DataTable;
                foreach (DataRow row in dt.Rows)
                {
                    f = new DetalleMovimientoStock();
                    f.codigoMedicamento = Convert.ToInt32(row["codigo"]);
                    f.cantidad          = Convert.ToInt32(row["cantidad"]);
                    f.nroLote           = Convert.ToInt32(row["lote"]);
                    f.codDetalle        = generarCodigoDetalles();
                    f.nroMovimiento     = movimiento.nroMovimiento;
                    iDetMovStk.save <DetalleMovimientoStock>(f);
                    Intermediario.confirmarCambios();

                    stockM     = iStockM.getCriterioById <StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))).First <StockMedicamento>();
                    listaStkM1 = iStockM.getCriterioById <StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"])));

                    //actualiza el stock del medicamento
                    foreach (StockMedicamento stk in listaStkM1)
                    {
                        if (stk.lote == Convert.ToInt32(Convert.ToInt32(row["lote"])))
                        {
                            stk.stockActual = stk.stockActual - Convert.ToInt32(row["cantidad"]);

                            if (stk.stockActual == 0)
                            {
                                msj = "Algunos Medicamentos quedaron con stock en cero. ";
                            }

                            iStockM.Update <StockMedicamento>(stk);
                            Intermediario.confirmarCambios();
                            mostrarMensaje(msj);
                        }
                    }
                }


                msj = "El Movimiento ha sido creado correctamente, con el nro: " + numerogenerado;
                mostrarMensaje(msj);

                //limpia variables y pantalla
                txt_comprobante.Text     = "";
                txt_cantidad.Text        = "";
                txt_descripcionMed.Text  = "";
                txt_codigoMed.Text       = "";
                txt_lote1.Text           = "";
                panelMedicamento.Visible = false;
                panel_grilla.Visible     = false;
                gv_Movimientos.Visible   = false;
                bt_guardar.Visible       = false;
                bt_cancelar.Visible      = false;
            }

            catch (Exception) { }
        }