protected void btn_agregar_detalle_ServerClick(object sender, EventArgs e)
        {
            string str_id_categoria = Request.QueryString["cat"];
            string str_mes = Request.QueryString["m"];
            string str_anio = Request.QueryString["a"];

            int id_categoria = Convert.ToInt32(str_id_categoria);
            int mes = Convert.ToInt32(str_mes);
            int anio = Convert.ToInt32(str_anio);

            int id_valor_item_mes = Convert.ToInt32(hidden_id_valor_mes.Value);
            int id_detalle = Convert.ToInt32(hidden_id_detalle_01.Value);
            int id_item = Convert.ToInt32(hidden_id_item_01.Value);
            hidden_id_detalle_01.Value = "0";
            Validate();
            if (IsValid)
            {
                using (var cxt = new Model1Container())
                {
                    if (ddl_equipo.SelectedItem.Text != "Asociado a la categoria")
                    {
                        Ingreso_egreso_mensual_equipo ioequipo;
                        Valor_mes vm;
                        int idEquipo = Convert.ToInt32(ddl_equipo.SelectedItem.Value);

                        ioequipo = cxt.Ingresos_egresos_mensuales_equipos.FirstOrDefault(x => x.mes == mes && x.anio == anio && x.id_equipo == idEquipo);
                        if (ioequipo == null)
                        {
                            ioequipo = new Ingreso_egreso_mensual_equipo();
                            ioequipo.anio = anio;
                            ioequipo.mes = mes;
                            ioequipo.id_equipo = idEquipo;

                            vm = new Valor_mes();
                            vm.valor = 0;
                            vm.id_item = id_item;

                            ioequipo.Valores_meses.Add(vm);

                            cxt.Ingresos_egresos_mensuales_equipos.Add(ioequipo);

                        }
                        else
                        {
                            vm = ioequipo.Valores_meses.FirstOrDefault(x => x.id_item == id_item);
                            if (vm == null)
                            {
                                vm = new Valor_mes();
                                vm.valor = 0;
                                vm.id_item = id_item;

                                ioequipo.Valores_meses.Add(vm);
                            }
                        }

                        cxt.SaveChanges();

                        ioequipo = cxt.Ingresos_egresos_mensuales_equipos.First(x => x.mes == mes && x.anio == anio && x.id_equipo == idEquipo);
                        vm = ioequipo.Valores_meses.First(x => x.id_item == id_item);

                        if (id_detalle > 0)
                        {
                            Detalle_valor_item_mes detalle = cxt.Detalle_valores_items_mes.First(x => x.id_detalle_valor_item_mes == id_detalle);
                            detalle.monto = Convert.ToDecimal(tb_detalle_monto.Text.Replace(".", ",").Replace("$", ""));
                            detalle.descripcion = tb_detalle_descripcion.Text;
                            detalle.fecha = Convert.ToDateTime(tb_detalle_fecha.Value);
                        }
                        else
                        {
                            Detalle_valor_item_mes detalle = new Detalle_valor_item_mes();
                            detalle.monto = Convert.ToDecimal(tb_detalle_monto.Text.Replace(".", ","));
                            detalle.descripcion = tb_detalle_descripcion.Text;
                            detalle.fecha = Convert.ToDateTime(tb_detalle_fecha.Value);
                            vm.Detalle.Add(detalle);
                        }

                        decimal valor = vm.Detalle.Sum(x => x.monto);
                        vm.valor = valor;

                        Item_ingreso_egreso item = cxt.Items_ingresos_egresos.First(x => x.id_item == id_item);

                        //Accesorios hs extra
                        if (item.nombre == "Horas Extra Chofer" && item.Padre.nombre == "Costos Variables")
                        {
                            int id_item_impuesto = cxt.Items_ingresos_egresos.First(x => x.nombre == "Accesorios Hs Extra 24% (1/12x2)" && x.Padre.nombre == "Costos Variables").id_item;
                            Valor_mes vm_impuesto = cxt.Valores_meses.FirstOrDefault(ii => ii.id_ingreso_egreso_mensual == vm.id_ingreso_egreso_mensual && ii.id_item == id_item_impuesto);

                            vm_impuesto = new Valor_mes();
                            vm_impuesto.valor = 0;
                            vm_impuesto.id_item = id_item_impuesto;

                            ioequipo.Valores_meses.Add(vm);

                            Detalle_valor_item_mes detalle_impuesto = new Detalle_valor_item_mes();
                            detalle_impuesto.fecha = new DateTime(ioequipo.anio, ioequipo.mes, 1);
                            detalle_impuesto.descripcion = "Calculado automáticamente";
                            detalle_impuesto.monto = valor * (Convert.ToDecimal(-5) / Convert.ToDecimal(100));

                            if (vm_impuesto.Detalle.Count > 1)
                            {
                                vm_impuesto.Detalle.Clear();
                                cxt.SaveChanges();
                            }

                            if (vm_impuesto.Detalle.Count == 0)
                            {
                                vm_impuesto.Detalle.Add(detalle_impuesto);
                                cxt.SaveChanges();
                            }
                            else
                            {
                                vm_impuesto.Detalle.First().monto = detalle_impuesto.monto;
                                cxt.SaveChanges();
                            }
                        }

                        cxt.SaveChanges();
                    }
                    else
                    {
                        Aux_total_categoria_mes iocategoria;
                        Valor_mes_categoria vm;

                        iocategoria = cxt.Aux_total_categoria_meses.FirstOrDefault(x => x.mes == mes && x.anio == anio && x.id_categoria_equipo == id_categoria);
                        if (iocategoria == null)
                        {
                            iocategoria = new Aux_total_categoria_mes();
                            iocategoria.anio = anio;
                            iocategoria.mes = mes;
                            iocategoria.id_categoria_equipo = id_categoria;

                            vm = new Valor_mes_categoria();
                            vm.valor = 0;
                            vm.id_item = id_item;

                            iocategoria.Valores_mes.Add(vm);

                            cxt.Aux_total_categoria_meses.Add(iocategoria);

                        }
                        else
                        {
                            vm = iocategoria.Valores_mes.FirstOrDefault(x => x.id_item == id_item);
                            if (vm == null)
                            {
                                vm = new Valor_mes_categoria();
                                vm.valor = 0;
                                vm.id_item = id_item;

                                iocategoria.Valores_mes.Add(vm);
                            }
                        }

                        cxt.SaveChanges();

                        iocategoria = cxt.Aux_total_categoria_meses.First(x => x.mes == mes && x.anio == anio && x.id_categoria_equipo == id_categoria);
                        vm = iocategoria.Valores_mes.First(x => x.id_item == id_item);

                        if (id_detalle > 0)
                        {
                            Detalle_valor_item_mes_categoria detalle = cxt.Detalle_valor_item_meses_categoria.First(x => x.id_detalle_valor_item_mes_categoria == id_detalle);
                            detalle.monto = Convert.ToDecimal(tb_detalle_monto.Text.Replace(".", ",").Replace("$", ""));
                            detalle.descripcion = tb_detalle_descripcion.Text;
                            detalle.fecha = Convert.ToDateTime(tb_detalle_fecha.Value);
                        }
                        else
                        {
                            Detalle_valor_item_mes_categoria detalle = new Detalle_valor_item_mes_categoria();
                            detalle.monto = Convert.ToDecimal(tb_detalle_monto.Text.Replace(".", ","));
                            detalle.descripcion = tb_detalle_descripcion.Text;
                            detalle.fecha = Convert.ToDateTime(tb_detalle_fecha.Value);
                            vm.Detalle.Add(detalle);
                        }

                        decimal valor = vm.Detalle.Sum(x => x.monto);
                        vm.valor = valor;

                        Item_ingreso_egreso item = cxt.Items_ingresos_egresos.First(x => x.id_item == id_item);

                        //Accesorios hs extra
                        if (item.nombre == "Horas Extra Chofer" && item.Padre.nombre == "Costos Variables")
                        {
                            int id_item_impuesto = cxt.Items_ingresos_egresos.First(x => x.nombre == "Accesorios Hs Extra 24% (1/12x2)" && x.Padre.nombre == "Costos Variables").id_item;
                            Valor_mes_categoria vm_impuesto = cxt.Valor_mes_categorias.FirstOrDefault(ii => ii.id_aux_total_categoria_mes == vm.id_aux_total_categoria_mes && ii.id_item == id_item_impuesto);

                            vm_impuesto = new Valor_mes_categoria();
                            vm_impuesto.valor = 0;
                            vm_impuesto.id_item = id_item_impuesto;

                            iocategoria.Valores_mes.Add(vm);

                            Detalle_valor_item_mes_categoria detalle_impuesto = new Detalle_valor_item_mes_categoria();
                            detalle_impuesto.fecha = new DateTime(iocategoria.anio, iocategoria.mes, 1);
                            detalle_impuesto.descripcion = "Calculado automáticamente";
                            detalle_impuesto.monto = valor * (Convert.ToDecimal(-5) / Convert.ToDecimal(100));

                            if (vm_impuesto.Detalle.Count > 1)
                            {
                                vm_impuesto.Detalle.Clear();
                                cxt.SaveChanges();
                            }

                            if (vm_impuesto.Detalle.Count == 0)
                            {
                                vm_impuesto.Detalle.Add(detalle_impuesto);
                                cxt.SaveChanges();
                            }
                            else
                            {
                                vm_impuesto.Detalle.First().monto = detalle_impuesto.monto;
                                cxt.SaveChanges();
                            }
                        }

                        cxt.SaveChanges();
                    }

                    div_alert.Visible = true;
                }
            }

            lbl_texto_boton_agregar_editar.Text = "Agregar";

            Ver_editar_valores_mes(id_item);
        }
        public void Agregar_detalle_en_valor_mensual_segun_empleado(Tipo_empleado tipo, Valor_mensual item_valor, int mes, int anio, decimal monto)
        {
            using (var cxt = new Model1Container())
            {
                Ingreso_egreso_mensual_equipo iemensual = Ingresos_egresos_mensuales.FirstOrDefault(x => x.anio == anio && x.mes == mes);

                if (iemensual == null)
                {
                    iemensual = new Ingreso_egreso_mensual_equipo();
                    iemensual.id_equipo = this.id_equipo;
                    iemensual.mes = mes;
                    iemensual.anio = anio;
                    cxt.Ingresos_egresos_mensuales_equipos.Add(iemensual);
                    cxt.SaveChanges();
                }

                string nombre_item = ObtenerNombreItem_segun_empleado(tipo, item_valor);

                if (nombre_item != "")
                {
                    Item_ingreso_egreso item = cxt.Items_ingresos_egresos.FirstOrDefault(x => x.nombre == nombre_item);
                    if (item != null)
                    {
                        Valor_mes valor_mes = iemensual.Valores_meses.FirstOrDefault(x => x.id_item == item.id_item);
                        if (valor_mes == null)
                        {
                            valor_mes = new Valor_mes();
                            valor_mes.id_ingreso_egreso_mensual = iemensual.id_ingreso_egreso_mensual;
                            valor_mes.id_item = item.id_item;
                            valor_mes.valor = 0;
                            cxt.Valores_meses.Add(valor_mes);
                            cxt.SaveChanges();
                        }

                        //aca tengo el item valor mes del
                        string descripcion_detalle = "";

                        switch (tipo)
                        {
                            case Tipo_empleado.Mecanicos_pintores:
                                switch (item_valor)
                                {
                                    case Valor_mensual.Mano_obra:
                                        descripcion_detalle = "Gastos obtenidos de planilla de cálculos Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.Insumos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.Herramientas:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.Viaticos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.ViaticosPP:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.Indumentaria:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.Repuestos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.Repuestos_pp:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.Gastos_varios:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;
                                    case Valor_mensual.Otros:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Mecánicos-Pintores";
                                        break;

                                    default:
                                        break;
                                }
                                break;
                            case Tipo_empleado.Soldadores:
                                switch (item_valor)
                                {
                                    case Valor_mensual.Mano_obra:
                                        descripcion_detalle = "Gastos obtenidos de planilla de cálculos Soldadores";
                                        break;
                                    case Valor_mensual.Insumos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    case Valor_mensual.Herramientas:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    case Valor_mensual.Viaticos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    case Valor_mensual.ViaticosPP:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    case Valor_mensual.Indumentaria:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    case Valor_mensual.Repuestos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    case Valor_mensual.Repuestos_pp:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    case Valor_mensual.Gastos_varios:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    case Valor_mensual.Otros:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Soldadores";
                                        break;
                                    default:
                                        break;
                                }
                                break;
                            case Tipo_empleado.Grueros:
                                switch (item_valor)
                                {
                                    case Valor_mensual.Mano_obra:
                                        descripcion_detalle = "Gastos obtenidos de planilla de cálculos Grueros";
                                        break;
                                    case Valor_mensual.Insumos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    case Valor_mensual.Herramientas:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    case Valor_mensual.Viaticos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    case Valor_mensual.ViaticosPP:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    case Valor_mensual.Indumentaria:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    case Valor_mensual.Repuestos:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    case Valor_mensual.Repuestos_pp:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    case Valor_mensual.Gastos_varios:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    case Valor_mensual.Otros:
                                        descripcion_detalle = "Gastos obtenidos de planilla de gastos en función horas hombre Grueros";
                                        break;
                                    default:
                                        break;
                                }
                                break;
                            default:
                                break;
                        }

                        Detalle_valor_item_mes detalle = valor_mes.Detalle.FirstOrDefault(x => x.descripcion == descripcion_detalle);

                        if (detalle == null)
                        {
                            detalle = new Detalle_valor_item_mes();
                            detalle.id_valor_mes = valor_mes.id;
                            detalle.fecha = new DateTime(anio, mes, DateTime.DaysInMonth(anio, mes));
                            detalle.descripcion = descripcion_detalle;
                            detalle.monto = monto;
                            cxt.Detalle_valores_items_mes.Add(detalle);
                        }
                        else
                        {
                            detalle = cxt.Detalle_valores_items_mes.First(x => x.id_detalle_valor_item_mes == detalle.id_detalle_valor_item_mes);
                            detalle.monto = monto;
                        }

                        cxt.SaveChanges();
                    }
                }

            }
        }
        public void Agregar_detalle(Valor_mensual item_valor, int mes, int anio, decimal monto)
        {
            using (var cxt = new Model1Container())
            {
                Ingreso_egreso_mensual_equipo iemensual = Ingresos_egresos_mensuales.FirstOrDefault(x => x.anio == anio && x.mes == mes);

                if (iemensual == null)
                {
                    iemensual = new Ingreso_egreso_mensual_equipo();
                    iemensual.id_equipo = this.id_equipo;
                    iemensual.mes = mes;
                    iemensual.anio = anio;
                    cxt.Ingresos_egresos_mensuales_equipos.Add(iemensual);
                    cxt.SaveChanges();
                }

                string nombre_item = ObtenerNombreItem(item_valor);

                if (nombre_item != "")
                {
                    Item_ingreso_egreso item = cxt.Items_ingresos_egresos.FirstOrDefault(x => x.nombre == nombre_item);
                    if (item != null)
                    {
                        Valor_mes valor_mes = iemensual.Valores_meses.FirstOrDefault(x => x.id_item == item.id_item);
                        if (valor_mes == null)
                        {
                            valor_mes = new Valor_mes();
                            valor_mes.id_ingreso_egreso_mensual = iemensual.id_ingreso_egreso_mensual;
                            valor_mes.id_item = item.id_item;
                            valor_mes.valor = 0;
                            cxt.Valores_meses.Add(valor_mes);
                            cxt.SaveChanges();
                        }

                        //aca tengo el item valor mes del
                        string descripcion_detalle = "Gastos obtenidos de planilla de gastos administrativos";

                        Detalle_valor_item_mes detalle = valor_mes.Detalle.FirstOrDefault(x => x.descripcion == descripcion_detalle);

                        if (detalle == null)
                        {
                            detalle = new Detalle_valor_item_mes();
                            detalle.id_valor_mes = valor_mes.id;
                            detalle.fecha = new DateTime(anio, mes, DateTime.DaysInMonth(anio, mes));
                            detalle.descripcion = descripcion_detalle;
                            detalle.monto = monto;
                            cxt.Detalle_valores_items_mes.Add(detalle);
                        }
                        else
                        {
                            detalle = cxt.Detalle_valores_items_mes.First(x => x.id_detalle_valor_item_mes == detalle.id_detalle_valor_item_mes);
                            detalle.monto = monto;
                        }

                        cxt.SaveChanges();
                    }
                }
            }
        }
        public void Agregar_detalle(DateTime dia, decimal monto, string item_informado, string descripcion)
        {
            using (var cxt = new Model1Container())
            {
                int mes = dia.Month;
                int anio = dia.Year;

                Ingreso_egreso_mensual_equipo iemensual = Ingresos_egresos_mensuales.FirstOrDefault(x => x.anio == anio && x.mes == mes);

                if (iemensual == null)
                {
                    iemensual = new Ingreso_egreso_mensual_equipo();
                    iemensual.id_equipo = this.id_equipo;
                    iemensual.mes = mes;
                    iemensual.anio = anio;
                    cxt.Ingresos_egresos_mensuales_equipos.Add(iemensual);
                    cxt.SaveChanges();
                }

                Item_ingreso_egreso item = cxt.Items_ingresos_egresos.FirstOrDefault(x => x.nombre == item_informado);

                if (item != null)
                {
                    Valor_mes valor_mes = iemensual.Valores_meses.FirstOrDefault(x => x.id_item == item.id_item);
                    if (valor_mes == null)
                    {
                        valor_mes = new Valor_mes();
                        valor_mes.id_ingreso_egreso_mensual = iemensual.id_ingreso_egreso_mensual;
                        valor_mes.id_item = item.id_item;
                        valor_mes.valor = 0;
                        cxt.Valores_meses.Add(valor_mes);
                        cxt.SaveChanges();
                    }

                    //aca tengo el item valor mes del
                    string descripcion_detalle = "[Importado automaticamente]" + descripcion;

                    Detalle_valor_item_mes detalle = valor_mes.Detalle.FirstOrDefault(x => x.descripcion == descripcion_detalle && x.fecha == dia && x.monto == monto);

                    if (detalle == null)
                    {
                        detalle = new Detalle_valor_item_mes();
                        detalle.id_valor_mes = valor_mes.id;
                        detalle.fecha = dia;
                        detalle.descripcion = descripcion_detalle;
                        detalle.monto = monto;
                        cxt.Detalle_valores_items_mes.Add(detalle);
                        cxt.SaveChanges();
                    }
                    else
                    {
                    //nada, ya existe;
                    }

                }
            }
        }