private bool validar(in_Ing_Egr_Inven_Info i_validar, ref string msg)
        {
            if (i_validar.lst_in_Ing_Egr_Inven_det.Count == 0)
            {
                mensaje = "Debe ingresar al menos un producto";
                return(false);
            }
            else
            {
                com_ordencompra_local_det_List    Lista_OC         = new com_ordencompra_local_det_List();
                List <com_ordencompra_local_Info> lista_detalle_oc = Lista_OC.get_list(Convert.ToDecimal(SessionFixed.IdTransaccionSessionActual));

                if (i_validar.IdNumMovi == 0)
                {
                    foreach (var item in i_validar.lst_in_Ing_Egr_Inven_det)
                    {
                        com_ordencompra_local_Info info_oc = lista_detalle_oc.Where(q => q.IdEmpresa == item.IdEmpresa && q.IdSucursal == item.IdSucursal && q.IdOrdenCompra == item.IdOrdenCompra && q.IdProducto == item.IdProducto).FirstOrDefault();
                        if (item.dm_cantidad_sinConversion > info_oc.Saldo)
                        {
                            mensaje = "La cantidad ingresada supera al saldo pendiente del producto: " + item.pr_descripcion;
                            return(false);
                        }
                    }

                    var Cant_OC = i_validar.lst_in_Ing_Egr_Inven_det.GroupBy(q => q.IdOrdenCompra).Count();
                    if (Cant_OC > 1)
                    {
                        mensaje = "Debe ingresar items de una sola orden de compra";
                        return(false);
                    }

                    #region ValidarExisteProductoxBodega
                    var param = bus_in_param.get_info(i_validar.IdEmpresa);
                    mensaje = bus_producto_x_bodega.ValidarProductoPorBodega(new List <in_producto_x_tb_bodega_Info>(i_validar.lst_in_Ing_Egr_Inven_det.Select(q => new in_producto_x_tb_bodega_Info
                    {
                        IdEmpresa      = i_validar.IdEmpresa,
                        IdSucursal     = i_validar.IdSucursal,
                        IdBodega       = i_validar.IdBodega ?? 0,
                        IdProducto     = q.IdProducto,
                        pr_descripcion = q.pr_descripcion
                    }).ToList()), (param.ValidarCtaCbleTransacciones ?? false));
                    if (!string.IsNullOrEmpty(mensaje))
                    {
                        return(false);
                    }
                    #endregion
                }
            }


            if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.cm_fecha, cl_enumeradores.eModulo.INV, i_validar.IdSucursal, ref msg))
            {
                return(false);
            }
            return(true);
        }
        public ActionResult EditingUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] in_Ing_Egr_Inven_det_Info info_det)
        {
            com_ordencompra_local_det_List Lista_OC = new com_ordencompra_local_det_List();
            int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa);

            List <in_Ing_Egr_Inven_det_Info>  lista_detalle    = List_in_Ing_Egr_Inven_det.get_list(Convert.ToDecimal(SessionFixed.IdTransaccionSessionActual));
            List <com_ordencompra_local_Info> lista_detalle_oc = Lista_OC.get_list(Convert.ToDecimal(SessionFixed.IdTransaccionSessionActual));
            in_Ing_Egr_Inven_det_Info         info_det_editar  = lista_detalle.Where(q => q.Secuencia == info_det.Secuencia).FirstOrDefault();
            com_ordencompra_local_Info        info_oc          = lista_detalle_oc.Where(q => q.IdEmpresa == info_det_editar.IdEmpresa && q.IdSucursal == info_det_editar.IdSucursal && q.IdOrdenCompra == info_det_editar.IdOrdenCompra && q.IdProducto == info_det_editar.IdProducto).FirstOrDefault();

            info_det_editar.dm_cantidad_sinConversion = info_det.dm_cantidad_sinConversion;

            if (info_det_editar != null)
            {
                if (info_det_editar.IdProducto != 0)
                {
                    in_Producto_Info info_producto = bus_producto.get_info(IdEmpresa, info_det_editar.IdProducto);
                    if (info_producto != null)
                    {
                        info_det.Saldo          = info_det_editar.Saldo;
                        info_det.IdProducto     = info_det_editar.IdProducto;
                        info_det.pr_descripcion = info_producto.pr_descripcion_combo;
                        info_det.IdUnidadMedida_sinConversion = info_producto.IdUnidadMedida;
                    }
                }
            }


            if (info_det_editar.dm_cantidad_sinConversion > 0 && info_det_editar.dm_cantidad_sinConversion <= info_det_editar.Saldo)
            {
                List_in_Ing_Egr_Inven_det.UpdateRow(info_det_editar, Convert.ToDecimal(SessionFixed.IdTransaccionSessionActual));
            }
            var model = List_in_Ing_Egr_Inven_det.get_list(Convert.ToDecimal(SessionFixed.IdTransaccionSessionActual));

            cargar_combos_detalle();
            return(PartialView("_GridViewPartial_inv_det", model));
        }