public Boolean GrabarDB(ro_Nomina_Tipoliqui_Info Info, ref int idtipo, ref string msg)
        {
            try
            {
                using (EntitiesRoles context = new EntitiesRoles())
                {
                    var address = new ro_Nomina_Tipoliqui();

                    idtipo                           = getID(Info.IdEmpresa, Info.IdNomina_Tipo, ref msg);
                    address.IdEmpresa                = Info.IdEmpresa;
                    address.IdNomina_Tipo            = Info.IdNomina_Tipo;
                    address.IdNomina_TipoLiqui       = Info.IdNomina_TipoLiqui = idtipo;
                    address.DescripcionProcesoNomina = Info.DescripcionProcesoNomina;
                    address.Estado                   = "A";
                    address.FechaTransac             = Info.FechaTransac;
                    address.IdUsuario                = Info.IdUsuario;

                    context.ro_Nomina_Tipoliqui.Add(address);
                    context.SaveChanges();

                    //GUARDA EL DETALLE
                    if (Info.oLstNominaRubroOrden.Count > 0)
                    {
                        ro_nomina_tipo_liqui_orden_Data oData = new ro_nomina_tipo_liqui_orden_Data();
                        foreach (ro_nomina_tipo_liqui_orden_Info item in Info.oLstNominaRubroOrden)
                        {
                            item.IdEmpresa         = address.IdEmpresa;
                            item.IdNominaTipo      = address.IdNomina_Tipo;
                            item.IdNominaTipoLiqui = address.IdNomina_TipoLiqui;

                            if (!oData.GrabarDB(item, ref mensaje))
                            {
                                return(false);
                            }
                        }
                    }
                }
                msg = "Se ha grabado correctamente el registro#" + Info.IdNomina_TipoLiqui;
                return(true);
            }
            catch (Exception ex)
            {
                string array = ToString();
                tb_sis_Log_Error_Vzen_Data oDataLog      = new tb_sis_Log_Error_Vzen_Data();
                tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", array, "", "", "", "", "", DateTime.Now);
                oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje);
                mensaje = ex.InnerException + " " + ex.Message;
                throw new Exception(ex.InnerException.ToString());
            }
        }
        public Boolean ModificaDB(ro_Nomina_Tipoliqui_Info Info, ref string msg)
        {
            try
            {
                using (EntitiesRoles context = new EntitiesRoles())
                {
                    var contact = context.ro_Nomina_Tipoliqui.First(
                        var => var.IdEmpresa == Info.IdEmpresa &&
                        var.IdNomina_Tipo == Info.IdNomina_Tipo &&
                        var.IdNomina_TipoLiqui == Info.IdNomina_TipoLiqui
                        );
                    contact.IdEmpresa                = Info.IdEmpresa;
                    contact.IdNomina_Tipo            = Info.IdNomina_Tipo;
                    contact.DescripcionProcesoNomina = Info.DescripcionProcesoNomina;
                    contact.Estado              = Info.Estado;
                    contact.FechaUltModi        = Info.FechaUltModi;
                    contact.IdUsuarioUltModi    = Info.IdUsuarioUltModi;
                    contact.MotivoAnu           = "";
                    contact.nom_store_procedure = Info.nom_store_procedure;
                    context.SaveChanges();

                    //GUARDA EL DETALLE
                    //   if (Info.oLstNominaRubroOrden.Count > 0) {
                    ro_nomina_tipo_liqui_orden_Data oData = new ro_nomina_tipo_liqui_orden_Data();

                    if (oData.EliminarDB(Info.IdEmpresa, Info.IdNomina_Tipo, Info.IdNomina_TipoLiqui))
                    {
                        foreach (ro_nomina_tipo_liqui_orden_Info item in Info.oLstNominaRubroOrden)
                        {
                            if (!oData.GrabarDB(item, ref mensaje))
                            {
                                return(false);
                            }
                        }
                    }
                    //  }
                } msg = "Se ha modificado correctamente el registro#" + Info.IdNomina_Tipo;
                return(true);
            }
            catch (Exception ex)
            {
                string array = ToString();
                tb_sis_Log_Error_Vzen_Data oDataLog      = new tb_sis_Log_Error_Vzen_Data();
                tb_sis_Log_Error_Vzen_Info Log_Error_sis = new tb_sis_Log_Error_Vzen_Info(ex.ToString(), "", array, "", "", "", "", "", DateTime.Now);
                oDataLog.Guardar_Log_Error(Log_Error_sis, ref mensaje);
                mensaje = ex.InnerException + " " + ex.Message;
                throw new Exception(ex.InnerException.ToString());
            }
        }